rsanchez
2015-01-28 09f0f86d50933ea11eb3315e5728718e23d37dcf
#2283 fix - Changed EntityManager injection to @Context
2 files deleted
1 files added
13 files modified
2 files renamed
changed files
securis/src/main/java/net/curisit/securis/RestServicesApplication.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/dao/UserDao.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/db/common/SystemParams.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/ioc/DatabaseProvider.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/ioc/EnsureTransaction.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/ioc/EntityManagerProvider.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/ioc/RequestsInterceptor.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/services/ApiResource.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/services/ApplicationResource.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/services/BasicServices.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/services/LicenseResource.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/services/OrganizationResource.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/services/PackResource.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/services/UserResource.java patch | view | blame | history
securis/src/main/webapp/WEB-INF/beans.xml patch | view | blame | history
securis/src/main/java/net/curisit/securis/RestServicesApplication.java
....@@ -3,13 +3,11 @@
33 import java.util.HashSet;
44 import java.util.Set;
55
6
-import javax.inject.Inject;
76 import javax.ws.rs.ApplicationPath;
87 import javax.ws.rs.core.Application;
98
10
-import net.curisit.securis.ioc.DatabaseProvider;
9
+import net.curisit.securis.ioc.RequestsInterceptor;
1110 import net.curisit.securis.ioc.TransactionsManager;
12
-import net.curisit.securis.security.SecurityInterceptor;
1311 import net.curisit.securis.services.ApiResource;
1412 import net.curisit.securis.services.ApplicationResource;
1513 import net.curisit.securis.services.BasicServices;
....@@ -27,9 +25,6 @@
2725
2826 private static final Logger LOG = LogManager.getLogger(RestServicesApplication.class);
2927
30
- @Inject
31
- private DatabaseProvider dp;
32
-
3328 @Override
3429 public Set<Class<?>> getClasses() {
3530 Set<Class<?>> classes = new HashSet<>();
....@@ -42,11 +37,10 @@
4237 classes.add(OrganizationResource.class);
4338 classes.add(LicenseTypeResource.class);
4439 classes.add(PackResource.class);
45
- classes.add(SecurityInterceptor.class);
40
+ classes.add(RequestsInterceptor.class);
4641 classes.add(TransactionsManager.class);
4742
48
- LOG.info("Returned classes for services: {}", classes);
49
- LOG.info("dp: {}", dp);
43
+ LOG.info("JAX-RS classes for services: {}", classes);
5044 return classes;
5145 }
5246
securis/src/main/java/net/curisit/securis/dao/UserDao.java
deleted file mode 100644
....@@ -1,41 +0,0 @@
1
-package net.curisit.securis.dao;
2
-
3
-import java.util.Arrays;
4
-import java.util.Date;
5
-
6
-import javax.enterprise.context.ApplicationScoped;
7
-import javax.inject.Inject;
8
-import javax.inject.Provider;
9
-import javax.persistence.EntityManager;
10
-import javax.transaction.Transactional;
11
-
12
-import net.curisit.integrity.commons.Utils;
13
-import net.curisit.securis.db.User;
14
-
15
-@ApplicationScoped
16
-public class UserDao {
17
-
18
- @Inject
19
- public UserDao() {
20
- }
21
-
22
- @Inject
23
- Provider<EntityManager> emProvider;
24
-
25
- @Transactional
26
- public User test(String username) {
27
- EntityManager em = emProvider.get();
28
- User user = new User();
29
- user.setUsername(username);
30
- user.setFirstName("Rob");
31
- user.setPassword(Utils.sha256("rob"));
32
- user.setLang("en");
33
- user.setCreationTimestamp(new Date());
34
- user.setRoles(Arrays.asList(User.Rol.ADMIN, User.Rol.ADVANCE));
35
- user.setLastName("Sánchez");
36
- em.persist(user);
37
- User u2 = em.find(User.class, username);
38
- return u2;
39
- }
40
-
41
-}
securis/src/main/java/net/curisit/securis/db/common/SystemParams.java
....@@ -3,12 +3,12 @@
33 import java.util.Date;
44
55 import javax.enterprise.context.ApplicationScoped;
6
+import javax.inject.Inject;
67 import javax.persistence.EntityManager;
7
-import javax.persistence.PersistenceContext;
8
-import javax.transaction.Transactional;
98
109 import net.curisit.integrity.commons.Utils;
1110 import net.curisit.securis.db.Settings;
11
+import net.curisit.securis.ioc.EntityManagerProvider;
1212
1313 import org.apache.logging.log4j.LogManager;
1414 import org.apache.logging.log4j.Logger;
....@@ -19,8 +19,8 @@
1919 @SuppressWarnings("unused")
2020 private static final Logger LOG = LogManager.getLogger(SystemParams.class);
2121
22
- @PersistenceContext(unitName = "localdb")
23
- private EntityManager em;
22
+ @Inject
23
+ private EntityManagerProvider emProvider;
2424
2525 /**
2626 * Returns the system parameter value for given key
....@@ -109,6 +109,7 @@
109109 * @return
110110 */
111111 public String getParam(String key, String defaultValue) {
112
+ EntityManager em = emProvider.getEntityManager();
112113 Settings p = em.find(Settings.class, key);
113114 return p == null ? defaultValue : p.getValue();
114115 }
....@@ -120,19 +121,26 @@
120121 * @param defaultValue
121122 * @return
122123 */
123
- @Transactional
124124 public void setParam(String key, String value) {
125
- Settings p = em.find(Settings.class, key);
126
- if (p == null) {
127
- p = new Settings();
128
- p.setKey(key);
129
- p.setValue(value);
130
- em.persist(p);
131
- } else {
132
- p.setValue(value);
133
- em.merge(p);
125
+ EntityManager em = emProvider.getEntityManager();
126
+ em.getTransaction().begin();
127
+ try {
128
+ Settings p = em.find(Settings.class, key);
129
+
130
+ if (p == null) {
131
+ p = new Settings();
132
+ p.setKey(key);
133
+ p.setValue(value);
134
+ em.persist(p);
135
+ } else {
136
+ p.setValue(value);
137
+ em.merge(p);
138
+ }
139
+ em.flush();
140
+ em.getTransaction().commit();
141
+ } finally {
142
+ em.getTransaction().rollback();
134143 }
135
- em.flush();
136144 }
137145
138146 /**
....@@ -181,11 +189,17 @@
181189 * @param key
182190 * @return
183191 */
184
- @Transactional
185192 public void removeParam(String key) {
186
- Settings p = em.find(Settings.class, key);
187
- if (p != null) {
188
- em.remove(p);
193
+ EntityManager em = emProvider.getEntityManager();
194
+ em.getTransaction().begin();
195
+ try {
196
+ Settings p = em.find(Settings.class, key);
197
+ if (p != null) {
198
+ em.remove(p);
199
+ }
200
+ em.getTransaction().commit();
201
+ } finally {
202
+ em.getTransaction().rollback();
189203 }
190204 }
191205
securis/src/main/java/net/curisit/securis/ioc/DatabaseProvider.java
deleted file mode 100644
....@@ -1,38 +0,0 @@
1
-package net.curisit.securis.ioc;
2
-
3
-import javax.enterprise.context.ApplicationScoped;
4
-import javax.enterprise.inject.Default;
5
-import javax.enterprise.inject.Disposes;
6
-import javax.enterprise.inject.Produces;
7
-import javax.inject.Inject;
8
-import javax.persistence.EntityManager;
9
-import javax.persistence.EntityManagerFactory;
10
-
11
-import org.apache.logging.log4j.LogManager;
12
-import org.apache.logging.log4j.Logger;
13
-
14
-@ApplicationScoped
15
-public class DatabaseProvider {
16
-
17
- private static final Logger LOG = LogManager.getLogger(DatabaseProvider.class);
18
-
19
- @Inject
20
- public DatabaseProvider() {
21
- LOG.info("Contructor DatabaseProvider, emf: {}, em: {} ", entityManagerFactory, getEM());
22
- }
23
-
24
- private EntityManagerFactory entityManagerFactory = javax.persistence.Persistence.createEntityManagerFactory("localdb");
25
-
26
- // EntityManagerFactory emfH2 =
27
- // javax.persistence.Persistence.createEntityManagerFactory("localdb");
28
- @Produces
29
- private EntityManager getEM() {
30
- return entityManagerFactory.createEntityManager();
31
- }
32
-
33
- public void dispose(@Disposes @Default EntityManager entityManager) {
34
- if (entityManager.isOpen()) {
35
- entityManager.close();
36
- }
37
- }
38
-}
securis/src/main/java/net/curisit/securis/ioc/MyTrans.java
similarity index 90%rename from securis/src/main/java/net/curisit/securis/ioc/MyTrans.javarename to securis/src/main/java/net/curisit/securis/ioc/EnsureTransaction.java
....@@ -12,6 +12,6 @@
1212 })
1313 @Retention(RetentionPolicy.RUNTIME)
1414 @InterceptorBinding
15
-public @interface MyTrans {
15
+public @interface EnsureTransaction {
1616
1717 }
securis/src/main/java/net/curisit/securis/ioc/EntityManagerProvider.java
....@@ -0,0 +1,21 @@
1
+package net.curisit.securis.ioc;
2
+
3
+import javax.enterprise.context.ApplicationScoped;
4
+import javax.persistence.EntityManager;
5
+import javax.persistence.EntityManagerFactory;
6
+
7
+import org.apache.logging.log4j.LogManager;
8
+import org.apache.logging.log4j.Logger;
9
+
10
+@ApplicationScoped
11
+public class EntityManagerProvider {
12
+
13
+ private static final Logger LOG = LogManager.getLogger(EntityManagerProvider.class);
14
+
15
+ private final EntityManagerFactory entityManagerFactory = javax.persistence.Persistence.createEntityManagerFactory("localdb");
16
+
17
+ public EntityManager getEntityManager() {
18
+ return entityManagerFactory.createEntityManager();
19
+ }
20
+
21
+}
securis/src/main/java/net/curisit/securis/security/SecurityInterceptor.java
similarity index 64%rename from securis/src/main/java/net/curisit/securis/security/SecurityInterceptor.javarename to securis/src/main/java/net/curisit/securis/ioc/RequestsInterceptor.java
....@@ -1,4 +1,4 @@
1
-package net.curisit.securis.security;
1
+package net.curisit.securis.ioc;
22
33 import java.io.IOException;
44 import java.lang.reflect.Method;
....@@ -12,12 +12,17 @@
1212 import javax.ws.rs.Priorities;
1313 import javax.ws.rs.WebApplicationException;
1414 import javax.ws.rs.container.ContainerRequestContext;
15
+import javax.ws.rs.container.ContainerRequestFilter;
16
+import javax.ws.rs.container.ContainerResponseContext;
17
+import javax.ws.rs.container.ContainerResponseFilter;
1518 import javax.ws.rs.core.Context;
1619 import javax.ws.rs.core.Response;
1720 import javax.ws.rs.core.Response.Status;
1821 import javax.ws.rs.ext.Provider;
1922
2023 import net.curisit.securis.db.User;
24
+import net.curisit.securis.security.BasicSecurityContext;
25
+import net.curisit.securis.security.Securable;
2126 import net.curisit.securis.utils.CacheTTL;
2227 import net.curisit.securis.utils.TokenHelper;
2328
....@@ -32,8 +37,8 @@
3237
3338 @Provider
3439 @Priority(Priorities.AUTHENTICATION)
35
-public class SecurityInterceptor implements javax.ws.rs.container.ContainerRequestFilter {
36
- private static final Logger LOG = LogManager.getLogger(SecurityInterceptor.class);
40
+public class RequestsInterceptor implements ContainerRequestFilter, ContainerResponseFilter {
41
+ private static final Logger LOG = LogManager.getLogger(RequestsInterceptor.class);
3742
3843 @Context
3944 private HttpServletRequest servletRequest;
....@@ -48,23 +53,43 @@
4853 private Dispatcher dispatcher;
4954
5055 @Inject
51
- private EntityManager em;
56
+ private EntityManagerProvider emProvider;
5257
5358 public void filter(ContainerRequestContext containerRequestContext) throws IOException {
59
+ EntityManager em = emProvider.getEntityManager();
60
+ ResteasyProviderFactory.pushContext(EntityManager.class, em);
5461
5562 ResourceMethodInvoker methodInvoker = (ResourceMethodInvoker) containerRequestContext
5663 .getProperty("org.jboss.resteasy.core.ResourceMethodInvoker");
5764 Method method = methodInvoker.getMethod();
5865
66
+ LOG.info("Stored in context, em: {}, {}?", em, method.toGenericString());
67
+
68
+ boolean next = checkSecurableMethods(containerRequestContext, method);
69
+ if (next) {
70
+ prepareTransaction(containerRequestContext, method);
71
+ }
72
+ }
73
+
74
+ private void prepareTransaction(ContainerRequestContext containerRequestContext, Method method) {
75
+ EntityManager em = ResteasyProviderFactory.getContextData(EntityManager.class);
76
+
77
+ if (method.isAnnotationPresent(EnsureTransaction.class)) {
78
+ LOG.info("WE need transaction!!!");
79
+ em.getTransaction().begin();
80
+ }
81
+ }
82
+
83
+ private boolean checkSecurableMethods(ContainerRequestContext containerRequestContext, Method method) {
5984 if (!method.isAnnotationPresent(Securable.class)) {
60
- return;
85
+ return true;
6186 }
6287 String token = servletRequest.getHeader(TokenHelper.TOKEN_HEADER_PÀRAM);
6388 if (token == null || !tokenHelper.isTokenValid(token)) {
6489 LOG.info("Access denied to '{}', Token not valid.", servletRequest.getPathInfo());
6590 containerRequestContext.abortWith(Response.status(Status.UNAUTHORIZED).build());
91
+ return false;
6692 } else {
67
- Securable sec = method.getAnnotation(Securable.class);
6893
6994 // If roles == 0 we only need to validate the token
7095 String username = tokenHelper.extractUserFromToken(token);
....@@ -76,15 +101,18 @@
76101 containerRequestContext.setSecurityContext(scw);
77102 // Next line provide injection in resource methods
78103 ResteasyProviderFactory.pushContext(BasicSecurityContext.class, scw);
79
- ResteasyProviderFactory.pushContext(EntityManager.class, em);
80104 LOG.debug("Added custom SecurityContext for user {}, orgs: {}", username, orgs);
81105 }
106
+ return true;
107
+
82108 }
83109
84110 private Set<Integer> getUserOrganizations(String username) {
85111 @SuppressWarnings("unchecked")
86112 Set<Integer> userOrgs = cache.get("orgs_" + username, Set.class);
87113 if (userOrgs == null) {
114
+ EntityManager em = ResteasyProviderFactory.getContextData(EntityManager.class);
115
+
88116 // Theorically this shouldn't be never null, but just in case...
89117 User user = em.find(User.class, username);
90118 if (user != null) {
....@@ -103,6 +131,8 @@
103131 }
104132 Integer userRoles = cache.get("roles_" + username, Integer.class);
105133 if (userRoles == null) {
134
+ EntityManager em = ResteasyProviderFactory.getContextData(EntityManager.class);
135
+
106136 User user = em.find(User.class, username);
107137 if (user != null) {
108138 userRoles = 0;
....@@ -123,4 +153,23 @@
123153 return null;
124154 }
125155
156
+ @Override
157
+ public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
158
+ EntityManager em = ResteasyProviderFactory.getContextData(EntityManager.class);
159
+
160
+ if (em != null && em.getTransaction().isActive()) {
161
+ LOG.info("There is transaction go ahead...");
162
+ if (responseContext.getStatus() == Status.OK.getStatusCode()) {
163
+ em.getTransaction().commit();
164
+ LOG.info("COMMIT");
165
+ } else {
166
+ em.getTransaction().rollback();
167
+ LOG.info("ROLLBACK");
168
+ }
169
+ } else {
170
+ LOG.info("There is NO transaction");
171
+
172
+ }
173
+ }
174
+
126175 }
securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java
....@@ -1,6 +1,5 @@
11 package net.curisit.securis.ioc;
22
3
-import net.curisit.securis.security.SecurityInterceptor;
43 import net.curisit.securis.services.ApiResource;
54 import net.curisit.securis.services.ApplicationResource;
65 import net.curisit.securis.services.BasicServices;
....@@ -17,7 +16,6 @@
1716 @Override
1817 protected void configure() {
1918 // TODO: Make the bind using reflection dynamically
20
- bind(SecurityInterceptor.class);
2119
2220 bind(BasicServices.class);
2321 bind(UserResource.class);
securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java
....@@ -3,37 +3,41 @@
33 import java.io.IOException;
44 import java.lang.reflect.Method;
55
6
-import javax.inject.Inject;
7
-import javax.interceptor.AroundInvoke;
8
-import javax.interceptor.Interceptor;
6
+import javax.annotation.Priority;
97 import javax.interceptor.InvocationContext;
108 import javax.persistence.EntityManager;
9
+import javax.persistence.EntityManagerFactory;
10
+import javax.ws.rs.Priorities;
1111 import javax.ws.rs.container.ContainerRequestContext;
12
+import javax.ws.rs.container.ContainerRequestFilter;
1213 import javax.ws.rs.container.ContainerResponseContext;
14
+import javax.ws.rs.container.ContainerResponseFilter;
1315 import javax.ws.rs.core.Response.Status;
16
+import javax.ws.rs.ext.Provider;
1417
1518 import org.apache.logging.log4j.LogManager;
1619 import org.apache.logging.log4j.Logger;
1720 import org.jboss.resteasy.core.ResourceMethodInvoker;
1821 import org.jboss.resteasy.spi.ResteasyProviderFactory;
1922
20
-import com.google.inject.persist.Transactional;
21
-
22
-@Interceptor
23
-@MyTrans
24
-public class TransactionsManager {
23
+@Provider
24
+@Priority(Priorities.AUTHENTICATION)
25
+public class TransactionsManager implements ContainerRequestFilter, ContainerResponseFilter {
2526
2627 private static final Logger LOG = LogManager.getLogger(TransactionsManager.class);
2728
28
- @Inject
29
- private EntityManager em;
29
+ private EntityManagerFactory entityManagerFactory = javax.persistence.Persistence.createEntityManagerFactory("localdb");
30
+
31
+ private EntityManager getEM() {
32
+ return entityManagerFactory.createEntityManager();
33
+ }
3034
3135 // @Inject
3236 // private ThreadLocal<EntityManager> threadLocal;
3337
34
- @AroundInvoke
38
+ // @AroundInvoke
3539 public Object invoke(InvocationContext context) throws Exception {
36
- // EntityTransaction trx = manager.getTransaction();
40
+ EntityManager em = getEM();
3741 if (!em.getTransaction().isActive()) {
3842 em.getTransaction().begin();
3943 LOG.info("INIT trans");
....@@ -49,20 +53,30 @@
4953 return result;
5054 }
5155
56
+ @Override
5257 public void filter(ContainerRequestContext requestContext) throws IOException {
5358 ResourceMethodInvoker methodInvoker = (ResourceMethodInvoker) requestContext.getProperty("org.jboss.resteasy.core.ResourceMethodInvoker");
5459 Method method = methodInvoker.getMethod();
60
+ EntityManager em = getEM();
5561
56
- if (method.isAnnotationPresent(Transactional.class)) {
62
+ ResteasyProviderFactory.pushContext(EntityManager.class, em);
63
+
64
+ if (method.isAnnotationPresent(EnsureTransaction.class)) {
5765 LOG.info("WE need transaction!!!");
66
+
5867 em.getTransaction().begin();
5968 }
69
+ LOG.info("Sent to context, em: {}, {}?", em, method.toGenericString());
6070 }
6171
72
+ @Override
6273 public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
6374 // TODO Auto-generated method stub
75
+ // ResteasyProviderFactory.pushContext(EntityManager.class, em);
76
+ EntityManager em = (EntityManager) ResteasyProviderFactory.getContextData(EntityManager.class);
77
+ LOG.info("Operating on em: {}", em);
6478
65
- if (em.getTransaction().isActive()) {
79
+ if (em != null && em.getTransaction().isActive()) {
6680 LOG.info("There is transaction go ahead...");
6781 if (responseContext.getStatus() == Status.OK.getStatusCode()) {
6882 em.getTransaction().commit();
securis/src/main/java/net/curisit/securis/services/ApiResource.java
....@@ -6,7 +6,6 @@
66
77 import javax.inject.Inject;
88 import javax.persistence.EntityManager;
9
-import javax.transaction.Transactional;
109 import javax.ws.rs.Consumes;
1110 import javax.ws.rs.GET;
1211 import javax.ws.rs.HeaderParam;
....@@ -30,6 +29,7 @@
3029 import net.curisit.securis.db.LicenseStatus;
3130 import net.curisit.securis.db.Pack;
3231 import net.curisit.securis.db.User;
32
+import net.curisit.securis.ioc.EnsureTransaction;
3333 import net.curisit.securis.security.BasicSecurityContext;
3434 import net.curisit.securis.security.Securable;
3535 import net.curisit.securis.services.exception.SeCurisServiceException;
....@@ -61,7 +61,7 @@
6161 @Inject
6262 private LicenseHelper licenseHelper;
6363
64
- @Inject
64
+ @Context
6565 EntityManager em;
6666
6767 @Inject
....@@ -118,7 +118,7 @@
118118 @Produces({
119119 MediaType.APPLICATION_JSON
120120 })
121
- @Transactional
121
+ @EnsureTransaction
122122 public Response createFromRequest(RequestBean request, @HeaderParam(LicenseManager.HEADER_LICENSE_NAME_OR_REFERENCE) String nameOrReference,
123123 @HeaderParam(LicenseManager.HEADER_LICENSE_EMAIL) String userEmail) throws IOException, SeCurisServiceException, SeCurisException {
124124 LOG.info("Request to get license: {}", request);
....@@ -144,7 +144,7 @@
144144 @Produces({
145145 MediaType.APPLICATION_JSON
146146 })
147
- @Transactional
147
+ @EnsureTransaction
148148 @SuppressWarnings("unchecked")
149149 public Response createFromRequestFile(MultipartFormDataInput mpfdi,
150150 @HeaderParam(LicenseManager.HEADER_LICENSE_NAME_OR_REFERENCE) String nameOrReference,
....@@ -178,7 +178,7 @@
178178 @Produces({
179179 MediaType.APPLICATION_JSON
180180 })
181
- @Transactional
181
+ @EnsureTransaction
182182 public Response renewFromPreviousLicense(LicenseBean previousLic, @Context BasicSecurityContext bsc) throws IOException, SeCurisServiceException,
183183 SeCurisException {
184184 LOG.info("Renew license: {}", previousLic);
....@@ -216,7 +216,7 @@
216216 @Produces({
217217 MediaType.APPLICATION_JSON
218218 })
219
- @Transactional
219
+ @EnsureTransaction
220220 public Response validate(LicenseBean currentLic, @Context BasicSecurityContext bsc) throws IOException, SeCurisServiceException, SeCurisException {
221221 LOG.info("Validate license: {}", currentLic);
222222
....@@ -252,7 +252,7 @@
252252 @Produces({
253253 MediaType.APPLICATION_JSON
254254 })
255
- @Transactional
255
+ @EnsureTransaction
256256 @SuppressWarnings("unchecked")
257257 public Response renewFromLicenseFile(MultipartFormDataInput mpfdi, @Context BasicSecurityContext bsc) throws IOException,
258258 SeCurisServiceException, SeCurisException {
securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
....@@ -9,7 +9,6 @@
99 import javax.persistence.EntityManager;
1010 import javax.persistence.TypedQuery;
1111 import javax.servlet.http.HttpServletRequest;
12
-import javax.transaction.Transactional;
1312 import javax.ws.rs.Consumes;
1413 import javax.ws.rs.DELETE;
1514 import javax.ws.rs.GET;
....@@ -29,6 +28,7 @@
2928 import net.curisit.securis.SeCurisException;
3029 import net.curisit.securis.db.Application;
3130 import net.curisit.securis.db.ApplicationMetadata;
31
+import net.curisit.securis.ioc.EnsureTransaction;
3232 import net.curisit.securis.security.BasicSecurityContext;
3333 import net.curisit.securis.security.Securable;
3434 import net.curisit.securis.services.exception.SeCurisServiceException;
....@@ -51,7 +51,7 @@
5151 @Inject
5252 TokenHelper tokenHelper;
5353
54
- @Inject
54
+ @Context
5555 EntityManager em;
5656
5757 private static final Logger LOG = LogManager.getLogger(ApplicationResource.class);
....@@ -131,7 +131,7 @@
131131 @Produces({
132132 MediaType.APPLICATION_JSON
133133 })
134
- @Transactional
134
+ @EnsureTransaction
135135 @Securable
136136 @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
137137 public Response create(Application app, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
....@@ -156,7 +156,7 @@
156156 @PUT
157157 @POST
158158 @Path("/{appid}")
159
- @Transactional
159
+ @EnsureTransaction
160160 @Consumes(MediaType.APPLICATION_JSON)
161161 @Produces({
162162 MediaType.APPLICATION_JSON
....@@ -204,7 +204,7 @@
204204
205205 @DELETE
206206 @Path("/{appid}")
207
- @Transactional
207
+ @EnsureTransaction
208208 @Produces({
209209 MediaType.APPLICATION_JSON
210210 })
securis/src/main/java/net/curisit/securis/services/BasicServices.java
....@@ -6,7 +6,6 @@
66 import javax.enterprise.context.ApplicationScoped;
77 import javax.inject.Inject;
88 import javax.servlet.http.HttpServletRequest;
9
-import javax.transaction.Transactional;
109 import javax.ws.rs.FormParam;
1110 import javax.ws.rs.GET;
1211 import javax.ws.rs.HeaderParam;
....@@ -22,6 +21,7 @@
2221 import javax.ws.rs.core.UriBuilder;
2322
2423 import net.curisit.integrity.commons.Utils;
24
+import net.curisit.securis.ioc.EnsureTransaction;
2525 import net.curisit.securis.security.Securable;
2626 import net.curisit.securis.utils.TokenHelper;
2727
....@@ -99,7 +99,7 @@
9999 @Produces({
100100 MediaType.APPLICATION_JSON
101101 })
102
- @Transactional
102
+ @EnsureTransaction
103103 public Response check(@HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token, @QueryParam("token") String token2) {
104104 if (token == null) {
105105 token = token2;
securis/src/main/java/net/curisit/securis/services/LicenseResource.java
....@@ -9,7 +9,6 @@
99 import javax.inject.Inject;
1010 import javax.persistence.EntityManager;
1111 import javax.persistence.TypedQuery;
12
-import javax.transaction.Transactional;
1312 import javax.ws.rs.Consumes;
1413 import javax.ws.rs.DELETE;
1514 import javax.ws.rs.DefaultValue;
....@@ -41,6 +40,7 @@
4140 import net.curisit.securis.db.Pack;
4241 import net.curisit.securis.db.PackStatus;
4342 import net.curisit.securis.db.User;
43
+import net.curisit.securis.ioc.EnsureTransaction;
4444 import net.curisit.securis.security.BasicSecurityContext;
4545 import net.curisit.securis.security.Securable;
4646 import net.curisit.securis.services.exception.SeCurisServiceException;
....@@ -81,7 +81,7 @@
8181 @Inject
8282 private LicenseHelper licenseHelper;
8383
84
- @Inject
84
+ @Context
8585 EntityManager em;
8686
8787 @Inject
....@@ -152,7 +152,7 @@
152152 @Produces({
153153 MediaType.APPLICATION_OCTET_STREAM
154154 })
155
- @Transactional
155
+ @EnsureTransaction
156156 public Response download(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
157157
158158 // EntityManager em = emProvider.get();
....@@ -185,7 +185,7 @@
185185 @POST
186186 @Path("/{licId}/activate")
187187 @Securable
188
- @Transactional
188
+ @EnsureTransaction
189189 @Consumes(MediaType.APPLICATION_JSON)
190190 @Produces({
191191 MediaType.APPLICATION_JSON
....@@ -233,7 +233,7 @@
233233 @POST
234234 @Path("/{licId}/send")
235235 @Securable
236
- @Transactional
236
+ @EnsureTransaction
237237 @Consumes(MediaType.APPLICATION_JSON)
238238 @Produces({
239239 MediaType.APPLICATION_JSON
....@@ -289,7 +289,7 @@
289289 @POST
290290 @Path("/{licId}/cancel")
291291 @Securable
292
- @Transactional
292
+ @EnsureTransaction
293293 @Consumes(MediaType.APPLICATION_JSON)
294294 @Produces({
295295 MediaType.APPLICATION_JSON
....@@ -340,7 +340,7 @@
340340 @Produces({
341341 MediaType.APPLICATION_JSON
342342 })
343
- @Transactional
343
+ @EnsureTransaction
344344 public Response create(License lic, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
345345 // EntityManager em = emProvider.get();
346346
....@@ -462,7 +462,7 @@
462462 @POST
463463 @Path("/{licId}")
464464 @Securable
465
- @Transactional
465
+ @EnsureTransaction
466466 @Consumes(MediaType.APPLICATION_JSON)
467467 @Produces({
468468 MediaType.APPLICATION_JSON
....@@ -509,7 +509,7 @@
509509
510510 @DELETE
511511 @Path("/{licId}")
512
- @Transactional
512
+ @EnsureTransaction
513513 @Securable
514514 @Produces({
515515 MediaType.APPLICATION_JSON
....@@ -541,7 +541,7 @@
541541
542542 @POST
543543 @Path("/{licId}/block")
544
- @Transactional
544
+ @EnsureTransaction
545545 @Securable
546546 @Produces({
547547 MediaType.APPLICATION_JSON
....@@ -574,7 +574,7 @@
574574
575575 @POST
576576 @Path("/{licId}/unblock")
577
- @Transactional
577
+ @EnsureTransaction
578578 @Securable
579579 @Produces({
580580 MediaType.APPLICATION_JSON
securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
....@@ -9,7 +9,6 @@
99 import javax.persistence.EntityManager;
1010 import javax.persistence.TypedQuery;
1111 import javax.servlet.http.HttpServletRequest;
12
-import javax.transaction.Transactional;
1312 import javax.ws.rs.Consumes;
1413 import javax.ws.rs.DELETE;
1514 import javax.ws.rs.GET;
....@@ -30,6 +29,7 @@
3029 import net.curisit.securis.db.Application;
3130 import net.curisit.securis.db.LicenseType;
3231 import net.curisit.securis.db.LicenseTypeMetadata;
32
+import net.curisit.securis.ioc.EnsureTransaction;
3333 import net.curisit.securis.security.BasicSecurityContext;
3434 import net.curisit.securis.security.Securable;
3535 import net.curisit.securis.services.exception.SeCurisServiceException;
....@@ -53,7 +53,7 @@
5353 @Inject
5454 TokenHelper tokenHelper;
5555
56
- @Inject
56
+ @Context
5757 EntityManager em;
5858
5959 public LicenseTypeResource() {
....@@ -114,7 +114,7 @@
114114 @Produces({
115115 MediaType.APPLICATION_JSON
116116 })
117
- @Transactional
117
+ @EnsureTransaction
118118 @Securable
119119 @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
120120 public Response create(LicenseType lt, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
....@@ -151,7 +151,7 @@
151151 @PUT
152152 @POST
153153 @Path("/{ltid}")
154
- @Transactional
154
+ @EnsureTransaction
155155 @Consumes(MediaType.APPLICATION_JSON)
156156 @Produces({
157157 MediaType.APPLICATION_JSON
....@@ -219,7 +219,7 @@
219219
220220 @DELETE
221221 @Path("/{ltid}")
222
- @Transactional
222
+ @EnsureTransaction
223223 @Produces({
224224 MediaType.APPLICATION_JSON
225225 })
securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
....@@ -10,7 +10,6 @@
1010 import javax.persistence.EntityManager;
1111 import javax.persistence.TypedQuery;
1212 import javax.servlet.http.HttpServletRequest;
13
-import javax.transaction.Transactional;
1413 import javax.ws.rs.Consumes;
1514 import javax.ws.rs.DELETE;
1615 import javax.ws.rs.GET;
....@@ -30,7 +29,7 @@
3029 import net.curisit.securis.SeCurisException;
3130 import net.curisit.securis.db.Organization;
3231 import net.curisit.securis.db.User;
33
-import net.curisit.securis.ioc.MyTrans;
32
+import net.curisit.securis.ioc.EnsureTransaction;
3433 import net.curisit.securis.security.BasicSecurityContext;
3534 import net.curisit.securis.security.Securable;
3635 import net.curisit.securis.utils.TokenHelper;
....@@ -131,7 +130,7 @@
131130 @Produces({
132131 MediaType.APPLICATION_JSON
133132 })
134
- @MyTrans
133
+ @EnsureTransaction
135134 @Securable
136135 @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
137136 public Response create(Organization org) {
....@@ -198,11 +197,11 @@
198197 @PUT
199198 @POST
200199 @Path("/{orgid}")
201
- @Transactional
202200 @Consumes(MediaType.APPLICATION_JSON)
203201 @Produces({
204202 MediaType.APPLICATION_JSON
205203 })
204
+ @EnsureTransaction
206205 @Securable
207206 @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
208207 public Response modify(Organization org, @PathParam("orgid") String orgid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
....@@ -244,7 +243,7 @@
244243
245244 @DELETE
246245 @Path("/{orgid}")
247
- @Transactional
246
+ @EnsureTransaction
248247 @Produces({
249248 MediaType.APPLICATION_JSON
250249 })
securis/src/main/java/net/curisit/securis/services/PackResource.java
....@@ -9,7 +9,6 @@
99 import javax.inject.Inject;
1010 import javax.persistence.EntityManager;
1111 import javax.persistence.TypedQuery;
12
-import javax.transaction.Transactional;
1312 import javax.ws.rs.Consumes;
1413 import javax.ws.rs.DELETE;
1514 import javax.ws.rs.FormParam;
....@@ -35,6 +34,7 @@
3534 import net.curisit.securis.db.PackMetadata;
3635 import net.curisit.securis.db.PackStatus;
3736 import net.curisit.securis.db.User;
37
+import net.curisit.securis.ioc.EnsureTransaction;
3838 import net.curisit.securis.security.BasicSecurityContext;
3939 import net.curisit.securis.security.Securable;
4040 import net.curisit.securis.services.exception.SeCurisServiceException;
....@@ -60,7 +60,7 @@
6060 @Inject
6161 TokenHelper tokenHelper;
6262
63
- @Inject
63
+ @Context
6464 EntityManager em;
6565
6666 @Inject
....@@ -143,7 +143,7 @@
143143 @Produces({
144144 MediaType.APPLICATION_JSON
145145 })
146
- @Transactional
146
+ @EnsureTransaction
147147 public Response create(Pack pack, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
148148 LOG.info("Creating new pack");
149149 // EntityManager em = emProvider.get();
....@@ -239,7 +239,7 @@
239239 @PUT
240240 @POST
241241 @Path("/{packId}")
242
- @Transactional
242
+ @EnsureTransaction
243243 @Securable
244244 @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
245245 @Consumes(MediaType.APPLICATION_JSON)
....@@ -267,6 +267,8 @@
267267 currentPack.setCode(pack.getCode());
268268 currentPack.setComments(pack.getComments());
269269 currentPack.setNumLicenses(pack.getNumLicenses());
270
+ currentPack.setPreactivationValidPeriod(pack.getPreactivationValidPeriod());
271
+ currentPack.setRenewValidPeriod(pack.getRenewValidPeriod());
270272
271273 Set<PackMetadata> newMD = pack.getMetadata();
272274 for (PackMetadata currentMd : currentPack.getMetadata()) {
....@@ -294,7 +296,7 @@
294296
295297 @POST
296298 @Path("/{packId}/activate")
297
- @Transactional
299
+ @EnsureTransaction
298300 @Securable
299301 @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
300302 @Consumes(MediaType.APPLICATION_JSON)
....@@ -320,7 +322,7 @@
320322
321323 @POST
322324 @Path("/{packId}/putonhold")
323
- @Transactional
325
+ @EnsureTransaction
324326 @Securable
325327 @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
326328 @Consumes(MediaType.APPLICATION_JSON)
....@@ -346,7 +348,7 @@
346348
347349 @POST
348350 @Path("/{packId}/cancel")
349
- @Transactional
351
+ @EnsureTransaction
350352 @Securable
351353 @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
352354 @Consumes(MediaType.APPLICATION_JSON)
....@@ -393,7 +395,7 @@
393395 @Path("/{packId}")
394396 @Securable
395397 @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
396
- @Transactional
398
+ @EnsureTransaction
397399 @Produces({
398400 MediaType.APPLICATION_JSON
399401 })
securis/src/main/java/net/curisit/securis/services/UserResource.java
....@@ -12,7 +12,6 @@
1212 import javax.persistence.PersistenceException;
1313 import javax.persistence.TypedQuery;
1414 import javax.servlet.http.HttpServletRequest;
15
-import javax.transaction.Transactional;
1615 import javax.ws.rs.Consumes;
1716 import javax.ws.rs.DELETE;
1817 import javax.ws.rs.FormParam;
....@@ -34,6 +33,7 @@
3433 import net.curisit.securis.SeCurisException;
3534 import net.curisit.securis.db.Organization;
3635 import net.curisit.securis.db.User;
36
+import net.curisit.securis.ioc.EnsureTransaction;
3737 import net.curisit.securis.security.BasicSecurityContext;
3838 import net.curisit.securis.security.Securable;
3939 import net.curisit.securis.services.exception.SeCurisServiceException;
....@@ -55,7 +55,7 @@
5555 @Inject
5656 TokenHelper tokenHelper;
5757
58
- @Inject
58
+ @Context
5959 EntityManager em;
6060
6161 private static final Logger LOG = LogManager.getLogger(UserResource.class);
....@@ -120,7 +120,7 @@
120120 @Produces({
121121 MediaType.APPLICATION_JSON
122122 })
123
- @Transactional
123
+ @EnsureTransaction
124124 @Securable
125125 @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
126126 public Response create(User user, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
....@@ -172,7 +172,7 @@
172172 @PUT
173173 @POST
174174 @Path("/{uid}")
175
- @Transactional
175
+ @EnsureTransaction
176176 @Consumes(MediaType.APPLICATION_JSON)
177177 @Produces({
178178 MediaType.APPLICATION_JSON
....@@ -216,7 +216,7 @@
216216
217217 @DELETE
218218 @Path("/{uid}")
219
- @Transactional
219
+ @EnsureTransaction
220220 @Produces({
221221 MediaType.APPLICATION_JSON
222222 })
securis/src/main/webapp/WEB-INF/beans.xml
....@@ -1,7 +1,7 @@
11 <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
22 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_1.xsd">
33 <interceptors>
4
- <class>net.curisit.securis.ioc.TransactionsManager</class>
4
+ <!-- <class>net.curisit.securis.ioc.TransactionsManager</class> -->
55 </interceptors>
66 </beans>
77