You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicemix.apache.org by "Christian Connert (JIRA)" <ji...@apache.org> on 2009/11/17 09:19:52 UTC
[jira] Updated: (SMXCOMP-677) CxfBcProvider transform import xsd to
inline xsd casues problem with wsdl imports
[ https://issues.apache.org/activemq/browse/SMXCOMP-677?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christian Connert updated SMXCOMP-677:
--------------------------------------
Patch Info: [Patch Available]
Description:
Hi,
the following provider declaration causes a FileNotFoundException (OrderInterface.wsdl):
<cxfbc:provider wsdl="OrderProcessService.wsdl"
service="pns:OrderProcessService"
endpoint="OrderProcessServiceProvider"
useJBIWrapper="false"
useSOAPEnvelope="false"/>
I tracked down to problem to the following piece of code within the validate method of the CxfBcProvider.java (line 416-453) of my patched version (SMXCOMP-660):
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();The wsdl file of the provider declaration is public a
List<ServiceInfo> serviceInfos = new ArrayList<ServiceInfo>();
serviceInfos.add(serInfo);
//transform import xsd to inline xsd
ServiceWSDLBuilder swBuilder = new ServiceWSDLBuilder(getBus(),
serviceInfos);
for (String key : schemaList.keySet()) {
Element ele = schemaList.get(key);
for (SchemaInfo sInfo : serInfo.getSchemas()) {
Node nl = sInfo.getElement().getElementsByTagNameNS(
"http://www.w3.org/2001/XMLSchema", "import")
.item(0);
if (sInfo.getNamespaceURI() == null // it's import
// schema
&& nl != null
&& ((Element) nl)The wsdl file of the provider declaration is public a
.getAttribute("namespace")
.equals(
ele
.getAttribute("targetNamespace"))) {
sInfo.setElement(ele);
}
}
}
serInfo.setProperty(WSDLServiceBuilder.WSDL_DEFINITION, null);
serInfo.getInterface().setProperty(WSDLServiceBuilder.WSDL_PORTTYPE, null);
for (OperationInfo opInfo : serInfo.getInterface().getOperations()) {
opInfo.setProperty(WSDLServiceBuilder.WSDL_OPERATION, null);
}
description = WSDLFactory.newInstance().newWSDLWriter()
.getDocument(swBuilder.build());
Removing this piece of code sovles the problem. It doesn't causes any problems with the tests.
Why are imported schema's transformed into inline ones?
Greetings
Christian Connert
was:
Hi,
the following provider decleration causes a FileNotFoundException (OrderInterface.wsdl):
Environment:
System:
2.6.28-15-generic #52-Ubuntu SMP Wed Sep 9 10:48:52 UTC 2009 x86_64 GNU/Linux
JAVA:
java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
Server:
apache-tomcat-6.0.14
ServiceMix:
3.3.1 war
was:
« Hide
System:
2.6.28-15-generic #52-Ubuntu SMP Wed Sep 9 10:48:52 UTC 2009 x86_64 GNU/Linux
JAVA:
java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
Server:
apache-tomcat-6.0.14
ServiceMix:
3.3.1 war
Assignee: Freeman Fang
> CxfBcProvider transform import xsd to inline xsd casues problem with wsdl imports
> ---------------------------------------------------------------------------------
>
> Key: SMXCOMP-677
> URL: https://issues.apache.org/activemq/browse/SMXCOMP-677
> Project: ServiceMix Components
> Issue Type: Bug
> Components: servicemix-cxf-bc
> Environment: System:
> 2.6.28-15-generic #52-Ubuntu SMP Wed Sep 9 10:48:52 UTC 2009 x86_64 GNU/Linux
> JAVA:
> java version "1.6.0_16"
> Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
> Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
> Server:
> apache-tomcat-6.0.14
> ServiceMix:
> 3.3.1 war
> Reporter: Christian Connert
> Assignee: Freeman Fang
> Fix For: servicemix-cxf-bc-2009.02
>
> Attachments: OrderProcessService.wsdl
>
>
> Hi,
> the following provider declaration causes a FileNotFoundException (OrderInterface.wsdl):
> <cxfbc:provider wsdl="OrderProcessService.wsdl"
> service="pns:OrderProcessService"
> endpoint="OrderProcessServiceProvider"
> useJBIWrapper="false"
> useSOAPEnvelope="false"/>
> I tracked down to problem to the following piece of code within the validate method of the CxfBcProvider.java (line 416-453) of my patched version (SMXCOMP-660):
> 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();The wsdl file of the provider declaration is public a
> List<ServiceInfo> serviceInfos = new ArrayList<ServiceInfo>();
> serviceInfos.add(serInfo);
> //transform import xsd to inline xsd
> ServiceWSDLBuilder swBuilder = new ServiceWSDLBuilder(getBus(),
> serviceInfos);
> for (String key : schemaList.keySet()) {
> Element ele = schemaList.get(key);
> for (SchemaInfo sInfo : serInfo.getSchemas()) {
> Node nl = sInfo.getElement().getElementsByTagNameNS(
> "http://www.w3.org/2001/XMLSchema", "import")
> .item(0);
> if (sInfo.getNamespaceURI() == null // it's import
> // schema
> && nl != null
> && ((Element) nl)The wsdl file of the provider declaration is public a
> .getAttribute("namespace")
> .equals(
> ele
> .getAttribute("targetNamespace"))) {
> sInfo.setElement(ele);
> }
> }
> }
> serInfo.setProperty(WSDLServiceBuilder.WSDL_DEFINITION, null);
> serInfo.getInterface().setProperty(WSDLServiceBuilder.WSDL_PORTTYPE, null);
> for (OperationInfo opInfo : serInfo.getInterface().getOperations()) {
> opInfo.setProperty(WSDLServiceBuilder.WSDL_OPERATION, null);
> }
> description = WSDLFactory.newInstance().newWSDLWriter()
> .getDocument(swBuilder.build());
> Removing this piece of code sovles the problem. It doesn't causes any problems with the tests.
> Why are imported schema's transformed into inline ones?
> Greetings
> Christian Connert
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.