securis/src/main/java/net/curisit/securis/RestServicesApplication.java
.. .. @@ -3,13 +3,11 @@ 3 3 import java.util.HashSet; 4 4 import java.util.Set; 5 5 6 -import javax.inject.Inject;7 6 import javax.ws.rs.ApplicationPath; 8 7 import javax.ws.rs.core.Application; 9 8 10 -import net.curisit.securis.ioc.DatabaseProvider;9 +import net.curisit.securis.ioc.RequestsInterceptor;11 10 import net.curisit.securis.ioc.TransactionsManager; 12 -import net.curisit.securis.security.SecurityInterceptor;13 11 import net.curisit.securis.services.ApiResource; 14 12 import net.curisit.securis.services.ApplicationResource; 15 13 import net.curisit.securis.services.BasicServices; .. .. @@ -27,9 +25,6 @@ 27 25 28 26 private static final Logger LOG = LogManager.getLogger(RestServicesApplication.class); 29 27 30 - @Inject31 - private DatabaseProvider dp;32 -33 28 @Override 34 29 public Set<Class<?>> getClasses() { 35 30 Set<Class<?>> classes = new HashSet<>(); .. .. @@ -42,11 +37,10 @@ 42 37 classes.add(OrganizationResource.class); 43 38 classes.add(LicenseTypeResource.class); 44 39 classes.add(PackResource.class); 45 - classes.add(SecurityInterceptor.class);40 + classes.add(RequestsInterceptor.class);46 41 classes.add(TransactionsManager.class); 47 42 48 - LOG.info("Returned classes for services: {}", classes);49 - LOG.info("dp: {}", dp);43 + LOG.info("JAX-RS classes for services: {}", classes);50 44 return classes; 51 45 } 52 46 securis/src/main/java/net/curisit/securis/dao/UserDao.javadeleted 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 -@ApplicationScoped16 -public class UserDao {17 -18 - @Inject19 - public UserDao() {20 - }21 -22 - @Inject23 - Provider<EntityManager> emProvider;24 -25 - @Transactional26 - 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 @@ 3 3 import java.util.Date; 4 4 5 5 import javax.enterprise.context.ApplicationScoped; 6 +import javax.inject.Inject;6 7 import javax.persistence.EntityManager; 7 -import javax.persistence.PersistenceContext;8 -import javax.transaction.Transactional;9 8 10 9 import net.curisit.integrity.commons.Utils; 11 10 import net.curisit.securis.db.Settings; 11 +import net.curisit.securis.ioc.EntityManagerProvider;12 12 13 13 import org.apache.logging.log4j.LogManager; 14 14 import org.apache.logging.log4j.Logger; .. .. @@ -19,8 +19,8 @@ 19 19 @SuppressWarnings("unused") 20 20 private static final Logger LOG = LogManager.getLogger(SystemParams.class); 21 21 22 - @PersistenceContext(unitName = "localdb")23 - private EntityManager em;22 + @Inject23 + private EntityManagerProvider emProvider;24 24 25 25 /** 26 26 * Returns the system parameter value for given key .. .. @@ -109,6 +109,7 @@ 109 109 * @return 110 110 */ 111 111 public String getParam(String key, String defaultValue) { 112 + EntityManager em = emProvider.getEntityManager();112 113 Settings p = em.find(Settings.class, key); 113 114 return p == null ? defaultValue : p.getValue(); 114 115 } .. .. @@ -120,19 +121,26 @@ 120 121 * @param defaultValue 121 122 * @return 122 123 */ 123 - @Transactional124 124 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();134 143 } 135 - em.flush();136 144 } 137 145 138 146 /** .. .. @@ -181,11 +189,17 @@ 181 189 * @param key 182 190 * @return 183 191 */ 184 - @Transactional185 192 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();189 203 } 190 204 } 191 205 securis/src/main/java/net/curisit/securis/ioc/DatabaseProvider.javadeleted 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 -@ApplicationScoped15 -public class DatabaseProvider {16 -17 - private static final Logger LOG = LogManager.getLogger(DatabaseProvider.class);18 -19 - @Inject20 - 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 - @Produces29 - 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.javasimilarity 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 @@ 12 12 }) 13 13 @Retention(RetentionPolicy.RUNTIME) 14 14 @InterceptorBinding 15 -public @interface MyTrans {15 +public @interface EnsureTransaction {16 16 17 17 } 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 +@ApplicationScoped11 +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.javasimilarity 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;2 2 3 3 import java.io.IOException; 4 4 import java.lang.reflect.Method; .. .. @@ -12,12 +12,17 @@ 12 12 import javax.ws.rs.Priorities; 13 13 import javax.ws.rs.WebApplicationException; 14 14 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;15 18 import javax.ws.rs.core.Context; 16 19 import javax.ws.rs.core.Response; 17 20 import javax.ws.rs.core.Response.Status; 18 21 import javax.ws.rs.ext.Provider; 19 22 20 23 import net.curisit.securis.db.User; 24 +import net.curisit.securis.security.BasicSecurityContext;25 +import net.curisit.securis.security.Securable;21 26 import net.curisit.securis.utils.CacheTTL; 22 27 import net.curisit.securis.utils.TokenHelper; 23 28 .. .. @@ -32,8 +37,8 @@ 32 37 33 38 @Provider 34 39 @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);37 42 38 43 @Context 39 44 private HttpServletRequest servletRequest; .. .. @@ -48,23 +53,43 @@ 48 53 private Dispatcher dispatcher; 49 54 50 55 @Inject 51 - private EntityManager em;56 + private EntityManagerProvider emProvider;52 57 53 58 public void filter(ContainerRequestContext containerRequestContext) throws IOException { 59 + EntityManager em = emProvider.getEntityManager();60 + ResteasyProviderFactory.pushContext(EntityManager.class, em);54 61 55 62 ResourceMethodInvoker methodInvoker = (ResourceMethodInvoker) containerRequestContext 56 63 .getProperty("org.jboss.resteasy.core.ResourceMethodInvoker"); 57 64 Method method = methodInvoker.getMethod(); 58 65 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) {59 84 if (!method.isAnnotationPresent(Securable.class)) { 60 - return;85 + return true;61 86 } 62 87 String token = servletRequest.getHeader(TokenHelper.TOKEN_HEADER_PÀRAM); 63 88 if (token == null || !tokenHelper.isTokenValid(token)) { 64 89 LOG.info("Access denied to '{}', Token not valid.", servletRequest.getPathInfo()); 65 90 containerRequestContext.abortWith(Response.status(Status.UNAUTHORIZED).build()); 91 + return false;66 92 } else { 67 - Securable sec = method.getAnnotation(Securable.class);68 93 69 94 // If roles == 0 we only need to validate the token 70 95 String username = tokenHelper.extractUserFromToken(token); .. .. @@ -76,15 +101,18 @@ 76 101 containerRequestContext.setSecurityContext(scw); 77 102 // Next line provide injection in resource methods 78 103 ResteasyProviderFactory.pushContext(BasicSecurityContext.class, scw); 79 - ResteasyProviderFactory.pushContext(EntityManager.class, em);80 104 LOG.debug("Added custom SecurityContext for user {}, orgs: {}", username, orgs); 81 105 } 106 + return true;107 +82 108 } 83 109 84 110 private Set<Integer> getUserOrganizations(String username) { 85 111 @SuppressWarnings("unchecked") 86 112 Set<Integer> userOrgs = cache.get("orgs_" + username, Set.class); 87 113 if (userOrgs == null) { 114 + EntityManager em = ResteasyProviderFactory.getContextData(EntityManager.class);115 +88 116 // Theorically this shouldn't be never null, but just in case... 89 117 User user = em.find(User.class, username); 90 118 if (user != null) { .. .. @@ -103,6 +131,8 @@ 103 131 } 104 132 Integer userRoles = cache.get("roles_" + username, Integer.class); 105 133 if (userRoles == null) { 134 + EntityManager em = ResteasyProviderFactory.getContextData(EntityManager.class);135 +106 136 User user = em.find(User.class, username); 107 137 if (user != null) { 108 138 userRoles = 0; .. .. @@ -123,4 +153,23 @@ 123 153 return null; 124 154 } 125 155 156 + @Override157 + 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 +126 175 } securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java
.. .. @@ -1,6 +1,5 @@ 1 1 package net.curisit.securis.ioc; 2 2 3 -import net.curisit.securis.security.SecurityInterceptor;4 3 import net.curisit.securis.services.ApiResource; 5 4 import net.curisit.securis.services.ApplicationResource; 6 5 import net.curisit.securis.services.BasicServices; .. .. @@ -17,7 +16,6 @@ 17 16 @Override 18 17 protected void configure() { 19 18 // TODO: Make the bind using reflection dynamically 20 - bind(SecurityInterceptor.class);21 19 22 20 bind(BasicServices.class); 23 21 bind(UserResource.class); securis/src/main/java/net/curisit/securis/ioc/TransactionsManager.java
.. .. @@ -3,37 +3,41 @@ 3 3 import java.io.IOException; 4 4 import java.lang.reflect.Method; 5 5 6 -import javax.inject.Inject;7 -import javax.interceptor.AroundInvoke;8 -import javax.interceptor.Interceptor;6 +import javax.annotation.Priority;9 7 import javax.interceptor.InvocationContext; 10 8 import javax.persistence.EntityManager; 9 +import javax.persistence.EntityManagerFactory;10 +import javax.ws.rs.Priorities;11 11 import javax.ws.rs.container.ContainerRequestContext; 12 +import javax.ws.rs.container.ContainerRequestFilter;12 13 import javax.ws.rs.container.ContainerResponseContext; 14 +import javax.ws.rs.container.ContainerResponseFilter;13 15 import javax.ws.rs.core.Response.Status; 16 +import javax.ws.rs.ext.Provider;14 17 15 18 import org.apache.logging.log4j.LogManager; 16 19 import org.apache.logging.log4j.Logger; 17 20 import org.jboss.resteasy.core.ResourceMethodInvoker; 18 21 import org.jboss.resteasy.spi.ResteasyProviderFactory; 19 22 20 -import com.google.inject.persist.Transactional;21 -22 -@Interceptor23 -@MyTrans24 -public class TransactionsManager {23 +@Provider24 +@Priority(Priorities.AUTHENTICATION)25 +public class TransactionsManager implements ContainerRequestFilter, ContainerResponseFilter {25 26 26 27 private static final Logger LOG = LogManager.getLogger(TransactionsManager.class); 27 28 28 - @Inject29 - private EntityManager em;29 + private EntityManagerFactory entityManagerFactory = javax.persistence.Persistence.createEntityManagerFactory("localdb");30 +31 + private EntityManager getEM() {32 + return entityManagerFactory.createEntityManager();33 + }30 34 31 35 // @Inject 32 36 // private ThreadLocal<EntityManager> threadLocal; 33 37 34 - @AroundInvoke38 + // @AroundInvoke35 39 public Object invoke(InvocationContext context) throws Exception { 36 - // EntityTransaction trx = manager.getTransaction();40 + EntityManager em = getEM();37 41 if (!em.getTransaction().isActive()) { 38 42 em.getTransaction().begin(); 39 43 LOG.info("INIT trans"); .. .. @@ -49,20 +53,30 @@ 49 53 return result; 50 54 } 51 55 56 + @Override52 57 public void filter(ContainerRequestContext requestContext) throws IOException { 53 58 ResourceMethodInvoker methodInvoker = (ResourceMethodInvoker) requestContext.getProperty("org.jboss.resteasy.core.ResourceMethodInvoker"); 54 59 Method method = methodInvoker.getMethod(); 60 + EntityManager em = getEM();55 61 56 - if (method.isAnnotationPresent(Transactional.class)) {62 + ResteasyProviderFactory.pushContext(EntityManager.class, em);63 +64 + if (method.isAnnotationPresent(EnsureTransaction.class)) {57 65 LOG.info("WE need transaction!!!"); 66 +58 67 em.getTransaction().begin(); 59 68 } 69 + LOG.info("Sent to context, em: {}, {}?", em, method.toGenericString());60 70 } 61 71 72 + @Override62 73 public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { 63 74 // 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);64 78 65 - if (em.getTransaction().isActive()) {79 + if (em != null && em.getTransaction().isActive()) {66 80 LOG.info("There is transaction go ahead..."); 67 81 if (responseContext.getStatus() == Status.OK.getStatusCode()) { 68 82 em.getTransaction().commit(); securis/src/main/java/net/curisit/securis/services/ApiResource.java
.. .. @@ -6,7 +6,6 @@ 6 6 7 7 import javax.inject.Inject; 8 8 import javax.persistence.EntityManager; 9 -import javax.transaction.Transactional;10 9 import javax.ws.rs.Consumes; 11 10 import javax.ws.rs.GET; 12 11 import javax.ws.rs.HeaderParam; .. .. @@ -30,6 +29,7 @@ 30 29 import net.curisit.securis.db.LicenseStatus; 31 30 import net.curisit.securis.db.Pack; 32 31 import net.curisit.securis.db.User; 32 +import net.curisit.securis.ioc.EnsureTransaction;33 33 import net.curisit.securis.security.BasicSecurityContext; 34 34 import net.curisit.securis.security.Securable; 35 35 import net.curisit.securis.services.exception.SeCurisServiceException; .. .. @@ -61,7 +61,7 @@ 61 61 @Inject 62 62 private LicenseHelper licenseHelper; 63 63 64 - @Inject64 + @Context65 65 EntityManager em; 66 66 67 67 @Inject .. .. @@ -118,7 +118,7 @@ 118 118 @Produces({ 119 119 MediaType.APPLICATION_JSON 120 120 }) 121 - @Transactional121 + @EnsureTransaction122 122 public Response createFromRequest(RequestBean request, @HeaderParam(LicenseManager.HEADER_LICENSE_NAME_OR_REFERENCE) String nameOrReference, 123 123 @HeaderParam(LicenseManager.HEADER_LICENSE_EMAIL) String userEmail) throws IOException, SeCurisServiceException, SeCurisException { 124 124 LOG.info("Request to get license: {}", request); .. .. @@ -144,7 +144,7 @@ 144 144 @Produces({ 145 145 MediaType.APPLICATION_JSON 146 146 }) 147 - @Transactional147 + @EnsureTransaction148 148 @SuppressWarnings("unchecked") 149 149 public Response createFromRequestFile(MultipartFormDataInput mpfdi, 150 150 @HeaderParam(LicenseManager.HEADER_LICENSE_NAME_OR_REFERENCE) String nameOrReference, .. .. @@ -178,7 +178,7 @@ 178 178 @Produces({ 179 179 MediaType.APPLICATION_JSON 180 180 }) 181 - @Transactional181 + @EnsureTransaction182 182 public Response renewFromPreviousLicense(LicenseBean previousLic, @Context BasicSecurityContext bsc) throws IOException, SeCurisServiceException, 183 183 SeCurisException { 184 184 LOG.info("Renew license: {}", previousLic); .. .. @@ -216,7 +216,7 @@ 216 216 @Produces({ 217 217 MediaType.APPLICATION_JSON 218 218 }) 219 - @Transactional219 + @EnsureTransaction220 220 public Response validate(LicenseBean currentLic, @Context BasicSecurityContext bsc) throws IOException, SeCurisServiceException, SeCurisException { 221 221 LOG.info("Validate license: {}", currentLic); 222 222 .. .. @@ -252,7 +252,7 @@ 252 252 @Produces({ 253 253 MediaType.APPLICATION_JSON 254 254 }) 255 - @Transactional255 + @EnsureTransaction256 256 @SuppressWarnings("unchecked") 257 257 public Response renewFromLicenseFile(MultipartFormDataInput mpfdi, @Context BasicSecurityContext bsc) throws IOException, 258 258 SeCurisServiceException, SeCurisException { securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
.. .. @@ -9,7 +9,6 @@ 9 9 import javax.persistence.EntityManager; 10 10 import javax.persistence.TypedQuery; 11 11 import javax.servlet.http.HttpServletRequest; 12 -import javax.transaction.Transactional;13 12 import javax.ws.rs.Consumes; 14 13 import javax.ws.rs.DELETE; 15 14 import javax.ws.rs.GET; .. .. @@ -29,6 +28,7 @@ 29 28 import net.curisit.securis.SeCurisException; 30 29 import net.curisit.securis.db.Application; 31 30 import net.curisit.securis.db.ApplicationMetadata; 31 +import net.curisit.securis.ioc.EnsureTransaction;32 32 import net.curisit.securis.security.BasicSecurityContext; 33 33 import net.curisit.securis.security.Securable; 34 34 import net.curisit.securis.services.exception.SeCurisServiceException; .. .. @@ -51,7 +51,7 @@ 51 51 @Inject 52 52 TokenHelper tokenHelper; 53 53 54 - @Inject54 + @Context55 55 EntityManager em; 56 56 57 57 private static final Logger LOG = LogManager.getLogger(ApplicationResource.class); .. .. @@ -131,7 +131,7 @@ 131 131 @Produces({ 132 132 MediaType.APPLICATION_JSON 133 133 }) 134 - @Transactional134 + @EnsureTransaction135 135 @Securable 136 136 @RolesAllowed(BasicSecurityContext.ROL_ADMIN) 137 137 public Response create(Application app, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) { .. .. @@ -156,7 +156,7 @@ 156 156 @PUT 157 157 @POST 158 158 @Path("/{appid}") 159 - @Transactional159 + @EnsureTransaction160 160 @Consumes(MediaType.APPLICATION_JSON) 161 161 @Produces({ 162 162 MediaType.APPLICATION_JSON .. .. @@ -204,7 +204,7 @@ 204 204 205 205 @DELETE 206 206 @Path("/{appid}") 207 - @Transactional207 + @EnsureTransaction208 208 @Produces({ 209 209 MediaType.APPLICATION_JSON 210 210 }) securis/src/main/java/net/curisit/securis/services/BasicServices.java
.. .. @@ -6,7 +6,6 @@ 6 6 import javax.enterprise.context.ApplicationScoped; 7 7 import javax.inject.Inject; 8 8 import javax.servlet.http.HttpServletRequest; 9 -import javax.transaction.Transactional;10 9 import javax.ws.rs.FormParam; 11 10 import javax.ws.rs.GET; 12 11 import javax.ws.rs.HeaderParam; .. .. @@ -22,6 +21,7 @@ 22 21 import javax.ws.rs.core.UriBuilder; 23 22 24 23 import net.curisit.integrity.commons.Utils; 24 +import net.curisit.securis.ioc.EnsureTransaction;25 25 import net.curisit.securis.security.Securable; 26 26 import net.curisit.securis.utils.TokenHelper; 27 27 .. .. @@ -99,7 +99,7 @@ 99 99 @Produces({ 100 100 MediaType.APPLICATION_JSON 101 101 }) 102 - @Transactional102 + @EnsureTransaction103 103 public Response check(@HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token, @QueryParam("token") String token2) { 104 104 if (token == null) { 105 105 token = token2; securis/src/main/java/net/curisit/securis/services/LicenseResource.java
.. .. @@ -9,7 +9,6 @@ 9 9 import javax.inject.Inject; 10 10 import javax.persistence.EntityManager; 11 11 import javax.persistence.TypedQuery; 12 -import javax.transaction.Transactional;13 12 import javax.ws.rs.Consumes; 14 13 import javax.ws.rs.DELETE; 15 14 import javax.ws.rs.DefaultValue; .. .. @@ -41,6 +40,7 @@ 41 40 import net.curisit.securis.db.Pack; 42 41 import net.curisit.securis.db.PackStatus; 43 42 import net.curisit.securis.db.User; 43 +import net.curisit.securis.ioc.EnsureTransaction;44 44 import net.curisit.securis.security.BasicSecurityContext; 45 45 import net.curisit.securis.security.Securable; 46 46 import net.curisit.securis.services.exception.SeCurisServiceException; .. .. @@ -81,7 +81,7 @@ 81 81 @Inject 82 82 private LicenseHelper licenseHelper; 83 83 84 - @Inject84 + @Context85 85 EntityManager em; 86 86 87 87 @Inject .. .. @@ -152,7 +152,7 @@ 152 152 @Produces({ 153 153 MediaType.APPLICATION_OCTET_STREAM 154 154 }) 155 - @Transactional155 + @EnsureTransaction156 156 public Response download(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException { 157 157 158 158 // EntityManager em = emProvider.get(); .. .. @@ -185,7 +185,7 @@ 185 185 @POST 186 186 @Path("/{licId}/activate") 187 187 @Securable 188 - @Transactional188 + @EnsureTransaction189 189 @Consumes(MediaType.APPLICATION_JSON) 190 190 @Produces({ 191 191 MediaType.APPLICATION_JSON .. .. @@ -233,7 +233,7 @@ 233 233 @POST 234 234 @Path("/{licId}/send") 235 235 @Securable 236 - @Transactional236 + @EnsureTransaction237 237 @Consumes(MediaType.APPLICATION_JSON) 238 238 @Produces({ 239 239 MediaType.APPLICATION_JSON .. .. @@ -289,7 +289,7 @@ 289 289 @POST 290 290 @Path("/{licId}/cancel") 291 291 @Securable 292 - @Transactional292 + @EnsureTransaction293 293 @Consumes(MediaType.APPLICATION_JSON) 294 294 @Produces({ 295 295 MediaType.APPLICATION_JSON .. .. @@ -340,7 +340,7 @@ 340 340 @Produces({ 341 341 MediaType.APPLICATION_JSON 342 342 }) 343 - @Transactional343 + @EnsureTransaction344 344 public Response create(License lic, @Context BasicSecurityContext bsc) throws SeCurisServiceException { 345 345 // EntityManager em = emProvider.get(); 346 346 .. .. @@ -462,7 +462,7 @@ 462 462 @POST 463 463 @Path("/{licId}") 464 464 @Securable 465 - @Transactional465 + @EnsureTransaction466 466 @Consumes(MediaType.APPLICATION_JSON) 467 467 @Produces({ 468 468 MediaType.APPLICATION_JSON .. .. @@ -509,7 +509,7 @@ 509 509 510 510 @DELETE 511 511 @Path("/{licId}") 512 - @Transactional512 + @EnsureTransaction513 513 @Securable 514 514 @Produces({ 515 515 MediaType.APPLICATION_JSON .. .. @@ -541,7 +541,7 @@ 541 541 542 542 @POST 543 543 @Path("/{licId}/block") 544 - @Transactional544 + @EnsureTransaction545 545 @Securable 546 546 @Produces({ 547 547 MediaType.APPLICATION_JSON .. .. @@ -574,7 +574,7 @@ 574 574 575 575 @POST 576 576 @Path("/{licId}/unblock") 577 - @Transactional577 + @EnsureTransaction578 578 @Securable 579 579 @Produces({ 580 580 MediaType.APPLICATION_JSON securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
.. .. @@ -9,7 +9,6 @@ 9 9 import javax.persistence.EntityManager; 10 10 import javax.persistence.TypedQuery; 11 11 import javax.servlet.http.HttpServletRequest; 12 -import javax.transaction.Transactional;13 12 import javax.ws.rs.Consumes; 14 13 import javax.ws.rs.DELETE; 15 14 import javax.ws.rs.GET; .. .. @@ -30,6 +29,7 @@ 30 29 import net.curisit.securis.db.Application; 31 30 import net.curisit.securis.db.LicenseType; 32 31 import net.curisit.securis.db.LicenseTypeMetadata; 32 +import net.curisit.securis.ioc.EnsureTransaction;33 33 import net.curisit.securis.security.BasicSecurityContext; 34 34 import net.curisit.securis.security.Securable; 35 35 import net.curisit.securis.services.exception.SeCurisServiceException; .. .. @@ -53,7 +53,7 @@ 53 53 @Inject 54 54 TokenHelper tokenHelper; 55 55 56 - @Inject56 + @Context57 57 EntityManager em; 58 58 59 59 public LicenseTypeResource() { .. .. @@ -114,7 +114,7 @@ 114 114 @Produces({ 115 115 MediaType.APPLICATION_JSON 116 116 }) 117 - @Transactional117 + @EnsureTransaction118 118 @Securable 119 119 @RolesAllowed(BasicSecurityContext.ROL_ADMIN) 120 120 public Response create(LicenseType lt, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) { .. .. @@ -151,7 +151,7 @@ 151 151 @PUT 152 152 @POST 153 153 @Path("/{ltid}") 154 - @Transactional154 + @EnsureTransaction155 155 @Consumes(MediaType.APPLICATION_JSON) 156 156 @Produces({ 157 157 MediaType.APPLICATION_JSON .. .. @@ -219,7 +219,7 @@ 219 219 220 220 @DELETE 221 221 @Path("/{ltid}") 222 - @Transactional222 + @EnsureTransaction223 223 @Produces({ 224 224 MediaType.APPLICATION_JSON 225 225 }) securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
.. .. @@ -10,7 +10,6 @@ 10 10 import javax.persistence.EntityManager; 11 11 import javax.persistence.TypedQuery; 12 12 import javax.servlet.http.HttpServletRequest; 13 -import javax.transaction.Transactional;14 13 import javax.ws.rs.Consumes; 15 14 import javax.ws.rs.DELETE; 16 15 import javax.ws.rs.GET; .. .. @@ -30,7 +29,7 @@ 30 29 import net.curisit.securis.SeCurisException; 31 30 import net.curisit.securis.db.Organization; 32 31 import net.curisit.securis.db.User; 33 -import net.curisit.securis.ioc.MyTrans;32 +import net.curisit.securis.ioc.EnsureTransaction;34 33 import net.curisit.securis.security.BasicSecurityContext; 35 34 import net.curisit.securis.security.Securable; 36 35 import net.curisit.securis.utils.TokenHelper; .. .. @@ -131,7 +130,7 @@ 131 130 @Produces({ 132 131 MediaType.APPLICATION_JSON 133 132 }) 134 - @MyTrans133 + @EnsureTransaction135 134 @Securable 136 135 @RolesAllowed(BasicSecurityContext.ROL_ADMIN) 137 136 public Response create(Organization org) { .. .. @@ -198,11 +197,11 @@ 198 197 @PUT 199 198 @POST 200 199 @Path("/{orgid}") 201 - @Transactional202 200 @Consumes(MediaType.APPLICATION_JSON) 203 201 @Produces({ 204 202 MediaType.APPLICATION_JSON 205 203 }) 204 + @EnsureTransaction206 205 @Securable 207 206 @RolesAllowed(BasicSecurityContext.ROL_ADMIN) 208 207 public Response modify(Organization org, @PathParam("orgid") String orgid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) { .. .. @@ -244,7 +243,7 @@ 244 243 245 244 @DELETE 246 245 @Path("/{orgid}") 247 - @Transactional246 + @EnsureTransaction248 247 @Produces({ 249 248 MediaType.APPLICATION_JSON 250 249 }) securis/src/main/java/net/curisit/securis/services/PackResource.java
.. .. @@ -9,7 +9,6 @@ 9 9 import javax.inject.Inject; 10 10 import javax.persistence.EntityManager; 11 11 import javax.persistence.TypedQuery; 12 -import javax.transaction.Transactional;13 12 import javax.ws.rs.Consumes; 14 13 import javax.ws.rs.DELETE; 15 14 import javax.ws.rs.FormParam; .. .. @@ -35,6 +34,7 @@ 35 34 import net.curisit.securis.db.PackMetadata; 36 35 import net.curisit.securis.db.PackStatus; 37 36 import net.curisit.securis.db.User; 37 +import net.curisit.securis.ioc.EnsureTransaction;38 38 import net.curisit.securis.security.BasicSecurityContext; 39 39 import net.curisit.securis.security.Securable; 40 40 import net.curisit.securis.services.exception.SeCurisServiceException; .. .. @@ -60,7 +60,7 @@ 60 60 @Inject 61 61 TokenHelper tokenHelper; 62 62 63 - @Inject63 + @Context64 64 EntityManager em; 65 65 66 66 @Inject .. .. @@ -143,7 +143,7 @@ 143 143 @Produces({ 144 144 MediaType.APPLICATION_JSON 145 145 }) 146 - @Transactional146 + @EnsureTransaction147 147 public Response create(Pack pack, @Context BasicSecurityContext bsc) throws SeCurisServiceException { 148 148 LOG.info("Creating new pack"); 149 149 // EntityManager em = emProvider.get(); .. .. @@ -239,7 +239,7 @@ 239 239 @PUT 240 240 @POST 241 241 @Path("/{packId}") 242 - @Transactional242 + @EnsureTransaction243 243 @Securable 244 244 @RolesAllowed(BasicSecurityContext.ROL_ADMIN) 245 245 @Consumes(MediaType.APPLICATION_JSON) .. .. @@ -267,6 +267,8 @@ 267 267 currentPack.setCode(pack.getCode()); 268 268 currentPack.setComments(pack.getComments()); 269 269 currentPack.setNumLicenses(pack.getNumLicenses()); 270 + currentPack.setPreactivationValidPeriod(pack.getPreactivationValidPeriod());271 + currentPack.setRenewValidPeriod(pack.getRenewValidPeriod());270 272 271 273 Set<PackMetadata> newMD = pack.getMetadata(); 272 274 for (PackMetadata currentMd : currentPack.getMetadata()) { .. .. @@ -294,7 +296,7 @@ 294 296 295 297 @POST 296 298 @Path("/{packId}/activate") 297 - @Transactional299 + @EnsureTransaction298 300 @Securable 299 301 @RolesAllowed(BasicSecurityContext.ROL_ADMIN) 300 302 @Consumes(MediaType.APPLICATION_JSON) .. .. @@ -320,7 +322,7 @@ 320 322 321 323 @POST 322 324 @Path("/{packId}/putonhold") 323 - @Transactional325 + @EnsureTransaction324 326 @Securable 325 327 @RolesAllowed(BasicSecurityContext.ROL_ADMIN) 326 328 @Consumes(MediaType.APPLICATION_JSON) .. .. @@ -346,7 +348,7 @@ 346 348 347 349 @POST 348 350 @Path("/{packId}/cancel") 349 - @Transactional351 + @EnsureTransaction350 352 @Securable 351 353 @RolesAllowed(BasicSecurityContext.ROL_ADMIN) 352 354 @Consumes(MediaType.APPLICATION_JSON) .. .. @@ -393,7 +395,7 @@ 393 395 @Path("/{packId}") 394 396 @Securable 395 397 @RolesAllowed(BasicSecurityContext.ROL_ADMIN) 396 - @Transactional398 + @EnsureTransaction397 399 @Produces({ 398 400 MediaType.APPLICATION_JSON 399 401 }) securis/src/main/java/net/curisit/securis/services/UserResource.java
.. .. @@ -12,7 +12,6 @@ 12 12 import javax.persistence.PersistenceException; 13 13 import javax.persistence.TypedQuery; 14 14 import javax.servlet.http.HttpServletRequest; 15 -import javax.transaction.Transactional;16 15 import javax.ws.rs.Consumes; 17 16 import javax.ws.rs.DELETE; 18 17 import javax.ws.rs.FormParam; .. .. @@ -34,6 +33,7 @@ 34 33 import net.curisit.securis.SeCurisException; 35 34 import net.curisit.securis.db.Organization; 36 35 import net.curisit.securis.db.User; 36 +import net.curisit.securis.ioc.EnsureTransaction;37 37 import net.curisit.securis.security.BasicSecurityContext; 38 38 import net.curisit.securis.security.Securable; 39 39 import net.curisit.securis.services.exception.SeCurisServiceException; .. .. @@ -55,7 +55,7 @@ 55 55 @Inject 56 56 TokenHelper tokenHelper; 57 57 58 - @Inject58 + @Context59 59 EntityManager em; 60 60 61 61 private static final Logger LOG = LogManager.getLogger(UserResource.class); .. .. @@ -120,7 +120,7 @@ 120 120 @Produces({ 121 121 MediaType.APPLICATION_JSON 122 122 }) 123 - @Transactional123 + @EnsureTransaction124 124 @Securable 125 125 @RolesAllowed(BasicSecurityContext.ROL_ADMIN) 126 126 public Response create(User user, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) { .. .. @@ -172,7 +172,7 @@ 172 172 @PUT 173 173 @POST 174 174 @Path("/{uid}") 175 - @Transactional175 + @EnsureTransaction176 176 @Consumes(MediaType.APPLICATION_JSON) 177 177 @Produces({ 178 178 MediaType.APPLICATION_JSON .. .. @@ -216,7 +216,7 @@ 216 216 217 217 @DELETE 218 218 @Path("/{uid}") 219 - @Transactional219 + @EnsureTransaction220 220 @Produces({ 221 221 MediaType.APPLICATION_JSON 222 222 }) securis/src/main/webapp/WEB-INF/beans.xml
.. .. @@ -1,7 +1,7 @@ 1 1 <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 2 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_1.xsd"> 3 3 <interceptors> 4 - <class>net.curisit.securis.ioc.TransactionsManager</class>4 + <!-- <class>net.curisit.securis.ioc.TransactionsManager</class> -->5 5 </interceptors> 6 6 </beans> 7 7