package org.jboss.resteasy.plugins.guice; import com.google.inject.Provider; import org.jboss.resteasy.spi.HttpRequest; import org.jboss.resteasy.spi.HttpResponse; import org.jboss.resteasy.spi.PropertyInjector; import org.jboss.resteasy.spi.ResourceFactory; import org.jboss.resteasy.spi.ResteasyProviderFactory; public class GuiceResourceFactory implements ResourceFactory { private final Provider provider; private final Class<?> scannableClass; private PropertyInjector propertyInjector; public GuiceResourceFactory(final Provider provider, final Class<?> scannableClass) { this.provider = provider; this.scannableClass = scannableClass; } public Class<?> getScannableClass() { return scannableClass; } public void registered(ResteasyProviderFactory factory) { propertyInjector = factory.getInjectorFactory().createPropertyInjector(scannableClass, factory); } public Object createResource(final HttpRequest request, final HttpResponse response, final ResteasyProviderFactory factory) { final Object resource = provider.get(); propertyInjector.inject(request, response, resource); return resource; } public void requestFinished(final HttpRequest request, final HttpResponse response, final Object resource) { } public void unregistered() { } }