Commit 20ee2daf authored by Brian Long's avatar Brian Long
Browse files

treating delegate as special case; formatting changes

parent 0d4d6884
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -35,8 +35,9 @@ public class TestNamedBean {
	 * This is an example comment for the method apiMethod3()
	 * 
	 * @param param An example parameter comment.
	 * @param classType An example generic parameter.
	 */
	public void apiMethod3(String param) {
	public <T> void apiMethod3(String param, Class<T> classType) {
	}
	
	/**
+28 −28
Original line number Diff line number Diff line
@@ -31,10 +31,10 @@ class ActivitiApiBeanDoc {
	
	private final String beanId;
	private TypeElement classElement;
	private boolean isDelegate = false;
	private boolean isExecutionListener = false;
	private boolean isTaskListener = false;
	private Map<String, ExecutableElement> methodElements = new HashMap<>();
	private ExecutableElement delegateMethodElement;
	private ExecutableElement executionListenerMethodElement;
	private ExecutableElement taskListenerMethodElement;
	
	public ActivitiApiBeanDoc(String beanId, TypeElement classElement) {
		this.beanId = beanId;
@@ -49,7 +49,31 @@ class ActivitiApiBeanDoc {
		return classElement;
	}
	
	public ActivitiApiBeanDoc addMethod(ExecutableElement method) {
	public ExecutableElement getDelegateMethodElement() {
		return delegateMethodElement;
	}
	
	public void setDelegateMethodElement(ExecutableElement delegateMethodElement) {
		this.delegateMethodElement = delegateMethodElement;
	}
	
	public ExecutableElement getExecutionListenerMethodElement() {
		return executionListenerMethodElement;
	}
	
	public void setExecutionListenerMethodElement(ExecutableElement executionListenerMethodElement) {
		this.executionListenerMethodElement = executionListenerMethodElement;
	}
	
	public ExecutableElement getTaskListenerMethodElement() {
		return taskListenerMethodElement;
	}
	
	public void setTaskListenerMethodElement(ExecutableElement taskListenerMethodElement) {
		this.taskListenerMethodElement = taskListenerMethodElement;
	}
	
	public ActivitiApiBeanDoc addMethodElement(ExecutableElement method) {
		this.methodElements.put(method.toString(), method);
		return this;
	}
@@ -71,30 +95,6 @@ class ActivitiApiBeanDoc {
		return methodElements;
	}
	
	public boolean isDelegate() {
		return isDelegate;
	}
	
	public void setDelegate(boolean isDelegate) {
		this.isDelegate = isDelegate;
	}
	
	public boolean isExecutionListener() {
		return isExecutionListener;
	}
	
	public void setExecutionListener(boolean isExecutionListener) {
		this.isExecutionListener = isExecutionListener;
	}
	
	public boolean isTaskListener() {
		return isTaskListener;
	}
	
	public void setTaskListener(boolean isTaskListener) {
		this.isTaskListener = isTaskListener;
	}
	
	@Override
	public String toString() {
		return this.beanId;
+47 −12
Original line number Diff line number Diff line
@@ -14,10 +14,14 @@
 */
package com.inteligr8.activiti.doclet;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
@@ -37,6 +41,10 @@ import jdk.javadoc.doclet.DocletEnvironment;
 */
class ActivitiDocFilter {
	
	private final static String INTERFACE_JAVA_DELEGATE = "org.activiti.engine.delegate.JavaDelegate";
	private final static String INTERFACE_EXECUTION_LISTENER = "org.activiti.engine.delegate.ExecutionListener";
	private final static String INTERFACE_TASK_LISTENER = "org.activiti.engine.delegate.TaskListener";
	
	private final Logger logger = LoggerFactory.getLogger(this.getClass());
	private final List<ActivitiApiBeanDoc> beandocs = new LinkedList<>();
	private final DocletEnvironment docenv;
@@ -89,26 +97,32 @@ class ActivitiDocFilter {
		
		ActivitiApiBeanDoc beandoc = new ActivitiApiBeanDoc(beanId, classElement);
		
		Set<String> delegateMethodElements = new HashSet<>(5);
		Set<String> executionListenerMethodElements = new HashSet<>(5);
		Set<String> taskListenerMethodElements = new HashSet<>(5);

		// getAllTypeElements() will get inherited interfaces
		for (TypeMirror interfaceType : classElement.getInterfaces()) {
			this.logger.trace("Found interface '{}' on bean '{}'", interfaceType, beanId);
			
			switch (interfaceType.toString()) {
				case "org.activiti.engine.delegate.JavaDelegate":
				case INTERFACE_JAVA_DELEGATE:
					this.logger.debug("The bean '{}' is a JavaDelegate", beanId);
					beandoc.setDelegate(true);
					delegateMethodElements.addAll(this.toStrings(this.docenv.getTypeUtils().asElement(interfaceType).getEnclosedElements()));
					break;
				case "org.activiti.engine.delegate.ExecutionListener":
				case INTERFACE_EXECUTION_LISTENER:
					this.logger.debug("The bean '{}' is a ExecutionListener", beanId);
					beandoc.setExecutionListener(true);
					executionListenerMethodElements.addAll(this.toStrings(this.docenv.getTypeUtils().asElement(interfaceType).getEnclosedElements()));
					break;
				case "org.activiti.engine.delegate.TaskListener":
				case INTERFACE_TASK_LISTENER:
					this.logger.debug("The bean '{}' is a TaskListener", beanId);
					beandoc.setTaskListener(true);
					taskListenerMethodElements.addAll(this.toStrings(this.docenv.getTypeUtils().asElement(interfaceType).getEnclosedElements()));
					break;
			}
		}
		
		this.logger.info("delegates: {}", delegateMethodElements);
		
		// getAllMembers() will get inherited methods
		for (Element memberElement : this.docenv.getElementUtils().getAllMembers(classElement)) {
			switch (memberElement.getKind()) {
@@ -116,22 +130,33 @@ class ActivitiDocFilter {
					ExecutableElement methodElement = (ExecutableElement)memberElement;
					
					if (!methodElement.getModifiers().contains(Modifier.PUBLIC)) {
						this.logger.trace("Skipping non-public method: {}#{}", classElement, methodElement.getSimpleName());
						this.logger.trace("Skipping non-public method: {}.{}", classElement, methodElement.getSimpleName());
						continue;
					}
					
					if (methodElement.getModifiers().contains(Modifier.ABSTRACT)) {
						this.logger.trace("Skipping abstract method: {}#{}", classElement, methodElement.getSimpleName());
						this.logger.trace("Skipping abstract method: {}.{}", classElement, methodElement.getSimpleName());
						continue;
					}
					
					if (this.skipObjectMethods && methodElement.getEnclosingElement().toString().equals("java.lang.Object")) {
						this.logger.trace("Skipping java.lang.Object methods: {}#{}", classElement, methodElement.getSimpleName());
						this.logger.trace("Skipping java.lang.Object method: {}.{}", classElement, methodElement.getSimpleName());
						continue;
					}
					
					if (delegateMethodElements.contains(methodElement.toString())) {
						this.logger.debug("The bean '{}' has delegate method '{}'", beanId, methodElement);
						beandoc.setDelegateMethodElement(methodElement);
					} else if (executionListenerMethodElements.contains(methodElement.toString())) {
						this.logger.debug("The bean '{}' has execution listener method '{}'", beanId, methodElement);
						beandoc.setExecutionListenerMethodElement(methodElement);
					} else if (taskListenerMethodElements.contains(methodElement.toString())) {
						this.logger.debug("The bean '{}' has task listener method '{}'", beanId, methodElement);
						beandoc.setTaskListenerMethodElement(methodElement);
					} else {
						this.logger.debug("The bean '{}' has method '{}'", beanId, methodElement);
					beandoc.addMethod(methodElement);
						beandoc.addMethodElement(methodElement);
					}
					break;
				default:
			}
@@ -154,4 +179,14 @@ class ActivitiDocFilter {
		return beandocs;
	}
	
	public List<String> toStrings(Collection<? extends Element> elements) {
		if (elements == null)
			return Collections.emptyList();
		
		List<String> strs = new ArrayList<String>(elements.size());
		for (Element element : elements)
			strs.add(element.toString());
		return strs;
	}

}
+31 −9
Original line number Diff line number Diff line
@@ -14,12 +14,10 @@
 */
package com.inteligr8.activiti.doclet;

import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author brian@inteligr8.com
@@ -36,7 +34,11 @@ public class BeanFreemarkerModel implements JavadocDocumentable, JavadocTaggable

	private String docBody;
	
	private Set<String> delegateRoles = new HashSet<>();
	private MethodSignatureFreemarkerModel delegateMethod;

	private MethodSignatureFreemarkerModel executionListenerMethod;

	private MethodSignatureFreemarkerModel taskListenerMethod;

	private Map<String, List<String>> tags = new LinkedHashMap<>();

@@ -84,12 +86,32 @@ public class BeanFreemarkerModel implements JavadocDocumentable, JavadocTaggable
		this.docBody = docBody;
	}
	
	public Set<String> getDelegateRoles() {
		return delegateRoles;
	public boolean isHasDelegate() {
		return this.delegateMethod != null || this.executionListenerMethod != null || this.taskListenerMethod != null;
	}
	
	public MethodSignatureFreemarkerModel getDelegateMethod() {
		return delegateMethod;
	}
	
	public void setDelegateMethod(MethodSignatureFreemarkerModel delegateMethod) {
		this.delegateMethod = delegateMethod;
	}
	
	public MethodSignatureFreemarkerModel getExecutionListenerMethod() {
		return executionListenerMethod;
	}
	
	public void setExecutionListenerMethod(MethodSignatureFreemarkerModel executionListenerMethod) {
		this.executionListenerMethod = executionListenerMethod;
	}
	
	public MethodSignatureFreemarkerModel getTaskListenerMethod() {
		return taskListenerMethod;
	}
	
	public void setDelegateRoles(Set<String> delegateRoles) {
		this.delegateRoles = delegateRoles;
	public void setTaskListenerMethod(MethodSignatureFreemarkerModel taskListenerMethod) {
		this.taskListenerMethod = taskListenerMethod;
	}

	public Map<String, List<String>> getTags() {
+20 −0
Original line number Diff line number Diff line
@@ -28,6 +28,10 @@ public class IndexFreemarkerModel {
	
	private List<BeanFreemarkerModel> beans = new LinkedList<>();
	
	private boolean hasDelegateBeans;
	
	private boolean hasMethodBeans;

	public String getTitle() {
		return title;
	}
@@ -52,4 +56,20 @@ public class IndexFreemarkerModel {
		this.beans = beans;
	}
	
	public boolean isHasDelegateBeans() {
		return hasDelegateBeans;
	}
	
	public void setHasDelegateBeans(boolean hasDelegateBeans) {
		this.hasDelegateBeans = hasDelegateBeans;
	}
	
	public boolean isHasMethodBeans() {
		return hasMethodBeans;
	}
	
	public void setHasMethodBeans(boolean hasMethodBeans) {
		this.hasMethodBeans = hasMethodBeans;
	}

}
Loading