From 09f0f86d50933ea11eb3315e5728718e23d37dcf Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Wed, 28 Jan 2015 11:34:27 +0000
Subject: [PATCH] #2283 fix - Changed EntityManager injection to @Context
---
securis/src/main/java/net/curisit/securis/ioc/EnsureTransaction.java | 2
securis/src/main/java/net/curisit/securis/RestServicesApplication.java | 12 -
securis/src/main/java/net/curisit/securis/services/ApiResource.java | 14 +-
securis/src/main/java/net/curisit/securis/ioc/RequestsInterceptor.java | 63 +++++++++-
securis/src/main/java/net/curisit/securis/db/common/SystemParams.java | 52 +++++---
securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java | 42 ++++--
securis/src/main/java/net/curisit/securis/services/BasicServices.java | 4
securis/src/main/java/net/curisit/securis/services/ApplicationResource.java | 10
securis/src/main/java/net/curisit/securis/services/PackResource.java | 18 +-
/dev/null | 38 ------
securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java | 10
securis/src/main/java/net/curisit/securis/services/UserResource.java | 10
securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java | 2
securis/src/main/java/net/curisit/securis/services/LicenseResource.java | 22 +-
securis/src/main/java/net/curisit/securis/ioc/EntityManagerProvider.java | 21 +++
securis/src/main/webapp/WEB-INF/beans.xml | 2
securis/src/main/java/net/curisit/securis/services/OrganizationResource.java | 9
17 files changed, 192 insertions(+), 139 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/RestServicesApplication.java b/securis/src/main/java/net/curisit/securis/RestServicesApplication.java
index ebe835b..7c898d0 100644
--- a/securis/src/main/java/net/curisit/securis/RestServicesApplication.java
+++ b/securis/src/main/java/net/curisit/securis/RestServicesApplication.java
@@ -3,13 +3,11 @@
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.securis.ioc.DatabaseProvider;
+import net.curisit.securis.ioc.RequestsInterceptor;
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;
@@ -27,9 +25,6 @@
private static final Logger LOG = LogManager.getLogger(RestServicesApplication.class);
- @Inject
- private DatabaseProvider dp;
-
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<>();
@@ -42,11 +37,10 @@
classes.add(OrganizationResource.class);
classes.add(LicenseTypeResource.class);
classes.add(PackResource.class);
- classes.add(SecurityInterceptor.class);
+ classes.add(RequestsInterceptor.class);
classes.add(TransactionsManager.class);
- LOG.info("Returned classes for services: {}", classes);
- LOG.info("dp: {}", dp);
+ LOG.info("JAX-RS classes for services: {}", classes);
return classes;
}
diff --git a/securis/src/main/java/net/curisit/securis/dao/UserDao.java b/securis/src/main/java/net/curisit/securis/dao/UserDao.java
deleted file mode 100644
index 60729a1..0000000
--- a/securis/src/main/java/net/curisit/securis/dao/UserDao.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package net.curisit.securis.dao;
-
-import java.util.Arrays;
-import java.util.Date;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.inject.Provider;
-import javax.persistence.EntityManager;
-import javax.transaction.Transactional;
-
-import net.curisit.integrity.commons.Utils;
-import net.curisit.securis.db.User;
-
-@ApplicationScoped
-public class UserDao {
-
- @Inject
- public UserDao() {
- }
-
- @Inject
- Provider<EntityManager> emProvider;
-
- @Transactional
- public User test(String username) {
- EntityManager em = emProvider.get();
- User user = new User();
- user.setUsername(username);
- user.setFirstName("Rob");
- user.setPassword(Utils.sha256("rob"));
- user.setLang("en");
- user.setCreationTimestamp(new Date());
- user.setRoles(Arrays.asList(User.Rol.ADMIN, User.Rol.ADVANCE));
- user.setLastName("Sánchez");
- em.persist(user);
- User u2 = em.find(User.class, username);
- return u2;
- }
-
-}
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 88899cd..ac97ba0 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
@@ -3,12 +3,12 @@
import java.util.Date;
import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.transaction.Transactional;
import net.curisit.integrity.commons.Utils;
import net.curisit.securis.db.Settings;
+import net.curisit.securis.ioc.EntityManagerProvider;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -19,8 +19,8 @@
@SuppressWarnings("unused")
private static final Logger LOG = LogManager.getLogger(SystemParams.class);
- @PersistenceContext(unitName = "localdb")
- private EntityManager em;
+ @Inject
+ private EntityManagerProvider emProvider;
/**
* Returns the system parameter value for given key
@@ -109,6 +109,7 @@
* @return
*/
public String getParam(String key, String defaultValue) {
+ EntityManager em = emProvider.getEntityManager();
Settings p = em.find(Settings.class, key);
return p == null ? defaultValue : p.getValue();
}
@@ -120,19 +121,26 @@
* @param defaultValue
* @return
*/
- @Transactional
public void setParam(String key, String value) {
- Settings p = em.find(Settings.class, key);
- if (p == null) {
- p = new Settings();
- p.setKey(key);
- p.setValue(value);
- em.persist(p);
- } else {
- p.setValue(value);
- em.merge(p);
+ EntityManager em = emProvider.getEntityManager();
+ em.getTransaction().begin();
+ try {
+ Settings p = em.find(Settings.class, key);
+
+ if (p == null) {
+ p = new Settings();
+ p.setKey(key);
+ p.setValue(value);
+ em.persist(p);
+ } else {
+ p.setValue(value);
+ em.merge(p);
+ }
+ em.flush();
+ em.getTransaction().commit();
+ } finally {
+ em.getTransaction().rollback();
}
- em.flush();
}
/**
@@ -181,11 +189,17 @@
* @param key
* @return
*/
- @Transactional
public void removeParam(String key) {
- Settings p = em.find(Settings.class, key);
- if (p != null) {
- em.remove(p);
+ EntityManager em = emProvider.getEntityManager();
+ em.getTransaction().begin();
+ try {
+ Settings p = em.find(Settings.class, key);
+ if (p != null) {
+ em.remove(p);
+ }
+ em.getTransaction().commit();
+ } finally {
+ em.getTransaction().rollback();
}
}
diff --git a/securis/src/main/java/net/curisit/securis/ioc/DatabaseProvider.java b/securis/src/main/java/net/curisit/securis/ioc/DatabaseProvider.java
deleted file mode 100644
index cb1dfe7..0000000
--- a/securis/src/main/java/net/curisit/securis/ioc/DatabaseProvider.java
+++ /dev/null
@@ -1,38 +0,0 @@
-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/EnsureTransaction.java
similarity index 90%
rename from securis/src/main/java/net/curisit/securis/ioc/MyTrans.java
rename to securis/src/main/java/net/curisit/securis/ioc/EnsureTransaction.java
index 2bf6db9..017c46f 100644
--- a/securis/src/main/java/net/curisit/securis/ioc/MyTrans.java
+++ b/securis/src/main/java/net/curisit/securis/ioc/EnsureTransaction.java
@@ -12,6 +12,6 @@
})
@Retention(RetentionPolicy.RUNTIME)
@InterceptorBinding
-public @interface MyTrans {
+public @interface EnsureTransaction {
}
diff --git a/securis/src/main/java/net/curisit/securis/ioc/EntityManagerProvider.java b/securis/src/main/java/net/curisit/securis/ioc/EntityManagerProvider.java
new file mode 100644
index 0000000..e80c9b8
--- /dev/null
+++ b/securis/src/main/java/net/curisit/securis/ioc/EntityManagerProvider.java
@@ -0,0 +1,21 @@
+package net.curisit.securis.ioc;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@ApplicationScoped
+public class EntityManagerProvider {
+
+ private static final Logger LOG = LogManager.getLogger(EntityManagerProvider.class);
+
+ private final EntityManagerFactory entityManagerFactory = javax.persistence.Persistence.createEntityManagerFactory("localdb");
+
+ public EntityManager getEntityManager() {
+ return entityManagerFactory.createEntityManager();
+ }
+
+}
diff --git a/securis/src/main/java/net/curisit/securis/security/SecurityInterceptor.java b/securis/src/main/java/net/curisit/securis/ioc/RequestsInterceptor.java
similarity index 64%
rename from securis/src/main/java/net/curisit/securis/security/SecurityInterceptor.java
rename to securis/src/main/java/net/curisit/securis/ioc/RequestsInterceptor.java
index 3c02ac0..29e2278 100644
--- a/securis/src/main/java/net/curisit/securis/security/SecurityInterceptor.java
+++ b/securis/src/main/java/net/curisit/securis/ioc/RequestsInterceptor.java
@@ -1,4 +1,4 @@
-package net.curisit.securis.security;
+package net.curisit.securis.ioc;
import java.io.IOException;
import java.lang.reflect.Method;
@@ -12,12 +12,17 @@
import javax.ws.rs.Priorities;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.ContainerResponseContext;
+import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.Provider;
import net.curisit.securis.db.User;
+import net.curisit.securis.security.BasicSecurityContext;
+import net.curisit.securis.security.Securable;
import net.curisit.securis.utils.CacheTTL;
import net.curisit.securis.utils.TokenHelper;
@@ -32,8 +37,8 @@
@Provider
@Priority(Priorities.AUTHENTICATION)
-public class SecurityInterceptor implements javax.ws.rs.container.ContainerRequestFilter {
- private static final Logger LOG = LogManager.getLogger(SecurityInterceptor.class);
+public class RequestsInterceptor implements ContainerRequestFilter, ContainerResponseFilter {
+ private static final Logger LOG = LogManager.getLogger(RequestsInterceptor.class);
@Context
private HttpServletRequest servletRequest;
@@ -48,23 +53,43 @@
private Dispatcher dispatcher;
@Inject
- private EntityManager em;
+ private EntityManagerProvider emProvider;
public void filter(ContainerRequestContext containerRequestContext) throws IOException {
+ EntityManager em = emProvider.getEntityManager();
+ ResteasyProviderFactory.pushContext(EntityManager.class, em);
ResourceMethodInvoker methodInvoker = (ResourceMethodInvoker) containerRequestContext
.getProperty("org.jboss.resteasy.core.ResourceMethodInvoker");
Method method = methodInvoker.getMethod();
+ LOG.info("Stored in context, em: {}, {}?", em, method.toGenericString());
+
+ boolean next = checkSecurableMethods(containerRequestContext, method);
+ if (next) {
+ prepareTransaction(containerRequestContext, method);
+ }
+ }
+
+ private void prepareTransaction(ContainerRequestContext containerRequestContext, Method method) {
+ EntityManager em = ResteasyProviderFactory.getContextData(EntityManager.class);
+
+ if (method.isAnnotationPresent(EnsureTransaction.class)) {
+ LOG.info("WE need transaction!!!");
+ em.getTransaction().begin();
+ }
+ }
+
+ private boolean checkSecurableMethods(ContainerRequestContext containerRequestContext, Method method) {
if (!method.isAnnotationPresent(Securable.class)) {
- return;
+ return true;
}
String token = servletRequest.getHeader(TokenHelper.TOKEN_HEADER_PÀRAM);
if (token == null || !tokenHelper.isTokenValid(token)) {
LOG.info("Access denied to '{}', Token not valid.", servletRequest.getPathInfo());
containerRequestContext.abortWith(Response.status(Status.UNAUTHORIZED).build());
+ return false;
} else {
- Securable sec = method.getAnnotation(Securable.class);
// If roles == 0 we only need to validate the token
String username = tokenHelper.extractUserFromToken(token);
@@ -76,15 +101,18 @@
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);
}
+ return true;
+
}
private Set<Integer> getUserOrganizations(String username) {
@SuppressWarnings("unchecked")
Set<Integer> userOrgs = cache.get("orgs_" + username, Set.class);
if (userOrgs == null) {
+ EntityManager em = ResteasyProviderFactory.getContextData(EntityManager.class);
+
// Theorically this shouldn't be never null, but just in case...
User user = em.find(User.class, username);
if (user != null) {
@@ -103,6 +131,8 @@
}
Integer userRoles = cache.get("roles_" + username, Integer.class);
if (userRoles == null) {
+ EntityManager em = ResteasyProviderFactory.getContextData(EntityManager.class);
+
User user = em.find(User.class, username);
if (user != null) {
userRoles = 0;
@@ -123,4 +153,23 @@
return null;
}
+ @Override
+ public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
+ EntityManager em = ResteasyProviderFactory.getContextData(EntityManager.class);
+
+ if (em != null && 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/ioc/RequestsModule.java b/securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java
index c42f6bf..611e5f2 100644
--- a/securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java
+++ b/securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java
@@ -1,6 +1,5 @@
package net.curisit.securis.ioc;
-import net.curisit.securis.security.SecurityInterceptor;
import net.curisit.securis.services.ApiResource;
import net.curisit.securis.services.ApplicationResource;
import net.curisit.securis.services.BasicServices;
@@ -17,7 +16,6 @@
@Override
protected void configure() {
// TODO: Make the bind using reflection dynamically
- bind(SecurityInterceptor.class);
bind(BasicServices.class);
bind(UserResource.class);
diff --git a/securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java b/securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java
index b9f7276..33c43f0 100644
--- a/securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java
+++ b/securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java
@@ -3,37 +3,41 @@
import java.io.IOException;
import java.lang.reflect.Method;
-import javax.inject.Inject;
-import javax.interceptor.AroundInvoke;
-import javax.interceptor.Interceptor;
+import javax.annotation.Priority;
import javax.interceptor.InvocationContext;
import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.ws.rs.Priorities;
import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.ContainerResponseContext;
+import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.ext.Provider;
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 {
+@Provider
+@Priority(Priorities.AUTHENTICATION)
+public class TransactionsManager implements ContainerRequestFilter, ContainerResponseFilter {
private static final Logger LOG = LogManager.getLogger(TransactionsManager.class);
- @Inject
- private EntityManager em;
+ private EntityManagerFactory entityManagerFactory = javax.persistence.Persistence.createEntityManagerFactory("localdb");
+
+ private EntityManager getEM() {
+ return entityManagerFactory.createEntityManager();
+ }
// @Inject
// private ThreadLocal<EntityManager> threadLocal;
- @AroundInvoke
+ // @AroundInvoke
public Object invoke(InvocationContext context) throws Exception {
- // EntityTransaction trx = manager.getTransaction();
+ EntityManager em = getEM();
if (!em.getTransaction().isActive()) {
em.getTransaction().begin();
LOG.info("INIT trans");
@@ -49,20 +53,30 @@
return result;
}
+ @Override
public void filter(ContainerRequestContext requestContext) throws IOException {
ResourceMethodInvoker methodInvoker = (ResourceMethodInvoker) requestContext.getProperty("org.jboss.resteasy.core.ResourceMethodInvoker");
Method method = methodInvoker.getMethod();
+ EntityManager em = getEM();
- if (method.isAnnotationPresent(Transactional.class)) {
+ ResteasyProviderFactory.pushContext(EntityManager.class, em);
+
+ if (method.isAnnotationPresent(EnsureTransaction.class)) {
LOG.info("WE need transaction!!!");
+
em.getTransaction().begin();
}
+ LOG.info("Sent to context, em: {}, {}?", em, method.toGenericString());
}
+ @Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
// TODO Auto-generated method stub
+ // ResteasyProviderFactory.pushContext(EntityManager.class, em);
+ EntityManager em = (EntityManager) ResteasyProviderFactory.getContextData(EntityManager.class);
+ LOG.info("Operating on em: {}", em);
- if (em.getTransaction().isActive()) {
+ if (em != null && em.getTransaction().isActive()) {
LOG.info("There is transaction go ahead...");
if (responseContext.getStatus() == Status.OK.getStatusCode()) {
em.getTransaction().commit();
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 f725ad6..e831a91 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApiResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApiResource.java
@@ -6,7 +6,6 @@
import javax.inject.Inject;
import javax.persistence.EntityManager;
-import javax.transaction.Transactional;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
@@ -30,6 +29,7 @@
import net.curisit.securis.db.LicenseStatus;
import net.curisit.securis.db.Pack;
import net.curisit.securis.db.User;
+import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
import net.curisit.securis.services.exception.SeCurisServiceException;
@@ -61,7 +61,7 @@
@Inject
private LicenseHelper licenseHelper;
- @Inject
+ @Context
EntityManager em;
@Inject
@@ -118,7 +118,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @EnsureTransaction
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);
@@ -144,7 +144,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @EnsureTransaction
@SuppressWarnings("unchecked")
public Response createFromRequestFile(MultipartFormDataInput mpfdi,
@HeaderParam(LicenseManager.HEADER_LICENSE_NAME_OR_REFERENCE) String nameOrReference,
@@ -178,7 +178,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @EnsureTransaction
public Response renewFromPreviousLicense(LicenseBean previousLic, @Context BasicSecurityContext bsc) throws IOException, SeCurisServiceException,
SeCurisException {
LOG.info("Renew license: {}", previousLic);
@@ -216,7 +216,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @EnsureTransaction
public Response validate(LicenseBean currentLic, @Context BasicSecurityContext bsc) throws IOException, SeCurisServiceException, SeCurisException {
LOG.info("Validate license: {}", currentLic);
@@ -252,7 +252,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @EnsureTransaction
@SuppressWarnings("unchecked")
public Response renewFromLicenseFile(MultipartFormDataInput mpfdi, @Context BasicSecurityContext bsc) throws IOException,
SeCurisServiceException, SeCurisException {
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 a2c17cd..872dfa6 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
@@ -9,7 +9,6 @@
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;
@@ -29,6 +28,7 @@
import net.curisit.securis.SeCurisException;
import net.curisit.securis.db.Application;
import net.curisit.securis.db.ApplicationMetadata;
+import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
import net.curisit.securis.services.exception.SeCurisServiceException;
@@ -51,7 +51,7 @@
@Inject
TokenHelper tokenHelper;
- @Inject
+ @Context
EntityManager em;
private static final Logger LOG = LogManager.getLogger(ApplicationResource.class);
@@ -131,7 +131,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @EnsureTransaction
@Securable
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response create(Application app, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
@@ -156,7 +156,7 @@
@PUT
@POST
@Path("/{appid}")
- @Transactional
+ @EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({
MediaType.APPLICATION_JSON
@@ -204,7 +204,7 @@
@DELETE
@Path("/{appid}")
- @Transactional
+ @EnsureTransaction
@Produces({
MediaType.APPLICATION_JSON
})
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 7f42cd5..1b7a494 100644
--- a/securis/src/main/java/net/curisit/securis/services/BasicServices.java
+++ b/securis/src/main/java/net/curisit/securis/services/BasicServices.java
@@ -6,7 +6,6 @@
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
-import javax.transaction.Transactional;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
@@ -22,6 +21,7 @@
import javax.ws.rs.core.UriBuilder;
import net.curisit.integrity.commons.Utils;
+import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.Securable;
import net.curisit.securis.utils.TokenHelper;
@@ -99,7 +99,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @EnsureTransaction
public Response check(@HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token, @QueryParam("token") String token2) {
if (token == null) {
token = token2;
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 75e3fe2..b8494a6 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
@@ -9,7 +9,6 @@
import javax.inject.Inject;
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.DefaultValue;
@@ -41,6 +40,7 @@
import net.curisit.securis.db.Pack;
import net.curisit.securis.db.PackStatus;
import net.curisit.securis.db.User;
+import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
import net.curisit.securis.services.exception.SeCurisServiceException;
@@ -81,7 +81,7 @@
@Inject
private LicenseHelper licenseHelper;
- @Inject
+ @Context
EntityManager em;
@Inject
@@ -152,7 +152,7 @@
@Produces({
MediaType.APPLICATION_OCTET_STREAM
})
- @Transactional
+ @EnsureTransaction
public Response download(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
// EntityManager em = emProvider.get();
@@ -185,7 +185,7 @@
@POST
@Path("/{licId}/activate")
@Securable
- @Transactional
+ @EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({
MediaType.APPLICATION_JSON
@@ -233,7 +233,7 @@
@POST
@Path("/{licId}/send")
@Securable
- @Transactional
+ @EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({
MediaType.APPLICATION_JSON
@@ -289,7 +289,7 @@
@POST
@Path("/{licId}/cancel")
@Securable
- @Transactional
+ @EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({
MediaType.APPLICATION_JSON
@@ -340,7 +340,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @EnsureTransaction
public Response create(License lic, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
// EntityManager em = emProvider.get();
@@ -462,7 +462,7 @@
@POST
@Path("/{licId}")
@Securable
- @Transactional
+ @EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({
MediaType.APPLICATION_JSON
@@ -509,7 +509,7 @@
@DELETE
@Path("/{licId}")
- @Transactional
+ @EnsureTransaction
@Securable
@Produces({
MediaType.APPLICATION_JSON
@@ -541,7 +541,7 @@
@POST
@Path("/{licId}/block")
- @Transactional
+ @EnsureTransaction
@Securable
@Produces({
MediaType.APPLICATION_JSON
@@ -574,7 +574,7 @@
@POST
@Path("/{licId}/unblock")
- @Transactional
+ @EnsureTransaction
@Securable
@Produces({
MediaType.APPLICATION_JSON
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 480c91e..c1b8a39 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
@@ -9,7 +9,6 @@
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,6 +29,7 @@
import net.curisit.securis.db.Application;
import net.curisit.securis.db.LicenseType;
import net.curisit.securis.db.LicenseTypeMetadata;
+import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
import net.curisit.securis.services.exception.SeCurisServiceException;
@@ -53,7 +53,7 @@
@Inject
TokenHelper tokenHelper;
- @Inject
+ @Context
EntityManager em;
public LicenseTypeResource() {
@@ -114,7 +114,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @EnsureTransaction
@Securable
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response create(LicenseType lt, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
@@ -151,7 +151,7 @@
@PUT
@POST
@Path("/{ltid}")
- @Transactional
+ @EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({
MediaType.APPLICATION_JSON
@@ -219,7 +219,7 @@
@DELETE
@Path("/{ltid}")
- @Transactional
+ @EnsureTransaction
@Produces({
MediaType.APPLICATION_JSON
})
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 10a5f10..366bdcd 100644
--- a/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
@@ -10,7 +10,6 @@
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,7 +29,7 @@
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.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
import net.curisit.securis.utils.TokenHelper;
@@ -131,7 +130,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @MyTrans
+ @EnsureTransaction
@Securable
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response create(Organization org) {
@@ -198,11 +197,11 @@
@PUT
@POST
@Path("/{orgid}")
- @Transactional
@Consumes(MediaType.APPLICATION_JSON)
@Produces({
MediaType.APPLICATION_JSON
})
+ @EnsureTransaction
@Securable
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response modify(Organization org, @PathParam("orgid") String orgid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
@@ -244,7 +243,7 @@
@DELETE
@Path("/{orgid}")
- @Transactional
+ @EnsureTransaction
@Produces({
MediaType.APPLICATION_JSON
})
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 9a5e7a5..558b5a4 100644
--- a/securis/src/main/java/net/curisit/securis/services/PackResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/PackResource.java
@@ -9,7 +9,6 @@
import javax.inject.Inject;
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;
@@ -35,6 +34,7 @@
import net.curisit.securis.db.PackMetadata;
import net.curisit.securis.db.PackStatus;
import net.curisit.securis.db.User;
+import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
import net.curisit.securis.services.exception.SeCurisServiceException;
@@ -60,7 +60,7 @@
@Inject
TokenHelper tokenHelper;
- @Inject
+ @Context
EntityManager em;
@Inject
@@ -143,7 +143,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @EnsureTransaction
public Response create(Pack pack, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
LOG.info("Creating new pack");
// EntityManager em = emProvider.get();
@@ -239,7 +239,7 @@
@PUT
@POST
@Path("/{packId}")
- @Transactional
+ @EnsureTransaction
@Securable
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
@Consumes(MediaType.APPLICATION_JSON)
@@ -267,6 +267,8 @@
currentPack.setCode(pack.getCode());
currentPack.setComments(pack.getComments());
currentPack.setNumLicenses(pack.getNumLicenses());
+ currentPack.setPreactivationValidPeriod(pack.getPreactivationValidPeriod());
+ currentPack.setRenewValidPeriod(pack.getRenewValidPeriod());
Set<PackMetadata> newMD = pack.getMetadata();
for (PackMetadata currentMd : currentPack.getMetadata()) {
@@ -294,7 +296,7 @@
@POST
@Path("/{packId}/activate")
- @Transactional
+ @EnsureTransaction
@Securable
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
@Consumes(MediaType.APPLICATION_JSON)
@@ -320,7 +322,7 @@
@POST
@Path("/{packId}/putonhold")
- @Transactional
+ @EnsureTransaction
@Securable
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
@Consumes(MediaType.APPLICATION_JSON)
@@ -346,7 +348,7 @@
@POST
@Path("/{packId}/cancel")
- @Transactional
+ @EnsureTransaction
@Securable
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
@Consumes(MediaType.APPLICATION_JSON)
@@ -393,7 +395,7 @@
@Path("/{packId}")
@Securable
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
- @Transactional
+ @EnsureTransaction
@Produces({
MediaType.APPLICATION_JSON
})
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 2bbc7d2..058289b 100644
--- a/securis/src/main/java/net/curisit/securis/services/UserResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/UserResource.java
@@ -12,7 +12,6 @@
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;
@@ -34,6 +33,7 @@
import net.curisit.securis.SeCurisException;
import net.curisit.securis.db.Organization;
import net.curisit.securis.db.User;
+import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
import net.curisit.securis.services.exception.SeCurisServiceException;
@@ -55,7 +55,7 @@
@Inject
TokenHelper tokenHelper;
- @Inject
+ @Context
EntityManager em;
private static final Logger LOG = LogManager.getLogger(UserResource.class);
@@ -120,7 +120,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
- @Transactional
+ @EnsureTransaction
@Securable
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response create(User user, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
@@ -172,7 +172,7 @@
@PUT
@POST
@Path("/{uid}")
- @Transactional
+ @EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({
MediaType.APPLICATION_JSON
@@ -216,7 +216,7 @@
@DELETE
@Path("/{uid}")
- @Transactional
+ @EnsureTransaction
@Produces({
MediaType.APPLICATION_JSON
})
diff --git a/securis/src/main/webapp/WEB-INF/beans.xml b/securis/src/main/webapp/WEB-INF/beans.xml
index 1b91f7e..7b1fd28 100644
--- a/securis/src/main/webapp/WEB-INF/beans.xml
+++ b/securis/src/main/webapp/WEB-INF/beans.xml
@@ -1,7 +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>
+ <!-- <class>net.curisit.securis.ioc.TransactionsManager</class> -->
</interceptors>
</beans>
\ No newline at end of file
--
Gitblit v1.3.2