Author: jacopoc
Date: Sat Dec  6 08:01:06 2014
New Revision: 1643499

URL: http://svn.apache.org/r1643499
Log:
Added a check to prevent client code holding a reference to a "tenant" 
delegator to access super/meta tenant tables. Thanks to Arun Patidar for 
spotting this and for discussing with me the proper solution. 

Modified:
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/GenericDelegator.java

Modified: 
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/GenericDelegator.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/GenericDelegator.java?rev=1643499&r1=1643498&r2=1643499&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/GenericDelegator.java 
(original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/GenericDelegator.java Sat 
Dec  6 08:01:06 2014
@@ -478,9 +478,12 @@ public class GenericDelegator implements
         if (helperBaseName == null) {
             return null;
         }
-        GenericHelperInfo helperInfo = new GenericHelperInfo(entityGroupName, 
helperBaseName);
+        if (UtilValidate.isNotEmpty(this.delegatorTenantId) && 
"org.ofbiz.tenant".equals(entityGroupName)) {
+            Debug.logInfo("Can't access entity of entityGroup = " + 
entityGroupName + " using tenant delegator "+ this.getDelegatorName()+", use 
base delegator instead", module);
+            return null;
+        }
 
-        // to avoid infinite recursion, and to behave right for shared 
org.ofbiz.tenant entities, do nothing with the tenantId if the 
entityGroupName=org.ofbiz.tenant
+        GenericHelperInfo helperInfo = new GenericHelperInfo(entityGroupName, 
helperBaseName);
         if (UtilValidate.isNotEmpty(this.delegatorTenantId)) {
             // get the JDBC parameters from the DB for the entityGroupName and 
tenantId
             try {
@@ -500,7 +503,6 @@ public class GenericDelegator implements
                 // don't complain about this too much, just log the error if 
there is one
                 Debug.logInfo(e, "Error getting TenantDataSource info for 
tenantId=" + this.delegatorTenantId + ", entityGroupName=" + entityGroupName, 
module);
             }
-
         }
         return helperInfo;
     }


Reply via email to