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/OrganizationResource.java |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

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 27e956c..25a5b07 100644
--- a/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
@@ -1,8 +1,9 @@
 package net.curisit.securis.services;
 
-import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import javax.annotation.security.RolesAllowed;
 import javax.inject.Inject;
@@ -35,7 +36,6 @@
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-import org.jboss.resteasy.spi.ResteasyProviderFactory;
 
 import com.google.inject.persist.Transactional;
 
@@ -69,9 +69,8 @@
     public Response index(@Context BasicSecurityContext bsc) {
         LOG.info("Getting organizations list ");
 
-        BasicSecurityContext bsc2 = ResteasyProviderFactory.getContextData(BasicSecurityContext.class);
-        LOG.debug("securityContext ROL_ADMIN?: {}", bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN));
         EntityManager em = emProvider.get();
+        em.clear();
         TypedQuery<Organization> q;
         if (bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
             LOG.info("GEtting all orgs for user: " + bsc.getUserPrincipal());
@@ -103,6 +102,7 @@
         }
 
         EntityManager em = emProvider.get();
+        em.clear();
         Organization org = em.find(Organization.class, Integer.parseInt(orgid));
         if (org == null) {
             LOG.error("Organization with id {} not found in DB", orgid);
@@ -141,10 +141,10 @@
             return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
         }
 
-        List<User> users = null;
-        List<String> usersIds = org.getUsersIds();
+        Set<User> users = null;
+        Set<String> usersIds = org.getUsersIds();
         if (usersIds != null && !usersIds.isEmpty()) {
-            users = new ArrayList<>();
+            users = new HashSet<>();
             for (String username : usersIds) {
                 User user = em.find(User.class, username);
                 if (user == null) {
@@ -176,10 +176,10 @@
         org.setParentOrganization(parentOrg);
     }
 
-    private void setOrgUsers(Organization org, List<String> usersIds, EntityManager em) throws SeCurisException {
-        List<User> users = null;
+    private void setOrgUsers(Organization org, Set<String> usersIds, EntityManager em) throws SeCurisException {
+        Set<User> users = null;
         if (usersIds != null && !usersIds.isEmpty()) {
-            users = new ArrayList<>();
+            users = new HashSet<>();
             for (String username : usersIds) {
                 User user = em.find(User.class, username);
                 if (user == null) {

--
Gitblit v1.3.2