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 2007/02/09 19:58:44 UTC
svn commit: r505420 - in /incubator/uima/uimaj/trunk/uimaj-core/src:
main/java/org/apache/uima/cas/impl/XmiCasSerializer.java
test/java/org/apache/uima/cas/impl/XmiCasDeserializerTest.java
Author: alally
Date: Fri Feb 9 10:58:43 2007
New Revision: 505420
URL: http://svn.apache.org/viewvc?view=rev&rev=505420
Log:
Fix and test case for XMI serializer duplicate NS prefix problem.
UIMA-298: http://issues.apache.org/jira/browse/UIMA-298
Modified:
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java
incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XmiCasDeserializerTest.java
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java?view=diff&rev=505420&r1=505419&r2=505420
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java Fri Feb 9 10:58:43 2007
@@ -1041,6 +1041,7 @@
prefix = basePrefix + num;
}
nsUriToPrefixMap.put(nsUri, prefix);
+ nsPrefixesUsed.add(prefix);
}
return new XmlElementName(nsUri, shortName, prefix + ':' + shortName);
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XmiCasDeserializerTest.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XmiCasDeserializerTest.java?view=diff&rev=505420&r1=505419&r2=505420
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XmiCasDeserializerTest.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/XmiCasDeserializerTest.java Fri Feb 9 10:58:43 2007
@@ -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.IOException;
@@ -42,7 +44,7 @@
import org.apache.uima.cas.Type;
import org.apache.uima.cas.TypeSystem;
import org.apache.uima.cas.text.AnnotationFS;
-import org.apache.uima.impl.SofaID_impl;
+import org.apache.uima.cas_data.impl.CasComparer;
import org.apache.uima.resource.metadata.FsIndexDescription;
import org.apache.uima.resource.metadata.TypeSystemDescription;
import org.apache.uima.resource.metadata.impl.TypePriorities_impl;
@@ -389,5 +391,31 @@
assertTrue(gerView.getAnnotationIndex().size() == 5); // 4 annots plus documentAnnotation
assertTrue(CAS.NAME_DEFAULT_SOFA.equals(v1cas.getSofa().getSofaID()));
assertTrue(v1cas.getDocumentText().equals("some text for the default text sofa."));
+ }
+
+ public void testDuplicateNsPrefixes() throws Exception {
+ TypeSystemDescription ts = new TypeSystemDescription_impl();
+ ts.addType("org.bar.foo.Foo", "", "uima.tcas.Annotation");
+ ts.addType("org.baz.foo.Foo", "", "uima.tcas.Annotation");
+ CAS cas = CasCreationUtils.createCas(ts, null, null);
+ cas.setDocumentText("Foo");
+ Type t1 = cas.getTypeSystem().getType("org.bar.foo.Foo");
+ Type t2 = cas.getTypeSystem().getType("org.baz.foo.Foo");
+ AnnotationFS a1 = cas.createAnnotation(t1,0,3);
+ cas.addFsToIndexes(a1);
+ AnnotationFS a2 = cas.createAnnotation(t2,0,3);
+ cas.addFsToIndexes(a2);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ XmiCasSerializer.serialize(cas, baos);
+ baos.close();
+ byte[] bytes = baos.toByteArray();
+
+ CAS cas2 = CasCreationUtils.createCas(ts, null, null);
+ ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+ XmiCasDeserializer.deserialize(bais, cas2);
+ bais.close();
+
+ CasComparer.assertEquals(cas, cas2);
}
}