I wonder if addressing issue
1230<http://restlet.tigris.org/issues/show_bug.cgi?id=1230>would also
pave the way to a nice solution here. The common problem is the
lack of pluggable resource instance creation at the application or
component level.

--tim

On Wed, Nov 30, 2011 at 4:33 PM, Mark Kharitonov
<mark.kharito...@gmail.com>wrote:

> I am using google guice and wish to integrate it with the JAX-RS
> extension. On the surface, everything is simple and clean:
>
>    final JaxRsApplication application = new
> JaxRsApplication(component.getContext().createChildContext());
>    application.setObjectFactory(new ObjectFactory() {
>
>      @Override
>      public <T> T getInstance(Class<T> jaxRsClass) throws
> InstantiateException {
>        return Injector.getInstance(jaxRsClass);
>      }
>    });
>
> True, when JAX-RS wishes to create an instance of a resource handler it
> consults the object factory first, which is excellent. But, there are
> certain validations that JAX-RS performs on the resource handler type and
> these validations totally ignore the presence of an object factory.
> Observer the following stack trace:
>
> WrapperUtil.findJaxRsConstructor(Class<?>, String) line: 242
> PerRequestRootResourceClass(RootResourceClass).<init>(Class<?>,
> ThreadLocalizedContext, JaxRsProviders, ExtensionBackwardMapping, Logger)
> line: 141
> PerRequestRootResourceClass.<init>(Class<?>, ThreadLocalizedContext,
> JaxRsProviders, ExtensionBackwardMapping, Logger) line: 82
> ResourceClasses.getPerRequestRootClassWrapper(Class<?>) line: 276
> ResourceClasses.addRootClass(Class<?>) line: 104
> JaxRsRestlet.addClass(Class<?>) line: 283
> JaxRsApplication.add(Application) line: 149
> Program.main(String[]) line: 60
>
> What happens is that JAX-RS looks for the public constructors satisfying
> its instance creation constraints. In my case, the resource handler class
> has a single public non default constructor not annotated with any of the
> JAX-RS attributes. Indeed, this constructor is invoked by the dependency
> injection engine only (guice in my case) from the object factory.
>
> I think, that JAX-RS should not fail if it does not find any suitable
> constructor and the object factory is registered. Seems like a bug?
>
> ------------------------------------------------------
>
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2889440
>

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2889648

Reply via email to