[
https://issues.apache.org/jira/browse/CXF-3585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13048968#comment-13048968
]
David Liu commented on CXF-3585:
--------------------------------
Instead of using _message.getExchange().getEndpoint()_, I think we can use the
EndpointInfo from Destination, because every Destination should have
EndpointInfo and it can also make sure we do not have two wsdl for the same
endpoint.
{code}
AbstractDestination destination = (AbstractDestination)
message.getDestination();
synchronized (destination.getEndpointInfo()) {
...
writeResponse(message, baseUri, map, ctx, destination.getEndpointInfo(), os);
}
{code}
David
> WSDLGetInterceptor throws NullPointException when using
> EndpointSelectionInterceptor
> ------------------------------------------------------------------------------------
>
> Key: CXF-3585
> URL: https://issues.apache.org/jira/browse/CXF-3585
> Project: CXF
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.4
> Reporter: David Liu
>
> Hi,
> It looks like WSDLGetInterceptor assumes that the current exchange has one
> Endpoint, however, there is the case we can use EndpointSelectionInterceptor
> to get the Endpoint later, so the Endpoint could be null and which causes
> NullPointException .
> e.g. WSDLGetInterceptor expects one Endpoint,
> {code}
> class WSDLGetInterceptor {
> //cannot have two wsdl's being written for the same endpoint at the
> same
> //time as the addresses may get mixed up
> synchronized (message.getExchange().getEndpoint()) { <--
> NullPointException
> ...
> {code}
> However, the Endpoint is null at this moment and it will be set in
> EndpointSelectionInterceptor later.
> {code}
> public void handleMessage(Message message) throws Fault {
> Exchange ex = message.getExchange();
> Set<Endpoint> endpoints =
> CastUtils.cast((Set)ex.get(MultipleEndpointObserver.ENDPOINTS));
> Endpoint ep = selectEndpoint(message, endpoints);
> if (ep == null) {
> return;
> }
> ex.put(Endpoint.class, ep);
> {code}
> David
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira