Author: hansbak
Date: Mon Nov 8 06:54:17 2010
New Revision: 1032472
URL: http://svn.apache.org/viewvc?rev=1032472&view=rev
Log:
next to setting of the tenent id, now also the initial mountpoint if entered
also refactoring:
- set delegator, dispatcher and security from session, servlet context or
request's attribute to app context of birt engine before render and send email
- add the initialPath field to Tenant entity
- create the tenant context which as a default servlet using
org.ofbiz.webapp.control.TenantServlet in the catalina container and check the
multitenant property for initial the tenant context with root mount /
- move the changing a multi tenant delegator statement from ControlServlet to
ContextFilter that could apply to every servlets
(implementation by Chattree Richard)
Added:
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/TenantServlet.java
Modified:
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/BirtWorker.java
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/email/BirtEmailServices.java
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/report/servlet/BirtEngineServlet.java
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/report/servlet/BirtViewerServlet.java
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/webapp/view/BirtViewHandler.java
ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java
ofbiz/trunk/framework/common/webcommon/login.ftl
ofbiz/trunk/framework/entity/entitydef/entitymodel.xml
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
Modified: ofbiz/trunk/framework/birt/src/org/ofbiz/birt/BirtWorker.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/birt/src/org/ofbiz/birt/BirtWorker.java?rev=1032472&r1=1032471&r2=1032472&view=diff
==============================================================================
--- ofbiz/trunk/framework/birt/src/org/ofbiz/birt/BirtWorker.java (original)
+++ ofbiz/trunk/framework/birt/src/org/ofbiz/birt/BirtWorker.java Mon Nov 8
06:54:17 2010
@@ -23,6 +23,11 @@ import java.sql.SQLException;
import java.util.Locale;
import java.util.Map;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
import org.eclipse.birt.report.engine.api.EXCELRenderOption;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.HTMLRenderOption;
@@ -36,7 +41,11 @@ import org.eclipse.birt.report.engine.ap
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.GeneralException;
import org.ofbiz.base.util.UtilGenerics;
+import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.birt.container.BirtContainer;
+import org.ofbiz.entity.Delegator;
+import org.ofbiz.security.Security;
+import org.ofbiz.service.LocalDispatcher;
public class BirtWorker {
@@ -138,4 +147,45 @@ public class BirtWorker {
task.run();
task.close();
}
+
+ public static void setWebContextObjects(IReportEngine engine,
HttpServletRequest request, HttpServletResponse response) {
+ HttpSession session = request.getSession();
+ ServletContext servletContext = session.getServletContext();
+
+ // set delegator
+ Delegator delegator = (Delegator) session.getAttribute("delegator");
+ if (UtilValidate.isEmpty(delegator)) {
+ delegator = (Delegator) servletContext.getAttribute("delegator");
+ }
+ if (UtilValidate.isEmpty(delegator)) {
+ delegator = (Delegator) request.getAttribute("delegator");
+ }
+ if (UtilValidate.isNotEmpty(delegator)) {
+ engine.getConfig().getAppContext().put("delegator", delegator);
+ }
+
+ // set delegator
+ LocalDispatcher dispatcher = (LocalDispatcher)
session.getAttribute("dispatcher");
+ if (UtilValidate.isEmpty(dispatcher)) {
+ dispatcher = (LocalDispatcher)
servletContext.getAttribute("dispatcher");
+ }
+ if (UtilValidate.isEmpty(dispatcher)) {
+ dispatcher = (LocalDispatcher) request.getAttribute("dispatcher");
+ }
+ if (UtilValidate.isNotEmpty(dispatcher)) {
+ engine.getConfig().getAppContext().put("dispatcher", dispatcher);
+ }
+
+ // set security
+ Security security = (Security) session.getAttribute("security");
+ if (UtilValidate.isEmpty(security)) {
+ security = (Security) servletContext.getAttribute("security");
+ }
+ if (UtilValidate.isEmpty(security)) {
+ security = (Security) request.getAttribute("security");
+ }
+ if (UtilValidate.isNotEmpty(security)) {
+ engine.getConfig().getAppContext().put("security", dispatcher);
+ }
+ }
}
Modified:
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/email/BirtEmailServices.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/birt/src/org/ofbiz/birt/email/BirtEmailServices.java?rev=1032472&r1=1032471&r2=1032472&view=diff
==============================================================================
--- ofbiz/trunk/framework/birt/src/org/ofbiz/birt/email/BirtEmailServices.java
(original)
+++ ofbiz/trunk/framework/birt/src/org/ofbiz/birt/email/BirtEmailServices.java
Mon Nov 8 06:54:17 2010
@@ -46,6 +46,8 @@ import org.ofbiz.base.util.string.Flexib
import org.ofbiz.birt.BirtWorker;
import org.ofbiz.birt.container.BirtContainer;
import org.ofbiz.common.email.NotificationServices;
+import org.ofbiz.entity.Delegator;
+import org.ofbiz.security.Security;
import org.ofbiz.service.DispatchContext;
import org.ofbiz.service.LocalDispatcher;
import org.ofbiz.service.ServiceUtil;
@@ -69,7 +71,10 @@ public class BirtEmailServices {
*/
public static Map<String, Object> sendBirtMail(DispatchContext ctx,
Map<String, ? extends Object> context) {
Map<String, Object> serviceContext = UtilMisc.makeMapWritable(context);
+ Delegator delegator = ctx.getDelegator();
LocalDispatcher dispatcher = ctx.getDispatcher();
+ Security security = ctx.getSecurity();
+
String webSiteId = (String) serviceContext.remove("webSiteId");
String bodyText = (String) serviceContext.remove("bodyText");
String bodyScreenUri = (String) serviceContext.remove("bodyScreenUri");
@@ -153,11 +158,14 @@ public class BirtEmailServices {
birtContentType = "application/pdf";
}
IReportEngine engine = BirtContainer.getReportEngine();
+ engine.getConfig().getAppContext().put("delegator", delegator);
+ engine.getConfig().getAppContext().put("dispatcher",
dispatcher);
+ engine.getConfig().getAppContext().put("security", security);
+
InputStream reportInputStream =
BirtFactory.getReportInputStreamFromLocation(birtReportLocation);
IReportRunnable design =
engine.openReportDesign(reportInputStream);
- Debug.logInfo("Export report as content type:" +
birtContentType, module);
- BirtWorker.exportReport(design, context, birtContentType,
baos);
- // and generate the PDF
+ Debug.logInfo("Export report as content type:" +
birtContentType, module);
+ BirtWorker.exportReport(design, context, birtContentType,
baos);
baos.flush();
baos.close();
Modified:
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/report/servlet/BirtEngineServlet.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/birt/src/org/ofbiz/birt/report/servlet/BirtEngineServlet.java?rev=1032472&r1=1032471&r2=1032472&view=diff
==============================================================================
---
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/report/servlet/BirtEngineServlet.java
(original)
+++
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/report/servlet/BirtEngineServlet.java
Mon Nov 8 06:54:17 2010
@@ -24,9 +24,12 @@ import javax.servlet.http.HttpServletRes
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.report.context.IContext;
+import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.presentation.aggregation.layout.EngineFragment;
import
org.eclipse.birt.report.presentation.aggregation.layout.RequesterFragment;
import org.eclipse.birt.report.service.BirtReportServiceFactory;
+import org.ofbiz.birt.BirtWorker;
+import org.ofbiz.birt.container.BirtContainer;
import org.ofbiz.birt.report.context.OFBizBirtContext;
import org.ofbiz.birt.report.service.OFBizBirtViewerReportService;
@@ -52,6 +55,9 @@ public class BirtEngineServlet extends o
protected IContext __getContext( HttpServletRequest request,
HttpServletResponse response ) throws BirtException
{
+ IReportEngine reportEngine = BirtContainer.getReportEngine();
+ BirtWorker.setWebContextObjects(reportEngine, request, response);
+
BirtReportServiceFactory.getReportService( ).setContext(
getServletContext( ), null );
return new OFBizBirtContext( request, response );
Modified:
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/report/servlet/BirtViewerServlet.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/birt/src/org/ofbiz/birt/report/servlet/BirtViewerServlet.java?rev=1032472&r1=1032471&r2=1032472&view=diff
==============================================================================
---
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/report/servlet/BirtViewerServlet.java
(original)
+++
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/report/servlet/BirtViewerServlet.java
Mon Nov 8 06:54:17 2010
@@ -24,10 +24,13 @@ import javax.servlet.http.HttpServletRes
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.report.context.IContext;
+import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.presentation.aggregation.layout.FramesetFragment;
import org.eclipse.birt.report.presentation.aggregation.layout.RunFragment;
import org.eclipse.birt.report.service.BirtReportServiceFactory;
import org.eclipse.birt.report.servlet.ViewerServlet;
+import org.ofbiz.birt.BirtWorker;
+import org.ofbiz.birt.container.BirtContainer;
import org.ofbiz.birt.report.context.OFBizBirtContext;
import org.ofbiz.birt.report.service.OFBizBirtViewerReportService;
@@ -56,6 +59,9 @@ public class BirtViewerServlet extends V
protected IContext __getContext( HttpServletRequest request,
HttpServletResponse response ) throws BirtException
{
+ IReportEngine reportEngine = BirtContainer.getReportEngine();
+ BirtWorker.setWebContextObjects(reportEngine, request, response);
+
BirtReportServiceFactory.getReportService( ).setContext(
getServletContext( ), null );
return new OFBizBirtContext( request, response );
Modified:
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/webapp/view/BirtViewHandler.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/birt/src/org/ofbiz/birt/webapp/view/BirtViewHandler.java?rev=1032472&r1=1032471&r2=1032472&view=diff
==============================================================================
---
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/webapp/view/BirtViewHandler.java
(original)
+++
ofbiz/trunk/framework/birt/src/org/ofbiz/birt/webapp/view/BirtViewHandler.java
Mon Nov 8 06:54:17 2010
@@ -70,6 +70,7 @@ public class BirtViewHandler implements
public void render(String name, String page, String info,
String contentType, String encoding, HttpServletRequest request,
HttpServletResponse response) throws ViewHandlerException {
+
try {
IReportEngine engine = BirtContainer.getReportEngine();
// open report design
@@ -80,6 +81,8 @@ public class BirtViewHandler implements
} else {
design =
engine.openReportDesign(servletContext.getRealPath(page));
}
+
+ BirtWorker.setWebContextObjects(engine, request, response);
Map<String, Object> context = FastMap.newInstance();
// set parameters from request
Modified:
ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java?rev=1032472&r1=1032471&r2=1032472&view=diff
==============================================================================
---
ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java
(original)
+++
ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java
Mon Nov 8 06:54:17 2010
@@ -67,6 +67,7 @@ import org.ofbiz.base.container.Containe
import org.ofbiz.base.container.ContainerConfig.Container.Property;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.SSLUtil;
+import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.base.util.UtilURL;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.base.util.UtilXml;
@@ -620,6 +621,43 @@ public class CatalinaContainer implement
return context;
}
+ protected Context createTenantContext() throws ContainerException {
+ String server = "default-server";
+ Engine engine = engines.get(server);
+ if (engine == null) {
+ Debug.logWarning("Server with name [" + server + "] not found;",
module);
+ return null;
+ }
+
+ // create the web application context
+ StandardContext context = (StandardContext) embedded.createContext("/",
System.getProperty("ofbiz.home"));
+ context.setJ2EEApplication(J2EE_APP);
+ context.setJ2EEServer(J2EE_SERVER);
+
context.setLoader(embedded.createLoader(ClassLoaderContainer.getClassLoader()));
+ context.setReloadable(contextReloadable);
+ context.setDistributable(distribute);
+ context.setCrossContext(crossContext);
+
+
+ // create the Default Servlet instance to mount
+ StandardWrapper defaultServlet = new StandardWrapper();
+
defaultServlet.setServletClass("org.ofbiz.webapp.control.TenantServlet");
+ defaultServlet.setServletName("default");
+ defaultServlet.setLoadOnStartup(1);
+ defaultServlet.addInitParameter("debug", "0");
+ defaultServlet.addInitParameter("listing", "true");
+ defaultServlet.addMapping("/");
+ context.addChild(defaultServlet);
+ context.addServletMapping("/", "default");
+
+ Host host = hosts.get(engine.getName() + "._DEFAULT");
+ context.setRealm(host.getRealm());
+ host.addChild(context);
+ context.getMapper().setDefaultHostName(host.getName());
+
+ return context;
+ }
+
protected void loadComponents() throws ContainerException {
if (embedded == null) {
throw new ContainerException("Cannot load web applications without
Embedded instance!");
@@ -641,6 +679,12 @@ public class CatalinaContainer implement
}
}
}
+
+ // if the multitenant is enabled then create the tenant context
+ String useMultitenant = UtilProperties.getPropertyValue("general.properties",
"multitenant");
+ if ("Y".equals(useMultitenant) &&
UtilValidate.isEmpty(delegator.getDelegatorTenantId())) {
+ createTenantContext();
+ }
}
public void stop() throws ContainerException {
Modified: ofbiz/trunk/framework/common/webcommon/login.ftl
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/login.ftl?rev=1032472&r1=1032471&r2=1032472&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/webcommon/login.ftl (original)
+++ ofbiz/trunk/framework/common/webcommon/login.ftl Mon Nov 8 06:54:17 2010
@@ -42,13 +42,15 @@ under the License.
<td class="label">${uiLabelMap.CommonPassword}</td>
<td><input type="password" name="PASSWORD" value=""
size="20"/></td>
</tr>
- <#if ("Y" == useMultitenant && !sessionAttributes.tenantId?exists) >
- <tr>
- <td class="label">${uiLabelMap.CommonTenantId}</td>
- <td><input type="text" name="tenantId" value="${parameters.tenantId?if_exists}"
size="20"/></td>
- </tr>
- <#elseif ("Y" == useMultitenant && sessionAttributes.tenantId?exists)
>
- <input type="hidden" name="tenantId"
value="${sessionAttributes.tenantId?if_exists}"/>
+ <#if ("Y" == useMultitenant) >
+ <#if !requestAttributes.tenantId?exists>
+ <tr>
+ <td class="label">${uiLabelMap.CommonTenantId}</td>
+ <td><input type="text" name="tenantId"
value="${parameters.tenantId?if_exists}" size="20"/></td>
+ </tr>
+ <#else>
+ <input type="hidden" name="tenantId"
value="${requestAttributes.tenantId?if_exists}"/>
+ </#if>
</#if>
<tr>
<td colspan="2" align="center">
Modified: ofbiz/trunk/framework/entity/entitydef/entitymodel.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/entitydef/entitymodel.xml?rev=1032472&r1=1032471&r2=1032472&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/entitydef/entitymodel.xml (original)
+++ ofbiz/trunk/framework/entity/entitydef/entitymodel.xml Mon Nov 8 06:54:17
2010
@@ -67,6 +67,7 @@ under the License.
<field name="tenantId" type="id-ne"/>
<field name="tenantName" type="name"/>
<field name="domainName" type="long-varchar"/>
+ <field name="initialPath" type="value"/>
<field name="disabled" type="indicator"><description>Disabled if 'Y', defaults to
'N' (not disabled).</description></field>
<prim-key field="tenantId"/>
</entity>
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=1032472&r1=1032471&r2=1032472&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 Nov 8 06:54:17 2010
@@ -50,10 +50,16 @@ import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.StringUtil;
import org.ofbiz.base.util.UtilGenerics;
import org.ofbiz.base.util.UtilHttp;
+import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.UtilObject;
+import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.entity.Delegator;
import org.ofbiz.entity.DelegatorFactory;
+import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.entity.condition.EntityCondition;
+import org.ofbiz.entity.util.EntityUtil;
import org.ofbiz.security.Security;
import org.ofbiz.security.SecurityConfigurationException;
import org.ofbiz.security.SecurityFactory;
@@ -266,6 +272,52 @@ public class ContextFilter implements Fi
return;
}
}
+
+ // check if multi tenant is enabled
+ String useMultitenant = UtilProperties.getPropertyValue("general.properties",
"multitenant");
+ if ("Y".equals(useMultitenant)) {
+ // get tenant delegator by domain name
+ String serverName = request.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());
+ List<EntityCondition> conds = FastList.newInstance();
+ conds.add(EntityCondition.makeCondition("domainName",
serverName));
+ List<GenericValue> tenants = delegator.findList("Tenant",
EntityCondition.makeCondition(conds), null, UtilMisc.toList("-createdStamp"), null, false);
+ if (UtilValidate.isNotEmpty(tenants)) {
+ GenericValue tenant = EntityUtil.getFirst(tenants);
+ String tenantId = tenant.getString("tenantId");
+
+ // make that tenant active, setup a new delegator and a
new dispatcher
+ String tenantDelegatorName = delegator.getDelegatorBaseName() +
"#" + tenantId;
+ httpRequest.getSession().setAttribute("delegatorName",
tenantDelegatorName);
+
+ // after this line the delegator is replaced with the new
per-tenant delegator
+ delegator =
DelegatorFactory.getDelegator(tenantDelegatorName);
+ config.getServletContext().setAttribute("delegator",
delegator);
+
+ // clear web context objects
+ config.getServletContext().setAttribute("authorization",
null);
+ config.getServletContext().setAttribute("security", null);
+ config.getServletContext().setAttribute("dispatcher",
null);
+
+ // initialize authorizer
+ getAuthz();
+ // initialize security
+ Security security = getSecurity();
+ // initialize the services dispatcher
+ LocalDispatcher dispatcher =
getDispatcher(config.getServletContext());
+
+ // set web context objects
+ httpRequest.getSession().setAttribute("dispatcher",
dispatcher);
+ httpRequest.getSession().setAttribute("security",
security);
+
+ request.setAttribute("tenantId", tenantId);
+ }
+ } catch (GenericEntityException e) {
+ Debug.logWarning(e, "Unable to get Tenant", module);
+ }
+ }
// we're done checking; continue on
chain.doFilter(request, response);
Modified:
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java?rev=1032472&r1=1032471&r2=1032472&view=diff
==============================================================================
---
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
(original)
+++
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
Mon Nov 8 06:54:17 2010
@@ -226,39 +226,6 @@ public class ControlServlet extends Http
String errorPage = null;
try {
- String useMultitenant =
UtilProperties.getPropertyValue("general.properties", "multitenant");
- if ("Y".equals(useMultitenant) &&
UtilValidate.isEmpty(delegator.getDelegatorTenantId())) {
- // get tenant delegator by domain name
- try {
- // if a domain name was specified for tenant, replace
delegator with the new per-tenant delegator and set tenantId to session
attribute
- List<GenericValue> tenants = delegator.findList("Tenant",
EntityCondition.makeCondition("domainName", request.getServerName()), null,
UtilMisc.toList("-createdStamp"), null, false);
- if (UtilValidate.isNotEmpty(tenants)) {
- GenericValue tenant = EntityUtil.getFirst(tenants);
- String tenantId = tenant.getString("tenantId");
-
- // make that tenant active, setup a new delegator and
a new dispatcher
- String tenantDelegatorName = delegator.getDelegatorBaseName() +
"#" + tenantId;
-
- // after this line the delegator is replaced with the
new per-tenant delegator
- delegator =
DelegatorFactory.getDelegator(tenantDelegatorName);
- session.setAttribute("tenantId", tenantId);
- session.setAttribute("delegatorName",
tenantDelegatorName);
- }
- } catch (GenericEntityException e) {
- String errMsg = "Error getting tenant by domain name: " +
request.getServerName();
- Debug.logError(e, errMsg, module);
- throw new RequestHandlerException(errMsg, e);
- }
- }
- if ("Y".equals(useMultitenant) &&
UtilValidate.isNotEmpty(delegator.getDelegatorTenantId())) {
- // re-make dispatcher from tenant delegator and change
delegator of security to use tanent delegator
- dispatcher =
ContextFilter.makeWebappDispatcher(session.getServletContext(), delegator);
- security.setDelegator(delegator);
-
- request.setAttribute("delegator", delegator);
- request.setAttribute("dispatcher", dispatcher);
- }
-
// the ServerHitBin call for the event is done inside the
doRequest method
requestHandler.doRequest(request, response, null, userLogin,
delegator);
} catch (RequestHandlerException e) {
Added:
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/TenantServlet.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/TenantServlet.java?rev=1032472&view=auto
==============================================================================
---
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/TenantServlet.java
(added)
+++
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/TenantServlet.java
Mon Nov 8 06:54:17 2010
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+
*******************************************************************************/
+package org.ofbiz.webapp.control;
+
+import java.io.IOException;
+import java.util.List;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.DelegatorFactory;
+import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.entity.condition.EntityCondition;
+import org.ofbiz.entity.util.EntityUtil;
+
+
+/**
+ * TenantServlet.java - Tenant servlet for the web application.
+ */
+@SuppressWarnings("serial")
+public class TenantServlet extends HttpServlet {
+
+ public static String module = TenantServlet.class.getName();
+
+ @Override
+ public void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ // get default delegator
+ Delegator delegator = DelegatorFactory.getDelegator("default");
+ try {
+ // if a domain name was specified for tenant, redirect to initial
path
+ List<GenericValue> tenants = delegator.findList("Tenant",
EntityCondition.makeCondition("domainName", request.getServerName()), null,
UtilMisc.toList("-createdStamp"), null, false);
+ if (UtilValidate.isNotEmpty(tenants)) {
+ GenericValue tenant = EntityUtil.getFirst(tenants);
+ String initialPath = tenant.getString("initialPath");
+ response.sendRedirect(initialPath);
+ }
+ } catch (GenericEntityException e) {
+ String errMsg = "Error getting tenant by domain name: " +
request.getServerName();
+ Debug.logError(e, errMsg, module);
+ throw new ServletException(errMsg, e);
+ }
+ }
+}