You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Nitro (JIRA)" <ji...@apache.org> on 2010/06/18 14:49:23 UTC
[jira] Created: (CXF-2855) WSDL2Java JAX-WS XJC customizations
WSDL2Java JAX-WS XJC customizations
-----------------------------------
Key: CXF-2855
URL: https://issues.apache.org/jira/browse/CXF-2855
Project: CXF
Issue Type: Improvement
Components: Tooling
Affects Versions: 2.2.9
Reporter: Nitro
Attachments: apache-cxf-2.2.9-wsdlto-xjc-fix.diff
Configuration of a private customization implemented with XJC plugin architecture is not copied into customized WSDL. For instance:
WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://some.ns.com/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<xsd:schema targetNamespace="http://some.ns.com/message"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="myMessage">
<complexType>
<sequence>
<element name="number" type="int"/>
</sequence>
</complexType>
</element>
</xsd:schema>
</types>
<!-- Parts / ports definitions -->
</wsdl:definitions>
JAX-WS customization:
<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings wsdlLocation="my.wsdl"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:my-xjc="http://some.ns.com/xjc"
jaxb:version="2.0" jaxb:extensionBindingPrefixes="xjc my-xjc">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema">
<jaxb:bindings node="xsd:element[@name='myMessage']//xsd:element[@name='numbers']">
<my-xjc:somecfg a_param="a value"/>
</jaxb:bindings>
</jaxws:bindings>
</jaxws:bindings>
The problem is that the <my-xjc:somecfg/> element is not copied into the <annotation> of the respective element.
Also the jaxb:extensionBindingPrefixes="" attribute is copied at the wrong place (on the myMessage element) additionally to the <xsd:schema/> element.
Finally the WSDL2Java tool doesn't respect the proper format parsing the jaxb:extensionBindingPrefixes="" attribute (using comma-separated values instead of the whitespace separated list).
I wrote a simple fix to these problems listed above but it could be improved to actually check better the validity of the xml elements:
Index: tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java
===================================================================
--- tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java (revision 955974)
+++ tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java (working copy)
@@ -238,7 +238,9 @@
}
protected void copyAllJaxbDeclarations(final Node schemaNode, final Element jaxwsBindingNode) {
- appendJaxbVersion((Element)schemaNode);
+ if (isSchemaElement((Element)schemaNode)) {
+ appendJaxbVersion((Element)schemaNode);
+ }
Node[] embededNodes = getAnnotationNodes(schemaNode);
Node annotationNode = embededNodes[0];
@@ -247,15 +249,18 @@
for (Node childNode = jaxwsBindingNode.getFirstChild();
childNode != null;
childNode = childNode.getNextSibling()) {
-
- copyJaxbAttributes(childNode, (Element)schemaNode);
-
- if (!isJaxbBindings(childNode)) {
+
+ if (isSchemaElement((Element)schemaNode)) {
+ copyJaxbAttributes(childNode, (Element)schemaNode);
+ }
+
+ // TODO: check for valid extension namespaces
+ if (!(childNode instanceof Element)) { //!isJaxbBindings(childNode)) {
continue;
}
Element childEl = (Element)childNode;
- if (isJaxbBindingsElement(childEl)) {
+ if (isJaxbBindings(childNode) && isJaxbBindingsElement(childEl)) {
NodeList nlist = nodeSelector.queryNodes(schemaNode, childEl.getAttribute("node"));
for (int i = 0; i < nlist.getLength(); i++) {
@@ -307,7 +312,7 @@
String pfxs = attr.getValue();
while (pfxs.length() > 0) {
String pfx = pfxs;
- int idx = pfx.indexOf(',');
+ int idx = pfx.indexOf(' ');
if (idx != -1) {
pfxs = pfxs.substring(idx + 1);
pfx = pfx.substring(0, idx);
@@ -598,6 +603,11 @@
return this.wsdlNode;
}
+ private boolean isSchemaElement(Node schema) {
+ return ToolConstants.SCHEMA_URI.equals(schema.getNamespaceURI())
+ && "schema".equals(schema.getLocalName());
+ }
+
private boolean isJAXWSBindings(Node bindings) {
return ToolConstants.NS_JAXWS_BINDINGS.equals(bindings.getNamespaceURI())
&& "bindings".equals(bindings.getLocalName());
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (CXF-2855) WSDL2Java JAX-WS XJC customizations
Posted by "Nitro (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nitro updated CXF-2855:
-----------------------
Comment: was deleted
(was: Sorry I couldn't find the attachment feature in the bug submit form so I included it at the wrong place.)
> WSDL2Java JAX-WS XJC customizations
> -----------------------------------
>
> Key: CXF-2855
> URL: https://issues.apache.org/jira/browse/CXF-2855
> Project: CXF
> Issue Type: Improvement
> Components: Tooling
> Affects Versions: 2.2.9
> Reporter: Nitro
> Attachments: apache-cxf-2.2.9-wsdlto-xjc-fix.diff
>
>
> Configuration of a private customization implemented with XJC plugin architecture is not copied into customized WSDL. For instance:
> WSDL:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions targetNamespace="http://some.ns.com/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns="http://schemas.xmlsoap.org/wsdl/">
> <types>
> <xsd:schema targetNamespace="http://some.ns.com/message"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns="http://www.w3.org/2001/XMLSchema">
> <element name="myMessage">
> <complexType>
> <sequence>
> <element name="number" type="int"/>
> </sequence>
> </complexType>
> </element>
> </xsd:schema>
> </types>
>
> <!-- Parts / ports definitions -->
>
> </wsdl:definitions>
> JAX-WS customization:
> <?xml version="1.0" encoding="UTF-8"?>
> <jaxws:bindings wsdlLocation="my.wsdl"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
> xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
> xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
> xmlns:my-xjc="http://some.ns.com/xjc"
> jaxb:version="2.0" jaxb:extensionBindingPrefixes="xjc my-xjc">
> <jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema">
> <jaxb:bindings node="xsd:element[@name='myMessage']//xsd:element[@name='numbers']">
> <my-xjc:somecfg a_param="a value"/>
> </jaxb:bindings>
> </jaxws:bindings>
> </jaxws:bindings>
> The problem is that the <my-xjc:somecfg/> element is not copied into the <annotation> of the respective element.
> Also the jaxb:extensionBindingPrefixes="" attribute is copied at the wrong place (on the myMessage element) additionally to the <xsd:schema/> element.
> Finally the WSDL2Java tool doesn't respect the proper format parsing the jaxb:extensionBindingPrefixes="" attribute (using comma-separated values instead of the whitespace separated list).
> I wrote a simple fix to these problems listed above but it could be improved to actually check better the validity of the xml elements.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Resolved: (CXF-2855) WSDL2Java JAX-WS XJC customizations
Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Kulp resolved CXF-2855.
------------------------------
Fix Version/s: 2.2.10
Resolution: Fixed
Patch applied. Thanks!
> WSDL2Java JAX-WS XJC customizations
> -----------------------------------
>
> Key: CXF-2855
> URL: https://issues.apache.org/jira/browse/CXF-2855
> Project: CXF
> Issue Type: Improvement
> Components: Tooling
> Affects Versions: 2.2.9
> Reporter: Nitro
> Assignee: Daniel Kulp
> Fix For: 2.2.10
>
> Attachments: apache-cxf-2.2.9-wsdlto-xjc-fix.diff
>
>
> Configuration of a private customization implemented with XJC plugin architecture is not copied into customized WSDL. For instance:
> WSDL:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions targetNamespace="http://some.ns.com/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns="http://schemas.xmlsoap.org/wsdl/">
> <types>
> <xsd:schema targetNamespace="http://some.ns.com/message"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns="http://www.w3.org/2001/XMLSchema">
> <element name="myMessage">
> <complexType>
> <sequence>
> <element name="number" type="int"/>
> </sequence>
> </complexType>
> </element>
> </xsd:schema>
> </types>
>
> <!-- Parts / ports definitions -->
>
> </wsdl:definitions>
> JAX-WS customization:
> <?xml version="1.0" encoding="UTF-8"?>
> <jaxws:bindings wsdlLocation="my.wsdl"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
> xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
> xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
> xmlns:my-xjc="http://some.ns.com/xjc"
> jaxb:version="2.0" jaxb:extensionBindingPrefixes="xjc my-xjc">
> <jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema">
> <jaxb:bindings node="xsd:element[@name='myMessage']//xsd:element[@name='numbers']">
> <my-xjc:somecfg a_param="a value"/>
> </jaxb:bindings>
> </jaxws:bindings>
> </jaxws:bindings>
> The problem is that the <my-xjc:somecfg/> element is not copied into the <annotation> of the respective element.
> Also the jaxb:extensionBindingPrefixes="" attribute is copied at the wrong place (on the myMessage element) additionally to the <xsd:schema/> element.
> Finally the WSDL2Java tool doesn't respect the proper format parsing the jaxb:extensionBindingPrefixes="" attribute (using comma-separated values instead of the whitespace separated list).
> I wrote a simple fix to these problems listed above but it could be improved to actually check better the validity of the xml elements.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (CXF-2855) WSDL2Java JAX-WS XJC customizations
Posted by "Nitro (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nitro updated CXF-2855:
-----------------------
Description:
Configuration of a private customization implemented with XJC plugin architecture is not copied into customized WSDL. For instance:
WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://some.ns.com/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<xsd:schema targetNamespace="http://some.ns.com/message"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="myMessage">
<complexType>
<sequence>
<element name="number" type="int"/>
</sequence>
</complexType>
</element>
</xsd:schema>
</types>
<!-- Parts / ports definitions -->
</wsdl:definitions>
JAX-WS customization:
<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings wsdlLocation="my.wsdl"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:my-xjc="http://some.ns.com/xjc"
jaxb:version="2.0" jaxb:extensionBindingPrefixes="xjc my-xjc">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema">
<jaxb:bindings node="xsd:element[@name='myMessage']//xsd:element[@name='numbers']">
<my-xjc:somecfg a_param="a value"/>
</jaxb:bindings>
</jaxws:bindings>
</jaxws:bindings>
The problem is that the <my-xjc:somecfg/> element is not copied into the <annotation> of the respective element.
Also the jaxb:extensionBindingPrefixes="" attribute is copied at the wrong place (on the myMessage element) additionally to the <xsd:schema/> element.
Finally the WSDL2Java tool doesn't respect the proper format parsing the jaxb:extensionBindingPrefixes="" attribute (using comma-separated values instead of the whitespace separated list).
I wrote a simple fix to these problems listed above but it could be improved to actually check better the validity of the xml elements.
was:
Configuration of a private customization implemented with XJC plugin architecture is not copied into customized WSDL. For instance:
WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://some.ns.com/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<xsd:schema targetNamespace="http://some.ns.com/message"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="myMessage">
<complexType>
<sequence>
<element name="number" type="int"/>
</sequence>
</complexType>
</element>
</xsd:schema>
</types>
<!-- Parts / ports definitions -->
</wsdl:definitions>
JAX-WS customization:
<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings wsdlLocation="my.wsdl"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:my-xjc="http://some.ns.com/xjc"
jaxb:version="2.0" jaxb:extensionBindingPrefixes="xjc my-xjc">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema">
<jaxb:bindings node="xsd:element[@name='myMessage']//xsd:element[@name='numbers']">
<my-xjc:somecfg a_param="a value"/>
</jaxb:bindings>
</jaxws:bindings>
</jaxws:bindings>
The problem is that the <my-xjc:somecfg/> element is not copied into the <annotation> of the respective element.
Also the jaxb:extensionBindingPrefixes="" attribute is copied at the wrong place (on the myMessage element) additionally to the <xsd:schema/> element.
Finally the WSDL2Java tool doesn't respect the proper format parsing the jaxb:extensionBindingPrefixes="" attribute (using comma-separated values instead of the whitespace separated list).
I wrote a simple fix to these problems listed above but it could be improved to actually check better the validity of the xml elements:
Index: tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java
===================================================================
--- tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java (revision 955974)
+++ tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java (working copy)
@@ -238,7 +238,9 @@
}
protected void copyAllJaxbDeclarations(final Node schemaNode, final Element jaxwsBindingNode) {
- appendJaxbVersion((Element)schemaNode);
+ if (isSchemaElement((Element)schemaNode)) {
+ appendJaxbVersion((Element)schemaNode);
+ }
Node[] embededNodes = getAnnotationNodes(schemaNode);
Node annotationNode = embededNodes[0];
@@ -247,15 +249,18 @@
for (Node childNode = jaxwsBindingNode.getFirstChild();
childNode != null;
childNode = childNode.getNextSibling()) {
-
- copyJaxbAttributes(childNode, (Element)schemaNode);
-
- if (!isJaxbBindings(childNode)) {
+
+ if (isSchemaElement((Element)schemaNode)) {
+ copyJaxbAttributes(childNode, (Element)schemaNode);
+ }
+
+ // TODO: check for valid extension namespaces
+ if (!(childNode instanceof Element)) { //!isJaxbBindings(childNode)) {
continue;
}
Element childEl = (Element)childNode;
- if (isJaxbBindingsElement(childEl)) {
+ if (isJaxbBindings(childNode) && isJaxbBindingsElement(childEl)) {
NodeList nlist = nodeSelector.queryNodes(schemaNode, childEl.getAttribute("node"));
for (int i = 0; i < nlist.getLength(); i++) {
@@ -307,7 +312,7 @@
String pfxs = attr.getValue();
while (pfxs.length() > 0) {
String pfx = pfxs;
- int idx = pfx.indexOf(',');
+ int idx = pfx.indexOf(' ');
if (idx != -1) {
pfxs = pfxs.substring(idx + 1);
pfx = pfx.substring(0, idx);
@@ -598,6 +603,11 @@
return this.wsdlNode;
}
+ private boolean isSchemaElement(Node schema) {
+ return ToolConstants.SCHEMA_URI.equals(schema.getNamespaceURI())
+ && "schema".equals(schema.getLocalName());
+ }
+
private boolean isJAXWSBindings(Node bindings) {
return ToolConstants.NS_JAXWS_BINDINGS.equals(bindings.getNamespaceURI())
&& "bindings".equals(bindings.getLocalName());
> WSDL2Java JAX-WS XJC customizations
> -----------------------------------
>
> Key: CXF-2855
> URL: https://issues.apache.org/jira/browse/CXF-2855
> Project: CXF
> Issue Type: Improvement
> Components: Tooling
> Affects Versions: 2.2.9
> Reporter: Nitro
> Attachments: apache-cxf-2.2.9-wsdlto-xjc-fix.diff
>
>
> Configuration of a private customization implemented with XJC plugin architecture is not copied into customized WSDL. For instance:
> WSDL:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions targetNamespace="http://some.ns.com/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns="http://schemas.xmlsoap.org/wsdl/">
> <types>
> <xsd:schema targetNamespace="http://some.ns.com/message"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns="http://www.w3.org/2001/XMLSchema">
> <element name="myMessage">
> <complexType>
> <sequence>
> <element name="number" type="int"/>
> </sequence>
> </complexType>
> </element>
> </xsd:schema>
> </types>
>
> <!-- Parts / ports definitions -->
>
> </wsdl:definitions>
> JAX-WS customization:
> <?xml version="1.0" encoding="UTF-8"?>
> <jaxws:bindings wsdlLocation="my.wsdl"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
> xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
> xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
> xmlns:my-xjc="http://some.ns.com/xjc"
> jaxb:version="2.0" jaxb:extensionBindingPrefixes="xjc my-xjc">
> <jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema">
> <jaxb:bindings node="xsd:element[@name='myMessage']//xsd:element[@name='numbers']">
> <my-xjc:somecfg a_param="a value"/>
> </jaxb:bindings>
> </jaxws:bindings>
> </jaxws:bindings>
> The problem is that the <my-xjc:somecfg/> element is not copied into the <annotation> of the respective element.
> Also the jaxb:extensionBindingPrefixes="" attribute is copied at the wrong place (on the myMessage element) additionally to the <xsd:schema/> element.
> Finally the WSDL2Java tool doesn't respect the proper format parsing the jaxb:extensionBindingPrefixes="" attribute (using comma-separated values instead of the whitespace separated list).
> I wrote a simple fix to these problems listed above but it could be improved to actually check better the validity of the xml elements.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Assigned: (CXF-2855) WSDL2Java JAX-WS XJC customizations
Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Kulp reassigned CXF-2855:
--------------------------------
Assignee: Daniel Kulp
> WSDL2Java JAX-WS XJC customizations
> -----------------------------------
>
> Key: CXF-2855
> URL: https://issues.apache.org/jira/browse/CXF-2855
> Project: CXF
> Issue Type: Improvement
> Components: Tooling
> Affects Versions: 2.2.9
> Reporter: Nitro
> Assignee: Daniel Kulp
> Attachments: apache-cxf-2.2.9-wsdlto-xjc-fix.diff
>
>
> Configuration of a private customization implemented with XJC plugin architecture is not copied into customized WSDL. For instance:
> WSDL:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions targetNamespace="http://some.ns.com/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns="http://schemas.xmlsoap.org/wsdl/">
> <types>
> <xsd:schema targetNamespace="http://some.ns.com/message"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns="http://www.w3.org/2001/XMLSchema">
> <element name="myMessage">
> <complexType>
> <sequence>
> <element name="number" type="int"/>
> </sequence>
> </complexType>
> </element>
> </xsd:schema>
> </types>
>
> <!-- Parts / ports definitions -->
>
> </wsdl:definitions>
> JAX-WS customization:
> <?xml version="1.0" encoding="UTF-8"?>
> <jaxws:bindings wsdlLocation="my.wsdl"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
> xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
> xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
> xmlns:my-xjc="http://some.ns.com/xjc"
> jaxb:version="2.0" jaxb:extensionBindingPrefixes="xjc my-xjc">
> <jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema">
> <jaxb:bindings node="xsd:element[@name='myMessage']//xsd:element[@name='numbers']">
> <my-xjc:somecfg a_param="a value"/>
> </jaxb:bindings>
> </jaxws:bindings>
> </jaxws:bindings>
> The problem is that the <my-xjc:somecfg/> element is not copied into the <annotation> of the respective element.
> Also the jaxb:extensionBindingPrefixes="" attribute is copied at the wrong place (on the myMessage element) additionally to the <xsd:schema/> element.
> Finally the WSDL2Java tool doesn't respect the proper format parsing the jaxb:extensionBindingPrefixes="" attribute (using comma-separated values instead of the whitespace separated list).
> I wrote a simple fix to these problems listed above but it could be improved to actually check better the validity of the xml elements.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (CXF-2855) WSDL2Java JAX-WS XJC customizations
Posted by "Nitro (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nitro updated CXF-2855:
-----------------------
Attachment: apache-cxf-2.2.9-wsdlto-xjc-fix.diff
Sorry I couldn't find the attachment feature in the bug submit form so I included it at the wrong place.
> WSDL2Java JAX-WS XJC customizations
> -----------------------------------
>
> Key: CXF-2855
> URL: https://issues.apache.org/jira/browse/CXF-2855
> Project: CXF
> Issue Type: Improvement
> Components: Tooling
> Affects Versions: 2.2.9
> Reporter: Nitro
> Attachments: apache-cxf-2.2.9-wsdlto-xjc-fix.diff
>
>
> Configuration of a private customization implemented with XJC plugin architecture is not copied into customized WSDL. For instance:
> WSDL:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions targetNamespace="http://some.ns.com/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns="http://schemas.xmlsoap.org/wsdl/">
> <types>
> <xsd:schema targetNamespace="http://some.ns.com/message"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns="http://www.w3.org/2001/XMLSchema">
> <element name="myMessage">
> <complexType>
> <sequence>
> <element name="number" type="int"/>
> </sequence>
> </complexType>
> </element>
> </xsd:schema>
> </types>
>
> <!-- Parts / ports definitions -->
>
> </wsdl:definitions>
> JAX-WS customization:
> <?xml version="1.0" encoding="UTF-8"?>
> <jaxws:bindings wsdlLocation="my.wsdl"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
> xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
> xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
> xmlns:my-xjc="http://some.ns.com/xjc"
> jaxb:version="2.0" jaxb:extensionBindingPrefixes="xjc my-xjc">
> <jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema">
> <jaxb:bindings node="xsd:element[@name='myMessage']//xsd:element[@name='numbers']">
> <my-xjc:somecfg a_param="a value"/>
> </jaxb:bindings>
> </jaxws:bindings>
> </jaxws:bindings>
> The problem is that the <my-xjc:somecfg/> element is not copied into the <annotation> of the respective element.
> Also the jaxb:extensionBindingPrefixes="" attribute is copied at the wrong place (on the myMessage element) additionally to the <xsd:schema/> element.
> Finally the WSDL2Java tool doesn't respect the proper format parsing the jaxb:extensionBindingPrefixes="" attribute (using comma-separated values instead of the whitespace separated list).
> I wrote a simple fix to these problems listed above but it could be improved to actually check better the validity of the xml elements:
> Index: tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java
> ===================================================================
> --- tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java (revision 955974)
> +++ tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java (working copy)
> @@ -238,7 +238,9 @@
> }
>
> protected void copyAllJaxbDeclarations(final Node schemaNode, final Element jaxwsBindingNode) {
> - appendJaxbVersion((Element)schemaNode);
> + if (isSchemaElement((Element)schemaNode)) {
> + appendJaxbVersion((Element)schemaNode);
> + }
>
> Node[] embededNodes = getAnnotationNodes(schemaNode);
> Node annotationNode = embededNodes[0];
> @@ -247,15 +249,18 @@
> for (Node childNode = jaxwsBindingNode.getFirstChild();
> childNode != null;
> childNode = childNode.getNextSibling()) {
> -
> - copyJaxbAttributes(childNode, (Element)schemaNode);
> -
> - if (!isJaxbBindings(childNode)) {
> +
> + if (isSchemaElement((Element)schemaNode)) {
> + copyJaxbAttributes(childNode, (Element)schemaNode);
> + }
> +
> + // TODO: check for valid extension namespaces
> + if (!(childNode instanceof Element)) { //!isJaxbBindings(childNode)) {
> continue;
> }
>
> Element childEl = (Element)childNode;
> - if (isJaxbBindingsElement(childEl)) {
> + if (isJaxbBindings(childNode) && isJaxbBindingsElement(childEl)) {
>
> NodeList nlist = nodeSelector.queryNodes(schemaNode, childEl.getAttribute("node"));
> for (int i = 0; i < nlist.getLength(); i++) {
> @@ -307,7 +312,7 @@
> String pfxs = attr.getValue();
> while (pfxs.length() > 0) {
> String pfx = pfxs;
> - int idx = pfx.indexOf(',');
> + int idx = pfx.indexOf(' ');
> if (idx != -1) {
> pfxs = pfxs.substring(idx + 1);
> pfx = pfx.substring(0, idx);
> @@ -598,6 +603,11 @@
> return this.wsdlNode;
> }
>
> + private boolean isSchemaElement(Node schema) {
> + return ToolConstants.SCHEMA_URI.equals(schema.getNamespaceURI())
> + && "schema".equals(schema.getLocalName());
> + }
> +
> private boolean isJAXWSBindings(Node bindings) {
> return ToolConstants.NS_JAXWS_BINDINGS.equals(bindings.getNamespaceURI())
> && "bindings".equals(bindings.getLocalName());
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.