You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2008/07/22 22:49:45 UTC
svn commit: r678895 - in /cxf/branches/2.0.x-fixes: ./
tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/
tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/in...
Author: dkulp
Date: Tue Jul 22 13:49:45 2008
New Revision: 678895
URL: http://svn.apache.org/viewvc?rev=678895&view=rev
Log:
Merged revisions 678891 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r678891 | dkulp | 2008-07-22 16:42:43 -0400 (Tue, 22 Jul 2008) | 3 lines
[CXF-1620] Support for jaxb:extensionBindingPrefix attributes (and thus the xjc:simple things and such)
........
Added:
cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/jaxb_custom_extensors.wsdl
- copied unchanged from r678891, cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/jaxb_custom_extensors.wsdl
cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/jaxb_custom_extensors.xjb
- copied unchanged from r678891, cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/jaxb_custom_extensors.xjb
Modified:
cxf/branches/2.0.x-fixes/ (props changed)
cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java
cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ProcessorUtil.java
cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java
Propchange: cxf/branches/2.0.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jul 22 13:49:45 2008
@@ -1 +1 @@
-/cxf/trunk:673548,674485,674547,674551,674562,674601,674649,674764,674887,675644,675653,677048,677385,678004,678009,678559,678629,678808,678852
+/cxf/trunk:673548,674485,674547,674551,674562,674601,674649,674764,674887,675644,675653,677048,677385,678004,678009,678559,678629,678808,678852,678891
Propchange: cxf/branches/2.0.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java?rev=678895&r1=678894&r2=678895&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java (original)
+++ cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java Tue Jul 22 13:49:45 2008
@@ -33,8 +33,10 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -234,6 +236,9 @@
for (Node childNode = jaxwsBindingNode.getFirstChild();
childNode != null;
childNode = childNode.getNextSibling()) {
+
+ copyJaxbAttributes(childNode, (Element)schemaNode);
+
if (!isJaxbBindings(childNode)) {
continue;
}
@@ -246,8 +251,18 @@
copyAllJaxbDeclarations(node, childEl);
}
} else {
- final Node jaxbNode = childEl;
- Node cloneNode = ProcessorUtil.cloneNode(schemaNode.getOwnerDocument(), jaxbNode, true);
+ Element cloneNode = (Element)ProcessorUtil.cloneNode(schemaNode.getOwnerDocument(),
+ childEl, true);
+
+ NamedNodeMap atts = cloneNode.getAttributes();
+ for (int x = 0; x < atts.getLength(); x++) {
+ Attr attr = (Attr)atts.item(x);
+ if (ToolConstants.NS_JAXB_BINDINGS.equals(attr.getNamespaceURI())) {
+ cloneNode.removeAttributeNode(attr);
+ atts = cloneNode.getAttributes();
+ x = -1;
+ }
+ }
appinfoNode.appendChild(cloneNode);
childNode = childNode.getNextSibling();
}
@@ -260,6 +275,38 @@
}
}
+ private void copyJaxbAttributes(Node childNode, Element schemaNode) {
+ if (childNode instanceof Element) {
+ Element el = (Element)childNode;
+ NamedNodeMap atts = el.getAttributes();
+ for (int x = 0; x < atts.getLength(); x++) {
+ Attr attr = (Attr)atts.item(x);
+ if (ToolConstants.NS_JAXB_BINDINGS.equals(attr.getNamespaceURI())) {
+ schemaNode.setAttributeNS(attr.getNamespaceURI(),
+ attr.getName(),
+ attr.getValue());
+ if ("extensionBindingPrefixes".equals(attr.getLocalName())) {
+ String pfxs = attr.getValue();
+ while (pfxs.length() > 0) {
+ String pfx = pfxs;
+ int idx = pfx.indexOf(',');
+ if (idx != -1) {
+ pfxs = pfxs.substring(idx + 1);
+ pfx = pfx.substring(0, idx);
+ } else {
+ pfxs = "";
+ }
+ String ns = el.lookupNamespaceURI(pfx);
+ schemaNode.setAttribute("xmlns:" + pfx,
+ ns);
+ }
+ }
+ }
+ }
+ }
+
+ }
+
protected void internalizeBinding(Element bindings, Element targetNode, String expression) {
if (bindings.getAttributeNode("wsdlLocation") != null) {
expression = "/";
Modified: cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ProcessorUtil.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ProcessorUtil.java?rev=678895&r1=678894&r2=678895&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ProcessorUtil.java (original)
+++ cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ProcessorUtil.java Tue Jul 22 13:49:45 2008
@@ -31,6 +31,7 @@
import javax.xml.namespace.QName;
+import org.w3c.dom.Attr;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -318,11 +319,13 @@
clone = document.createEntityReference(node.getNodeName());
break;
case Node.ELEMENT_NODE:
- clone = document.createElement(node.getNodeName());
+ clone = document.createElementNS(node.getNamespaceURI(), node.getNodeName());
NamedNodeMap attributes = node.getAttributes();
for (int i = 0; i < attributes.getLength(); i++) {
- ((Element)clone).setAttribute(attributes.item(i).getNodeName(), attributes.item(i)
- .getNodeValue());
+ Attr attr = (Attr)attributes.item(i);
+ ((Element)clone).setAttributeNS(attr.getNamespaceURI(),
+ attr.getNodeName(),
+ attr.getNodeValue());
}
break;
Modified: cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java?rev=678895&r1=678894&r2=678895&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java (original)
+++ cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java Tue Jul 22 13:49:45 2008
@@ -937,4 +937,21 @@
assertEquals("int", webFault.name());
}
+ @Test
+ public void testCXF1620() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
+ getLocation("/wsdl2java_wsdl/jaxb_custom_extensors.wsdl"));
+ env.put(ToolConstants.CFG_BINDING,
+ getLocation("/wsdl2java_wsdl/jaxb_custom_extensors.xjb"));
+
+ processor.setContext(env);
+ processor.execute();
+ Class<?> clz = classLoader.loadClass("org.apache.cxf.w2j.jaxb_custom_ext.types.Foo");
+
+ assertEquals(3, clz.getDeclaredFields().length);
+
+ clz = classLoader.loadClass("org.apache.cxf.w2j.jaxb_custom_ext.types.Foo2");
+ assertEquals(1, clz.getDeclaredFields().length);
+ }
+
}