Author: ashish
Date: Mon Feb  9 11:37:23 2015
New Revision: 1658369

URL: http://svn.apache.org/r1658369
Log:
Applied patch from jira issue - OFBIZ-5986 - Error on accessing new tenant.
Thanks Arun for discussing things with respect to this issue. 

Modified:
    ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java

Modified: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java?rev=1658369&r1=1658368&r2=1658369&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java 
(original)
+++ 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java 
Mon Feb  9 11:37:23 2015
@@ -254,16 +254,25 @@ public class ContextFilter implements Fi
             // get tenant delegator by domain name
             String serverName = httpRequest.getServerName();
             try {
+               
                 // if tenant was specified, replace delegator with the new 
per-tenant delegator and set tenantId to session attribute
                 Delegator delegator = getDelegator(config.getServletContext());
 
                 //Use base delegator for fetching data from entity of 
entityGroup org.ofbiz.tenant 
                 Delegator baseDelegator = 
DelegatorFactory.getDelegator(delegator.getDelegatorBaseName());
                 GenericValue tenantDomainName = 
EntityQuery.use(baseDelegator).from("TenantDomainName").where("domainName", 
serverName).queryOne();
-
-                if (UtilValidate.isNotEmpty(tenantDomainName)) {
-                    String tenantId = tenantDomainName.getString("tenantId");
-
+                String tenantId = null;
+                if(UtilValidate.isNotEmpty(tenantDomainName)) {
+                    tenantId = tenantDomainName.getString("tenantId");
+                }
+                
+                if(UtilValidate.isEmpty(tenantId)) {
+                    tenantId = (String) httpRequest.getAttribute("tenantId");
+                }
+                if(UtilValidate.isEmpty(tenantId)) {
+                    tenantId = (String) httpRequest.getParameter("tenantId");
+                }
+                if (UtilValidate.isNotEmpty(tenantId)) {
                     // if the request path is a root mount then redirect to 
the initial path
                     if (UtilValidate.isNotEmpty(requestPath) && 
requestPath.equals(contextUri)) {
                         GenericValue tenant = 
EntityQuery.use(baseDelegator).from("Tenant").where("tenantId", 
tenantId).queryOne();
@@ -296,30 +305,6 @@ public class ContextFilter implements Fi
                     request.setAttribute("security", security);
                     
                     request.setAttribute("tenantId", tenantId);
-                } else if (delegator.getDelegatorBaseName() != 
delegator.getDelegatorName()) {
-                    
-                    // Set default delegator
-                    Debug.logInfo("No tenant found for requested domain name " 
+ serverName, module);
-                    Debug.logInfo("Setting default delegator and dispatcher", 
module);
-                    String delegatorName = delegator.getDelegatorBaseName();
-                    httpRequest.getSession().setAttribute("delegatorName", 
delegatorName);
-
-                    // after this line the delegator is replaced with the new 
per-tenant delegator
-                    delegator = DelegatorFactory.getDelegator(delegatorName);
-                    config.getServletContext().setAttribute("delegator", 
delegator);
-
-                    // clear web context objects
-                    config.getServletContext().setAttribute("security", null);
-                    config.getServletContext().setAttribute("dispatcher", 
null);
-
-                    // initialize security
-                    Security security = getSecurity();
-                    // initialize the services dispatcher
-                    LocalDispatcher dispatcher = 
getDispatcher(config.getServletContext());
-
-                    // set web context objects
-                    request.setAttribute("dispatcher", dispatcher);
-                    request.setAttribute("security", security);
                 }
 
                 // NOTE DEJ20101130: do NOT always put the delegator name in 
the user's session because the user may 


Reply via email to