]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
PAHMA-388: Fixing an AuthN/AuthZ import task failure when reimporting over existing...
authorRichard Millet <remillet@berkeley.edu>
Fri, 8 Feb 2013 21:22:14 +0000 (13:22 -0800)
committerRichard Millet <remillet@berkeley.edu>
Fri, 8 Feb 2013 21:22:14 +0000 (13:22 -0800)
services/authorization-mgt/import/build.xml
services/common/src/main/java/org/collectionspace/services/common/security/SecurityUtils.java
services/common/src/main/java/org/collectionspace/services/common/storage/jpa/JpaStorageUtils.java

index 4a83083137ee9e31a018558e0715404a7c54547d..dc6f43193353a61753364561d825b6e48ade6dfe 100644 (file)
     <target name="import-windows" if="osfamily-windows" depends="setup_hibernate.cfg">\r
         <exec executable="cmd" failonerror="true">\r
             <arg value="/c" />\r
-            <arg value="mvn.bat" /> <!-- To debug, change command here to be 'mvnDebug.bat' -->\r
+            <arg value="mvnDebug.bat" /> <!-- To debug, change command here to be 'mvnDebug.bat' -->\r
             <arg value="exec:java" />\r
             <arg value="-f" />\r
             <arg value="${basedir}/pom.xml" />\r
index 796b1dbcec294a40328e8169f4d95a7a6e803989..80166234037bfbb718de3a408d5a57b3af6f5d85 100644 (file)
@@ -39,6 +39,7 @@ import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.UriInfo;
 
 import org.collectionspace.authentication.AuthN;
+import org.collectionspace.authentication.spi.AuthNContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -258,7 +259,8 @@ public class SecurityUtils {
        }
        
         if (tenantId != null) {
-            if (ADMIN_TENANT_ID.equals(tenantId) == true) {
+            if (ADMIN_TENANT_ID.equals(tenantId) == true ||
+                       AuthNContext.ANONYMOUS_TENANT_ID.equals(tenantId)) {
                 result = true;
             }
         }
index 7a737a35bb4c2f0edddae19e9de734a173e9cda0..c515451a6943d294b2166a0ac2ae3fadec08f3eb 100644 (file)
@@ -69,6 +69,17 @@ public class JpaStorageUtils {
     // This is the column name for ID field of all the JPA objects
     public static final String CSID_LABEL = "csid";
     
+    private static boolean useTenantId(String tenantId) {
+       boolean result = true;
+       
+        boolean csAdmin = SecurityUtils.isCSpaceAdmin();
+       if (csAdmin == true || tenantId == null) {
+               result = false;
+       }
+
+       return result;
+    }
+    
     public static Object getEntity(String id, Class entityClazz)
                throws DocumentNotFoundException {
         EntityManagerFactory emf = null;
@@ -305,18 +316,18 @@ public class JpaStorageUtils {
             throw new IllegalArgumentException("tenantId is required");
         }
         
+        boolean useTenantId = useTenantId(tenantId);
         StringBuilder queryStrBldr = new StringBuilder("SELECT a FROM ");
         queryStrBldr.append(entityName);
         queryStrBldr.append(" a");
         queryStrBldr.append(" WHERE " + key + " = :" + key);
-        boolean csAdmin = SecurityUtils.isCSpaceAdmin();
-        if (!csAdmin) {
+        if (useTenantId == true) {
             queryStrBldr.append(" AND tenantId = :tenantId");
         }
         String queryStr = queryStrBldr.toString(); //for debugging
         Query q = em.createQuery(queryStr);
         q.setParameter(key, value);
-        if (!csAdmin) {
+        if (useTenantId == true) {
             q.setParameter("tenantId", tenantId);
         }
         result = q.getSingleResult();
@@ -343,20 +354,20 @@ public class JpaStorageUtils {
             throw new IllegalArgumentException("key names are required");
         }
         
+        boolean useTenantId = useTenantId(tenantId);
         StringBuilder queryStrBldr = new StringBuilder("SELECT a FROM ");
         queryStrBldr.append(entityName);
         queryStrBldr.append(" a");
         queryStrBldr.append(" WHERE " + key1 + " = :" + key1);
         queryStrBldr.append(" AND " + key2 + " = :" + key2);
-        boolean csAdmin = SecurityUtils.isCSpaceAdmin();
-        if (!csAdmin && tenantId != null) {
+        if (useTenantId == true) {
             queryStrBldr.append(" AND tenantId = :tenantId");
         }
         String queryStr = queryStrBldr.toString(); //for debugging
         Query q = em.createQuery(queryStr);
         q.setParameter(key1, value1);
         q.setParameter(key2, value2);
-        if (!csAdmin) {
+        if (useTenantId == true) {
             q.setParameter("tenantId", tenantId);
         }
         result = q.getSingleResult();
@@ -431,8 +442,9 @@ public class JpaStorageUtils {
             queryStrBldr.append(entityName);
             queryStrBldr.append(" a");
             queryStrBldr.append(" WHERE csid = :csid");
-            boolean csAdmin = SecurityUtils.isCSpaceAdmin();
-            if (!csAdmin) {
+            
+            boolean useTenantId = useTenantId(tenantId);
+            if (useTenantId == true) {
                 queryStrBldr.append(" AND tenantId = :tenantId");
             }
             emf = getEntityManagerFactory();
@@ -440,7 +452,7 @@ public class JpaStorageUtils {
             String queryStr = queryStrBldr.toString(); //for debugging
             Query q = em.createQuery(queryStr);
             q.setParameter("csid", id);
-            if (!csAdmin) {
+            if (useTenantId) {
                 q.setParameter("tenantId", tenantId);
             }
             o = q.getSingleResult();