Loading src/it/base/src/main/java/TestNamedBean.java +2 −1 Original line number Diff line number Diff line Loading @@ -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) { } /** Loading src/main/java/com/inteligr8/activiti/doclet/ActivitiApiBeanDoc.java +28 −28 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading @@ -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; Loading src/main/java/com/inteligr8/activiti/doclet/ActivitiDocFilter.java +47 −12 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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()) { Loading @@ -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: } Loading @@ -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; } } src/main/java/com/inteligr8/activiti/doclet/BeanFreemarkerModel.java +31 −9 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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<>(); Loading Loading @@ -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() { Loading src/main/java/com/inteligr8/activiti/doclet/IndexFreemarkerModel.java +20 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,10 @@ public class IndexFreemarkerModel { private List<BeanFreemarkerModel> beans = new LinkedList<>(); private boolean hasDelegateBeans; private boolean hasMethodBeans; public String getTitle() { return title; } Loading @@ -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
src/it/base/src/main/java/TestNamedBean.java +2 −1 Original line number Diff line number Diff line Loading @@ -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) { } /** Loading
src/main/java/com/inteligr8/activiti/doclet/ActivitiApiBeanDoc.java +28 −28 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading @@ -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; Loading
src/main/java/com/inteligr8/activiti/doclet/ActivitiDocFilter.java +47 −12 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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()) { Loading @@ -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: } Loading @@ -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; } }
src/main/java/com/inteligr8/activiti/doclet/BeanFreemarkerModel.java +31 −9 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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<>(); Loading Loading @@ -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() { Loading
src/main/java/com/inteligr8/activiti/doclet/IndexFreemarkerModel.java +20 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,10 @@ public class IndexFreemarkerModel { private List<BeanFreemarkerModel> beans = new LinkedList<>(); private boolean hasDelegateBeans; private boolean hasMethodBeans; public String getTitle() { return title; } Loading @@ -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; } }