[
https://issues.apache.org/jira/browse/MUSE-180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12464858
]
Oliver Waeldrich commented on MUSE-180:
---------------------------------------
I looked up the specs for WSRF-Basefaults and WSA and found that found that the
specs might
not really overlap. Following your advise I subclassed SimpleResourceRouter and
made the following
changes in order to use the WSRF base faults:
String message = "DestinationUnreachable";
String reason = "No route can be determined to reach
[destination]";
ResourceUnknownFault fault = new ResourceUnknownFault("");
fault.setReason(reason);
fault.setSubCode(new QName(WsaConstants.NAMESPACE_URI,
"DestinationUnreachable",
"wsa"));
Document owner = fault.getDetail().getOwnerDocument();
Node importedEPR = owner.importNode(epr.toXML(),true);
Element timestamp =
owner.createElementNS(WsrfConstants.NAMESPACE_URI, "Timestamp");
Element description =
owner.createElementNS(WsrfConstants.NAMESPACE_URI, "Description");
timestamp.appendChild(XmlUtils.convertToNode(owner,
fault.getTimestamp()));
description.appendChild(XmlUtils.convertToNode(owner, "Resource
unknown"));
fault.getDetail().appendChild(importedEPR);
fault.getDetail().appendChild(timestamp);
fault.getDetail().appendChild(description);
throw fault;
This code produces the following XML:
<soap:Fault
xmlns:tns="http://axis2.platform.core.muse.apache.org"
xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Code>
<soap:Value>soap:Receiver</soap:Value>
<soap:Subcode>
<soap:Value>wsa:DestinationUnreachable</soap:Value>
</soap:Subcode>
</soap:Code>
<soap:Reason>
<soap:Text>
No route can be determined to reach [destination]
</soap:Text>
</soap:Reason>
<soap:Detail>
<wsrf-rw:ResourceUnknownFault
xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2">
<wsa:EndpointReference>
<wsa:Address>
http://myHost:8090/myApp/Service
</wsa:Address>
</wsa:EndpointReference>
<Timestamp
xmlns="http://docs.oasis-open.org/wsrf/r-2">
2007-01-15T17:50:53+01:00
</Timestamp>
<Description
xmlns="http://docs.oasis-open.org/wsrf/r-2">
Resource unknown
</Description>
</wsrf-rw:ResourceUnknownFault>
</soap:Detail>
</soap:Fault>
I think that is what I would expect from WSA and WSRF-BaseFaults point of view.
However, I think parts of this code should be moved to BaseFault and some parts
belong to the concrete exceptions.
> SimpleResourceRouter should throw a ResourceUnknownException when a unknown
> resource is requested
> -------------------------------------------------------------------------------------------------
>
> Key: MUSE-180
> URL: https://issues.apache.org/jira/browse/MUSE-180
> Project: Muse
> Issue Type: Bug
> Components: Core Engine - Routing and Serialization
> Affects Versions: 2.0.0 M1, 2.0.0 M2, 2.0.0, 2.1.0, 2.2.0
> Reporter: Oliver Waeldrich
> Assigned To: Dan Jemiolo
> Fix For: 2.2.0
>
>
> The SimpleResourceRouter implementation should throw a
> ResourceUnknownException when a unknown resource is requested. This is stated
> in the WS resource spec:
> wsrf-rw:ResourceUnknownFault
> The resource identified in the message is not known to the Web service. The
> fault may contain additional resource- or application-specific information in
> it.
> Currently in the method SimpleResourceRouter.getTargetResource() only a
> SoapFault is thrown. This makes it difficult for applications to properly
> handle BaseFaults. A patch would simply be:
> SimpleResourceRouter.getTargetResource()
> ...
> throw new
> ResourceUnknownFault(_MESSAGES.get("DestinationUnreachable", filler));
> //throw new SoapFault(_MESSAGES.get("DestinationUnreachable",
> filler));
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]