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/12/13 20:57:29 UTC
svn commit: r1774106 - in /uima/uimaj/trunk/uimaj-core: ./
src/main/java/org/apache/uima/resource/metadata/impl/
src/test/java/org/apache/uima/analysis_engine/impl/
src/test/java/org/apache/uima/util/
Author: schor
Date: Tue Dec 13 20:57:29 2016
New Revision: 1774106
URL: http://svn.apache.org/viewvc?rev=1774106&view=rev
Log:
[UIMA-5177] fixes to properly handle serialization of xml descriptors using default namespaces. Also fix CasToInlineXmlTests to better handle differences in writing of end of line char sequences.
Modified:
uima/uimaj/trunk/uimaj-core/pom.xml
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObjectSerializer_plain.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObject_impl.java
uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngine_implTest.java
uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/util/CasToInlineXmlTest.java
Modified: uima/uimaj/trunk/uimaj-core/pom.xml
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/pom.xml?rev=1774106&r1=1774105&r2=1774106&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/pom.xml (original)
+++ uima/uimaj/trunk/uimaj-core/pom.xml Tue Dec 13 20:57:29 2016
@@ -80,14 +80,15 @@
Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element '....'
-->
- <!--
+ <!--
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
- <version>9.4</version>
+ <version>9.7.0-14</version>
<scope>test</scope>
</dependency>
-
+
+
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
@@ -100,14 +101,13 @@
<version>8.7</version>
<scope>test</scope>
</dependency>
- -->
-
- <!-- dependency>
+
+ <dependency> jackson stuff moved to uimaj-json project
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.2</version>
- </dependency-->
-
+ </dependency>
+ -->
<!-- This next dependency is used to enable findbug rule suppression annotations
Currently commented out - till more thought given to this.
For instance, we don't want to accidentally distribute this dependency in builds
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObjectSerializer_plain.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObjectSerializer_plain.java?rev=1774106&r1=1774105&r2=1774106&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObjectSerializer_plain.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObjectSerializer_plain.java Tue Dec 13 20:57:29 2016
@@ -19,6 +19,7 @@
package org.apache.uima.resource.metadata.impl;
+import org.apache.uima.util.XMLSerializer.CharacterValidatingContentHandler;
import org.w3c.dom.Node;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
@@ -97,6 +98,13 @@ class MetaDataObjectSerializer_plain imp
}
ch.startElement(aNamespace, localname, qname, attributes);
}
+
+ // only used for default prefix, passing "" as prefix
+ // if ever used for others, need to add endPrefixMapping(String prefix) as well
+ // https://issues.apache.org/jira/browse/UIMA-5177
+ public void startPrefixMapping(String prefix, String uri) throws SAXException {
+ ch.startPrefixMapping(prefix, uri);
+ }
@Override
public void outputEndElement(Node node, String aNamespace, String localname, String qname) throws SAXException {
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObject_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObject_impl.java?rev=1774106&r1=1774105&r2=1774106&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObject_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObject_impl.java Tue Dec 13 20:57:29 2016
@@ -863,7 +863,9 @@ public abstract class MetaDataObject_imp
AttributesImpl attrs = getXMLAttributes();
if (aWriteDefaultNamespaceAttribute && inf.namespace != null) {
- attrs.addAttribute("", "xmlns", "xmlns", "", inf.namespace); // NOTE: Saxon appears to ignore this ??
+// attrs.addAttribute("", "xmlns", "xmlns", "xs:string", inf.namespace); // NOTE: Saxon appears to ignore this ??
+ // this is the way to add a default namespace, correctly. Works with Saxon and non-Saxon
+ ((MetaDataObjectSerializer_plain)serializer).startPrefixMapping("", inf.namespace);
}
// start element
Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngine_implTest.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngine_implTest.java?rev=1774106&r1=1774105&r2=1774106&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngine_implTest.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngine_implTest.java Tue Dec 13 20:57:29 2016
@@ -87,6 +87,7 @@ import org.apache.uima.resource.metadata
import org.apache.uima.resource.metadata.impl.NameValuePair_impl;
import org.apache.uima.resource.metadata.impl.TypePriorities_impl;
import org.apache.uima.resource.metadata.impl.TypeSystemDescription_impl;
+import org.apache.uima.test.junit_extension.FileCompare;
import org.apache.uima.test.junit_extension.JUnitExtension;
import org.apache.uima.util.InvalidXMLException;
import org.apache.uima.util.Level;
@@ -95,7 +96,7 @@ import org.apache.uima.util.XMLInputSour
import org.apache.uima.util.XMLParser;
import org.apache.uima.util.XMLSerializer;
import org.apache.uima.util.impl.ProcessTrace_impl;
-import org.apache.uima.util.impl.Settings_impl;
+import org.custommonkey.xmlunit.XMLAssert;
import org.xml.sax.ContentHandler;
/**
@@ -1578,6 +1579,9 @@ public class AnalysisEngine_implTest ext
contentHandler.endDocument();
os.close();
+ String inXml = FileCompare.file2String(inFile);
+ String cloneXml = FileCompare.file2String(cloneFile);
+ XMLAssert.assertXMLEqual(inXml, cloneXml);
// When building from a source distribution the descriptor may not have
// appropriate line-ends so compute the length as if always 1 byte.
int diff = fileLength(cloneFile) - fileLength(inFile);
Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/util/CasToInlineXmlTest.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/util/CasToInlineXmlTest.java?rev=1774106&r1=1774105&r2=1774106&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/util/CasToInlineXmlTest.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/util/CasToInlineXmlTest.java Tue Dec 13 20:57:29 2016
@@ -38,12 +38,11 @@ import org.apache.uima.resource.metadata
import org.apache.uima.test.junit_extension.JUnitExtension;
import org.apache.uima.testTypeSystem_arrays.OfShorts;
import org.apache.uima.testTypeSystem_arrays.OfStrings;
+import org.custommonkey.xmlunit.XMLAssert;
public class CasToInlineXmlTest extends TestCase {
-
- private final String EOL = System.getProperty("line.separator");
-
+
private final String IND = saxonVersion() == null ? " " : " "; // Saxon defaults to an indent of 3
private String saxonVersion() {
@@ -78,12 +77,14 @@ public class CasToInlineXmlTest extends
CasToInlineXml transformer = new CasToInlineXml();
assertTrue(transformer.isFormattedOutput());
String formattedXml = transformer.generateXML(cas, null);
+ // canonicalize line ends to \n
+ formattedXml = canonicalizeNl(formattedXml);
// System.out.println(formattedXml);
// start compare at <Document> because some impls put a nl in front of it (Linux), others don't (Windows)
- assertTrue(formattedXml.contains("<Document>"+EOL+IND+"<uima.tcas.DocumentAnnotation"));
- assertTrue(formattedXml.contains("confidence=\"0.0\">" + EOL
+ assertTrue(formattedXml.contains("<Document>\n" + IND + "<uima.tcas.DocumentAnnotation"));
+ assertTrue(formattedXml.contains("confidence=\"0.0\">\n"
+ IND+IND+IND+"<org.apache.uima.testTypeSystem.Owner"));
- assertTrue(formattedXml.contains("</uima.tcas.DocumentAnnotation>"+EOL+"</Document>"));
+ assertTrue(formattedXml.contains("</uima.tcas.DocumentAnnotation>\n" + "</Document>"));
// Check unformatted output does not add whitespace or line breaks
transformer.setFormattedOutput(false);
@@ -136,10 +137,11 @@ public class CasToInlineXmlTest extends
System.out.println(result);
int s = result.indexOf("<Document>");
result = result.substring(s);
- String expected = "<Document>" + EOL +
- IND+"<uima.tcas.DocumentAnnotation sofa=\"Sofa\" begin=\"0\" end=\"17\" language=\"x-unspecified\">" + EOL +
- IND+IND+"<org.apache.uima.testTypeSystem_arrays.OfStrings sofa=\"Sofa\" begin=\"0\" end=\"0\" f1Strings=\"[0s,1s,2s]\"/>" + EOL +
- IND+IND+"<org.apache.uima.testTypeSystem_arrays.OfShorts sofa=\"Sofa\" begin=\"0\" end=\"0\" f1Shorts=\"[0,1,2]\"/>1 2 3 4 5 6 7 8 9</uima.tcas.DocumentAnnotation>" + EOL +
+ result = canonicalizeNl(result);
+ String expected = "<Document>\n" +
+ IND+"<uima.tcas.DocumentAnnotation sofa=\"Sofa\" begin=\"0\" end=\"17\" language=\"x-unspecified\">\n" +
+ IND+IND+"<org.apache.uima.testTypeSystem_arrays.OfStrings sofa=\"Sofa\" begin=\"0\" end=\"0\" f1Strings=\"[0s,1s,2s]\"/>\n" +
+ IND+IND+"<org.apache.uima.testTypeSystem_arrays.OfShorts sofa=\"Sofa\" begin=\"0\" end=\"0\" f1Shorts=\"[0,1,2]\"/>1 2 3 4 5 6 7 8 9</uima.tcas.DocumentAnnotation>\n" +
"</Document>";
for (int i = 0; i < result.length(); i++ ) {
if (result.charAt(i) != expected.charAt(i)) {
@@ -147,6 +149,12 @@ public class CasToInlineXmlTest extends
break;
}
}
- assertEquals(expected, result.trim());
+ XMLAssert.assertXMLEqual(expected, result);
+// assertEquals(expected, result.trim());
+ }
+
+ private String canonicalizeNl(String s) {
+ s = s.replaceAll("\r\n", "\n");
+ return s.replaceAll("\r", "\n");
}
}