You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by mm...@apache.org on 2008/01/10 10:59:07 UTC

svn commit: r610732 - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/ws/addressing/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ tools/javato/ws/src/test/java/...

Author: mmao
Date: Thu Jan 10 01:58:54 2008
New Revision: 610732

URL: http://svn.apache.org/viewvc?rev=610732&view=rev
Log:
CXF-1385
  * Add the schemaLocation for the imported schema if the namespace is ws-a


Added:
    incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/epr/
    incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/epr/AddNumbersImpl.java
Modified:
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/JAXWSAConstants.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
    incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/JAXWSAConstants.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/JAXWSAConstants.java?rev=610732&r1=610731&r2=610732&view=diff
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/JAXWSAConstants.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/JAXWSAConstants.java Thu Jan 10 01:58:54 2008
@@ -37,6 +37,7 @@
     
     public static final String NS_WSA = "http://www.w3.org/2005/08/addressing";
     public static final String WSA_PREFIX = "wsa";
+    public static final String WSA_XSD = "http://www.w3.org/2006/03/addressing/ws-addr.xsd";
     
     public static final String WSA_ERF_NAME = "EndpointReference";
     public static final String WSA_REFERENCEPARAMETERS_NAME = "ReferenceParameters";

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java?rev=610732&r1=610731&r2=610732&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java Thu Jan 10 01:58:54 2008
@@ -86,6 +86,7 @@
         //the JAXWS-RI doesn't qualify the schemas for the wrapper types
         //and thus won't work if we do.
         setQualifyWrapperSchema(false);
+        initSchemaLocations();
     }
 
     public JaxWsServiceFactoryBean(JaxWsImplementorInfo implInfo) {
@@ -93,6 +94,11 @@
         this.implInfo = implInfo;
         initConfiguration(implInfo);
         this.serviceClass = implInfo.getEndpointClass();
+    }
+
+    private void initSchemaLocations() {
+        this.schemaLocationMapping.put(JAXWSAConstants.NS_WSA, 
+                                       JAXWSAConstants.WSA_XSD);
     }
 
     @Override

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?rev=610732&r1=610731&r2=610732&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Thu Jan 10 01:58:54 2008
@@ -134,6 +134,8 @@
 
     protected Class<?> serviceClass;
 
+    protected final Map<String, String> schemaLocationMapping = new HashMap<String, String>();
+
     private List<AbstractServiceConfiguration> serviceConfigurations = 
         new ArrayList<AbstractServiceConfiguration>();
     private QName serviceName;
@@ -150,7 +152,7 @@
     private boolean qualifiedSchemas = true;
 
     private List<AbstractFeature> features;
-
+    
     public ReflectionServiceFactoryBean() {
         getServiceConfigurations().add(0, new DefaultServiceConfiguration());
 
@@ -980,11 +982,14 @@
     }
 
     private void addImport(XmlSchema schema, String ns) {
-        if (!ns.equals(schema.getTargetNamespace()) && !ns.equals(WSDLConstants.NS_SCHEMA_XSD)
+        if (!ns.equals(schema.getTargetNamespace()) 
+            && !ns.equals(WSDLConstants.NS_SCHEMA_XSD)
             && !isExistImport(schema, ns)) {
-
             XmlSchemaImport is = new XmlSchemaImport();
             is.setNamespace(ns);
+            if (this.schemaLocationMapping.get(ns) != null) {
+                is.setSchemaLocation(this.schemaLocationMapping.get(ns));
+            }
             schema.getItems().add(is);
         }
     }
@@ -1185,6 +1190,7 @@
         SchemaInfo schemaInfo = new SchemaInfo(serviceInfo, namespaceURI);
         SchemaCollection col = serviceInfo.getXmlSchemaCollection();
         XmlSchema schema = col.getSchemaByTargetNamespace(namespaceURI);
+
         if (schema != null) {
             schemaInfo.setSchema(schema);
             serviceInfo.addSchema(schemaInfo);
@@ -1195,7 +1201,6 @@
         if (qualified) {
             schema.setElementFormDefault(new XmlSchemaForm(XmlSchemaForm.QUALIFIED));
         }
-
         schemaInfo.setSchema(schema);
 
         Map<String, String> explicitNamespaceMappings = this.getDataBinding().getDeclaredNamespaceMappings();

Added: incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/epr/AddNumbersImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/epr/AddNumbersImpl.java?rev=610732&view=auto
==============================================================================
--- incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/epr/AddNumbersImpl.java (added)
+++ incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/epr/AddNumbersImpl.java Thu Jan 10 01:58:54 2008
@@ -0,0 +1,48 @@
+/**
+ * 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.
+ */
+
+package org.apache.cxf.tools.fortest.epr;
+
+import javax.jws.WebService;
+import javax.xml.ws.BindingType;
+import javax.xml.ws.WebServiceContext;
+import javax.xml.ws.soap.Addressing;
+import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+@WebService(
+    name = "AddNumbers", 
+    portName = "AddNumbersPort", 
+    targetNamespace = "http://foobar.org/", 
+    serviceName = "AddNumbersService"
+)
+@BindingType(value = SOAPBinding.SOAP11HTTP_BINDING)
+@Addressing(enabled = true, required = true)
+
+public class AddNumbersImpl {
+    WebServiceContext wsc;
+
+    public W3CEndpointReference getW3CEPR() {
+        return (W3CEndpointReference) wsc.getEndpointReference();
+    }
+
+    public int doAddNumbers(int number1, int number2) {
+        return number1 + number2;
+    }
+}

Modified: incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java?rev=610732&r1=610731&r2=610732&view=diff
==============================================================================
--- incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java (original)
+++ incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java Thu Jan 10 01:58:54 2008
@@ -556,4 +556,23 @@
         assertTrue(wsdlFile.exists());
         assertTrue(getStringFromFile(wsdlFile).indexOf("elementFormDefault=\"unqualified\"") != -1);
     }
+
+    @Test
+    public void testEPR() throws Exception {
+        env.put(ToolConstants.CFG_OUTPUTFILE, output.getPath() + "/epr.wsdl");
+        env.put(ToolConstants.CFG_CLASSNAME, "org.apache.cxf.tools.fortest.epr.AddNumbersImpl");
+        env.put(ToolConstants.CFG_VERBOSE, ToolConstants.CFG_VERBOSE);
+        env.put(ToolConstants.CFG_CREATE_XSD_IMPORTS, ToolConstants.CFG_CREATE_XSD_IMPORTS);
+        try {
+            processor.setEnvironment(env);
+            processor.process();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        File wsdlFile = new File(output, "epr_schema1.xsd");
+        assertTrue(wsdlFile.exists());
+        String expectedString = "schemaLocation=\"http://www.w3.org/2006/03/addressing/ws-addr.xsd\"";
+        assertTrue(getStringFromFile(wsdlFile).indexOf(expectedString) != -1);
+    }
 }