cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Liu (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-3585) WSDLGetInterceptor throws NullPointException when using EndpointSelectionInterceptor
Date Tue, 14 Jun 2011 03:11:49 GMT

    [ 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

        

Mime
View raw message