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) {