From 9dee3b104cccba41cab0f4369bec444485da7014 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Tue, 17 Dec 2013 18:18:33 +0000
Subject: [PATCH] #333 feature - Added Guice support to jersey framework

---
 securis/src/main/java/net/curisit/securis/services/LicenseServices.java |  115 ++++++++++++++++++++++++++++++++++++++
 securis/pom.xml                                                         |    5 +
 securis/src/main/java/net/curisit/securis/MainApp.java                  |   41 +++++++++++++
 3 files changed, 159 insertions(+), 2 deletions(-)

diff --git a/securis/pom.xml b/securis/pom.xml
index 48fd750..be7e644 100644
--- a/securis/pom.xml
+++ b/securis/pom.xml
@@ -26,6 +26,11 @@
   		<artifactId>commons</artifactId>
   		<version>0.0.1-SNAPSHOT</version>
   	</dependency>
+  	<dependency>
+  		<groupId>com.sun.jersey.contribs</groupId>
+  		<artifactId>jersey-guice</artifactId>
+  		<version>1.18</version>
+  	</dependency>
   </dependencies>
 	  <build>
 		<plugins>
diff --git a/securis/src/main/java/net/curisit/securis/MainApp.java b/securis/src/main/java/net/curisit/securis/MainApp.java
index c241b4c..5b00695 100644
--- a/securis/src/main/java/net/curisit/securis/MainApp.java
+++ b/securis/src/main/java/net/curisit/securis/MainApp.java
@@ -1,18 +1,55 @@
 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.SecurisModule;
+
 import org.glassfish.grizzly.http.server.HttpServer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
+import com.google.inject.Guice;
+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 HttpServer mHttpServer;
+	private static HttpServer mHttpServer;
+	private static Injector injector = null;
 
-	public static void main(String[] args) {
+	@Inject
+	@Named("base-uri")
+	private URI uri;
+
+	public static void main(String[] args) throws IOException, InterruptedException {
 		log.info("SeCuris init...");
 
+		injector = Guice.createInjector(Arrays.asList(new SecurisModule()));
+		mHttpServer = 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);
+
+		return GrizzlyServerFactory.createHttpServer(uri, rc, ioc);
 	}
 
 }
diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseServices.java b/securis/src/main/java/net/curisit/securis/services/LicenseServices.java
new file mode 100644
index 0000000..00c266a
--- /dev/null
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseServices.java
@@ -0,0 +1,115 @@
+package net.curisit.securis.services;
+
+import java.net.URI;
+import java.text.MessageFormat;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import net.curisit.integrity.beans.ServerConfigVersions;
+import net.curisit.integrity.beans.ServiceResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// The Java class will be hosted at the URI path "/myresource"
+@Path("/license")
+public class LicenseServices {
+
+	// private LicenseHelper licenseHelper = InjectorFactory.getInjector().getInstance(LicenseHelper.class);
+	private static final Logger log = LoggerFactory.getLogger(LicenseServices.class);
+
+	private static final int DEFAULT_LICENSE_EXPIRATION = 3650; // 10 years;
+	private static final String LICENSE_STRING = "CurisIntegrity Config Server v{0}.{1}";
+
+	@Inject
+	@Named("base-uri")
+	private URI uri;
+
+	@Inject
+	public LicenseServices() {
+	}
+
+	/**
+	 * 
+	 * @return the server version in format majorVersion.minorVersion
+	 */
+	@GET
+	@Path("/")
+	@Produces(
+		{ MediaType.TEXT_PLAIN })
+	public Response currentVersion() {
+		return Response.ok().entity(MessageFormat.format(LICENSE_STRING, 0, 1)).build();
+	}
+
+	@GET
+	@Path("/dummy")
+	@Produces(
+		{ MediaType.TEXT_PLAIN })
+	public Response dummy() {
+		return Response.ok().entity(uri.toString()).build();
+	}
+
+	/**
+	 * @return the version of the three entities that can be synchronized (Users, DataSet and Settings)
+	 */
+	@GET
+	@Path("/current/{license}")
+	@Produces(
+		{ MediaType.APPLICATION_JSON })
+	public ServiceResponse<ServerConfigVersions> status(@PathParam("license") String license, @DefaultValue("-1") @QueryParam("minorVersion") int minorVersion, @DefaultValue("-1") @QueryParam("majorVersion") int majorVersion) {
+
+		log.info("Called 'current' service with license: {}", license);
+		ServiceResponse<ServerConfigVersions> response = new ServiceResponse<ServerConfigVersions>();
+
+		return response;
+	}
+	//
+	// private <T> ServiceResponse<T> buildErrorResponse(ServiceResponse<T> response, String msgErrorCode) {
+	// response.setSuccess(false);
+	// response.setErrorMessage(localManager.getString(msgErrorCode));
+	// response.setErrorMessageCode(msgErrorCode);
+	// return response;
+	// }
+	//
+	// private Date calculateCaducation() {
+	// Integer licenseExpiration = systemParams.getParamAsInt(SystemParams.Keys.CONFIG_SERVER_LICENSE_EXPIRATION);
+	// if (licenseExpiration == null)
+	// licenseExpiration = DEFAULT_LICENSE_EXPIRATION;
+	// return Utils.addDays(new Date(), licenseExpiration);
+	// }
+	//
+	// private boolean validateLicense(String license) {
+	// BasicApplication ba = basicApplicationDao.findByLicense(license);
+	// return (ba != null);
+	// }
+	//
+	// private boolean validateVersion(int minorVersion, int majorVersion) {
+	// return (versionManager.getMajorVersion() == majorVersion);
+	// }
+	//
+	// private BasicApplication findBasicApp(String license) {
+	// BasicApplication ba = basicApplicationDao.findByLicense(license);
+	// return ba;
+	// }
+	//
+	// private License generateLicense() {
+	// // TODO complete all field of the license
+	// License license = new License();
+	// license.setCustomerCode(systemParams.getParam(SystemParams.Keys.CONFIG_COMMON_CUSTOMER_CODE));
+	// license.setCSCode(systemParams.getParam(SystemParams.Keys.CONFIG_COMMON_CS_CODE));
+	// license.setCRCLogo("00000000");
+	// license.setExpirationDate(calculateCaducation());
+	// license.setInstallCode(codeGenerator.generateInstalationNumber());
+	// return license;
+	// }
+
+}

--
Gitblit v1.3.2