You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Eoghan Glynn (JIRA)" <ji...@apache.org> on 2007/02/01 15:51:05 UTC

[jira] Created: (CXF-400) Pluggable mechanism for resolution/lookup/mapping of EPRs

Pluggable mechanism for resolution/lookup/mapping of EPRs
---------------------------------------------------------

                 Key: CXF-400
                 URL: https://issues.apache.org/jira/browse/CXF-400
             Project: CXF
          Issue Type: Task
            Reporter: Eoghan Glynn
         Assigned To: Eoghan Glynn


The idea is to support pluggable resolution/lookup/mapping of EPRs. 

For example EPRs could be looked up in some external repository to allow for refreshed metadata to be pushed out to clients. Each resolution/lookup/mapping component would simply register a EndpointResolver with the registry, which then walks the list of registered resolvers when an EPR needs to be resolved or freshed.

The EndpointResolverRegistry sould be registered as a spring-loaded Bus extension.

The following psuedo-code could act as a first cut of the relevant APIs.

public interface EndpointResolverRegistry {
   /**
    * Register an endpoint resolver.
    *
    * @param resolver the EndpointResolver to add to the chain.
    */
   void resigterResolver(EndpointResolver resolver);

   /**
    * 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.
    * <p>
    * 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). 
    *
    * @param abstract the abstract EPR to resolve
    */
   EndpointReferenceType resolve(EndpointReferenceType abstract);

   /**
    * Walk the list of registered EndpointResolvers, so as to force a fresh 
    * resolution of the given abstract EPR, discarding any previously cached 
    * reference.
    * <p>
    * 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.
    * 
    * @param abstract the previously resolved abstract EPR
    * @param concrete the concrete EPR to refresh
    * @return the refreshed concrete EPR if appropriate, null otherwise
    */
   EndpointReferenceType refresh(EndpointReferenceType abstract, EndpointReferenceType concrete);
}

public interface EndpointResolver {   
   /**
    * Retrieve a concrete EPR corresponding to the given abstract EPR,
    * returning a cached reference if already resolved.
    *
    * @param abstract the abstract EPR to resolve
    * @return the resolved concrete EPR if appropriate, null otherwise
    */
   EndpointReferenceType resolve(EndpointReferenceType abstract);

   /**
    * Force a fresh resolution of the given abstract EPR, discarding any
    * previously cached reference.
    *
    * @param abstract the previously resolved abstract EPR
    * @param concrete the concrete EPR to refresh
    * @return the refreshed concrete EPR if appropriate, null otherwise
    */
   EndpointReferenceType refresh(EndpointReferenceType concrete, EndpointReferenceType concrete);
}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (CXF-400) Pluggable mechanism for resolution/lookup/mapping of EPRs

Posted by "Eoghan Glynn (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-400?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eoghan Glynn resolved CXF-400.
------------------------------

    Resolution: Fixed

Commited in revision 516455 on March 9th 2007.

