You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by al...@apache.org on 2009/05/12 16:54:25 UTC

svn commit: r773917 - in /incubator/uima/uimaj/trunk/uimaj-core/src: main/java/org/apache/uima/cas/impl/XCASSerializer.java test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java

Author: alally
Date: Tue May 12 14:54:24 2009
New Revision: 773917

URL: http://svn.apache.org/viewvc?rev=773917&view=rev
Log:
UIMA-1344: Fix NPE in XCASSerializer when a StringArray has a null element.  https://issues.apache.org/jira/browse/UIMA-1344

Modified:
    incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java
    incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java?rev=773917&r1=773916&r2=773917&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java Tue May 12 14:54:24 2009
@@ -540,7 +540,7 @@
 
       for (int i = 0; i < data.length; i++) {
         startElement(ARRAY_ELEMENT_TAG, emptyAttrs, 1);
-        addText(data[i]);
+        addText(data[i] == null ? "" : data[i]);
         endElement(ARRAY_ELEMENT_TAG);
       }
       endElement(typeName);

Modified: incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java?rev=773917&r1=773916&r2=773917&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java Tue May 12 14:54:24 2009
@@ -19,6 +19,8 @@
 
 package org.apache.uima.cas.impl;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
@@ -370,4 +372,28 @@
     assertTrue(gerView.getDocumentText().equals("das bier ist gut"));
     assertTrue(gerView.getAnnotationIndex().size() == 5); // 4 annots plus documentAnnotation
   }
+  
+  public void testStringArrayWithNullValues() throws Exception {
+    CAS cas = CasCreationUtils.createCas(typeSystem, new TypePriorities_impl(), indexes);
+    StringArrayFS strArray = cas.createStringArrayFS(3);
+    strArray.set(1, "value");
+    cas.getIndexRepository().addFS(strArray);
+    
+    assertEquals(null, strArray.get(0));
+    assertEquals("value", strArray.get(1));
+    assertEquals(null, strArray.get(2));
+    
+    //serialize to XCAS and back
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    XCASSerializer.serialize(cas,baos);
+    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+    XCASDeserializer.deserialize(bais, cas);
+
+    //check
+    Iterator iter = cas.getIndexRepository().getAllIndexedFS(cas.getTypeSystem().getType("uima.cas.StringArray"));
+    StringArrayFS strArrayOut = (StringArrayFS)iter.next();
+    assertEquals(null, strArrayOut.get(0));
+    assertEquals("value", strArrayOut.get(1));
+    assertEquals(null, strArrayOut.get(2));
+  }
 }