Repository: incubator-apex-core Updated Branches: refs/heads/devel3.1merge [created] 5c7030e81
APEX-127 #resolve #comment when a method has no comments and only omitFromUI tag than the super class method info was being used Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-core/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-core/commit/81cf1b57 Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-core/tree/81cf1b57 Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-core/diff/81cf1b57 Branch: refs/heads/devel3.1merge Commit: 81cf1b5778419eccbfd6f3b1b6bf35019eda3cc7 Parents: 525ff18 Author: Chandni Singh <[email protected]> Authored: Mon Sep 14 17:24:09 2015 -0700 Committer: Chandni Singh <[email protected]> Committed: Tue Sep 15 11:31:37 2015 -0700 ---------------------------------------------------------------------- .../stram/webapp/OperatorDiscoverer.java | 65 ++++++++++++++------ .../stram/webapp/OperatorDiscoveryTest.java | 9 +++ 2 files changed, 56 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-apex-core/blob/81cf1b57/engine/src/main/java/com/datatorrent/stram/webapp/OperatorDiscoverer.java ---------------------------------------------------------------------- diff --git a/engine/src/main/java/com/datatorrent/stram/webapp/OperatorDiscoverer.java b/engine/src/main/java/com/datatorrent/stram/webapp/OperatorDiscoverer.java index b35efe6..acfbeb7 100644 --- a/engine/src/main/java/com/datatorrent/stram/webapp/OperatorDiscoverer.java +++ b/engine/src/main/java/com/datatorrent/stram/webapp/OperatorDiscoverer.java @@ -74,8 +74,6 @@ public class OperatorDiscoverer public static final String PORT_TYPE_INFO_KEY = "portTypeInfo"; private final TypeGraph typeGraph = TypeGraphFactory.createTypeGraphProtoType(); - private static final String USE_SCHEMA_TAG = "@useSchema"; - private static final String DESCRIPTION_TAG = "@description"; private static final Pattern WHITESPACE_PATTERN = Pattern.compile("\\s+?"); private static final String SCHEMA_REQUIRED_KEY = "schemaRequired"; @@ -87,7 +85,6 @@ public class OperatorDiscoverer final Map<String, String> tags = new HashMap<String, String>(); final Map<String, MethodInfo> getMethods = Maps.newHashMap(); final Map<String, MethodInfo> setMethods = Maps.newHashMap(); - final Set<String> invisibleGetSetMethods = new HashSet<String>(); final Map<String, String> fields = new HashMap<String, String>(); } @@ -96,6 +93,34 @@ public class OperatorDiscoverer Map<String, String> descriptions = Maps.newHashMap(); Map<String, String> useSchemas = Maps.newHashMap(); String comment; + boolean omitFromUI; + } + + enum MethodTagType + { + USE_SCHEMA("@useSchema"), + DESCRIPTION("@description"), + OMIT_FROM_UI("@omitFromUI"); + + private static final Map<String, MethodTagType> TAG_TEXT_MAPPING = Maps.newHashMap(); + + static { + for (MethodTagType type : MethodTagType.values()) { + TAG_TEXT_MAPPING.put(type.tag, type); + } + } + + private final String tag; + + MethodTagType(String tag) + { + this.tag = tag; + } + + static MethodTagType from(String tag) + { + return TAG_TEXT_MAPPING.get(tag); + } } private class JavadocSAXHandler extends DefaultHandler { @@ -138,12 +163,9 @@ public class OperatorDiscoverer boolean lSetterCheck = !lGetterCheck && isSetter(methodName); if (lGetterCheck || lSetterCheck) { - if ("@omitFromUI".equals(tagName)) { - oci.invisibleGetSetMethods.add(methodName); - } else if (DESCRIPTION_TAG.equals(tagName)) { - addTagToMethod(lGetterCheck ? oci.getMethods : oci.setMethods, tagText, true); - } else if (USE_SCHEMA_TAG.equals(tagName)) { - addTagToMethod(lGetterCheck ? oci.getMethods : oci.setMethods, tagText, false); + MethodTagType type = MethodTagType.from(tagName); + if (type != null) { + addTagToMethod(lGetterCheck ? oci.getMethods : oci.setMethods, tagText, type); } } // if ("@return".equals(tagName) && isGetter(methodName)) { @@ -167,17 +189,21 @@ public class OperatorDiscoverer } } - private void addTagToMethod(Map<String, MethodInfo> methods, String tagText, boolean isDescription) + private void addTagToMethod(Map<String, MethodInfo> methods, String tagText, MethodTagType tagType) { MethodInfo mi = methods.get(methodName); if (mi == null) { mi = new MethodInfo(); methods.put(methodName, mi); } + if (tagType == MethodTagType.OMIT_FROM_UI) { + mi.omitFromUI = true; + return; + } String[] tagParts = Iterables.toArray(Splitter.on(WHITESPACE_PATTERN).trimResults().omitEmptyStrings(). limit(2).split(tagText), String.class); if (tagParts.length == 2) { - if (isDescription) { + if (tagType == MethodTagType.DESCRIPTION) { mi.descriptions.put(tagParts[0], tagParts[1]); } else { mi.useSchemas.put(tagParts[0], tagParts[1]); @@ -358,7 +384,7 @@ public class OperatorDiscoverer } }); - if (searchTerm == null && parent == Operator.class.getName()) { + if (searchTerm == null && parent.equals(Operator.class.getName())) { return filteredClass; } @@ -368,7 +394,7 @@ public class OperatorDiscoverer Set<String> result = new HashSet<String>(); for (String clazz : filteredClass) { - if (parent == Operator.class.getName() || typeGraph.isAncestor(parent, clazz)) { + if (parent.equals(Operator.class.getName()) || typeGraph.isAncestor(parent, clazz)) { if (searchTerm == null) { result.add(clazz); } else { @@ -565,13 +591,16 @@ public class OperatorDiscoverer result.put(propJ); continue; } - if (oci.invisibleGetSetMethods.contains(getPrefix + propName) || oci.invisibleGetSetMethods.contains(setPrefix + propName)) { + MethodInfo setterInfo = oci.setMethods.get(setPrefix + propName); + MethodInfo getterInfo = oci.getMethods.get(getPrefix + propName); + + if ((getterInfo != null && getterInfo.omitFromUI) || (setterInfo != null && setterInfo.omitFromUI)) { continue; } - MethodInfo methodInfo = oci.setMethods.get(setPrefix + propName); - methodInfo = methodInfo == null ? oci.getMethods.get(getPrefix + propName) : methodInfo; - if (methodInfo != null) { - addTagsToProperties(methodInfo, propJ); + if (setterInfo != null) { + addTagsToProperties(setterInfo, propJ); + } else if (getterInfo != null) { + addTagsToProperties(getterInfo, propJ); } result.put(propJ); } http://git-wip-us.apache.org/repos/asf/incubator-apex-core/blob/81cf1b57/engine/src/test/java/com/datatorrent/stram/webapp/OperatorDiscoveryTest.java ---------------------------------------------------------------------- diff --git a/engine/src/test/java/com/datatorrent/stram/webapp/OperatorDiscoveryTest.java b/engine/src/test/java/com/datatorrent/stram/webapp/OperatorDiscoveryTest.java index 6ac3438..c883441 100644 --- a/engine/src/test/java/com/datatorrent/stram/webapp/OperatorDiscoveryTest.java +++ b/engine/src/test/java/com/datatorrent/stram/webapp/OperatorDiscoveryTest.java @@ -1105,5 +1105,14 @@ public class OperatorDiscoveryTest Assert.assertEquals("number of port types with schema", 0, portsWithSchemaClasses.length()); } + + @Test + public void testMethodType() + { + Assert.assertEquals("@omitFromUI", OperatorDiscoverer.MethodTagType.OMIT_FROM_UI, OperatorDiscoverer.MethodTagType.from("@omitFromUI")); + Assert.assertEquals("@useSchema", OperatorDiscoverer.MethodTagType.USE_SCHEMA, OperatorDiscoverer.MethodTagType.from("@useSchema")); + Assert.assertEquals("@description", OperatorDiscoverer.MethodTagType.DESCRIPTION, OperatorDiscoverer.MethodTagType.from("@description")); + Assert.assertEquals("@random", null, OperatorDiscoverer.MethodTagType.from("@random")); + } }
