From 4c13c7324a920f5cca9601154e5224e5d7484fa9 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Fri, 12 Dec 2014 18:09:27 +0000
Subject: [PATCH] #2140 fix - Many changes related with cahce and JPA cycling relationships

---
 securis/src/main/java/net/curisit/securis/services/ApplicationResource.java |   45 +++++++++++++++++++++++++++++++++------------
 1 files changed, 33 insertions(+), 12 deletions(-)

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 916511f..db7bf67 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
@@ -26,10 +26,14 @@
 
 import net.curisit.integrity.commons.Utils;
 import net.curisit.securis.DefaultExceptionHandler;
+import net.curisit.securis.SeCurisException;
 import net.curisit.securis.db.Application;
 import net.curisit.securis.db.ApplicationMetadata;
 import net.curisit.securis.security.BasicSecurityContext;
 import net.curisit.securis.security.Securable;
+import net.curisit.securis.services.exception.SeCurisServiceException;
+import net.curisit.securis.services.exception.SeCurisServiceException.ErrorCodes;
+import net.curisit.securis.utils.JsonUtils;
 import net.curisit.securis.utils.TokenHelper;
 
 import org.apache.logging.log4j.LogManager;
@@ -71,6 +75,7 @@
         LOG.info("Getting applications list ");
 
         EntityManager em = emProvider.get();
+        em.clear();
         TypedQuery<Application> q = em.createNamedQuery("list-applications", Application.class);
         List<Application> list = q.getResultList();
 
@@ -80,6 +85,7 @@
     /**
      * 
      * @return the server version in format majorVersion.minorVersion
+     * @throws SeCurisServiceException
      */
     @GET
     @Path("/{appid}")
@@ -87,7 +93,7 @@
         MediaType.APPLICATION_JSON
     })
     @Securable
-    public Response get(@PathParam("appid") String appid, @HeaderParam(TokenHelper.TOKEN_HEADER_PĂ€RAM) String token) {
+    public Response get(@PathParam("appid") String appid) throws SeCurisServiceException {
         LOG.info("Getting application data for id: {}: ", appid);
         if (appid == null || "".equals(appid)) {
             LOG.error("Application ID is mandatory");
@@ -95,12 +101,28 @@
         }
 
         EntityManager em = emProvider.get();
-        Application app = em.find(Application.class, Integer.parseInt(appid));
+        em.clear();
+
+        Application app = null;
+        try {
+            LOG.info("READY to GET app: {}", appid);
+            app = em.find(Application.class, Integer.parseInt(appid));
+        } catch (Exception e) {
+            LOG.info("ERROR GETTING app: {}", e);
+        }
         if (app == null) {
             LOG.error("Application with id {} not found in DB", appid);
+            throw new SeCurisServiceException(ErrorCodes.NOT_FOUND, "Application not found with ID: " + appid);
+        }
 
-            return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Application not found with ID: " + appid)
-                    .build();
+        try {
+            LOG.info("JSON for APP:\n\n\n");
+            LOG.info(JsonUtils.toJSON(app));
+        } catch (SeCurisException e) {
+            LOG.info("ERROR {}", e);
+
+        } catch (Exception e) {
+            LOG.info("ERROR??? {}", e);
         }
         return Response.ok(app).build();
     }
@@ -199,14 +221,13 @@
             return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Application not found with ID: " + appid)
                     .build();
         }
-
-        if (app.getLicenseTypes() != null && !app.getLicenseTypes().isEmpty()) {
-            return Response
-                    .status(Status.FORBIDDEN)
-                    .header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER,
-                            "Application can not be deleted becasue has assigned one or more License types, ID: " + appid).build();
-        }
-
+        /*
+         * if (app.getLicenseTypes() != null &&
+         * !app.getLicenseTypes().isEmpty()) { throw new
+         * SeCurisServiceException(ErrorCodes.NOT_FOUND,
+         * "Application can not be deleted becasue has assigned one or more License types, ID: "
+         * + appid); }
+         */
         em.remove(app);
         return Response.ok(Utils.createMap("success", true, "id", appid)).build();
     }

--
Gitblit v1.3.2