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