You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by di...@apache.org on 2007/07/10 20:42:29 UTC
svn commit: r555034 - in /webservices/commons/trunk/modules/axiom: ./
modules/axiom-api/src/main/java/org/apache/axiom/om/impl/serialize/
modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/
modules/axiom-api/src/main/java/org/apache/axiom/om...
Author: dims
Date: Tue Jul 10 11:42:27 2007
New Revision: 555034
URL: http://svn.apache.org/viewvc?view=rev&rev=555034
Log:
Fix for WSCOMMONS-175 - Serialization: Namespace declarations only output on first iteration
- Tested with SJSXP 1.0.1
- Added DeclTest
- Explictly set IS_REPAIRING_NAMESPACES to false (IS_REPAIRING_NAMESPACES is default in woodstox by default)
- pom changes to be able to specify stax impl in just one place - the main pom.xml
Added:
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/DeclTest.java
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/serialize/StreamingOMSerializer.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/StAXUtils.java
webservices/commons/trunk/modules/axiom/modules/axiom-tests/pom.xml
webservices/commons/trunk/modules/axiom/pom.xml
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/serialize/StreamingOMSerializer.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/serialize/StreamingOMSerializer.java?view=diff&rev=555034&r1=555033&r2=555034
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/serialize/StreamingOMSerializer.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/serialize/StreamingOMSerializer.java Tue Jul 10 11:42:27 2007
@@ -156,7 +156,7 @@
String namespace = reader.getNamespaceURI(i);
namespace = (namespace != null && namespace.length() == 0) ? null : namespace;
- String newPrefix = OMSerializerUtil.generateSetPrefix(prefix, namespace, writer, false);
+ String newPrefix = OMSerializerUtil.generateSetPrefix(prefix, namespace, writer, false, setPrefixFirst);
// If this is a new association, remember it so that it can written out later
if (newPrefix != null) {
if (writePrefixList == null) {
@@ -173,7 +173,7 @@
// Generate setPrefix for the element
// If the prefix is not associated with a namespace yet, remember it so that we can
// write out a namespace declaration
- String newPrefix = OMSerializerUtil.generateSetPrefix(ePrefix, eNamespace, writer, false);
+ String newPrefix = OMSerializerUtil.generateSetPrefix(ePrefix, eNamespace, writer, false, setPrefixFirst);
// If this is a new association, remember it so that it can written out later
if (newPrefix != null) {
if (writePrefixList == null) {
@@ -203,7 +203,7 @@
writerPrefix :
generateUniquePrefix(writer.getNamespaceContext());
}
- newPrefix = OMSerializerUtil.generateSetPrefix(prefix, namespace, writer, true);
+ newPrefix = OMSerializerUtil.generateSetPrefix(prefix, namespace, writer, true, setPrefixFirst);
// If the prefix is not associated with a namespace yet, remember it so that we can
// write out a namespace declaration
if (newPrefix != null) {
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java?view=diff&rev=555034&r1=555033&r2=555034
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java Tue Jul 10 11:42:27 2007
@@ -241,7 +241,7 @@
namespace = (namespace != null && namespace.length() == 0) ? null : namespace;
- String newPrefix = generateSetPrefix(prefix, namespace, writer, false);
+ String newPrefix = generateSetPrefix(prefix, namespace, writer, false, setPrefixFirst);
// If this is a new association, remember it so that it can written out later
if (newPrefix != null) {
if (writePrefixList == null) {
@@ -257,7 +257,7 @@
// Generate setPrefix for the element
// Get the prefix and namespace of the element. "" and null are identical.
- String newPrefix = generateSetPrefix(ePrefix, eNamespace, writer, false);
+ String newPrefix = generateSetPrefix(ePrefix, eNamespace, writer, false, setPrefixFirst);
// If this is a new association, remember it so that it can written out later
if (newPrefix != null) {
if (writePrefixList == null) {
@@ -292,7 +292,7 @@
prefix = (writerPrefix != null) ?
writerPrefix : getNextNSPrefix();
}
- newPrefix = generateSetPrefix(prefix, namespace, writer, true);
+ newPrefix = generateSetPrefix(prefix, namespace, writer, true, setPrefixFirst);
// If the prefix is not associated with a namespace yet, remember it so that we can
// write out a namespace declaration
if (newPrefix != null) {
@@ -518,7 +518,7 @@
* @return prefix name if a setPrefix/setDefaultNamespace is performed
*/
public static String generateSetPrefix(String prefix, String namespace, XMLStreamWriter writer,
- boolean attr) throws XMLStreamException {
+ boolean attr, boolean isSetPrefixFirst) throws XMLStreamException {
// Generate setPrefix/setDefaultNamespace if the prefix is not associated.
String newPrefix = null;
if (namespace != null) {
@@ -540,6 +540,9 @@
}
} else {
// No Action needed..The writer already has associated this prefix to this namespace
+ if(isSetPrefixFirst){
+ newPrefix = writer.getNamespaceContext().getPrefix(namespace);
+ }
}
} else {
// Unqualified Namespace
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/StAXUtils.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/StAXUtils.java?view=diff&rev=555034&r1=555033&r2=555034
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/StAXUtils.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/StAXUtils.java Tue Jul 10 11:42:27 2007
@@ -125,6 +125,7 @@
try {
currentThread.setContextClassLoader(StAXUtils.class.getClassLoader());
factory = XMLOutputFactory.newInstance();
+ factory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.FALSE);
}
finally {
currentThread.setContextClassLoader(savedClassLoader);
@@ -136,7 +137,9 @@
},
new ObjectCreator() {
public Object newObject() {
- return XMLOutputFactory.newInstance();
+ XMLOutputFactory factory = XMLOutputFactory.newInstance();
+ factory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.FALSE);
+ return factory;
}
}
});
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-tests/pom.xml
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/pom.xml?view=diff&rev=555034&r1=555033&r2=555034
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/pom.xml (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/pom.xml Tue Jul 10 11:42:27 2007
@@ -80,8 +80,8 @@
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>woodstox</groupId>
- <artifactId>wstx-asl</artifactId>
+ <groupId>${stax.impl.groupid}</groupId>
+ <artifactId>${stax.impl.artifact}</artifactId>
</dependency>
</dependencies>
<build>
Added: webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/DeclTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/DeclTest.java?view=auto&rev=555034
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/DeclTest.java (added)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/DeclTest.java Tue Jul 10 11:42:27 2007
@@ -0,0 +1,47 @@
+package org.apache.axiom.om;
+
+import org.custommonkey.xmlunit.XMLTestCase;
+
+import javax.xml.stream.XMLStreamException;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+
+public class DeclTest extends XMLTestCase {
+
+ static OMFactory factory = OMAbstractFactory.getOMFactory();
+
+ static OMDocument model = factory.createOMDocument();
+
+ static {
+ OMElement root = factory.createOMElement("root", null);
+ model.addChild(root);
+ }
+
+ private OMElement getElement(String name) {
+ OMNamespace ns1 = factory.createOMNamespace("axiom:declaration-test,2007:1", "test");
+ OMElement elem = factory.createOMElement(name, ns1);
+ return elem;
+ }
+
+
+ private void writeModel(OutputStream os) throws XMLStreamException {
+ model.serialize(os);
+ }
+
+ public void testDecl() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ DeclTest app = new DeclTest();
+ model.getOMDocumentElement().addChild(app.getElement("foo"));
+ model.getOMDocumentElement().addChild(app.getElement("bar"));
+ model.getOMDocumentElement().addChild(app.getElement("foo"));
+ app.writeModel(baos);
+
+ String xmlExpected = "<?xml version=\"1.0\" encoding=\"utf-8\"?><root><test:foo xmlns:test=\"axiom:declaration-test,2007:1\"></test:foo><test:bar xmlns:test=\"axiom:declaration-test,2007:1\"></test:bar><test:foo xmlns:test=\"axiom:declaration-test,2007:1\"></test:foo></root>";
+ this.assertXMLEqual(new InputStreamReader(new ByteArrayInputStream(xmlExpected.getBytes())),
+ new InputStreamReader(new ByteArrayInputStream(baos.toByteArray())));
+
+ }
+}
Modified: webservices/commons/trunk/modules/axiom/pom.xml
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/pom.xml?view=diff&rev=555034&r1=555033&r2=555034
==============================================================================
--- webservices/commons/trunk/modules/axiom/pom.xml (original)
+++ webservices/commons/trunk/modules/axiom/pom.xml Tue Jul 10 11:42:27 2007
@@ -385,9 +385,9 @@
</exclusions>
</dependency>
<dependency>
- <groupId>woodstox</groupId>
- <artifactId>wstx-asl</artifactId>
- <version>3.2.0</version>
+ <groupId>${stax.impl.groupid}</groupId>
+ <artifactId>${stax.impl.artifact}</artifactId>
+ <version>${stax.impl.version}</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
@@ -502,5 +502,8 @@
</modules>
<properties>
<axiom.version>${pom.version}</axiom.version>
+ <stax.impl.groupid>org.codehaus.woodstox</stax.impl.groupid>
+ <stax.impl.artifact>wstx-asl</stax.impl.artifact>
+ <stax.impl.version>3.2.1</stax.impl.version>
</properties>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org