You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/07/18 00:03:28 UTC

svn commit: r557073 - in /incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml: BaseArtifactProcessor.java XAttr.java

Author: jsdelfino
Date: Tue Jul 17 15:03:26 2007
New Revision: 557073

URL: http://svn.apache.org/viewvc?view=rev&rev=557073
Log:
Fix for TUSCANY-1316. Make sure that setPrefix is called before writeStartElement.

Modified:
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/XAttr.java

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java?view=diff&rev=557073&r1=557072&r2=557073
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java Tue Jul 17 15:03:26 2007
@@ -448,6 +448,7 @@
      * @throws XMLStreamException
      */
     protected void writeStart(XMLStreamWriter writer, String uri, String name, XAttr... attrs) throws XMLStreamException {
+        writeAttributePrefixes(writer, attrs);
         writer.writeStartElement(uri, name);
         writeAttributes(writer, attrs);
     }
@@ -504,6 +505,19 @@
         for (XAttr attr : attrs) {
             if (attr != null)
                 attr.write(writer);
+        }
+    }
+
+    /**
+     * Write attribute prefixes to the current element.
+     * @param writer
+     * @param attrs
+     * @throws XMLStreamException
+     */
+    protected void writeAttributePrefixes(XMLStreamWriter writer, XAttr... attrs) throws XMLStreamException {
+        for (XAttr attr : attrs) {
+            if (attr != null)
+                attr.writePrefix(writer);
         }
     }
 

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/XAttr.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/XAttr.java?view=diff&rev=557073&r1=557072&r2=557073
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/XAttr.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/XAttr.java Tue Jul 17 15:03:26 2007
@@ -103,6 +103,34 @@
         }
     }
 
+    /**
+     * Registers a prefix for the namespace of a QName.  
+     * @param reader
+     * @param value
+     * @return
+     */
+    protected void writeQNamePrefix(XMLStreamWriter writer, QName qname) throws XMLStreamException {
+        if (qname != null) {
+            String prefix = qname.getPrefix();
+            String uri = qname.getNamespaceURI();
+            prefix = writer.getPrefix(uri);
+            if (prefix != null) {
+                return;
+            } else {
+                
+                // Find an available prefix and bind it to the given uri 
+                NamespaceContext nsc = writer.getNamespaceContext();
+                for (int i=1; ; i++) {
+                    prefix = "ns" + i;
+                    if (nsc.getNamespaceURI(prefix) == null) {
+                        break;
+                    }
+                }
+                writer.setPrefix(prefix, uri);
+            }
+        }
+    }
+
     void write(XMLStreamWriter writer) throws XMLStreamException {
         if (value != null) {
             String str;
@@ -115,6 +143,14 @@
                 writer.writeAttribute(uri, name, str);
             } else {
                 writer.writeAttribute(name,str);
+            }
+        }
+    }
+
+    void writePrefix(XMLStreamWriter writer) throws XMLStreamException {
+        if (value != null) {
+            if (value instanceof QName) {
+                writeQNamePrefix(writer, (QName)value);
             }
         }
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org