You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2019/06/26 13:53:46 UTC

svn commit: r1862140 - in /uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main: java/org/apache/uima/tools/jcasgen/JCasTypeTemplate.java java/org/apache/uima/tools/jcasgen/Jg.java javajet/jcasgen/templates/JCasType.javajet

Author: schor
Date: Wed Jun 26 13:53:45 2019
New Revision: 1862140

URL: http://svn.apache.org/viewvc?rev=1862140&view=rev
Log:
[UIMA-6056][UIMA-6055] skip adding unused imports, add generic type info for fsarrays and lists, add suppress warnings

Modified:
    uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/jcasgen/JCasTypeTemplate.java
    uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/jcasgen/Jg.java
    uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/javajet/jcasgen/templates/JCasType.javajet

Modified: uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/jcasgen/JCasTypeTemplate.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/jcasgen/JCasTypeTemplate.java?rev=1862140&r1=1862139&r2=1862140&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/jcasgen/JCasTypeTemplate.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/jcasgen/JCasTypeTemplate.java Wed Jun 26 13:53:45 2019
@@ -29,6 +29,14 @@ public class JCasTypeTemplate implements
     StringBuilder stringBuilder = new StringBuilder();
 
     stringBuilder.append("\n\n");
+   
+/* ************************************************************************************************* 
+ * File generated from uimaj-tools project: /src/main/javajet/jcasgen/templates/JCasType.javajet
+ * Edit that file, and rerun the jet expander, found in the uimaj-jet-expander project in svn
+ *   Install that project into Eclipse using 
+ *     File -- import -- Projects from Folder or Archive  then select the uimaj-jet-expander folder
+ ***************************************************************************************************/
+
     Object [] args = (Object [])argument;
     Jg jg = (Jg)args[0];
     TypeDescription td = (TypeDescription)args[1]; 
@@ -39,15 +47,24 @@ public class JCasTypeTemplate implements
    if (0 != jg.packageName.length()) {
     stringBuilder.append("package ");
     stringBuilder.append(jg.packageName);
-    stringBuilder.append(";\n");
+    stringBuilder.append(";\n \n");
    } 
    else 
      jg.error.newError(IError.WARN, 
 		jg.getString("pkgMissing", new Object[] {td.getName()}), null); 
