From da889d489da5d7fa8c71d9f21f24b1dc2e29d8e1 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Wed, 28 Jan 2015 08:53:21 +0000
Subject: [PATCH] #0 refactoring - Removing Google Guice by CDI standard
---
securis/src/main/java/net/curisit/securis/RestServicesApplication.java | 35 ++
securis/src/main/java/net/curisit/securis/ioc/DatabaseProvider.java | 38 +++
securis/src/main/java/net/curisit/securis/services/ApiResource.java | 12
securis/src/main/java/net/curisit/securis/db/common/SystemParams.java | 17
securis/src/main/java/net/curisit/securis/services/ApplicationResource.java | 16
securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java | 16
securis/src/main/java/net/curisit/securis/services/helpers/LicenseHelper.java | 4
securis/src/main/java/net/curisit/securis/utils/TokenHelper.java | 4
securis/src/main/webapp/WEB-INF/web.xml | 30 +-
securis/src/main/java/net/curisit/securis/utils/CacheTTL.java | 4
securis/src/main/java/net/curisit/securis/services/LicenseResource.java | 32 +-
securis/src/main/webapp/WEB-INF/beans.xml | 7
securis/src/main/java/net/curisit/securis/services/OrganizationResource.java | 32 +-
securis/src/main/java/net/curisit/securis/LicenseGenerator.java | 4
securis/src/main/resources/META-INF/persistence.xml | 10
securis/src/main/java/net/curisit/securis/ioc/MyTrans.java | 17 +
securis/src/main/java/net/curisit/securis/AuthFilter.java | 4
securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java | 80 ++++++
securis/src/main/java/net/curisit/securis/services/BasicServices.java | 7
securis/src/main/java/net/curisit/securis/services/PackResource.java | 24 -
/dev/null | 129 ----------
securis/pom.xml | 42 ++-
securis/src/main/java/net/curisit/securis/services/helpers/UserHelper.java | 4
securis/src/main/java/net/curisit/securis/services/UserResource.java | 30 +-
securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java | 9
securis/src/main/java/net/curisit/securis/ioc/SecurisModule.java | 30 -
securis/src/main/java/net/curisit/securis/utils/EmailManager.java | 4
securis/src/main/java/net/curisit/securis/dao/UserDao.java | 7
securis/src/main/java/net/curisit/securis/security/SecurityInterceptor.java | 21
29 files changed, 342 insertions(+), 327 deletions(-)
diff --git a/securis/pom.xml b/securis/pom.xml
index 49429f4..0f1f5ab 100644
--- a/securis/pom.xml
+++ b/securis/pom.xml
@@ -19,19 +19,24 @@
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-guice</artifactId>
- <version>3.0.9.Final</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
- <version>3.0.9.Final</version>
+ <version>3.0.10.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <version>3.0.9.Final</version>
+ <version>3.0.10.Final</version>
</dependency>
+<dependency>
+ <groupId>org.jboss.weld.servlet</groupId>
+ <artifactId>weld-servlet</artifactId>
+ <version>2.2.9.Final</version>
+</dependency>
+<dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jandex</artifactId>
+ <version>1.2.2.Final</version>
+</dependency>
<dependency>
<groupId>net.curisit</groupId>
<artifactId>commons-curis</artifactId>
@@ -48,11 +53,6 @@
<version>1.0.4-SNAPSHOT</version>
</dependency>
<dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-c3p0</artifactId>
- <version>4.3.6.Final</version>
- </dependency>
- <dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4-beta1</version>
@@ -65,12 +65,23 @@
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
- <version>3.0.9.Final</version>
+ <version>3.0.10.Final</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.enterprise</groupId>
+ <artifactId>cdi-api</artifactId>
+ <version>1.2</version>
+ <scope>provided</scope>
+</dependency>
+ <dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-cdi</artifactId>
+ <version>3.0.10.Final</version>
</dependency>
</dependencies>
<build>
@@ -117,6 +128,11 @@
<url>http://archiva.curisit.net/archiva/repository/snapshots/</url>
<layout>default</layout>
</repository>
+ <repository>
+ <id>project.local</id>
+ <name>project</name>
+ <url>file:/opt/repo</url>
+ </repository>
</repositories>
</project>
\ No newline at end of file
diff --git a/securis/src/main/java/net/curisit/securis/AuthFilter.java b/securis/src/main/java/net/curisit/securis/AuthFilter.java
index 946f476..c5c3122 100644
--- a/securis/src/main/java/net/curisit/securis/AuthFilter.java
+++ b/securis/src/main/java/net/curisit/securis/AuthFilter.java
@@ -3,7 +3,7 @@
import java.io.IOException;
import java.security.Principal;
-import javax.inject.Singleton;
+import javax.enterprise.context.ApplicationScoped;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
@@ -17,7 +17,7 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-@Singleton
+@ApplicationScoped
@WebFilter(urlPatterns = "/*")
public class AuthFilter implements Filter {
diff --git a/securis/src/main/java/net/curisit/securis/BootstrapListener.java b/securis/src/main/java/net/curisit/securis/BootstrapListener.java
deleted file mode 100644
index f5ccfa1..0000000
--- a/securis/src/main/java/net/curisit/securis/BootstrapListener.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package net.curisit.securis;
-
-import java.util.List;
-
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextEvent;
-
-import org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener;
-
-import com.google.inject.Injector;
-import com.google.inject.Module;
-import com.google.inject.persist.PersistService;
-import com.google.inject.persist.jpa.JpaPersistModule;
-
-public class BootstrapListener extends GuiceResteasyBootstrapServletContextListener {
-
- @Override
- public void contextInitialized(ServletContextEvent event) {
- try {
- super.contextInitialized(event);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
-
- @SuppressWarnings("unchecked")
- @Override
- protected List<Module> getModules(ServletContext context) {
- List<Module> modules = (List<Module>) super.getModules(context);
- modules.add(new JpaPersistModule("localdb"));
- return modules;
- }
-
- @Override
- public void withInjector(Injector injector) {
- injector.getInstance(PersistService.class).start();
- }
-
-}
diff --git a/securis/src/main/java/net/curisit/securis/LicenseGenerator.java b/securis/src/main/java/net/curisit/securis/LicenseGenerator.java
index cfba707..558599a 100644
--- a/securis/src/main/java/net/curisit/securis/LicenseGenerator.java
+++ b/securis/src/main/java/net/curisit/securis/LicenseGenerator.java
@@ -24,14 +24,12 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import com.google.inject.Singleton;
-
/**
* License generator and signer
*
* @author roberto <roberto.sanchez@curisit.net>
*/
-@Singleton
+@javax.inject.Singleton
public class LicenseGenerator {
private static final Logger LOG = LogManager.getLogger(LicenseGenerator.class);
diff --git a/securis/src/main/java/net/curisit/securis/RestServicesApplication.java b/securis/src/main/java/net/curisit/securis/RestServicesApplication.java
index ba95201..ebe835b 100644
--- a/securis/src/main/java/net/curisit/securis/RestServicesApplication.java
+++ b/securis/src/main/java/net/curisit/securis/RestServicesApplication.java
@@ -3,28 +3,51 @@
import java.util.HashSet;
import java.util.Set;
+import javax.inject.Inject;
+import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
-import net.curisit.integrity.commons.Utils;
+import net.curisit.securis.ioc.DatabaseProvider;
+import net.curisit.securis.ioc.TransactionsManager;
+import net.curisit.securis.security.SecurityInterceptor;
+import net.curisit.securis.services.ApiResource;
+import net.curisit.securis.services.ApplicationResource;
+import net.curisit.securis.services.BasicServices;
+import net.curisit.securis.services.LicenseResource;
+import net.curisit.securis.services.LicenseTypeResource;
+import net.curisit.securis.services.OrganizationResource;
+import net.curisit.securis.services.PackResource;
+import net.curisit.securis.services.UserResource;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+@ApplicationPath("/")
public class RestServicesApplication extends Application {
private static final Logger LOG = LogManager.getLogger(RestServicesApplication.class);
+
+ @Inject
+ private DatabaseProvider dp;
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<>();
// classes.add(LicenseServices.class);
- // classes.add(BasicServices.class);
+ classes.add(UserResource.class);
+ classes.add(ApiResource.class);
+ classes.add(LicenseResource.class);
+ classes.add(BasicServices.class);
+ classes.add(ApplicationResource.class);
+ classes.add(OrganizationResource.class);
+ classes.add(LicenseTypeResource.class);
+ classes.add(PackResource.class);
+ classes.add(SecurityInterceptor.class);
+ classes.add(TransactionsManager.class);
- LOG.info("Returnes classes for services: {}", classes);
+ LOG.info("Returned classes for services: {}", classes);
+ LOG.info("dp: {}", dp);
return classes;
}
- public static void main(String[] args) {
- System.out.println("sha256: " + Utils.sha256("jdoe"));
- }
}
diff --git a/securis/src/main/java/net/curisit/securis/dao/UserDao.java b/securis/src/main/java/net/curisit/securis/dao/UserDao.java
index 45ce5a6..60729a1 100644
--- a/securis/src/main/java/net/curisit/securis/dao/UserDao.java
+++ b/securis/src/main/java/net/curisit/securis/dao/UserDao.java
@@ -3,15 +3,16 @@
import java.util.Arrays;
import java.util.Date;
+import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.inject.Provider;
-import javax.inject.Singleton;
import javax.persistence.EntityManager;
+import javax.transaction.Transactional;
import net.curisit.integrity.commons.Utils;
import net.curisit.securis.db.User;
-@Singleton
+@ApplicationScoped
public class UserDao {
@Inject
@@ -21,7 +22,7 @@
@Inject
Provider<EntityManager> emProvider;
- @com.google.inject.persist.Transactional
+ @Transactional
public User test(String username) {
EntityManager em = emProvider.get();
User user = new User();
diff --git a/securis/src/main/java/net/curisit/securis/db/common/SystemParams.java b/securis/src/main/java/net/curisit/securis/db/common/SystemParams.java
index a3c7f69..88899cd 100644
--- a/securis/src/main/java/net/curisit/securis/db/common/SystemParams.java
+++ b/securis/src/main/java/net/curisit/securis/db/common/SystemParams.java
@@ -2,9 +2,10 @@
import java.util.Date;
-import javax.inject.Inject;
-import javax.inject.Singleton;
+import javax.enterprise.context.ApplicationScoped;
import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.transaction.Transactional;
import net.curisit.integrity.commons.Utils;
import net.curisit.securis.db.Settings;
@@ -12,17 +13,14 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import com.google.inject.Provider;
-import com.google.inject.persist.Transactional;
-
-@Singleton
+@ApplicationScoped
public class SystemParams {
@SuppressWarnings("unused")
private static final Logger LOG = LogManager.getLogger(SystemParams.class);
- @Inject
- private Provider<EntityManager> emp;
+ @PersistenceContext(unitName = "localdb")
+ private EntityManager em;
/**
* Returns the system parameter value for given key
@@ -111,7 +109,6 @@
* @return
*/
public String getParam(String key, String defaultValue) {
- EntityManager em = emp.get();
Settings p = em.find(Settings.class, key);
return p == null ? defaultValue : p.getValue();
}
@@ -125,7 +122,6 @@
*/
@Transactional
public void setParam(String key, String value) {
- EntityManager em = this.emp.get();
Settings p = em.find(Settings.class, key);
if (p == null) {
p = new Settings();
@@ -187,7 +183,6 @@
*/
@Transactional
public void removeParam(String key) {
- EntityManager em = this.emp.get();
Settings p = em.find(Settings.class, key);
if (p != null) {
em.remove(p);
diff --git a/securis/src/main/java/net/curisit/securis/ioc/DatabaseProvider.java b/securis/src/main/java/net/curisit/securis/ioc/DatabaseProvider.java
new file mode 100644
index 0000000..cb1dfe7
--- /dev/null
+++ b/securis/src/main/java/net/curisit/securis/ioc/DatabaseProvider.java
@@ -0,0 +1,38 @@
+package net.curisit.securis.ioc;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Default;
+import javax.enterprise.inject.Disposes;
+import javax.enterprise.inject.Produces;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@ApplicationScoped
+public class DatabaseProvider {
+
+ private static final Logger LOG = LogManager.getLogger(DatabaseProvider.class);
+
+ @Inject
+ public DatabaseProvider() {
+ LOG.info("Contructor DatabaseProvider, emf: {}, em: {} ", entityManagerFactory, getEM());
+ }
+
+ private EntityManagerFactory entityManagerFactory = javax.persistence.Persistence.createEntityManagerFactory("localdb");
+
+ // EntityManagerFactory emfH2 =
+ // javax.persistence.Persistence.createEntityManagerFactory("localdb");
+ @Produces
+ private EntityManager getEM() {
+ return entityManagerFactory.createEntityManager();
+ }
+
+ public void dispose(@Disposes @Default EntityManager entityManager) {
+ if (entityManager.isOpen()) {
+ entityManager.close();
+ }
+ }
+}
diff --git a/securis/src/main/java/net/curisit/securis/ioc/MyTrans.java b/securis/src/main/java/net/curisit/securis/ioc/MyTrans.java
new file mode 100644
index 0000000..2bf6db9
--- /dev/null
+++ b/securis/src/main/java/net/curisit/securis/ioc/MyTrans.java
@@ -0,0 +1,17 @@
+package net.curisit.securis.ioc;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.interceptor.InterceptorBinding;
+
+@Target({
+ ElementType.METHOD, ElementType.TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+@InterceptorBinding
+public @interface MyTrans {
+
+}
diff --git a/securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java b/securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java
index cfa58b7..c42f6bf 100644
--- a/securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java
+++ b/securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java
@@ -5,24 +5,21 @@
import net.curisit.securis.services.ApplicationResource;
import net.curisit.securis.services.BasicServices;
import net.curisit.securis.services.LicenseResource;
-import net.curisit.securis.services.LicenseServices;
import net.curisit.securis.services.LicenseTypeResource;
import net.curisit.securis.services.OrganizationResource;
import net.curisit.securis.services.PackResource;
import net.curisit.securis.services.UserResource;
-import org.jboss.resteasy.plugins.guice.ext.RequestScopeModule;
+import com.google.inject.AbstractModule;
-public class RequestsModule extends RequestScopeModule {
+public class RequestsModule extends AbstractModule {
@Override
protected void configure() {
- super.configure();
// TODO: Make the bind using reflection dynamically
bind(SecurityInterceptor.class);
bind(BasicServices.class);
- bind(LicenseServices.class);
bind(UserResource.class);
bind(ApplicationResource.class);
@@ -31,7 +28,9 @@
bind(ApiResource.class);
bind(LicenseResource.class);
bind(PackResource.class);
+
}
+
// @Provides
// @RequestScoped
// public User provideUser() {
diff --git a/securis/src/main/java/net/curisit/securis/ioc/SecurisModule.java b/securis/src/main/java/net/curisit/securis/ioc/SecurisModule.java
index 737da7c..52a50f6 100644
--- a/securis/src/main/java/net/curisit/securis/ioc/SecurisModule.java
+++ b/securis/src/main/java/net/curisit/securis/ioc/SecurisModule.java
@@ -7,15 +7,13 @@
import java.util.List;
import java.util.Properties;
+import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
-import javax.inject.Singleton;
-import javax.sql.DataSource;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriBuilderException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.h2.jdbcx.JdbcDataSource;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
@@ -46,7 +44,7 @@
@Named("base-uri")
@Provides
- @Singleton
+ @ApplicationScoped
public URI getBaseURI() {
// TODO Read from configuration, where?
try {
@@ -81,7 +79,7 @@
@Named("temporary-dir")
@Provides
- @Singleton
+ @ApplicationScoped
public File getTemporaryDir() {
String tmp = getAppDir().getAbsolutePath();
tmp += File.separator + ".TEMP";
@@ -98,7 +96,7 @@
@Named("app-dir")
@Provides
- @Singleton
+ @ApplicationScoped
public File getAppDir() {
String appDir = System.getProperty("user.home", System.getProperty("user.dir"));
if (appDir == null) {
@@ -117,33 +115,21 @@
@Named("support-email")
@Provides
- @Singleton
+ @ApplicationScoped
public String getSupportEmail() {
- return "integrity@curistec.com";
+ return "support@curisit.net";
}
@Named("hash-logo")
@Provides
- @Singleton
+ @ApplicationScoped
public String getHashLogo() {
return "1b42616809d4cd8ccf109e3c30d0ab25067f160b30b7354a08ddd563de0096ba";
}
- @Provides
- @Singleton
- public DataSource getDataSource(@Named("app-dir") File appDir) {
-
- JdbcDataSource dataSource = new JdbcDataSource();
- dataSource.setURL(getUrl(appDir));
- dataSource.setUser("curis");
- dataSource.setPassword(getPassword());
- LOG.debug("JdbcDataSource: {}", dataSource);
- return dataSource;
- }
-
@Named("db-files")
@Provides
- @Singleton
+ @ApplicationScoped
public List<String> getDbFiles() {
return getAppDbFiles();
}
diff --git a/securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java b/securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java
new file mode 100644
index 0000000..b9f7276
--- /dev/null
+++ b/securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java
@@ -0,0 +1,80 @@
+package net.curisit.securis.ioc;
+
+import java.io.IOException;
+import java.lang.reflect.Method;
+
+import javax.inject.Inject;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.Interceptor;
+import javax.interceptor.InvocationContext;
+import javax.persistence.EntityManager;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerResponseContext;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.jboss.resteasy.core.ResourceMethodInvoker;
+import org.jboss.resteasy.spi.ResteasyProviderFactory;
+
+import com.google.inject.persist.Transactional;
+
+@Interceptor
+@MyTrans
+public class TransactionsManager {
+
+ private static final Logger LOG = LogManager.getLogger(TransactionsManager.class);
+
+ @Inject
+ private EntityManager em;
+
+ // @Inject
+ // private ThreadLocal<EntityManager> threadLocal;
+
+ @AroundInvoke
+ public Object invoke(InvocationContext context) throws Exception {
+ // EntityTransaction trx = manager.getTransaction();
+ if (!em.getTransaction().isActive()) {
+ em.getTransaction().begin();
+ LOG.info("INIT trans");
+ ResteasyProviderFactory.pushContext(EntityManager.class, em);
+ Object result = context.proceed();
+
+ em.getTransaction().commit();
+ LOG.info("COMMIT trans");
+ return result;
+ }
+ LOG.info("No trans");
+ Object result = context.proceed();
+ return result;
+ }
+
+ public void filter(ContainerRequestContext requestContext) throws IOException {
+ ResourceMethodInvoker methodInvoker = (ResourceMethodInvoker) requestContext.getProperty("org.jboss.resteasy.core.ResourceMethodInvoker");
+ Method method = methodInvoker.getMethod();
+
+ if (method.isAnnotationPresent(Transactional.class)) {
+ LOG.info("WE need transaction!!!");
+ em.getTransaction().begin();
+ }
+ }
+
+ public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
+ // TODO Auto-generated method stub
+
+ if (em.getTransaction().isActive()) {
+ LOG.info("There is transaction go ahead...");
+ if (responseContext.getStatus() == Status.OK.getStatusCode()) {
+ em.getTransaction().commit();
+ LOG.info("COMMIT");
+ } else {
+ em.getTransaction().rollback();
+ LOG.info("ROLLBACK");
+ }
+ } else {
+ LOG.info("There is NO transaction");
+
+ }
+ }
+
+}
diff --git a/securis/src/main/java/net/curisit/securis/security/SecurityInterceptor.java b/securis/src/main/java/net/curisit/securis/security/SecurityInterceptor.java
index be14791..3c02ac0 100644
--- a/securis/src/main/java/net/curisit/securis/security/SecurityInterceptor.java
+++ b/securis/src/main/java/net/curisit/securis/security/SecurityInterceptor.java
@@ -31,27 +31,27 @@
import org.jboss.resteasy.spi.ResteasyProviderFactory;
@Provider
-// @PreMatching
@Priority(Priorities.AUTHENTICATION)
public class SecurityInterceptor implements javax.ws.rs.container.ContainerRequestFilter {
private static final Logger LOG = LogManager.getLogger(SecurityInterceptor.class);
-
- @Inject
- private TokenHelper tokenHelper;
@Context
private HttpServletRequest servletRequest;
@Inject
- CacheTTL cache;
-
- @Context
- Dispatcher dispatcher;
+ private CacheTTL cache;
@Inject
- com.google.inject.Provider<EntityManager> emProvider;
+ private TokenHelper tokenHelper;
+
+ @Context
+ private Dispatcher dispatcher;
+
+ @Inject
+ private EntityManager em;
public void filter(ContainerRequestContext containerRequestContext) throws IOException {
+
ResourceMethodInvoker methodInvoker = (ResourceMethodInvoker) containerRequestContext
.getProperty("org.jboss.resteasy.core.ResourceMethodInvoker");
Method method = methodInvoker.getMethod();
@@ -76,6 +76,7 @@
containerRequestContext.setSecurityContext(scw);
// Next line provide injection in resource methods
ResteasyProviderFactory.pushContext(BasicSecurityContext.class, scw);
+ ResteasyProviderFactory.pushContext(EntityManager.class, em);
LOG.debug("Added custom SecurityContext for user {}, orgs: {}", username, orgs);
}
}
@@ -85,7 +86,6 @@
Set<Integer> userOrgs = cache.get("orgs_" + username, Set.class);
if (userOrgs == null) {
// Theorically this shouldn't be never null, but just in case...
- EntityManager em = emProvider.get();
User user = em.find(User.class, username);
if (user != null) {
userOrgs = user.getAllOrgsIds();
@@ -103,7 +103,6 @@
}
Integer userRoles = cache.get("roles_" + username, Integer.class);
if (userRoles == null) {
- EntityManager em = emProvider.get();
User user = em.find(User.class, username);
if (user != null) {
userRoles = 0;
diff --git a/securis/src/main/java/net/curisit/securis/services/ApiResource.java b/securis/src/main/java/net/curisit/securis/services/ApiResource.java
index 032ec6f..f725ad6 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApiResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApiResource.java
@@ -5,8 +5,8 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Provider;
import javax.persistence.EntityManager;
+import javax.transaction.Transactional;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
@@ -45,8 +45,6 @@
import org.apache.logging.log4j.Logger;
import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput;
-import com.google.inject.persist.Transactional;
-
/**
* External API to be accessed by third parties
*
@@ -64,7 +62,7 @@
private LicenseHelper licenseHelper;
@Inject
- Provider<EntityManager> emProvider;
+ EntityManager em;
@Inject
LicenseGenerator licenseGenerator;
@@ -124,7 +122,7 @@
public Response createFromRequest(RequestBean request, @HeaderParam(LicenseManager.HEADER_LICENSE_NAME_OR_REFERENCE) String nameOrReference,
@HeaderParam(LicenseManager.HEADER_LICENSE_EMAIL) String userEmail) throws IOException, SeCurisServiceException, SeCurisException {
LOG.info("Request to get license: {}", request);
- SignedLicenseBean lic = createLicense(request, emProvider.get(), false, nameOrReference, userEmail);
+ SignedLicenseBean lic = createLicense(request, em, false, nameOrReference, userEmail);
return Response.ok(lic).build();
}
@@ -189,7 +187,7 @@
throw new SeCurisServiceException(ErrorCodes.LICENSE_NOT_READY_FOR_RENEW, "The license is still valid, not ready for renew");
}
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
License lic = License.findLicenseByCode(previousLic.getLicenseCode(), em);
if (lic.getStatus() != LicenseStatus.ACTIVE) {
throw new SeCurisServiceException(ErrorCodes.LICENSE_NOT_READY_FOR_RENEW, "Only licenses with status 'Active' can be renew");
@@ -226,7 +224,7 @@
throw new SeCurisServiceException(ErrorCodes.LICENSE_IS_EXPIRED, "The license is expired");
}
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
try {
SignatureHelper.getInstance().validateSignature(currentLic);
} catch (SeCurisException ex) {
diff --git a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
index db7bf67..a2c17cd 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
@@ -6,10 +6,10 @@
import javax.annotation.security.RolesAllowed;
import javax.inject.Inject;
-import javax.inject.Provider;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.servlet.http.HttpServletRequest;
+import javax.transaction.Transactional;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
@@ -39,8 +39,6 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import com.google.inject.persist.Transactional;
-
/**
* Application resource, this service will provide methods to create, modify and
* delete applications
@@ -54,7 +52,7 @@
TokenHelper tokenHelper;
@Inject
- Provider<EntityManager> emProvider;
+ EntityManager em;
private static final Logger LOG = LogManager.getLogger(ApplicationResource.class);
@@ -74,7 +72,7 @@
public Response index() {
LOG.info("Getting applications list ");
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
TypedQuery<Application> q = em.createNamedQuery("list-applications", Application.class);
List<Application> list = q.getResultList();
@@ -100,7 +98,7 @@
return Response.status(Status.NOT_FOUND).build();
}
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
Application app = null;
@@ -138,7 +136,7 @@
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response create(Application app, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Creating new application");
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
app.setCreationTimestamp(new Date());
em.persist(app);
LOG.info("App ID: {}", app.getId());
@@ -167,7 +165,7 @@
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response modify(Application app, @PathParam("appid") String appid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Modifying application with id: {}", appid);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
Application currentapp = em.find(Application.class, Integer.parseInt(appid));
if (currentapp == null) {
LOG.error("Application with id {} not found in DB", appid);
@@ -214,7 +212,7 @@
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response delete(@PathParam("appid") String appid, @Context HttpServletRequest request) {
LOG.info("Deleting app with id: {}", appid);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
Application app = em.find(Application.class, Integer.parseInt(appid));
if (app == null) {
LOG.error("Application with id {} can not be deleted, It was not found in DB", appid);
diff --git a/securis/src/main/java/net/curisit/securis/services/BasicServices.java b/securis/src/main/java/net/curisit/securis/services/BasicServices.java
index 4500539..7f42cd5 100644
--- a/securis/src/main/java/net/curisit/securis/services/BasicServices.java
+++ b/securis/src/main/java/net/curisit/securis/services/BasicServices.java
@@ -3,9 +3,10 @@
import java.net.URI;
import java.util.Date;
+import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
-import javax.inject.Singleton;
import javax.servlet.http.HttpServletRequest;
+import javax.transaction.Transactional;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
@@ -27,15 +28,13 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import com.google.inject.persist.Transactional;
-
/**
* Basic services for login and basic app wrkflow
*
* @author roberto <roberto.sanchez@curisit.net>
*/
@Path("/")
-@Singleton
+@ApplicationScoped
public class BasicServices {
private static final Logger LOG = LogManager.getLogger(BasicServices.class);
diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseResource.java b/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
index 46db766..75e3fe2 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
@@ -7,11 +7,9 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Provider;
import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.SynchronizationType;
import javax.persistence.TypedQuery;
+import javax.transaction.Transactional;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.DefaultValue;
@@ -62,7 +60,6 @@
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.inject.persist.Transactional;
/**
* License resource, this service will provide methods to create, modify and
@@ -85,10 +82,7 @@
private LicenseHelper licenseHelper;
@Inject
- private Provider<EntityManager> emProvider;
-
- @PersistenceContext(unitName = "localdb", synchronization = SynchronizationType.SYNCHRONIZED)
- private EntityManager entityManager;
+ EntityManager em;
@Inject
private LicenseGenerator licenseGenerator;
@@ -106,7 +100,7 @@
public Response index(@QueryParam("packId") Integer packId, @Context BasicSecurityContext bsc) {
LOG.info("Getting licenses list ");
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
if (!bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
@@ -141,7 +135,7 @@
public Response get(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
LOG.info("Getting organization data for id: {}: ", licId);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
License lic = getCurrentLicense(licId, bsc, em);
return Response.ok(lic).build();
@@ -161,7 +155,7 @@
@Transactional
public Response download(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
License lic = getCurrentLicense(licId, bsc, em);
if (lic.getLicenseData() == null) {
@@ -198,7 +192,7 @@
})
public Response activate(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
License lic = getCurrentLicense(licId, bsc, em);
if (!License.Status.isActionValid(License.Action.ACTIVATION, lic.getStatus())) {
@@ -247,7 +241,7 @@
public Response send(@PathParam("licId") Integer licId, @DefaultValue("false") @FormParam("add_cc") Boolean addCC,
@Context BasicSecurityContext bsc) throws SeCurisServiceException, SeCurisException {
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
License lic = getCurrentLicense(licId, bsc, em);
Application app = lic.getPack().getLicenseType().getApplication();
File licFile = null;
@@ -303,7 +297,7 @@
public Response cancel(@PathParam("licId") Integer licId, CancellationLicenseActionBean actionData, @Context BasicSecurityContext bsc)
throws SeCurisServiceException {
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
License lic = getCurrentLicense(licId, bsc, em);
if (!License.Status.isActionValid(License.Action.CANCEL, lic.getStatus())) {
@@ -348,7 +342,7 @@
})
@Transactional
public Response create(License lic, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
if (checkIfCodeExists(lic.getCode(), em)) {
throw new SeCurisServiceException(ErrorCodes.INVALID_DATA, "The license code is already used in an existing license");
@@ -476,7 +470,7 @@
public Response modify(License lic, @PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
LOG.info("Modifying organization with id: {}", licId);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
License currentLicense = getCurrentLicense(licId, bsc, em);
currentLicense.setComments(lic.getComments());
@@ -522,7 +516,7 @@
})
public Response delete(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
LOG.info("Deleting license with id: {}", licId);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
License lic = getCurrentLicense(licId, bsc, em);
if (!License.Status.isActionValid(License.Action.DELETE, lic.getStatus())) {
@@ -554,7 +548,7 @@
})
public Response block(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
LOG.info("Blocking license with id: {}", licId);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
License lic = getCurrentLicense(licId, bsc, em);
if (!License.Status.isActionValid(License.Action.BLOCK, lic.getStatus())) {
@@ -587,7 +581,7 @@
})
public Response unblock(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
LOG.info("Unblocking license with id: {}", licId);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
License lic = getCurrentLicense(licId, bsc, em);
if (BlockedRequest.isRequestBlocked(lic.getRequestData(), em)) {
diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseServices.java b/securis/src/main/java/net/curisit/securis/services/LicenseServices.java
deleted file mode 100644
index 7e33e04..0000000
--- a/securis/src/main/java/net/curisit/securis/services/LicenseServices.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package net.curisit.securis.services;
-
-import java.io.IOException;
-import java.net.URI;
-import java.text.MessageFormat;
-
-import javax.inject.Named;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.jboss.resteasy.annotations.providers.multipart.MultipartForm;
-import org.jboss.resteasy.annotations.providers.multipart.PartType;
-
-// The Java class will be hosted at the URI path "/myresource"
-@Path("/test")
-public class LicenseServices {
-
- private static final Logger LOG = LogManager.getLogger(LicenseServices.class);
-
- private static final int DEFAULT_LICENSE_EXPIRATION = 365;
- private static final String LICENSE_STRING = "CurisIntegrity Config Server v{0}.{1}";
-
- @com.google.inject.Inject
- @Named("base-uri")
- private URI uri;
-
- public LicenseServices() {
-
- }
-
- /**
- *
- * @return the server version in format majorVersion.minorVersion
- */
- @GET
- @Produces({
- MediaType.TEXT_HTML
- })
- public Response index() {
- try {
- String index = IOUtils.toString(this.getClass().getResourceAsStream("/static/index.html"));
- return Response.ok().entity(index).build();
- } catch (IOException e) {
- LOG.error("Error getting index.html", e);
- }
- return Response.ok().entity(MessageFormat.format(LICENSE_STRING, 0, 1)).build();
- }
-
- @GET
- @Path("/dummy")
- @Produces({
- MediaType.TEXT_PLAIN
- })
- public Response dummy(@Context HttpServletRequest request) {
- LOG.info("Request: " + request.getPathInfo());
- return Response.ok().entity((uri == null)).build();
- }
-
- /**
- * @return the version of the three entities that can be synchronized
- * (Users, DataSet and Settings)
- */
- @POST
- @Path("/upload1")
- @Consumes(MediaType.MULTIPART_FORM_DATA)
- @Produces({
- MediaType.APPLICATION_JSON
- })
- public Response testFile1(@MultipartForm FileUploadForm mfdi) {
- LOG.info("FORM: texto: {}, file: {}", mfdi.getTexto(), new String(mfdi.getFile()));
- return Response.ok("OK").build();
- }
-
-// @GET
-// @Path("/current/{license}")
-// @Produces({
-// MediaType.APPLICATION_JSON
-// })
-// public ServiceResponse<ServerConfigVersions> testFile(@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;
-// }
-
- public static class FileUploadForm {
-
- @FormParam("file1")
- @PartType("application/octet-stream")
- private byte[] file;
-
- @FormParam("texto1")
- @PartType("text/plain")
- private String texto;
-
- public FileUploadForm() {
- }
-
- public byte[] getFile() {
- return file;
- }
-
- public void setFile(byte[] file) {
- this.file = file;
- }
-
- public void setTexto(final String texto) {
- this.texto = texto;
- }
-
- public String getTexto() {
- return texto;
- }
-
- }
-}
diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
index dd92706..480c91e 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
@@ -6,10 +6,10 @@
import javax.annotation.security.RolesAllowed;
import javax.inject.Inject;
-import javax.inject.Provider;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.servlet.http.HttpServletRequest;
+import javax.transaction.Transactional;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
@@ -39,8 +39,6 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import com.google.inject.persist.Transactional;
-
/**
* LicenseType resource, this service will provide methods to create, modify and
* delete license types
@@ -56,7 +54,7 @@
TokenHelper tokenHelper;
@Inject
- Provider<EntityManager> emProvider;
+ EntityManager em;
public LicenseTypeResource() {
}
@@ -74,7 +72,7 @@
public Response index() {
LOG.info("Getting license types list ");
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
TypedQuery<LicenseType> q = em.createNamedQuery("list-license_types", LicenseType.class);
List<LicenseType> list = q.getResultList();
@@ -100,7 +98,7 @@
return Response.status(Status.NOT_FOUND).build();
}
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
LicenseType lt = em.find(LicenseType.class, Integer.parseInt(ltid));
if (lt == null) {
@@ -121,7 +119,7 @@
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response create(LicenseType lt, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Creating new license type");
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
try {
setApplication(lt, lt.getApplicationId(), em);
@@ -162,7 +160,7 @@
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response modify(LicenseType lt, @PathParam("ltid") String ltid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Modifying license type with id: {}", ltid);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
LicenseType currentlt = em.find(LicenseType.class, Integer.parseInt(ltid));
if (currentlt == null) {
LOG.error("LicenseType with id {} not found in DB", ltid);
@@ -229,7 +227,7 @@
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response delete(@PathParam("ltid") String ltid, @Context HttpServletRequest request) {
LOG.info("Deleting app with id: {}", ltid);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
LicenseType app = em.find(LicenseType.class, Integer.parseInt(ltid));
if (app == null) {
LOG.error("LicenseType with id {} can not be deleted, It was not found in DB", ltid);
diff --git a/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java b/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
index 25a5b07..10a5f10 100644
--- a/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
@@ -6,11 +6,11 @@
import java.util.Set;
import javax.annotation.security.RolesAllowed;
-import javax.inject.Inject;
-import javax.inject.Provider;
+import javax.enterprise.context.RequestScoped;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.servlet.http.HttpServletRequest;
+import javax.transaction.Transactional;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
@@ -30,14 +30,13 @@
import net.curisit.securis.SeCurisException;
import net.curisit.securis.db.Organization;
import net.curisit.securis.db.User;
+import net.curisit.securis.ioc.MyTrans;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
import net.curisit.securis.utils.TokenHelper;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-
-import com.google.inject.persist.Transactional;
/**
* Organization resource, this service will provide methods to create, modify
@@ -46,12 +45,16 @@
* @author roberto <roberto.sanchez@curisit.net>
*/
@Path("/organization")
+@RequestScoped
public class OrganizationResource {
private static final Logger LOG = LogManager.getLogger(OrganizationResource.class);
- @Inject
- private Provider<EntityManager> emProvider;
+ @Context
+ EntityManager em;
+
+ @Context
+ BasicSecurityContext bsc;
public OrganizationResource() {
}
@@ -66,10 +69,10 @@
MediaType.APPLICATION_JSON
})
@Securable
- public Response index(@Context BasicSecurityContext bsc) {
+ public Response index() {
LOG.info("Getting organizations list ");
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
TypedQuery<Organization> q;
if (bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
@@ -101,7 +104,7 @@
return Response.status(Status.NOT_FOUND).build();
}
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
Organization org = em.find(Organization.class, Integer.parseInt(orgid));
if (org == null) {
@@ -128,12 +131,12 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @MyTrans
@Securable
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
- public Response create(Organization org, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
+ public Response create(Organization org) {
LOG.info("Creating new organization");
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
try {
this.setParentOrg(org, org.getParentOrgId(), em);
@@ -159,7 +162,6 @@
org.setUsers(users);
org.setCreationTimestamp(new Date());
em.persist(org);
-
return Response.ok(org).build();
}
@@ -205,7 +207,7 @@
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response modify(Organization org, @PathParam("orgid") String orgid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Modifying organization with id: {}", orgid);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
Organization currentOrg = em.find(Organization.class, Integer.parseInt(orgid));
if (currentOrg == null) {
LOG.error("Organization with id {} not found in DB", orgid);
@@ -250,7 +252,7 @@
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response delete(@PathParam("orgid") String orgid, @Context HttpServletRequest request) {
LOG.info("Deleting organization with id: {}", orgid);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
Organization org = em.find(Organization.class, Integer.parseInt(orgid));
if (org == null) {
LOG.error("Organization with id {} can not be deleted, It was not found in DB", orgid);
diff --git a/securis/src/main/java/net/curisit/securis/services/PackResource.java b/securis/src/main/java/net/curisit/securis/services/PackResource.java
index 31840e5..9a5e7a5 100644
--- a/securis/src/main/java/net/curisit/securis/services/PackResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/PackResource.java
@@ -7,9 +7,9 @@
import javax.annotation.security.RolesAllowed;
import javax.inject.Inject;
-import javax.inject.Provider;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
+import javax.transaction.Transactional;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
@@ -46,8 +46,6 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import com.google.inject.persist.Transactional;
-
/**
* Pack resource, this service will provide methods to create, modify and delete
* packs
@@ -63,7 +61,7 @@
TokenHelper tokenHelper;
@Inject
- Provider<EntityManager> emProvider;
+ EntityManager em;
@Inject
private LicenseHelper licenseHelper;
@@ -81,7 +79,7 @@
public Response index(@Context BasicSecurityContext bsc) {
LOG.info("Getting packs list ");
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
TypedQuery<Pack> q;
@@ -123,7 +121,7 @@
return Response.status(Status.NOT_FOUND).build();
}
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
Pack pack = em.find(Pack.class, packId);
if (pack == null) {
@@ -148,7 +146,7 @@
@Transactional
public Response create(Pack pack, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
LOG.info("Creating new pack");
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
if (checkIfCodeExists(pack.getCode(), em)) {
throw new SeCurisServiceException(ErrorCodes.INVALID_DATA, "The pack code is already used in an existing pack");
@@ -213,7 +211,7 @@
MediaType.TEXT_PLAIN
})
public Response getCodeSuffix(@PathParam("packId") Integer packId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
if (packId == null) {
throw new SeCurisServiceException(ErrorCodes.INVALID_DATA, "The pack code is mandatory");
@@ -250,7 +248,7 @@
})
public Response modify(Pack pack, @PathParam("packId") Integer packId) {
LOG.info("Modifying pack with id: {}", packId);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
Pack currentPack = em.find(Pack.class, packId);
try {
@@ -305,7 +303,7 @@
})
public Response activate(@PathParam("packId") Integer packId) throws SeCurisServiceException {
LOG.info("Activating pack with id: {}", packId);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
Pack currentPack = em.find(Pack.class, packId);
@@ -331,7 +329,7 @@
})
public Response onhold(@PathParam("packId") Integer packId) throws SeCurisServiceException {
LOG.info("Putting On hold pack with id: {}", packId);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
Pack currentPack = em.find(Pack.class, packId);
@@ -358,7 +356,7 @@
public Response cancel(@PathParam("packId") Integer packId, @FormParam("reason") String reason, @Context BasicSecurityContext bsc)
throws SeCurisServiceException {
LOG.info("Cancelling pack with id: {}", packId);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
Pack currentPack = em.find(Pack.class, packId);
@@ -401,7 +399,7 @@
})
public Response delete(@PathParam("packId") String packId) throws SeCurisServiceException {
LOG.info("Deleting pack with id: {}", packId);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
Pack pack = em.find(Pack.class, Integer.parseInt(packId));
if (pack == null) {
LOG.error("Pack with id {} can not be deleted, It was not found in DB", packId);
diff --git a/securis/src/main/java/net/curisit/securis/services/UserResource.java b/securis/src/main/java/net/curisit/securis/services/UserResource.java
index 3169039..2bbc7d2 100644
--- a/securis/src/main/java/net/curisit/securis/services/UserResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/UserResource.java
@@ -6,12 +6,13 @@
import java.util.Set;
import javax.annotation.security.RolesAllowed;
+import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
-import javax.inject.Provider;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceException;
import javax.persistence.TypedQuery;
import javax.servlet.http.HttpServletRequest;
+import javax.transaction.Transactional;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
@@ -35,12 +36,12 @@
import net.curisit.securis.db.User;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
+import net.curisit.securis.services.exception.SeCurisServiceException;
+import net.curisit.securis.services.exception.SeCurisServiceException.ErrorCodes;
import net.curisit.securis.utils.TokenHelper;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-
-import com.google.inject.persist.Transactional;
/**
* User resource
@@ -48,13 +49,14 @@
* @author roberto <roberto.sanchez@curisit.net>
*/
@Path("/user")
+@RequestScoped
public class UserResource {
@Inject
TokenHelper tokenHelper;
@Inject
- Provider<EntityManager> emProvider;
+ EntityManager em;
private static final Logger LOG = LogManager.getLogger(UserResource.class);
@@ -75,7 +77,7 @@
public Response index() {
LOG.info("Getting users list ");
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
TypedQuery<User> q = em.createNamedQuery("list-users", User.class);
@@ -102,7 +104,7 @@
return Response.status(Status.NOT_FOUND).build();
}
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
em.clear();
User lt = em.find(User.class, uid);
if (lt == null) {
@@ -123,7 +125,7 @@
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response create(User user, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Creating new user");
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
User currentUser = em.find(User.class, user.getUsername());
if (currentUser != null) {
LOG.info("User with id {} was found in DB, we'll try to modify it", user.getUsername());
@@ -179,7 +181,7 @@
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response modify(User user, @PathParam("uid") String uid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Modifying user with id: {}", uid);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
User currentUser = em.find(User.class, uid);
if (currentUser == null) {
LOG.info("User with id {} not found in DB, we'll try to create it", uid);
@@ -222,7 +224,7 @@
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response delete(@PathParam("uid") String uid, @Context HttpServletRequest request) {
LOG.info("Deleting app with id: {}", uid);
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
User app = em.find(User.class, uid);
if (app == null) {
LOG.error("User with id {} can not be deleted, It was not found in DB", uid);
@@ -238,23 +240,23 @@
@Produces({
MediaType.APPLICATION_JSON
})
- public Response login(@FormParam("username") String username, @FormParam("password") String password, @Context HttpServletRequest request) {
+ public Response login(@FormParam("username") String username, @FormParam("password") String password, @Context HttpServletRequest request)
+ throws SeCurisServiceException {
LOG.info("index session: " + request.getSession());
LOG.info("user: {}, pass: {}", username, password);
LOG.info("is user in role: {} == {} ? ", "advance", request.isUserInRole("advance"));
LOG.info("is user in role: {} == {} ? ", "admin", request.isUserInRole("admin"));
- EntityManager em = emProvider.get();
+ // EntityManager em = emProvider.get();
User user = em.find(User.class, username);
if (user == null) {
LOG.error("Inknown username {} used in login service", username);
- return Response.status(Status.UNAUTHORIZED).build();
+ throw new SeCurisServiceException(ErrorCodes.UNAUTHORIZED_ACCESS, "Wrong credentials");
}
String securedPassword = Utils.sha256(password);
if (securedPassword == null || !securedPassword.equals(user.getPassword())) {
- // TODO: Code to test exception handling
- return Response.status(Status.UNAUTHORIZED).build();
+ throw new SeCurisServiceException(ErrorCodes.UNAUTHORIZED_ACCESS, "Wrong credentials");
}
user.setLastLogin(new Date());
em.getTransaction().begin();
diff --git a/securis/src/main/java/net/curisit/securis/services/helpers/LicenseHelper.java b/securis/src/main/java/net/curisit/securis/services/helpers/LicenseHelper.java
index f927a78..039eb03 100644
--- a/securis/src/main/java/net/curisit/securis/services/helpers/LicenseHelper.java
+++ b/securis/src/main/java/net/curisit/securis/services/helpers/LicenseHelper.java
@@ -8,8 +8,8 @@
import java.util.Map;
import java.util.Set;
+import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
-import javax.inject.Singleton;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
@@ -28,7 +28,7 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-@Singleton
+@ApplicationScoped
public class LicenseHelper {
@SuppressWarnings("unused")
diff --git a/securis/src/main/java/net/curisit/securis/services/helpers/UserHelper.java b/securis/src/main/java/net/curisit/securis/services/helpers/UserHelper.java
index 5719764..9c8d00d 100644
--- a/securis/src/main/java/net/curisit/securis/services/helpers/UserHelper.java
+++ b/securis/src/main/java/net/curisit/securis/services/helpers/UserHelper.java
@@ -1,6 +1,6 @@
package net.curisit.securis.services.helpers;
-import javax.inject.Singleton;
+import javax.enterprise.context.ApplicationScoped;
import javax.persistence.EntityManager;
import javax.ws.rs.core.Response.Status;
@@ -8,7 +8,7 @@
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.services.exception.SeCurisServiceException;
-@Singleton
+@ApplicationScoped
public class UserHelper {
public User getUser(BasicSecurityContext bsc, EntityManager em) throws SeCurisServiceException {
diff --git a/securis/src/main/java/net/curisit/securis/utils/CacheTTL.java b/securis/src/main/java/net/curisit/securis/utils/CacheTTL.java
index 9a2ebf1..f627602 100644
--- a/securis/src/main/java/net/curisit/securis/utils/CacheTTL.java
+++ b/securis/src/main/java/net/curisit/securis/utils/CacheTTL.java
@@ -6,8 +6,8 @@
import java.util.List;
import java.util.Map;
+import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
-import javax.inject.Singleton;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -18,7 +18,7 @@
*
* @author roberto <roberto.sanchez@curisit.net>
*/
-@Singleton
+@ApplicationScoped
public class CacheTTL {
private static final Logger LOG = LogManager.getLogger(CacheTTL.class);
diff --git a/securis/src/main/java/net/curisit/securis/utils/EmailManager.java b/securis/src/main/java/net/curisit/securis/utils/EmailManager.java
index faf2389..9fe04a2 100644
--- a/securis/src/main/java/net/curisit/securis/utils/EmailManager.java
+++ b/securis/src/main/java/net/curisit/securis/utils/EmailManager.java
@@ -14,7 +14,7 @@
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
-import javax.inject.Singleton;
+import javax.enterprise.context.ApplicationScoped;
import net.curisit.securis.SeCurisException;
import net.curisit.securis.services.exception.SeCurisServiceException;
@@ -45,7 +45,7 @@
*
* @author roberto <roberto.sanchez@curisit.net>
*/
-@Singleton
+@ApplicationScoped
public class EmailManager {
private static final Logger LOG = LogManager.getLogger(EmailManager.class);
diff --git a/securis/src/main/java/net/curisit/securis/utils/TokenHelper.java b/securis/src/main/java/net/curisit/securis/utils/TokenHelper.java
index b3949c5..824dc51 100644
--- a/securis/src/main/java/net/curisit/securis/utils/TokenHelper.java
+++ b/securis/src/main/java/net/curisit/securis/utils/TokenHelper.java
@@ -7,8 +7,8 @@
import java.security.NoSuchAlgorithmException;
import java.util.Date;
+import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
-import javax.inject.Singleton;
import net.curisit.integrity.commons.Utils;
@@ -17,7 +17,7 @@
import org.apache.logging.log4j.Logger;
import org.jboss.resteasy.util.Base64;
-@Singleton
+@ApplicationScoped
public class TokenHelper {
private static final Logger LOG = LogManager.getLogger(TokenHelper.class);
diff --git a/securis/src/main/resources/META-INF/persistence.xml b/securis/src/main/resources/META-INF/persistence.xml
index ca70532..5edb044 100644
--- a/securis/src/main/resources/META-INF/persistence.xml
+++ b/securis/src/main/resources/META-INF/persistence.xml
@@ -2,19 +2,15 @@
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
- <persistence-unit name="localdb" transaction-type="RESOURCE_LOCAL">
+ <persistence-unit name="localdb" >
<description>SeCuris LocalDB</description>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+ <non-jta-data-source>java:comp/env/SeCurisDS</non-jta-data-source>
<shared-cache-mode>NONE</shared-cache-mode>
-
-<!-- <jta-data-source>java:comp/env/jdbc/SeCurisDS</jta-data-source>
- -->
- <!-- <class>net.curisit.securis.db.UserSettingsUnits</class> -->
-
<properties>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.internal.NoCachingRegionFactory"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
- <property name="hibernate.connection.datasource" value="java:comp/env/jdbc/SeCurisDS" />
+ <!-- <property name="hibernate.connection.datasource" value="java:comp/env/jdbc/SeCurisDS" /> -->
<property name="hibernate.cache.use_second_level_cache" value="false" />
<!-- <property name="hibernate.show_sql" value="true" /> -->
diff --git a/securis/src/main/webapp/WEB-INF/beans.xml b/securis/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..1b91f7e
--- /dev/null
+++ b/securis/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,7 @@
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_1.xsd">
+<interceptors>
+ <class>net.curisit.securis.ioc.TransactionsManager</class>
+ </interceptors>
+</beans>
+
\ No newline at end of file
diff --git a/securis/src/main/webapp/WEB-INF/web.xml b/securis/src/main/webapp/WEB-INF/web.xml
index e7acaaa..3456bee 100644
--- a/securis/src/main/webapp/WEB-INF/web.xml
+++ b/securis/src/main/webapp/WEB-INF/web.xml
@@ -29,10 +29,6 @@
<context-param>
- <param-name>resteasy.guice.modules</param-name>
- <param-value>net.curisit.securis.ioc.SecurisModule,net.curisit.securis.ioc.RequestsModule</param-value>
- </context-param>
- <context-param>
<param-name>resteasy.role.based.security</param-name>
<param-value>true</param-value>
</context-param>
@@ -40,27 +36,27 @@
<param-name>resteasy.providers</param-name>
<param-value>net.curisit.securis.DefaultExceptionHandler</param-value>
</context-param>
+ <context-param>
+ <param-name>resteasy.injector.factory</param-name>
+ <param-value>org.jboss.resteasy.cdi.CdiInjectorFactory</param-value>
+ </context-param>
-
+
<filter>
<filter-name>Resteasy</filter-name>
<filter-class>
org.jboss.resteasy.plugins.server.servlet.FilterDispatcher
</filter-class>
-
+ <init-param>
+ <param-name>javax.ws.rs.Application</param-name>
+ <param-value>net.curisit.securis.RestServicesApplication</param-value>
+ </init-param>
</filter>
<filter-mapping>
<filter-name>Resteasy</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-
-
- <listener>
- <listener-class>
- net.curisit.securis.BootstrapListener
- </listener-class>
- </listener>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
@@ -82,9 +78,13 @@
</security-role>
<resource-env-ref>
- <resource-env-ref-name>jdbc/SeCurisDS</resource-env-ref-name>
+ <resource-env-ref-name>SeCurisDS</resource-env-ref-name>
<resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
- <res-auth>Container</res-auth>
+</resource-env-ref>
+
+<resource-env-ref>
+ <resource-env-ref-name>BeanManager</resource-env-ref-name>
+ <resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
</resource-env-ref>
</web-app>
\ No newline at end of file
--
Gitblit v1.3.2