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 2017/09/12 21:20:52 UTC

svn commit: r1808171 - in /uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl: CASImpl.java XmiCasDeserializer.java

Author: schor
Date: Tue Sep 12 21:20:52 2017
New Revision: 1808171

URL: http://svn.apache.org/viewvc?rev=1808171&view=rev
Log:
[UIMA-5564] reuse 0 length arrays.  was already reusing 0 length lists.

Modified:
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java?rev=1808171&r1=1808170&r2=1808171&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java Tue Sep 12 21:20:52 2017
@@ -4782,6 +4782,30 @@ public class CASImpl extends AbstractCas
     return svd.emptyStringList;
   }
   
+  public CommonArrayFS getEmptyArray(TypeImpl type) {
+    switch (type.getCode()) {
+    case TypeSystemConstants.booleanArrayTypeCode :
+      return getEmptyBooleanArray();
+    case TypeSystemConstants.byteArrayTypeCode :
+      return getEmptyByteArray();
+    case TypeSystemConstants.shortArrayTypeCode :
+      return getEmptyShortArray();
+    case TypeSystemConstants.intArrayTypeCode :
+      return getEmptyIntegerArray();
+    case TypeSystemConstants.floatArrayTypeCode :
+      return getEmptyFloatArray();
+    case TypeSystemConstants.longArrayTypeCode :
+      return getEmptyLongArray();
+    case TypeSystemConstants.doubleArrayTypeCode :
+      return getEmptyDoubleArray();
+    case TypeSystemConstants.stringArrayTypeCode :
+      return getEmptyStringArray();
+    case TypeSystemConstants.fsArrayTypeCode :
+      return getEmptyFSArray();
+    default: throw Misc.internalError(); 
+    }
+  }
+  
   public FloatArray getEmptyFloatArray() {
     if (null == svd.emptyFloatArray) {
       svd.emptyFloatArray = new FloatArray(this.getJCas(), 0);

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java?rev=1808171&r1=1808170&r2=1808171&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java Tue Sep 12 21:20:52 2017
@@ -1312,7 +1312,9 @@ public class XmiCasDeserializer {
      */
     private CommonArrayFS createNewArray(TypeImpl type, List<String> values) {
       final int sz = values.size();
-      CommonArrayFS fs = (CommonArrayFS) casBeingFilled.createArray(type, sz);
+      CommonArrayFS fs = (sz == 0) 
+                           ? casBeingFilled.getEmptyArray(type)
+                           : (CommonArrayFS) casBeingFilled.createArray(type, sz);
       if (fs instanceof FSArray) {
         final FSArray fsArray = (FSArray) fs;
         for (int i = 0; i < sz; i++) {