From 81fc4995eac73c31ad7539226981d3757d3692e6 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Fri, 12 Dec 2014 14:45:32 +0000
Subject: [PATCH] #2140 fix - Config change to avoid cache in hibernate

---
 securis/src/main/resources/META-INF/persistence.xml                     |    2 ++
 securis/src/main/java/net/curisit/securis/services/LicenseResource.java |   16 +++++++++-------
 2 files changed, 11 insertions(+), 7 deletions(-)

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 fa162eb..6456bf5 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
@@ -9,6 +9,8 @@
 import javax.inject.Inject;
 import javax.inject.Provider;
 import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.SynchronizationType;
 import javax.persistence.TypedQuery;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
@@ -84,6 +86,9 @@
 
     @Inject
     private Provider<EntityManager> emProvider;
+
+    @PersistenceContext(unitName = "localdb", synchronization = SynchronizationType.SYNCHRONIZED)
+    private EntityManager entityManager;
 
     @Inject
     private LicenseGenerator licenseGenerator;
@@ -195,22 +200,19 @@
 
         if (!License.Status.isActionValid(License.Action.ACTIVATION, lic.getStatus())) {
             LOG.error("License with id {} can not be activated from current license status", licId);
-            throw new SeCurisServiceException(Status.FORBIDDEN.getStatusCode(), "License with id " + licId
+            throw new SeCurisServiceException(ErrorCodes.INVALID_DATA, "License with id " + licId
                     + " can not be activated from the current license status");
         }
 
         if (lic.getPack().getNumAvailables() == 0) {
-            throw new SeCurisServiceException(Status.FORBIDDEN.getStatusCode(), "The pack has not available licenses");
+            throw new SeCurisServiceException(ErrorCodes.NO_AVAILABLE_LICENSES, "The pack has not available licenses");
         }
 
         validateRequestData(lic.getPack(), lic.getRequestData());
 
         License existingLicense = License.findLicenseByRequestData(lic.getRequestData(), em);
-        if (existingLicense != null) {
-            return Response.status(DefaultExceptionHandler.DEFAULT_APP_ERROR_STATUS_CODE)
-                    .header(DefaultExceptionHandler.ERROR_CODE_MESSAGE_HEADER, ErrorCodes.DUPLICATED_REQUEST_DATA)
-                    .header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "There is already an active license for current request data")
-                    .type(MediaType.APPLICATION_JSON).entity(existingLicense).build();
+        if (existingLicense != null && existingLicense.getStatus() == LicenseStatus.ACTIVE) {
+            throw new SeCurisServiceException(ErrorCodes.NO_AVAILABLE_LICENSES, "The pack has not available licenses");
         }
 
         lic.setStatus(LicenseStatus.ACTIVE);
diff --git a/securis/src/main/resources/META-INF/persistence.xml b/securis/src/main/resources/META-INF/persistence.xml
index c9d38f0..478499c 100644
--- a/securis/src/main/resources/META-INF/persistence.xml
+++ b/securis/src/main/resources/META-INF/persistence.xml
@@ -12,9 +12,11 @@
 		<!-- <class>net.curisit.securis.db.UserSettingsUnits</class> -->
 
 		<properties>
+			<property name="hibernate.cache.provider_class" value="org.hibernate.cache.internal.NoCachingRegionFactory"/>
 			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
 			<property name="hibernate.connection.datasource" value="java:comp/env/jdbc/SeCurisDS" />
 
+ 			<property name="hibernate.cache.use_second_level_cache" value="false" />
  			<property name="hibernate.show_sql" value="false" />
  			
  			<!-- 			<property name="hibernate.format_sql" value="true"/>

--
Gitblit v1.3.2