From cc3f9054f478d9698e240bfb644d0d9de9a37c85 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Thu, 19 Dec 2013 14:10:36 +0000
Subject: [PATCH] #333 feature - Refactoring to use JEtty and RestEasy with Guice

---
 securis/src/main/java/net/curisit/securis/MainApp.java |   50 +++++++++++++++++++++++++++++++++-----------------
 1 files changed, 33 insertions(+), 17 deletions(-)

diff --git a/securis/src/main/java/net/curisit/securis/MainApp.java b/securis/src/main/java/net/curisit/securis/MainApp.java
index 5b00695..0cfe9b7 100644
--- a/securis/src/main/java/net/curisit/securis/MainApp.java
+++ b/securis/src/main/java/net/curisit/securis/MainApp.java
@@ -1,15 +1,19 @@
 package net.curisit.securis;
 
-import java.io.IOException;
 import java.net.URI;
-import java.util.Arrays;
 
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import net.curisit.securis.ioc.RequestsModule;
 import net.curisit.securis.ioc.SecurisModule;
 
-import org.glassfish.grizzly.http.server.HttpServer;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.servlet.FilterHolder;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener;
+import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -17,39 +21,51 @@
 import com.google.inject.Injector;
 import com.google.inject.Key;
 import com.google.inject.name.Names;
-import com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory;
-import com.sun.jersey.api.core.PackagesResourceConfig;
-import com.sun.jersey.api.core.ResourceConfig;
-import com.sun.jersey.core.spi.component.ioc.IoCComponentProviderFactory;
-import com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory;
 
 public class MainApp {
 
 	private static final Logger log = LoggerFactory.getLogger(MainApp.class);
 
-	private static HttpServer mHttpServer;
+	private static Server server;
 	private static Injector injector = null;
 
 	@Inject
 	@Named("base-uri")
 	private URI uri;
 
-	public static void main(String[] args) throws IOException, InterruptedException {
+	public static void main(String[] args) throws Exception {
 		log.info("SeCuris init...");
 
-		injector = Guice.createInjector(Arrays.asList(new SecurisModule()));
-		mHttpServer = startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri"))));
+		injector = Guice.createInjector(new SecurisModule(), new RequestsModule());
+		// createBiDirectionalGuiceBridge(ServiceLocatorFactory.getInstance().create("default"), new SecurisModule());
+		startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri"))));
 		while (true) {
 			Thread.currentThread().sleep(100);
 		}
 	}
 
-	private static HttpServer startServer(URI uri) throws IOException {
-		System.out.println("Starting grizzly2...");
-		ResourceConfig rc = new PackagesResourceConfig("net.curisit.securis.services", "org.codehaus.jackson.jaxrs");
-		IoCComponentProviderFactory ioc = new GuiceComponentProviderFactory(rc, injector);
+	private static void startServer(URI uri) throws Exception {
+		System.out.println("Starting jetty...");
+		// ResourceConfig rc = new PackagesResourceConfig("net.curisit.securis.services", "org.codehaus.jackson.jaxrs");
+		// IoCComponentProviderFactory ioc = new GuiceComponentProviderFactory(rc, injector);
+		server = new Server(9997);
+		ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
+		context.setContextPath("/");
+		context.addEventListener(injector.getInstance(GuiceResteasyBootstrapServletContextListener.class));
 
-		return GrizzlyServerFactory.createHttpServer(uri, rc, ioc);
+		ServletHolder sh = new ServletHolder(HttpServletDispatcher.class);
+		context.setInitParameter("resteasy.role.based.security", "true");
+		context.addFilter(new FilterHolder(injector.getInstance(AuthFilter.class)), "/*", null);
+		// context.addServlet(DefaultServlet.class, "/*");
+		context.addServlet(sh, "/*");
+
+		server.setHandler(context);
+		server.start();
+		server.join();
+		// rc.packages("net.curisit.securis.services", "org.codehaus.jackson.jaxrs");
+
+		// new CLStaticHttpHandler(new URLClassLoader(new URL[] {new URL("file:///home/username/staticfiles.jar")})), "/www")
+
 	}
 
 }

--
Gitblit v1.3.2