[
https://issues.apache.org/jira/browse/AXIS2-3296?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12537004
]
Vincent Brabant commented on AXIS2-3296:
----------------------------------------
Here is a proposal to fix the issue.
Problem is caused by a bug in the MessageContextBuilder
By replacing the following code (snapshot of 17/10/2007)
if (faultCode != null) {
fault.setCode((SOAPFaultCode) faultCode);
} else if (soapException != null) {
soapFaultCode = soapException.getFaultCode();
} else if (axisFault != null) {
if (axisFault.getFaultCodeElement() != null) {
fault.setCode(axisFault.getFaultCodeElement());
} else {
QName faultCodeQName = axisFault.getFaultCode();
if (faultCodeQName != null) {
if (faultCodeQName.getLocalPart().indexOf(":") == -1) {
String prefix = faultCodeQName.getPrefix();
String uri = faultCodeQName.getNamespaceURI();
// Get the specified prefix and uri
prefix = prefix == null ? "" : prefix;
uri = uri == null || "" .equals(uri) ?
fault.getNamespace().getNamespaceURI() : uri;
// Make sure the prefix and uri are declared on the
fault, and
// get the resulting prefix.
prefix = fault.declareNamespace(uri,
prefix).getPrefix();
soapFaultCode = prefix + ":" +
faultCodeQName.getLocalPart();
} else {
soapFaultCode = faultCodeQName.getLocalPart();
}
}
}
}
by this one
if (faultCode != null) {
fault.setCode((SOAPFaultCode) faultCode);
} else if (soapException != null) {
soapFaultCode = soapException.getFaultCode();
} else if (axisFault != null) {
if (axisFault.getFaultCodeElement() != null) {
fault.setCode(axisFault.getFaultCodeElement());
soapFaultCode = faultCodeElement.getText(); // The line I added
} else {
QName faultCodeQName = axisFault.getFaultCode();
if (faultCodeQName != null) {
if (faultCodeQName.getLocalPart().indexOf(":") == -1) {
String prefix = faultCodeQName.getPrefix();
String uri = faultCodeQName.getNamespaceURI();
// Get the specified prefix and uri
prefix = prefix == null ? "" : prefix;
uri = uri == null || "" .equals(uri) ?
fault.getNamespace().getNamespaceURI() : uri;
// Make sure the prefix and uri are declared on the
fault, and
// get the resulting prefix.
prefix = fault.declareNamespace(uri,
prefix).getPrefix();
soapFaultCode = prefix + ":" +
faultCodeQName.getLocalPart();
} else {
soapFaultCode = faultCodeQName.getLocalPart();
}
}
}
}
the problem is then solved. The response will contains a soapFault having the
same error code than the one filled in the SoapFault given to the AxisFault.
Hope it helps a lot.
P.S. I also noted that the private method getSenderFaultCode(OMNamespace) of
that MessageContextBuilder class is not used. Would be a good idea to remove it
> When I am creating a AxisFault by giving a SoapFault, the SoapFaultCode is
> ignored.
> -----------------------------------------------------------------------------------
>
> Key: AXIS2-3296
> URL: https://issues.apache.org/jira/browse/AXIS2-3296
> Project: Axis 2.0 (Axis2)
> Issue Type: Bug
> Components: kernel
> Affects Versions: 1.3, nightly
> Environment: Windows XP / JDK 1.4 (but also Sun Machine with
> WebSphere 5.1 and JDK 1.4)
> Reporter: Vincent Brabant
>
> I have a SoapFault where the SoapFaultCode is soapenv:Client.
> I am throwing an AxisFault by giving the SoapFault as argument
> throw new AxisFaul(soapFault)
> But it return always a soapenv:Receiver (SOAP1.2) or a soapenv:Server
> (SOAP1.1).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]