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