> Pluggable mechanism for resolution/lookup/mapping of EPRs
> ---------------------------------------------------------
>
>                 Key: CXF-400
>                 URL: https://issues.apache.org/jira/browse/CXF-400
>             Project: CXF
>          Issue Type: Task
>          Components: Core
>            Reporter: Eoghan Glynn
>         Assigned To: Eoghan Glynn
>
> The idea is to support pluggable resolution/lookup/mapping of EPRs. 
> For example EPRs could be looked up in some external repository to allow for refreshed metadata to be pushed out to clients. Each resolution/lookup/mapping component would simply register a EndpointResolver with the registry, which then walks the list of registered resolvers when an EPR needs to be resolved or freshed.
> The EndpointResolverRegistry sould be registered as a spring-loaded Bus extension.
> The following psuedo-code could act as a first cut of the relevant APIs.
> public interface EndpointResolverRegistry {
>    /**
>     * Register an endpoint resolver.
>     *
>     * @param resolver the EndpointResolver to add to the chain.
>     */
>    void resigterResolver(EndpointResolver resolver);
>    /**
>     * 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.
>     * <p>
>     * 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). 
>     *
>     * @param abstract the abstract EPR to resolve
>     */
>    EndpointReferenceType resolve(EndpointReferenceType abstract);
>    /**
>     * Walk the list of registered EndpointResolvers, so as to force a fresh 
>     * resolution of the given abstract EPR, discarding any previously cached 
>     * reference.
>     * <p>
>     * 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.
>     * 
>     * @param abstract the previously resolved abstract EPR
>     * @param concrete the concrete EPR to refresh
>     * @return the refreshed concrete EPR if appropriate, null otherwise
>     */
>    EndpointReferenceType refresh(EndpointReferenceType abstract, EndpointReferenceType concrete);
> }
> public interface EndpointResolver {   
>    /**
>     * Retrieve a concrete EPR corresponding to the given abstract EPR,
>     * returning a cached reference if already resolved.
>     *
>     * @param abstract the abstract EPR to resolve
>     * @return the resolved concrete EPR if appropriate, null otherwise
>     */
>    EndpointReferenceType resolve(EndpointReferenceType abstract);
>    /**
>     * Force a fresh resolution of the given abstract EPR, discarding any
>     * previously cached reference.
>     *
>     * @param abstract the previously resolved abstract EPR
>     * @param concrete the concrete EPR to refresh
>     * @return the refreshed concrete EPR if appropriate, null otherwise
>     */
>    EndpointReferenceType refresh(EndpointReferenceType concrete, EndpointReferenceType concrete);
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CXF-400) Pluggable mechanism for resolution/lookup/mapping of EPRs

Posted by "Bozhong Lin (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-400?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bozhong Lin updated CXF-400:
----------------------------

    Component/s: Core

> Pluggable mechanism for resolution/lookup/mapping of EPRs
> ---------------------------------------------------------
>
>                 Key: CXF-400
>                 URL: https://issues.apache.org/jira/browse/CXF-400
>             Project: CXF
>          Issue Type: Task
>          Components: Core
>            Reporter: Eoghan Glynn
>         Assigned To: Eoghan Glynn
>
> The idea is to support pluggable resolution/lookup/mapping of EPRs. 
> For example EPRs could be looked up in some external repository to allow for refreshed metadata to be pushed out to clients. Each resolution/lookup/mapping component would simply register a EndpointResolver with the registry, which then walks the list of registered resolvers when an EPR needs to be resolved or freshed.
> The EndpointResolverRegistry sould be registered as a spring-loaded Bus extension.
> The following psuedo-code could act as a first cut of the relevant APIs.
> public interface EndpointResolverRegistry {
>    /**
>     * Register an endpoint resolver.
>     *
>     * @param resolver the EndpointResolver to add to the chain.
>     */
>    void resigterResolver(EndpointResolver resolver);
>    /**
>     * 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.
>     * <p>
>     * 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). 
>     *
>     * @param abstract the abstract EPR to resolve
>     */
>    EndpointReferenceType resolve(EndpointReferenceType abstract);
>    /**
>     * Walk the list of registered EndpointResolvers, so as to force a fresh 
>     * resolution of the given abstract EPR, discarding any previously cached 
>     * reference.
>     * <p>
>     * 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.
>     * 
>     * @param abstract the previously resolved abstract EPR
>     * @param concrete the concrete EPR to refresh
>     * @return the refreshed concrete EPR if appropriate, null otherwise
>     */
>    EndpointReferenceType refresh(EndpointReferenceType abstract, EndpointReferenceType concrete);
> }
> public interface EndpointResolver {   
>    /**
>     * Retrieve a concrete EPR corresponding to the given abstract EPR,
>     * returning a cached reference if already resolved.
>     *
>     * @param abstract the abstract EPR to resolve
>     * @return the resolved concrete EPR if appropriate, null otherwise
>     */
>    EndpointReferenceType resolve(EndpointReferenceType abstract);
>    /**
>     * Force a fresh resolution of the given abstract EPR, discarding any
>     * previously cached reference.
>     *
>     * @param abstract the previously resolved abstract EPR
>     * @param concrete the concrete EPR to refresh
>     * @return the refreshed concrete EPR if appropriate, null otherwise
>     */
>    EndpointReferenceType refresh(EndpointReferenceType concrete, EndpointReferenceType concrete);
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.