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 |
Free forum by Nabble | Edit this page |