Package br.com.caelum.vraptor.jersey

Source Code of br.com.caelum.vraptor.jersey.VRaptorResourceConfig

package br.com.caelum.vraptor.jersey;

import java.io.IOException;
import java.net.URI;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import com.sun.jersey.api.core.ResourceConfig;
import com.sun.jersey.api.model.AbstractResourceMethod;
import com.sun.jersey.core.spi.component.ioc.IoCComponentProviderFactory;
import com.sun.jersey.server.impl.application.DispatcherFactory;
import com.sun.jersey.server.impl.application.WebApplicationImpl;
import com.sun.jersey.server.impl.model.method.dispatch.ResourceMethodDispatchProvider;
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.WebApplication;
import com.sun.jersey.spi.container.servlet.WebComponent;
import com.sun.jersey.spi.container.servlet.WebConfig;
import com.sun.jersey.spi.dispatch.RequestDispatcher;

/**
* A vraptor adaptor to a Jersey Resource configuration.
*
* @author guilherme silveira
*/
public class VRaptorResourceConfig extends WebComponent {
 
//  private final VRaptorComponentProvider provider = new VRaptorComponentProvider();
 
  protected void configure(WebConfig wc, ResourceConfig rc, WebApplication wa) {
    super.configure(wc, rc, wa);
//    rc.getSingletons().add(provider);
//    provider.useContext(wa.getThreadLocalHttpContext());
  }
 
//    protected void initiate(ResourceConfig rc, WebApplication wa) {
//        super.initiate(rc, wa);
//    }

  protected ContainerRequest createRequest(WebApplication app,
      HttpServletRequest request, URI baseUri, URI requestUri)
      throws IOException {
    ContainerRequest container = super.createRequest(app, request, baseUri,
        requestUri);
    injectRequest(request, container);
    return container;
  }

  private void injectRequest(HttpServletRequest request,
      ContainerRequest container) {
    container.getProperties().put(DefaultJersey.REQUEST, request);
  }
 
  protected WebApplication create() {
    return new WebApplicationImpl() {
      public void initiate(ResourceConfig rc,
          IoCComponentProviderFactory provider) {
        getInjectableFactory().add(new VRaptorInjectableProvider(getThreadLocalHttpContext()));
        super.initiate(rc, provider);
      }
     
      protected DispatcherFactory getDispatcherFactory() {
        final DispatcherFactory delegate = super.getDispatcherFactory();
        return new DispatcherFactory() {

          public RequestDispatcher getDispatcher(
              AbstractResourceMethod method) {
            return new FakeMethodDispatchProvider(delegate).create(method);
          }

          public Set<ResourceMethodDispatchProvider> getDispatchers() {
            return null;
          }
         
        };
      }
    };
  }
}
TOP

Related Classes of br.com.caelum.vraptor.jersey.VRaptorResourceConfig

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.