Author: sergeyb
Date: Tue Aug 16 12:54:53 2011
New Revision: 1158249

URL: http://svn.apache.org/viewvc?rev=1158249&view=rev
Log:
Merged revisions 1158246 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1158246 | sergeyb | 2011-08-16 13:52:29 +0100 (Tue, 16 Aug 2011) | 1 line
  
  [CXF-3745] Support for default namespaces in OutTransformWriter
........

Added:
    
cxf/branches/2.4.x-fixes/common/common/src/test/java/org/apache/cxf/staxutils/transform/OutTransformWriterTest.java
      - copied unchanged from r1158246, 
cxf/trunk/common/common/src/test/java/org/apache/cxf/staxutils/transform/OutTransformWriterTest.java
Modified:
    cxf/branches/2.4.x-fixes/   (props changed)
    
cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/transform/OutTransformWriter.java
    
cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java
    
cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/interceptor/transform/TransformOutInterceptor.java
    
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 16 12:54:53 2011
@@ -1 +1 @@
-/cxf/trunk:1157121,1157699,1158144,1158178
+/cxf/trunk:1157121,1157699,1158144,1158178,1158246

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/transform/OutTransformWriter.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/transform/OutTransformWriter.java?rev=1158249&r1=1158248&r2=1158249&view=diff
==============================================================================
--- 
cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/transform/OutTransformWriter.java
 (original)
+++ 
cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/transform/OutTransformWriter.java
 Tue Aug 16 12:54:53 2011
@@ -34,6 +34,7 @@ import org.apache.cxf.helpers.XMLUtils;
 import org.apache.cxf.staxutils.DelegatingXMLStreamWriter;
 
 public class OutTransformWriter extends DelegatingXMLStreamWriter {
+    private String defaultNamespace;
     private QNamesMap elementsMap;
     private Map<QName, QName> appendMap = new HashMap<QName, QName>(5);
     private Map<String, String> nsMap = new HashMap<String, String>(5);
@@ -51,7 +52,8 @@ public class OutTransformWriter extends 
                               Map<String, String> outMap,
                               Map<String, String> append,
                               List<String> dropEls,
-                              boolean attributesToElements) {
+                              boolean attributesToElements,
+                              String defaultNamespace) {
         super(writer);
         elementsMap = new QNamesMap(outMap == null ? 0 : outMap.size());
         TransformUtils.convertToQNamesMap(outMap, elementsMap, nsMap);
@@ -60,6 +62,7 @@ public class OutTransformWriter extends 
         this.attributesToElements = attributesToElements;
         namespaceContext = new DelegatingNamespaceContext(
             writer.getNamespaceContext(), nsMap);
+        this.defaultNamespace = defaultNamespace;
     }
 
     @Override
@@ -67,14 +70,27 @@ public class OutTransformWriter extends 
         if (matchesDropped()) {
             return;
         }
-        if (writtenUris.contains(uri)) {
-            return;
-        }
         String value = nsMap.get(uri);
         if (value != null && value.length() == 0) {
             return;
         }
-        super.writeNamespace(prefix, value != null ? value : uri);
+        
+        uri = value != null ? value : uri;
+        
+        if (writtenUris.contains(uri)) {
+            return;
+        }
+        
+        if (defaultNamespace != null && defaultNamespace.equals(uri)) {
+            super.writeDefaultNamespace(uri);
+        } else {
+            if (prefix.length() == 0) {
+                prefix = namespaceContext.findUniquePrefix(uri);
+            }
+            super.writeNamespace(prefix, uri);
+        }
+        writtenUris.add(uri);
+        
     }
     
     @Override
@@ -88,8 +104,7 @@ public class OutTransformWriter extends 
             String theprefix = uri.equals(appendQName.getNamespaceURI()) ? 
prefix : "";
             write(new QName(appendQName.getNamespaceURI(), 
appendQName.getLocalPart(), theprefix));
             if (theprefix.length() > 0) {
-                super.writeNamespace(theprefix, uri);
-                writtenUris.add(uri);
+                this.writeNamespace(theprefix, uri);
             }
             appendedElements.add(appendQName);
             appendedIndexes.add(currentDepth - 1);
@@ -139,6 +154,10 @@ public class OutTransformWriter extends 
             }
             
         }
+        if (defaultNamespace != null && 
defaultNamespace.equals(name.getNamespaceURI())) {
+            prefix = "";
+        }
+        
         super.writeStartElement(prefix, name.getLocalPart(), 
name.getNamespaceURI());
         if (writeNs) {
             this.writeNamespace(prefix, name.getNamespaceURI());

Modified: 
cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java?rev=1158249&r1=1158248&r2=1158249&view=diff
==============================================================================
--- 
cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java
 (original)
+++ 
cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java
 Tue Aug 16 12:54:53 2011
@@ -49,12 +49,13 @@ public final class TransformUtils {
                                                                 Map<String, 
String> outElementsMap,
                                                                 List<String> 
outDropElements,
                                                                 Map<String, 
String> outAppendMap,
-                                                                boolean 
attributesToElements) {
+                                                                boolean 
attributesToElements,
+                                                                String 
defaultNamespace) {
         if (outElementsMap != null || outDropElements != null 
             || outAppendMap != null || attributesToElements) {
             writer = createNewWriterIfNeeded(writer, os);
             writer = new OutTransformWriter(writer, outElementsMap, 
outAppendMap,
-                                            outDropElements, 
attributesToElements);
+                                            outDropElements, 
attributesToElements, defaultNamespace);
         }
         return writer;
     }

Modified: 
cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/interceptor/transform/TransformOutInterceptor.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/interceptor/transform/TransformOutInterceptor.java?rev=1158249&r1=1158248&r2=1158249&view=diff
==============================================================================
--- 
cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/interceptor/transform/TransformOutInterceptor.java
 (original)
+++ 
cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/interceptor/transform/TransformOutInterceptor.java
 Tue Aug 16 12:54:53 2011
@@ -50,6 +50,7 @@ public class TransformOutInterceptor ext
     private List<String> outDropElements;
     private boolean attributesToElements;
     private String contextPropertyName;
+    private String defaultNamespace;
     
     public TransformOutInterceptor() {
         this(Phase.PRE_STREAM);
@@ -106,7 +107,8 @@ public class TransformOutInterceptor ext
                                                       outElementsMap,
                                                       outDropElements,
                                                       outAppendMap,
-                                                      attributesToElements);
+                                                      attributesToElements,
+                                                      defaultNamespace);
     }
     
     public void setOutTransformElements(Map<String, String> outElements) {
@@ -132,5 +134,9 @@ public class TransformOutInterceptor ext
     public void setContextPropertyName(String propertyName) {
         contextPropertyName = propertyName;
     }
+
+    public void setDefaultNamespace(String defaultNamespace) {
+        this.defaultNamespace = defaultNamespace;
+    }
     
 }

Modified: 
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java?rev=1158249&r1=1158248&r2=1158249&view=diff
==============================================================================
--- 
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
 (original)
+++ 
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
 Tue Aug 16 12:54:53 2011
@@ -589,7 +589,8 @@ public abstract class AbstractJAXBProvid
                                                       outElementsMap,
                                                       outDropElements,
                                                       outAppendMap,
-                                                      attributesToElements);
+                                                      attributesToElements,
+                                                      null);
     }
     
     protected XMLStreamReader createTransformReaderIfNeeded(XMLStreamReader 
reader, InputStream is) {


Reply via email to