jms:soap-provider doesn't use custom marshaler
----------------------------------------------
Key: SMXCOMP-670
URL: https://issues.apache.org/activemq/browse/SMXCOMP-670
Project: ServiceMix Components
Issue Type: Bug
Components: servicemix-jms
Affects Versions: servicemix-jms-2009.01
Environment: OS: Linux chriNB 2.6.24-24-generic #1 SMP Fri Jul 24
22:46:06 UTC 2009 i686 GNU/Linux
JAVA:
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)
Server:
apache-tomcat-6.0.14
Reporter: Christian Connert
Hi,
The JmsSoapProviderEndpoint overrides the the custom JmsSoapProviderMarshaler
in it's validate method:
@Override
public void validate() throws DeploymentException {
if (wsdl == null) {
throw new DeploymentException("wsdl property must be set");
}
JmsSoapProviderMarshaler marshaler = new JmsSoapProviderMarshaler();
try {
description = DomUtil.parse(wsdl.getInputStream());
Element elem = description.getDocumentElement();
if (WSDLUtils.WSDL1_NAMESPACE.equals(elem.getNamespaceURI())) {
validateWsdl1(marshaler);
} else if
(WSDLUtils.WSDL2_NAMESPACE.equals(elem.getNamespaceURI())) {
validateWsdl2(marshaler);
} else {
throw new DeploymentException("Unrecognized wsdl namespace: " +
elem.getNamespaceURI());
}
marshaler.setUseJbiWrapper(useJbiWrapper);
marshaler.setPolicies(policies);
setMarshaler(marshaler);
} catch (DeploymentException e) {
throw e;
} catch (Exception e) {
throw new DeploymentException("Unable to read WSDL from: " + wsdl,
e);
}
super.validate();
}
Thus one can't add a custom marshaler for this type of endpoint. A possible fix
would be:
public void validate() throws DeploymentException {
if (wsdl == null) {
throw new DeploymentException("wsdl property must be set");
}
JmsSoapProviderMarshaler marshaler = getMarshaler();
if(marshaler==null)
marshaler = new JmsSoapProviderMarshaler();
try {
description = DomUtil.parse(wsdl.getInputStream());
Element elem = description.getDocumentElement();
if (WSDLUtils.WSDL1_NAMESPACE.equals(elem.getNamespaceURI())) {
validateWsdl1(marshaler);
} else if
(WSDLUtils.WSDL2_NAMESPACE.equals(elem.getNamespaceURI())) {
validateWsdl2(marshaler);
} else {
throw new DeploymentException("Unrecognized wsdl namespace: " +
elem.getNamespaceURI());
}
marshaler.setUseJbiWrapper(useJbiWrapper);
marshaler.setPolicies(policies);
setMarshaler(marshaler);
} catch (DeploymentException e) {
throw e;
} catch (Exception e) {
throw new DeploymentException("Unable to read WSDL from: " + wsdl,
e);
}
super.validate();
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.