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)%>;
}