-    stringBuilder.append("\nimport java.lang.invoke.CallSite;\nimport java.lang.invoke.MethodHandle;\n\nimport org.apache.uima.cas.impl.CASImpl;\nimport org.apache.uima.cas.impl.TypeImpl;\nimport org.apache.uima.cas.impl.TypeSystemImpl;\nimport org.apache.uima.jcas.JCas; \nimport org.apache.uima.jcas.JCasRegistry;\n\n\n");
-   for(Iterator i=jg.collectImports(td, false).iterator(); i.hasNext();) { 
+    stringBuilder.append("\n");
+   FeatureDescription[] fds = td.getFeatures();
+   if(fds.length > 0) { 
+    stringBuilder.append("import java.lang.invoke.CallSite;\nimport java.lang.invoke.MethodHandle;\n");
+   } 
+    stringBuilder.append("\nimport org.apache.uima.cas.impl.CASImpl;\nimport org.apache.uima.cas.impl.TypeImpl;\n");
+  if (fds.length > 0) { 
+    stringBuilder.append("import org.apache.uima.cas.impl.TypeSystemImpl;\n");
+   } 
+    stringBuilder.append("import org.apache.uima.jcas.JCas; \nimport org.apache.uima.jcas.JCasRegistry;\n\n\n");
+   for(Iterator<String> i=jg.collectImports(td, false).iterator(); i.hasNext();) { 
     stringBuilder.append("import ");
-    stringBuilder.append((String)i.next());
+    stringBuilder.append(i.next());
     stringBuilder.append(";\n");
    } 
     stringBuilder.append("\n\n");
@@ -74,7 +91,7 @@ public class JCasTypeTemplate implements
     
    featRegistry.append("  /* Feature Adjusted Offsets */\n");
    
-   for (FeatureDescription fd : td.getFeatures()) { 
+   for (FeatureDescription fd : fds) { 
 
      String featName = fd.getName();
      String featUName = jg.uc1(featName);  // upper case first letter
@@ -84,12 +101,6 @@ public class JCasTypeTemplate implements
                          null);
      }
 
-     String featDesc = jg.nullBlank(fd.getDescription());
-     String featDescCmt = featDesc;
-
-     String rangeType = jg.getJavaRangeType(fd);
-     String elemType = jg.getJavaRangeArrayElementType(fd);
-     
      localData   .append("  public final static String _FeatName_").append(featName).append(" = \"").append(featName).append("\";\n");
      
      featRegistry.append("  private final static CallSite _FC_").append(featName)
@@ -128,8 +139,12 @@ public class JCasTypeTemplate implements
      String featDesc = jg.nullBlank(fd.getDescription());
      String featDescCmt = featDesc;
 
-     String rangeType = jg.getJavaRangeType(fd);
-     String elemType = jg.getJavaRangeArrayElementType(fd);    
+     String rangeType = jg.getJavaRangeType2(fd);
+     String elemType = jg.getJavaRangeArrayElementType2(fd); 
+     boolean isRangeTypeGeneric = jg.isRangeTypeGeneric(fd);
+     boolean isElemTypeGeneric = jg.isElementTypeGeneric(fd);
+     
+
 
     stringBuilder.append(" \n    \n  //*--------------*\n  //* Feature: ");
     stringBuilder.append(featName);
@@ -137,13 +152,17 @@ public class JCasTypeTemplate implements
     stringBuilder.append(featName);
     stringBuilder.append(" - gets ");
     stringBuilder.append(featDescCmt);
-    stringBuilder.append("\n   * @generated\n   * @return value of the feature \n   */\n  public ");
+    stringBuilder.append("\n   * @generated\n   * @return value of the feature \n   */\n");
+  if (isRangeTypeGeneric) { 
+    stringBuilder.append("  @SuppressWarnings(\"unchecked\")\n");
+   } 
+    stringBuilder.append("  public ");
     stringBuilder.append(rangeType);
     stringBuilder.append(" get");
     stringBuilder.append(featUName);
-    stringBuilder.append("() { return ");
+    stringBuilder.append("() { \n    return ");
     stringBuilder.append(jg.getFeatureValue(fd, td));
-    stringBuilder.append(";}\n    \n  /** setter for ");
+    stringBuilder.append(";\n  }\n    \n  /** setter for ");
     stringBuilder.append(featName);
     stringBuilder.append(" - sets ");
     stringBuilder.append(featDescCmt);
@@ -159,17 +178,25 @@ public class JCasTypeTemplate implements
     stringBuilder.append(featName);
     stringBuilder.append(" - gets an indexed value - ");
     stringBuilder.append(featDescCmt);
-    stringBuilder.append("\n   * @generated\n   * @param i index in the array to get\n   * @return value of the element at index i \n   */\n  public ");
+    stringBuilder.append("\n   * @generated\n   * @param i index in the array to get\n   * @return value of the element at index i \n   */\n");
+  if (isRangeTypeGeneric || isElemTypeGeneric) {
+    stringBuilder.append("  @SuppressWarnings(\"unchecked\")\n");
+  }
+    stringBuilder.append("  public ");
     stringBuilder.append(elemType);
     stringBuilder.append(" get");
     stringBuilder.append(featUName);
     stringBuilder.append("(int i) {\n     return ");
     stringBuilder.append(jg.getArrayFeatureValue(fd, td));
-    stringBuilder.append(";} \n\n  /** indexed setter for ");
+    stringBuilder.append(";\n  } \n\n  /** indexed setter for ");
     stringBuilder.append(featName);
     stringBuilder.append(" - sets an indexed value - ");
     stringBuilder.append(featDescCmt);
-    stringBuilder.append("\n   * @generated\n   * @param i index in the array to set\n   * @param v value to set into the array \n   */\n  public void set");
+    stringBuilder.append("\n   * @generated\n   * @param i index in the array to set\n   * @param v value to set into the array \n   */\n");
+  if (isRangeTypeGeneric || isElemTypeGeneric) {
+    stringBuilder.append("  @SuppressWarnings(\"unchecked\")\n  ");
+   } 
+    stringBuilder.append("  public void set");
     stringBuilder.append(featUName);
     stringBuilder.append("(int i, ");
     stringBuilder.append(elemType);

Modified: uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/jcasgen/Jg.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/jcasgen/Jg.java?rev=1862140&r1=1862139&r2=1862140&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/jcasgen/Jg.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/jcasgen/Jg.java Wed Jun 26 13:53:45 2019
@@ -35,6 +35,7 @@ import java.net.URISyntaxException;
 import java.net.URL;
 import java.text.MessageFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
@@ -224,6 +225,7 @@ public class Jg {
     addBuiltInTypeInfo(casName, javaName, null);
   }
 
+  static private List<String> genericFeatureDescriptorTypes = Arrays.asList("uima.cas.FSArray", "uima.cas.FSList");
   // first type needed by fsArrayType; in hash map will be overwritten, though
   static {
 //    addBuiltInTypeInfo("uima.cas.TOP", "org.apache.uima.cas.FeatureStructure"); // overridden below
@@ -418,7 +420,7 @@ public class Jg {
     Prefs.get(gui);
     gui.pnG.taStatus.setLineWrap(true);
     gui.pnG.taStatus.setWrapStyleWord(true);
-    gui.show();
+    gui.setVisible(true);
     waiter = new Waiter();
     waiter.waitforGUI();
   }
@@ -1236,7 +1238,7 @@ public class Jg {
             continue;
         }
         collectImport(fd.getRangeTypeName(), false);
-        if (hasArrayRange(fd)) {
+        if (isRangeTypeGeneric(fd)) {
           collectImport(getJavaRangeArrayElementType(fd), false);
         }
       }
@@ -1263,6 +1265,20 @@ public class Jg {
   }
 
   /**
+   * Gets the java range type, with generic types in <> as required.
+   *
+   * @param fd the fd
+   * @return the java range type
+   */
+  String getJavaRangeType2(FeatureDescription fd) {
+	  if (isRangeTypeGeneric(fd)) {
+		  String generic = getJavaRangeArrayElementType2(fd);
+		  return getJavaRangeType(fd) + "<" + (generic == null || generic.trim().isEmpty() ? "?" : generic) + ">";
+	  } else
+		  return getJavaRangeType(fd);
+  }
+
+  /**
    * Checks if is sub type of annotation.
    *
    * @param td the td
@@ -1340,6 +1356,19 @@ public class Jg {
     return getJavaName(bi.arrayElNameWithPkg);
   }
 
+  /**
+   * Gets the java range array element type, with generic type or ? in <> as needed
+   *
+   * @param fd the fd
+   * @return the java range array element type
+   */
+  String getJavaRangeArrayElementType2(FeatureDescription fd) {
+	if(this.isElementTypeGeneric(fd))
+		return getJavaRangeArrayElementType(fd) + "<?>";
+	else
+		return getJavaRangeArrayElementType(fd);
+  }
+
   // **************************************************
   // * uc1(featurename) make uppercase feature name for use by getters/setters
   /**
@@ -1492,7 +1521,7 @@ public class Jg {
   String getFeatureValue(FeatureDescription fd, TypeDescription td) {
     String getSetNamePart = getGetSetNamePart(fd);
     String core = simpleCore("get", getSetNamePart, fd.getName());
-    return castResult(getJavaRangeType(fd), core);
+    return castResult(getJavaRangeType2(fd), core);
   }
 
   /**
@@ -1515,8 +1544,8 @@ public class Jg {
    */
   String getArrayFeatureValue(FeatureDescription fd, TypeDescription td) {
     String getSetArrayNamePart = getGetSetArrayNamePart(fd);
-    String core = arrayCore("get", getSetArrayNamePart, getJavaRangeType(fd), fd.getName());
-    return castResult(getJavaRangeArrayElementType(fd), core);
+    String core = arrayCore("get", getSetArrayNamePart, getJavaRangeType2(fd), fd.getName());
+    return castResult(getJavaRangeArrayElementType2(fd), core);
   }
 
   /**
@@ -1527,7 +1556,7 @@ public class Jg {
    * @return the string
    */
   String setArrayFeatureValue(FeatureDescription fd, TypeDescription td) {
-    return arrayCore("set", getGetSetArrayNamePart(fd), getJavaRangeType(fd), fd.getName());
+    return arrayCore("set", getGetSetArrayNamePart(fd), getJavaRangeType2(fd), fd.getName());
   }
 
   /**
@@ -1537,7 +1566,7 @@ public class Jg {
    * @return the gets the set name part
    */
   String getGetSetNamePart(FeatureDescription fd) {
-    return sc(getJavaRangeType(fd));
+    return sc(getJavaRangeType2(fd));
   }
 
   /**
@@ -1646,5 +1675,12 @@ public class Jg {
     
     return (range.equals("Feature")) ? "NcWj" : "Nfc";  
   }
+  
+  boolean isRangeTypeGeneric(FeatureDescription fd) {
+	  return fd == null ? false : genericFeatureDescriptorTypes.contains(fd.getRangeTypeName());
+  }
 
+  boolean isElementTypeGeneric(FeatureDescription fd) {
+	  return fd == null ? false : genericFeatureDescriptorTypes.contains(fd.getElementType());
+  }
 }

Modified: uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/javajet/jcasgen/templates/JCasType.javajet
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/javajet/jcasgen/templates/JCasType.javajet?rev=1862140&r1=1862139&r2=1862140&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/javajet/jcasgen/templates/JCasType.javajet (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-tools/src/main/javajet/jcasgen/templates/JCasType.javajet Wed Jun 26 13:53:45 2019
@@ -18,7 +18,15 @@
  */
 <%@ jet package="org.apache.uima.tools.jcasgen" imports="java.util.Iterator org.apache.uima.resource.metadata.TypeDescription org.apache.uima.resource.metadata.FeatureDescription" class="JCasTypeTemplate" implements="Jg.IJCasTypeTemplate" %>
 
-<%  Object [] args = (Object [])argument;
+<% 
+/* ************************************************************************************************* 
+ * File generated from uimaj-tools project: /src/main/javajet/jcasgen/templates/JCasType.javajet
+ * Edit that file, and rerun the jet expander, found in the uimaj-jet-expander project in svn
+ *   Install that project into Eclipse using 
+ *     File -- import -- Projects from Folder or Archive  then select the uimaj-jet-expander folder
+ ***************************************************************************************************/
+
+    Object [] args = (Object [])argument;
     Jg jg = (Jg)args[0];
     TypeDescription td = (TypeDescription)args[1]; 
    jg.packageName = jg.getJavaPkg(td); %>
@@ -27,23 +35,29 @@
 
 <% if (0 != jg.packageName.length()) {%>
 package <%=jg.packageName%>;
+ 
 <% } 
    else 
      jg.error.newError(IError.WARN, 
 		jg.getString("pkgMissing", new Object[] {td.getName()}), null); %>
 
+<% FeatureDescription[] fds = td.getFeatures();
+   if(fds.length > 0) { %>
 import java.lang.invoke.CallSite;
 import java.lang.invoke.MethodHandle;
+<% } %>
 
 import org.apache.uima.cas.impl.CASImpl;
 import org.apache.uima.cas.impl.TypeImpl;
+<%if (fds.length > 0) { %>
 import org.apache.uima.cas.impl.TypeSystemImpl;
+<% } %>
 import org.apache.uima.jcas.JCas; 
 import org.apache.uima.jcas.JCasRegistry;
 
 
-<% for(Iterator i=jg.collectImports(td, false).iterator(); i.hasNext();) { %>
-import <%=(String)i.next()%>;
+<% for(Iterator<String> i=jg.collectImports(td, false).iterator(); i.hasNext();) { %>
+import <%=i.next()%>;
 <% } %>
 
 
@@ -83,7 +97,7 @@ public class <%=typeName%> extends <%=jg
     
    featRegistry.append("  /* Feature Adjusted Offsets */\n");
    
-   for (FeatureDescription fd : td.getFeatures()) { 
+   for (FeatureDescription fd : fds) { 
 
      String featName = fd.getName();
      String featUName = jg.uc1(featName);  // upper case first letter
@@ -93,12 +107,6 @@ public class <%=typeName%> extends <%=jg
                          null);
      }
 
-     String featDesc = jg.nullBlank(fd.getDescription());
-     String featDescCmt = featDesc;
-
-     String rangeType = jg.getJavaRangeType(fd);
-     String elemType = jg.getJavaRangeArrayElementType(fd);
-     
      localData   .append("  public final static String _FeatName_").append(featName).append(" = \"").append(featName).append("\";\n");
      
      featRegistry.append("  private final static CallSite _FC_").append(featName)
@@ -175,8 +183,12 @@ public class <%=typeName%> extends <%=jg
      String featDesc = jg.nullBlank(fd.getDescription());
      String featDescCmt = featDesc;
 
-     String rangeType = jg.getJavaRangeType(fd);
-     String elemType = jg.getJavaRangeArrayElementType(fd);    
+     String rangeType = jg.getJavaRangeType2(fd);
+     String elemType = jg.getJavaRangeArrayElementType2(fd); 
+     boolean isRangeTypeGeneric = jg.isRangeTypeGeneric(fd);
+     boolean isElemTypeGeneric = jg.isElementTypeGeneric(fd);
+     
+
 %> 
     
   //*--------------*
@@ -186,7 +198,12 @@ public class <%=typeName%> extends <%=jg
    * @generated
    * @return value of the feature 
    */
-  public <%=rangeType%> get<%=featUName%>() { return <%=jg.getFeatureValue(fd, td)%>;}
+<%if (isRangeTypeGeneric) { %>
+  @SuppressWarnings("unchecked")
+<% } %>
+  public <%=rangeType%> get<%=featUName%>() { 
+    return <%=jg.getFeatureValue(fd, td)%>;
+  }
     
   /** setter for <%=featName%> - sets <%=featDescCmt%> 
    * @generated
@@ -203,14 +220,21 @@ public class <%=typeName%> extends <%=jg
    * @param i index in the array to get
    * @return value of the element at index i 
    */
+<%if (isRangeTypeGeneric || isElemTypeGeneric) {%>
+  @SuppressWarnings("unchecked")
+<%}%>
   public <%=elemType%> get<%=featUName%>(int i) {
-     return <%=jg.getArrayFeatureValue(fd, td)%>;} 
+     return <%=jg.getArrayFeatureValue(fd, td)%>;
+  } 
 
   /** indexed setter for <%=featName%> - sets an indexed value - <%=featDescCmt%>
    * @generated
    * @param i index in the array to set
    * @param v value to set into the array 
    */
+<%if (isRangeTypeGeneric || isElemTypeGeneric) {%>
+  @SuppressWarnings("unchecked")
+  <% } %>
   public void set<%=featUName%>(int i, <%=elemType%> v) {
     <%=jg.setArrayFeatureValue(fd, td)%>;
   }