You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2008/05/13 10:05:55 UTC
svn commit: r655769 - in
/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src:
main/java/org/apache/servicemix/cxfbc/
main/java/org/apache/servicemix/cxfbc/interceptors/
test/resources/org/apache/servicemix/cxfbc...
Author: ffang
Date: Tue May 13 01:05:55 2008
New Revision: 655769
URL: http://svn.apache.org/viewvc?rev=655769&view=rev
Log:
[SM-1351]Cxf Bc should transform import xsd to inline xsd for endpoint's definition
Added:
servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/base.xsd (with props)
Modified:
servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java
servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java
servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/hello_world_base.wsdl
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java?rev=655769&r1=655768&r2=655769&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java Tue May 13 01:05:55 2008
@@ -20,7 +20,9 @@
import java.io.OutputStream;
import java.net.URI;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import javax.jbi.management.DeploymentException;
@@ -35,7 +37,7 @@
import javax.xml.stream.XMLStreamWriter;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
-
+import org.w3c.dom.Element;
import com.ibm.wsdl.Constants;
import org.apache.cxf.Bus;
@@ -61,12 +63,16 @@
import org.apache.cxf.service.Service;
import org.apache.cxf.service.model.BindingOperationInfo;
import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.service.model.SchemaInfo;
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.transport.Conduit;
import org.apache.cxf.transport.ConduitInitiator;
import org.apache.cxf.transport.ConduitInitiatorManager;
import org.apache.cxf.transport.jbi.JBIMessageHelper;
import org.apache.cxf.wsdl.WSDLManager;
+import org.apache.cxf.wsdl11.SchemaUtil;
+import org.apache.cxf.wsdl11.ServiceWSDLBuilder;
+import org.apache.cxf.wsdl11.WSDLServiceBuilder;
import org.apache.cxf.wsdl11.WSDLServiceFactory;
import org.apache.servicemix.common.endpoints.ProviderEndpoint;
import org.apache.servicemix.cxfbc.interceptors.JbiOutInterceptor;
@@ -77,6 +83,7 @@
+
/**
*
* @author gnodet
@@ -257,6 +264,8 @@
// use wsdl manager to parse wsdl or get cached definition
definition = getBus().getExtension(WSDLManager.class)
.getDefinition(wsdl.getURL());
+
+
} catch (WSDLException ex) {
//
}
@@ -265,6 +274,7 @@
cxfService = factory.create();
ei = cxfService.getServiceInfos().iterator().next()
.getEndpoints().iterator().next();
+
for (ServiceInfo serviceInfo : cxfService.getServiceInfos()) {
if (serviceInfo.getName().equals(service)
&& getEndpoint() != null
@@ -275,6 +285,32 @@
}
}
+ //transform import xsd to inline xsd
+ ServiceWSDLBuilder swBuilder = new ServiceWSDLBuilder(getBus(), cxfService.getServiceInfos());
+ ServiceInfo serInfo = new ServiceInfo();
+
+ Map<String, Element> schemaList = new HashMap<String, Element>();
+ SchemaUtil schemaUtil = new SchemaUtil(bus, schemaList);
+ schemaUtil.getSchemas(definition, serInfo);
+
+ serInfo = ei.getService();
+ for (String key : schemaList.keySet()) {
+ Element ele = schemaList.get(key);
+ for (SchemaInfo sInfo : serInfo.getSchemas()) {
+ if (sInfo.getNamespaceURI() == null //it's import schema
+ && ((Element)sInfo.getElement().getElementsByTagNameNS(
+ "http://www.w3.org/2001/XMLSchema",
+ "import").item(0)).
+ getAttribute("namespace").
+ equals(ele.getAttribute("targetNamespace"))) {
+
+ sInfo.setElement(ele);
+ }
+ }
+ }
+ serInfo.setProperty(WSDLServiceBuilder.WSDL_DEFINITION, null);
+ description = WSDLFactory.newInstance().newWSDLWriter().getDocument(swBuilder.build());
+
if (endpoint == null) {
endpoint = ei.getName().getLocalPart();
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java?rev=655769&r1=655768&r2=655769&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java Tue May 13 01:05:55 2008
@@ -233,7 +233,7 @@
}
SchemaInfo schemaInfo =
getOperation(message).getBinding().getService().getSchema(jbiFaultDetail.getNamespaceURI());
- if (!schemaInfo.isElementFormQualified()) {
+ if (schemaInfo != null && !schemaInfo.isElementFormQualified()) {
//that's unquailied fault
jbiFaultDetail = addEmptyDefaultTns((Element)jbiFaultDetail);
}
Added: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/base.xsd
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/base.xsd?rev=655769&view=auto
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/base.xsd (added)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/base.xsd Tue May 13 01:05:55 2008
@@ -0,0 +1,157 @@
+<?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.
+-->
+ <schema targetNamespace="http://apache.org/hello_world_soap_http/types" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:x1="http://apache.org/hello_world_soap_http/types" elementFormDefault="qualified">
+ <element name="sayHi">
+ <complexType/>
+ </element>
+ <element name="sayHiResponse">
+ <complexType>
+ <sequence>
+ <element name="responseType" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="greetMe">
+ <complexType>
+ <sequence>
+ <element name="requestType" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="greetMeResponse">
+ <complexType>
+ <sequence>
+ <element name="responseType" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="testNillable">
+ <complexType>
+ <sequence>
+ <element name="NillElem" nillable="true" type="string"/>
+ <element name="intElem" type="int"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="testNillableResponse">
+ <complexType>
+ <sequence>
+ <element name="responseType" nillable="true" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="greetMeLater">
+ <complexType>
+ <sequence>
+ <element name="requestType" type="long"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="greetMeLaterResponse">
+ <complexType>
+ <sequence>
+ <element name="responseType" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="greetMeSometime">
+ <complexType>
+ <sequence>
+ <element name="requestType" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="greetMeSometimeResponse">
+ <complexType>
+ <sequence>
+ <element name="responseType" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="greetMeOneWay">
+ <complexType>
+ <sequence>
+ <element name="requestType" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="testDocLitFault">
+ <complexType>
+ <sequence>
+ <element name="faultType" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="testDocLitFaultResponse">
+ <complexType>
+ <sequence/>
+ </complexType>
+ </element>
+ <complexType name="ErrorCode">
+ <sequence>
+ <element name="minor" type="short"/>
+ <element name="major" type="short"/>
+ </sequence>
+ </complexType>
+ <element name="NoSuchCodeLit">
+ <complexType>
+ <sequence>
+ <element name="code" type="x1:ErrorCode"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="BadRecordLit" type="string"/>
+ <complexType name="BadRecord">
+ <sequence>
+ <element name="reason" type="string"/>
+ <element name="code" type="short"/>
+ </sequence>
+ </complexType>
+ <complexType name="addNumbers">
+ <sequence>
+ <element name="arg0" type="int"/>
+ <element name="arg1" type="int"/>
+ </sequence>
+ </complexType>
+ <element name="addNumbers" type="x1:addNumbers"/>
+ <complexType name="addNumbersResponse">
+ <sequence>
+ <element name="return" type="int"/>
+ </sequence>
+ </complexType>
+ <element name="addNumbersResponse" type="x1:addNumbersResponse"/>
+ <complexType name="stringStruct">
+ <sequence>
+ <element name="arg0" type="string"/>
+ <element name="arg1" type="string"/>
+ </sequence>
+ </complexType>
+ <element name="BareDocument" type="string"/>
+ <element name="BareDocumentResponse">
+ <complexType>
+ <sequence>
+ <element name="company" type="string"/>
+ </sequence>
+ <attribute name="id" type="int"/>
+ </complexType>
+ </element>
+ </schema>
Propchange: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/base.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/base.xsd
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/base.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/hello_world_base.wsdl
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/hello_world_base.wsdl?rev=655769&r1=655768&r2=655769&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/hello_world_base.wsdl (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/ws/security/hello_world_base.wsdl Tue May 13 01:05:55 2008
@@ -25,144 +25,9 @@
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://apache.org/hello_world_soap_http" name="HelloWorld">
<wsdl:types>
- <schema targetNamespace="http://apache.org/hello_world_soap_http/types" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:x1="http://apache.org/hello_world_soap_http/types" elementFormDefault="qualified">
- <element name="sayHi">
- <complexType/>
- </element>
- <element name="sayHiResponse">
- <complexType>
- <sequence>
- <element name="responseType" type="string"/>
- </sequence>
- </complexType>
- </element>
- <element name="greetMe">
- <complexType>
- <sequence>
- <element name="requestType" type="string"/>
- </sequence>
- </complexType>
- </element>
- <element name="greetMeResponse">
- <complexType>
- <sequence>
- <element name="responseType" type="string"/>
- </sequence>
- </complexType>
- </element>
-
- <element name="testNillable">
- <complexType>
- <sequence>
- <element name="NillElem" nillable="true" type="string"/>
- <element name="intElem" type="int"/>
- </sequence>
- </complexType>
- </element>
- <element name="testNillableResponse">
- <complexType>
- <sequence>
- <element name="responseType" nillable="true" type="string"/>
- </sequence>
- </complexType>
- </element>
-
- <element name="greetMeLater">
- <complexType>
- <sequence>
- <element name="requestType" type="long"/>
- </sequence>
- </complexType>
- </element>
- <element name="greetMeLaterResponse">
- <complexType>
- <sequence>
- <element name="responseType" type="string"/>
- </sequence>
- </complexType>
- </element>
- <element name="greetMeSometime">
- <complexType>
- <sequence>
- <element name="requestType" type="string"/>
- </sequence>
- </complexType>
- </element>
- <element name="greetMeSometimeResponse">
- <complexType>
- <sequence>
- <element name="responseType" type="string"/>
- </sequence>
- </complexType>
- </element>
- <element name="greetMeOneWay">
- <complexType>
- <sequence>
- <element name="requestType" type="string"/>
- </sequence>
- </complexType>
- </element>
- <element name="testDocLitFault">
- <complexType>
- <sequence>
- <element name="faultType" type="string"/>
- </sequence>
- </complexType>
- </element>
- <element name="testDocLitFaultResponse">
- <complexType>
- <sequence/>
- </complexType>
- </element>
- <complexType name="ErrorCode">
- <sequence>
- <element name="minor" type="short"/>
- <element name="major" type="short"/>
- </sequence>
- </complexType>
- <element name="NoSuchCodeLit">
- <complexType>
- <sequence>
- <element name="code" type="x1:ErrorCode"/>
- </sequence>
- </complexType>
- </element>
- <element name="BadRecordLit" type="string"/>
- <complexType name="BadRecord">
- <sequence>
- <element name="reason" type="string"/>
- <element name="code" type="short"/>
- </sequence>
- </complexType>
- <complexType name="addNumbers">
- <sequence>
- <element name="arg0" type="int"/>
- <element name="arg1" type="int"/>
- </sequence>
- </complexType>
- <element name="addNumbers" type="x1:addNumbers"/>
- <complexType name="addNumbersResponse">
- <sequence>
- <element name="return" type="int"/>
- </sequence>
- </complexType>
- <element name="addNumbersResponse" type="x1:addNumbersResponse"/>
- <complexType name="stringStruct">
- <sequence>
- <element name="arg0" type="string"/>
- <element name="arg1" type="string"/>
- </sequence>
- </complexType>
- <element name="BareDocument" type="string"/>
- <element name="BareDocumentResponse">
- <complexType>
- <sequence>
- <element name="company" type="string"/>
- </sequence>
- <attribute name="id" type="int"/>
- </complexType>
- </element>
- </schema>
+ <xsd:schema>
+ <xsd:import namespace="http://apache.org/hello_world_soap_http/types" schemaLocation="base.xsd"/>
+ </xsd:schema>
</wsdl:types>
<wsdl:message name="sayHiRequest">
<wsdl:part name="in" element="x1:sayHi"/>