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