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 2016/05/06 21:11:59 UTC

svn commit: r1742632 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl: XCASDeserializer.java XCASSerializer.java XmiCasDeserializer.java XmiCasSerializer.java

Author: schor
Date: Fri May  6 21:11:59 2016
New Revision: 1742632

URL: http://svn.apache.org/viewvc?rev=1742632&view=rev
Log:
[UIMA-4673] Misc class move, support for array values for some type impl things.  

Modified:
    uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java
    uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java
    uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java
    uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java

Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java?rev=1742632&r1=1742631&r2=1742632&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java Fri May  6 21:11:59 2016
@@ -32,13 +32,13 @@ import org.apache.uima.cas.FSIndexReposi
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.TypeSystem;
 import org.apache.uima.internal.util.IntVector;
+import org.apache.uima.internal.util.Misc;
 import org.apache.uima.internal.util.StringUtils;
 import org.apache.uima.internal.util.rb_trees.RedBlackTree;
 import org.apache.uima.jcas.cas.CommonPrimitiveArray;
 import org.apache.uima.jcas.cas.FSArray;
 import org.apache.uima.jcas.cas.Sofa;
 import org.apache.uima.jcas.cas.TOP;
-import org.apache.uima.util.Misc;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
@@ -886,6 +886,9 @@ public class XCASDeserializer {
             }
             return;
           }
+          
+          // handle case where feature is xyz[] (an array ref, not primitive) but the value of fs is FSArray
+          ts.fixupFSArrayTypes(fi.getRangeImpl(), fsInfo.fs);
           fs.setFeatureValue(fi, fsInfo.fs);
         }
       }

Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java?rev=1742632&r1=1742631&r2=1742632&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java Fri May  6 21:11:59 2016
@@ -508,12 +508,15 @@ public class XCASSerializer {
     }
 
     private void encodeFSArray(FSArray fs, AttributesImpl attrs) throws SAXException {
-      final String typeName = fs._typeImpl.getName();
+      String typeName = fs._typeImpl.getName();
       final int size = fs.size();
 //      int pos = cas.getArrayStartAddress(fs_id);
       // xmlStack.addAttribute(ARRAY_SIZE_ATTR, Integer.toString(size));
       // xmlStack.commitNode();
       addAttribute(attrs, ARRAY_SIZE_ATTR, Integer.toString(size));
+      if (typeName.endsWith(TypeSystemImpl.ARRAY_TYPE_SUFFIX)) {
+        typeName = CASImpl.TYPE_NAME_FS_ARRAY;
+      }
       startElement(typeName, attrs, size);
       for (int i = 0; i < size; i++) {
         String val = null;

Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java?rev=1742632&r1=1742631&r2=1742632&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java Fri May  6 21:11:59 2016
@@ -49,6 +49,7 @@ import org.apache.uima.cas.impl.XmiSeria
 import org.apache.uima.cas.impl.XmiSerializationSharedData.OotsElementData;
 import org.apache.uima.internal.util.I18nUtil;
 import org.apache.uima.internal.util.IntVector;
+import org.apache.uima.internal.util.Misc;
 import org.apache.uima.internal.util.XmlAttribute;
 import org.apache.uima.internal.util.XmlElementName;
 import org.apache.uima.internal.util.XmlElementNameAndContents;
@@ -64,7 +65,6 @@ import org.apache.uima.jcas.cas.NonEmpty
 import org.apache.uima.jcas.cas.NonEmptyList;
 import org.apache.uima.jcas.cas.Sofa;
 import org.apache.uima.jcas.cas.TOP;
-import org.apache.uima.util.Misc;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
@@ -1075,7 +1075,7 @@ public class XmiCasDeserializer {
           break;
         }
         default: {
-          assert false; // this should be an exhaustive case block
+          Misc.internalError(); // this should be an exhaustive case block
         }
       }
     }
@@ -1090,6 +1090,7 @@ public class XmiCasDeserializer {
           fixupToDos.add( () -> finalizeRefValue(xmiId, fs, fi));
         } else {
           fs.setFeatureValue(fi,  tgtFs);
+          ts.fixupFSArrayTypes(fi.getRangeImpl(), tgtFs);
         }
       }
     }
@@ -1769,6 +1770,7 @@ public class XmiCasDeserializer {
         }
       } else {
         fs.setFeatureValue(fi,  tgtFs);
+        ts.fixupFSArrayTypes(fi.getRangeImpl(), tgtFs);
       }
     }
    

Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java?rev=1742632&r1=1742631&r2=1742632&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java Fri May  6 21:11:59 2016
@@ -37,6 +37,7 @@ import org.apache.uima.cas.impl.CasSeria
 import org.apache.uima.cas.impl.CasSerializerSupport.CasSerializerSupportSerialize;
 import org.apache.uima.cas.impl.XmiSerializationSharedData.OotsElementData;
 import org.apache.uima.cas.impl.XmiSerializationSharedData.XmiArrayElement;
+import org.apache.uima.internal.util.Misc;
 import org.apache.uima.internal.util.XmlAttribute;
 import org.apache.uima.internal.util.XmlElementName;
 import org.apache.uima.internal.util.XmlElementNameAndContents;
@@ -818,7 +819,10 @@ public class XmiCasSerializer {
           XmlAttribute attr = attrIt.next();
           addAttribute(workAttrs, attr.name, attr.value);
         }
-        
+        // debug
+        if (oed.elementName.qName.endsWith("[]")) {
+          Misc.internalError(new Exception("XMI Cas Serialization: out of type system data has type name ending with []"));
+        }
         // serialize element
         startElement(oed.elementName, workAttrs, oed.childElements.size());
         
@@ -1253,6 +1257,11 @@ public class XmiCasSerializer {
      */
     @Override
     protected XmlElementName uimaTypeName2XmiElementName(String uimaTypeName) {
+      if (uimaTypeName.endsWith(TypeSystemImpl.ARRAY_TYPE_SUFFIX)) {
+        // can't write out xyz[] as the qname.  Use FSArray instead
+        uimaTypeName = CASImpl.TYPE_NAME_FS_ARRAY;
+      }
+
       // split uima type name into namespace and short name
       String shortName, nsUri;
       final int lastDotIndex = uimaTypeName.lastIndexOf('.');
@@ -1281,7 +1290,7 @@ public class XmiCasSerializer {
 
       // determine what namespace prefix to use
       String prefix = cds.getNameSpacePrefix(uimaTypeName, nsUri, lastDotIndex);
-
+      // debug
       return new XmlElementName(nsUri, shortName, cds.getUniqueString(prefix + ':' + shortName));
     }