org.apache.cxf.endpoint
Class EndpointResolverRegistryImpl

java.lang.Object
  extended by org.apache.cxf.endpoint.EndpointResolverRegistryImpl
All Implemented Interfaces:
EndpointResolverRegistry

public class EndpointResolverRegistryImpl
extends java.lang.Object
implements EndpointResolverRegistry

This implementation class is responsible for mediating access to registered EndpointResolvers, which themselves map between abstract and concrete endpoint references, and/or facilitate renewal of stale references.

An underlying mechanism in the style of the OGSA WS-Naming specification is assumed, where an EPR maybe be fully abstract, or concrete but with sufficient information embedded to enable its renewal if necessary.


Constructor Summary
EndpointResolverRegistryImpl()
           
 
Method Summary
protected  java.util.List<EndpointResolver> getResolvers()
           
 void init()
          Initialize registry, and expose as Bus extension.
 org.apache.cxf.ws.addressing.EndpointReferenceType mint(org.apache.cxf.ws.addressing.EndpointReferenceType physical)
          Walk the list of registered EndpointResolvers, so as to mint a new abstract EPR for a gievn physical EPR.
 org.apache.cxf.ws.addressing.EndpointReferenceType mint(javax.xml.namespace.QName serviceName)
          Walk the list of registered EndpointResolvers, so as to mint a new abstract EPR for a given service name.
 void register(EndpointResolver resolver)
          Register an endpoint resolver.
 org.apache.cxf.ws.addressing.EndpointReferenceType renew(org.apache.cxf.ws.addressing.EndpointReferenceType logical, org.apache.cxf.ws.addressing.EndpointReferenceType physical)
          Walk the list of registered EndpointResolvers, so as to force a fresh resolution of the given abstract EPR, discarding any previously cached reference.
 org.apache.cxf.ws.addressing.EndpointReferenceType resolve(org.apache.cxf.ws.addressing.EndpointReferenceType logical)
          Walk the list of registered EndpointResolvers, so as to retrieve a concrete EPR corresponding to the given abstract EPR, returning a cached reference if already resolved.
 void setBus(Bus b)
           
 void unregister(EndpointResolver resolver)
          Unregister an endpoint resolver.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EndpointResolverRegistryImpl

public EndpointResolverRegistryImpl()
Method Detail

init

@PostConstruct
public void init()
Initialize registry, and expose as Bus extension.


register

public void register(EndpointResolver resolver)
Register an endpoint resolver.

Specified by:
register in interface EndpointResolverRegistry
Parameters:
resolver - the EndpointResolver to add to the chain.

unregister

public void unregister(EndpointResolver resolver)
Unregister an endpoint resolver.

Specified by:
unregister in interface EndpointResolverRegistry
Parameters:
resolver - the EndpointResolver to remove from the chain.

resolve

public org.apache.cxf.ws.addressing.EndpointReferenceType resolve(org.apache.cxf.ws.addressing.EndpointReferenceType logical)
Walk the list of registered EndpointResolvers, so as to retrieve a concrete EPR corresponding to the given abstract EPR, returning a cached reference if already resolved.

This API is used by any actor that requires a concrete EPR (e.g. a transport-level Conduit), and must be called each and every time the EPR content is to be accessed (e.g. before each connection establishment attempt).

Specified by:
resolve in interface EndpointResolverRegistry
Parameters:
logical - the abstract EPR to resolve
Returns:
the resolved concrete EPR if appropriate, null otherwise

renew

public org.apache.cxf.ws.addressing.EndpointReferenceType renew(org.apache.cxf.ws.addressing.EndpointReferenceType logical,
                                                                org.apache.cxf.ws.addressing.EndpointReferenceType physical)
Walk the list of registered EndpointResolvers, so as to force a fresh resolution of the given abstract EPR, discarding any previously cached reference.

This API may be used by say the transport-level Conduit when it detects a non-transient error on the outgoing connection, or by any other actor in the dispatch with the ability to infer server-side unavailability.

Specified by:
renew in interface EndpointResolverRegistry
Parameters:
logical - the previously resolved abstract EPR
physical - the concrete EPR to refresh
Returns:
the renewed concrete EPR if appropriate, null otherwise

mint

public org.apache.cxf.ws.addressing.EndpointReferenceType mint(javax.xml.namespace.QName serviceName)
Walk the list of registered EndpointResolvers, so as to mint a new abstract EPR for a given service name.

Specified by:
mint in interface EndpointResolverRegistry
Parameters:
serviceName -
Returns:
the newly minted EPR if appropriate, null otherwise

mint

public org.apache.cxf.ws.addressing.EndpointReferenceType mint(org.apache.cxf.ws.addressing.EndpointReferenceType physical)
Walk the list of registered EndpointResolvers, so as to mint a new abstract EPR for a gievn physical EPR.

Specified by:
mint in interface EndpointResolverRegistry
Parameters:
serviceName -
Returns:
the newly minted EPR if appropriate, null otherwise

getResolvers

protected java.util.List<EndpointResolver> getResolvers()
Returns:
the encapsulated list of registered resolvers

setBus

public void setBus(Bus b)
Parameters:
b - Bus to encapsulate


Apache CXF