[ 
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

        

Reply via email to