Paul,
Thanks for fixing this one, I think it could prove very useful.
Gerard
On 02/06/2010 15:25, Paul Sandoz wrote:
> Hi,
>
> I have fixed issue 436:
>
> https://jersey.dev.java.net/issues/show_bug.cgi?id=436
>
> So it is now possible to match a URI to a resource. See end of email 
> for JavaDoc.
>
> There are some possible side-effects depending on how your application 
> is constructed. Matching will share the scope of the HTTP request. 
> Resources will be constructed if references are not already in scope. 
> Sub-resource locator methods may be invoked.
>
> Paul.
>
> /**
>  * The resource context provides access to instances of resource classes.
>  * <p>
>  * This interface can be injected using the {_at_link Context} annotation.
>  * <p>
>  * The resource context can be utilized when instances of managed 
> resource
>  * classes are to be returned by sub-resource locator methods. Such 
> instances
>  * will be injected and managed within the declared scope just like 
> instances
>  * of root resource classes.
>  * <p>
>  * The resource context can be utilized when matching of URIs are
>  * required, for example when validating URIs sent in a request entity.
>  * Note that application functionality may be affected as the matching
>  * process will result in the construction or sharing of previously 
> constructed
>  * resource classes that are in scope of the HTTP request, and the 
> invocation of
>  * matching sub-resource locator methods. No resource methods wll be 
> invoked.
>  *
>  * @author <a href="mailto:martin.grotzke_at_freiheit.com">Martin 
> Grotzke</a>
>  * @author Paul.Sandoz_at_Sun.Com
>  */
> public interface ResourceContext {
>
>     /**
>      * Match a URI to URI information.
>      * <p>
>      * If the URI is relative then the base URI of the application 
> will be
>      * used to resolve the relative URI to an absolute URI.
>      * If the URI is absolute then it must be relative to the base URI 
> of the
>      * application.
>      *
>      * @param u the URI.
>      * @return the URI information, otherwise null if the URI cannot 
> be matched.
>      * @throws ContainerException if there is an error when matching.
>      */
>     ExtendedUriInfo matchUriInfo(URI u) throws ContainerException;
>
>     /**
>      * Match a URI to a resource instance.
>      * <p>
>      * If the URI is relative then the base URI of the application 
> will be
>      * used to resolve the relative URI to an absolute URI.
>      * If the URI is absolute then it must be relative to the base URI 
> of the
>      * application.
>      *
>      * @param u the URI.
>      * @return the resource instance, otherwise null if the URI cannot be
>      *         matched.
>      * @throws ContainerException if there is an error when matching.
>      */
>     Object matchResource(URI u) throws ContainerException;
>
>     /**
>      * Match a URI to a resource instance.
>      * <p>
>      * If the URI is relative then the base URI of the application 
> will be
>      * used to resolve the relative URI to an absolute URI.
>      * If the URI is absolute then it must be relative to the base URI 
> of the
>      * application.
>      *
>      * @param <T> the type of the resource.
>      * @param u the URI.
>      * @param c the resource class.
>      * @return the resource instance, otherwise null if the URI cannot be
>      *         matched.
>      * @throws ContainerException if there is an error when matching.
>      * @throws ClassCastException if the resource instance cannot be 
> cast to
>      * <code>c</code>.
>      */
> <T> T matchResource(URI u, Class<T> c) throws ContainerException, 
> ClassCastException;
>
>     /**
>      * Provides an instance of the given resource class.
>      *
>      * @param <T> the type of the resource class
>      * @param c the resource class
>      * @return an instance if it could be resolved, otherwise null.
>      * @throws com.sun.jersey.api.container.ContainerException if the 
> resource
>      *         class cannot be found.
>      */
> <T> T getResource(Class<T> c) throws ContainerException;
> }
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>
-- 
Gerard Davison | Senior Principal Software Engineer | +44 118 924 5095
Oracle JDeveloper Web Service, Spring, Weblogic SCA Tooling Development
Oracle Corporation UK Ltd is a company incorporated in England&  Wales.
Company Reg. No. 1782505.
Reg. office: Oracle Parkway, Thames Valley Park, Reading RG6 1RA.
Blog http://kingsfleet.blogspot.com Twitter kingsfleet