You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by em...@apache.org on 2007/12/13 07:51:35 UTC

svn commit: r603842 - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/tools/common/ tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/ tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/ tools/w...

Author: ema
Date: Wed Dec 12 22:51:31 2007
New Revision: 603842

URL: http://svn.apache.org/viewvc?rev=603842&view=rev
Log:
[CXF-1248]Map was:EndpointReferenceType to javax.xml.ws.wsaddressing.W3CEndpointReference

Added:
    incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/W3CEPRJaxbBinding.xml
    incubator/cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/w3c-epr.wsdl
Modified:
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
    incubator/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java
    incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java
    incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml
    incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java
    incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java?rev=603842&r1=603841&r2=603842&view=diff
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/tools/common/ToolConstants.java Wed Dec 12 22:51:31 2007
@@ -28,6 +28,7 @@
     public static final String SCHEMA_URI = "http://www.w3.org/2001/XMLSchema";
     public static final String XML_NAMESPACE_URI = "http://www.w3.org/XML/1998/namespace";
     public static final String WSDL_NAMESPACE_URI = "http://schemas.xmlsoap.org/wsdl/";
+    public static final String WSA_NAMESPACE_URI = "http://www.w3.org/2005/08/addressing";
     
     /**
      * Tools permit caller to pass in additional bean definitions.
@@ -85,6 +86,7 @@
     public static final String CFG_ANT = "ant";
     public static final String CFG_LIB_REF = "library.references";
     public static final String CFG_ANT_PROP = "ant.prop";
+    public static final String CFG_NO_ADDRESS_BINDING = "noAddressBinding";
 
 
 

Modified: incubator/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java?rev=603842&r1=603841&r2=603842&view=diff
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java (original)
+++ incubator/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java Wed Dec 12 22:51:31 2007
@@ -95,9 +95,10 @@
     @SuppressWarnings("unchecked")
     public void execute() throws ToolException {
         if (!hasInfoOption()) {
+            //TODO: After runtime support w3c EPR mapping ,this will be removed
+            context.put(ToolConstants.CFG_NO_ADDRESS_BINDING, ToolConstants.CFG_NO_ADDRESS_BINDING);
             buildToolContext();
             validate(context);
-
             FrontEndProfile frontend = context.get(FrontEndProfile.class);
 
             if (frontend == null) {
@@ -276,7 +277,9 @@
 
     public void loadDefaultNSPackageMapping(ToolContext env) {
         if (!env.hasExcludeNamespace(DEFAULT_NS2PACKAGE)
-            && env.getBooleanValue(ToolConstants.CFG_DEFAULT_NS, "true")) {
+            && env.getBooleanValue(ToolConstants.CFG_DEFAULT_NS, "true")
+            && env.get(ToolConstants.CFG_NO_ADDRESS_BINDING) != null) {
+            //currently namespace2pacakge.cfg only contains wsadressing mapping
             env.loadDefaultNS2Pck(getResourceAsStream("namespace2package.cfg"));
         }
         if (env.getBooleanValue(ToolConstants.CFG_DEFAULT_EX, "true")) {
@@ -300,6 +303,9 @@
                 String excludePackagename = pns[j];
                 if (pos != -1) {
                     String ns = pns[j].substring(0, pos);
+                    if (ns.equals(ToolConstants.WSA_NAMESPACE_URI)) {
+                        env.put(ToolConstants.CFG_NO_ADDRESS_BINDING, ToolConstants.CFG_NO_ADDRESS_BINDING);
+                    }
                     excludePackagename = pns[j].substring(pos + 1);
                     env.addExcludeNamespacePackageMap(ns, excludePackagename);
                     env.addNamespacePackageMap(ns, excludePackagename);
@@ -324,6 +330,9 @@
                 String packagename = pns[j];
                 if (pos != -1) {
                     String ns = pns[j].substring(0, pos);
+                    if (ns.equals(ToolConstants.WSA_NAMESPACE_URI)) {
+                        env.put(ToolConstants.CFG_NO_ADDRESS_BINDING, ToolConstants.CFG_NO_ADDRESS_BINDING);
+                    }
                     packagename = pns[j].substring(pos + 1);
                     env.addNamespacePackageMap(ns, packagename);
                 } else {

Modified: incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java?rev=603842&r1=603841&r2=603842&view=diff
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java (original)
+++ incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java Wed Dec 12 22:51:31 2007
@@ -21,6 +21,7 @@
 import java.io.IOException;
 import java.io.Writer;
 import java.lang.reflect.Field;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -174,34 +175,51 @@
             schemaCompiler.setDefaultPackageName(context.getPackageName());
         }  
         
-
+        Options opts = null;
+        opts = getOptions(schemaCompiler);
+        
+        Vector<String> args = new Vector<String>();
+        if (context.get(ToolConstants.CFG_NO_ADDRESS_BINDING) == null) {
+            //hard code to enabale jaxb extensions
+            args.add("-extension");
+            URL bindingFileUrl = getClass().getResource("W3CEPRJaxbBinding.xml");
+            InputSource ins = new InputSource(bindingFileUrl.toString());
+            schemaCompiler.parseSchema(ins);
+        }
+        
         if (context.get(ToolConstants.CFG_XJC_ARGS) != null) {
             String xjcArgs = (String)context.get(ToolConstants.CFG_XJC_ARGS);
-            Vector<String> args = new Vector<String>();
             StringTokenizer tokenizer = new StringTokenizer(xjcArgs, ",", false);
             while (tokenizer.hasMoreTokens()) {
                 String arg = tokenizer.nextToken();
                 args.add(arg);
                 LOG.log(Level.FINE, "xjc arg:" + arg);
             }
-            Options opts = null;
+        }
+        if (context.get(ToolConstants.CFG_NO_ADDRESS_BINDING) == null
+            || context.get(ToolConstants.CFG_XJC_ARGS) != null) {
             try {
-                opts = getOptions(schemaCompiler);
-                // keep parseArguments happy, supply dummy required command-line opts
+
+                // keep parseArguments happy, supply dummy required command-line
+                // opts
                 opts.addGrammar(new InputSource("null"));
-                opts.parseArguments(args.toArray(new String[]{}));
+                opts.parseArguments(args.toArray(new String[] {}));
             } catch (BadCommandLineException e) {
-                String msg = "XJC reported 'BadCommandLineException' for -xjc argument:" + xjcArgs;
+                String msg = "XJC reported 'BadCommandLineException' for -xjc argument:";
+                for (String arg : args) {
+                    msg = msg + arg + " ";
+                }
                 LOG.log(Level.FINE, msg, e);
                 if (opts != null) {
                     String pluginUsage = getPluginUsageString(opts);
-                    if ("-X".equals(xjcArgs)) {
+                    msg = msg + System.getProperty("line.separator");
+                    if (args.contains("-X")) {
                         msg = pluginUsage;
                     } else {
                         msg += pluginUsage;
                     }
                 }
-                
+
                 throw new ToolException(msg, e);
             }
         }

Added: incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/W3CEPRJaxbBinding.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/W3CEPRJaxbBinding.xml?rev=603842&view=auto
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/W3CEPRJaxbBinding.xml (added)
+++ incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/W3CEPRJaxbBinding.xml Wed Dec 12 22:51:31 2007
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<bindings xmlns="http://java.sun.com/xml/ns/jaxb" xmlns:wsa="http://www.w3.org/2005/08/addressing" version="2.1">
+	<bindings scd="x-schema::wsa" if-exists="true">
+		<schemaBindings map="false" />
+		<bindings scd="wsa:EndpointReference">
+			<class ref="javax.xml.ws.wsaddressing.W3CEndpointReference" />
+		</bindings>
+		<bindings scd="~wsa:EndpointReferenceType">
+			<class ref="javax.xml.ws.wsaddressing.W3CEndpointReference" />
+		</bindings>
+	</bindings>
+</bindings>
\ No newline at end of file

Modified: incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml?rev=603842&r1=603841&r2=603842&view=diff
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml (original)
+++ incubator/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/jaxws-toolspec.xml Wed Dec 12 22:51:31 2007
@@ -269,6 +269,14 @@
                 </associatedArgument>
                 <switch>xjc</switch>
             </option>
+            
+           <option id="noAddressBinding" maxOccurs="1">
+                <annotation>
+                    Do not use address jaxb binding file to map wsa:EndpointReferenceType 
+                    or wsa:EndpointReference to javax.xml.ws.wsaddressing.W3CEndpointReference
+                </annotation>
+                <switch>noAddressBinding</switch>
+            </option>
 
         </optionGroup>
         <optionGroup id="common_options">

Modified: incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java?rev=603842&r1=603841&r2=603842&view=diff
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java (original)
+++ incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java Wed Dec 12 22:51:31 2007
@@ -257,7 +257,7 @@
 
     @Test
     public void testDefaultLoadNSMappingOFF() throws Exception {
-        String[] args = new String[] {"-dns", "false", "-d", output.getCanonicalPath(),
+        String[] args = new String[] {"-dns", "false", "-d", output.getCanonicalPath(), "-noAddressBinding",
                                       getLocation("/wsdl2java_wsdl/basic_callback.wsdl")};
 
         WSDLToJava.main(args);
@@ -280,7 +280,7 @@
 
     @Test
     public void testDefaultLoadNSMappingON() throws Exception {
-        String[] args = new String[] {"-d", output.getCanonicalPath(),
+        String[] args = new String[] {"-d", output.getCanonicalPath(), "-noAddressBinding",
                                       getLocation("/wsdl2java_wsdl/basic_callback.wsdl")};
 
         WSDLToJava.main(args);
@@ -412,6 +412,7 @@
     @Test
     public void testDefatultNsMap() throws Exception {
         env.put(ToolConstants.CFG_ALL, ToolConstants.CFG_ALL);
+        env.put(ToolConstants.CFG_NO_ADDRESS_BINDING, ToolConstants.CFG_NO_ADDRESS_BINDING);
         env.put(ToolConstants.CFG_WSDLURL, getLocation("/wsdl2java_wsdl/cxf492/locator.wsdl"));
         processor.setContext(env);
         processor.execute();
@@ -466,7 +467,7 @@
 
     @Test
     public void testDefaultNSWithPkg() throws Exception {
-        String[] args = new String[] {"-d", output.getCanonicalPath(), "-p", "org.cxf",
+        String[] args = new String[] {"-d", output.getCanonicalPath(), "-p", "org.cxf", "-noAddressBinding",
                                       getLocation("/wsdl2java_wsdl/basic_callback.wsdl")};
 
         WSDLToJava.main(args);

Modified: incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java?rev=603842&r1=603841&r2=603842&view=diff
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java (original)
+++ incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java Wed Dec 12 22:51:31 2007
@@ -1164,4 +1164,17 @@
             assertTrue(e.getMessage().indexOf(": is not a valid char in the targetNamespace") != -1);
         }
     }
+    //TODO:This will be removed when runtime supports this mapping
+    @org.junit.Ignore
+    public void testW3CEPR() throws Exception {
+        env.put(ToolConstants.CFG_WSDLURL, getLocation("/wsdl2java_wsdl/w3c-epr.wsdl"));
+        processor.setContext(env);
+        processor.execute();
+        Class sei = this.classLoader.loadClass("org.apache.w3c.epr.AddNumbersPortType");
+        Method method = sei.getMethod("addNumbers", 
+                                      new Class[]{javax.xml.ws.wsaddressing.W3CEndpointReference.class});
+        assertNotNull("wsdl2java does not map w3c:EndpointReferenceType to javax.xml.ws.EndpointReference"
+                      , method);
+    }
+    
 }

Added: incubator/cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/w3c-epr.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/w3c-epr.wsdl?rev=603842&view=auto
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/w3c-epr.wsdl (added)
+++ incubator/cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/w3c-epr.wsdl Wed Dec 12 22:51:31 2007
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<definitions name="AddNumbers" targetNamespace="http://apache.org/w3c/epr"
+	xmlns:tns="http://apache.org/w3c/epr"
+	xmlns="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:wsa="http://www.w3.org/2005/08/addressing"
+	xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl">
+	<types>
+		<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+			elementFormDefault="qualified"
+			targetNamespace="http://apache.org/w3c/epr">
+			<import namespace="http://www.w3.org/2005/08/addressing"
+				schemaLocation="http://www.w3.org/2005/08/addressing/ws-addr.xsd" />
+			<element name="addNumbersResponse" type="xsd:string" />
+
+			<complexType name="addNumbers">
+				<sequence>
+					<element name="number1" type="xsd:int" />
+					<element name="number2" type="xsd:int" />
+				</sequence>
+			</complexType>
+			<element name="addNumbers" type="wsa:EndpointReferenceType" />
+
+			<element name="AddNumbersFault" type="tns:AddNumbersFault" />
+			<complexType name="AddNumbersFault">
+				<sequence>
+					<element name="detail" type="xsd:string" />
+					<element name="message" type="xsd:string" />
+				</sequence>
+			</complexType>
+		</xsd:schema>
+	</types>
+	<message name="addNumbers">
+		<part name="parameters" element="tns:addNumbers" />
+	</message>
+	<message name="addNumbersResponse">
+		<part name="result" element="tns:AddNumbersFault" />
+	</message>
+
+
+	<message name="addNumbersFault">
+		<part name="result" element="tns:addNumbersResponse" />
+	</message>
+
+
+	<portType name="AddNumbersPortType">
+		<operation name="addNumbers">
+			<input message="tns:addNumbers" />
+			<output message="tns:addNumbersResponse" />
+			<fault name="addNumbersFault" message="tns:addNumbersFault" />
+		</operation>
+	</portType>
+	<binding name="AddNumbersBinding" type="tns:AddNumbersPortType">
+		<wsaw:UsingAddressing wsdl:required="false" />
+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+			style="document" />
+		<operation name="addNumbers">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="addNumbersFault">
+				<soap:fault name="addNumbersFault" use="literal" />
+			</fault>
+		</operation>
+	</binding>
+	<service name="AddNumbersService">
+		<port name="AddNumbersPort" binding="tns:AddNumbersBinding">
+			<soap:address
+				location="http://localhost:9000/SoapContext/SoapPort" />
+
+		</port>
+	</service>
+</definitions>
\ No newline at end of file