[
https://issues.apache.org/jira/browse/CXF-1003?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Zarar Siddiqi updated CXF-1003:
-------------------------------
Issue Type: Bug (was: Improvement)
I think this might even be considered a bug...
> WebFaultOutInterceptor.getFaultMessagePart() might be too draconian and it
> also has private visibility
> ------------------------------------------------------------------------------------------------------
>
> Key: CXF-1003
> URL: https://issues.apache.org/jira/browse/CXF-1003
> Project: CXF
> Issue Type: Bug
> Components: JAX-WS Runtime
> Affects Versions: 2.0.1
> Environment: Platform independent.
> Reporter: Zarar Siddiqi
> Attachments: BetterCheckForAFaultMessagePartInfo.patch
>
>
> This implementation of this method is a little draconian (at least to me).
> It forces a match on the localPart and the namespace of MessagePartInfo and
> the fault QName before returning the MessagePartInfo. In the case of where
> the exception class annotated with @WebFault (default namespace so it
> "inherits" the services) is also the fault bean (i.e.: no getFaultInfo method
> specified) the name of the namespace URI will never match because only mpi's
> that are NOT elements are going to be considered. And since the fault class
> is a java class, it's corresponding MPI's getTypeQName() will always return
> the namespace corresponding to the package name and NOT the real namespace of
> the exception (which really lies behind getElementQName()).
> I propose changing this method so that if no MessagePartInfo is found using
> the current method, we loosen the criteria and return a match based on the
> elementQName. This will also require modification of the MessagePartInfo
> class.
> Now the alternate is to make this method public or protected so it can be
> overridden. But that's not really a solution.
> I'm working on a patch but before I upload it I was wondering what the CXF
> team thought of this
> Thanks,
> Zarar
> Here's the method up for review:
> private MessagePartInfo getFaultMessagePart(QName qname, OperationInfo op) {
> for (FaultInfo faultInfo : op.getFaults()) {
> for (MessagePartInfo mpi : faultInfo.getMessageParts()) {
> String ns = null;
> if (mpi.isElement()) {
> ns = mpi.getElementQName().getNamespaceURI();
> } else {
> ns = mpi.getTypeQName().getNamespaceURI();
> }
> if
> (qname.getLocalPart().equals(mpi.getConcreteName().getLocalPart())
> && qname.getNamespaceURI().equals(ns)) {
> return mpi;
> }
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.