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"));
+  }
 }
 

Reply via email to