Author: bdekruijff at gmail.com
Date: Thu Feb 3 15:42:57 2011
New Revision: 762
Log:
AMDATU-282 split off tenantresolvers to seperate modules
Added:
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/ (props
changed)
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/pom.xml
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/web/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/web/tenantresolver/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/web/tenantresolver/hostname/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/web/tenantresolver/hostname/osgi/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/web/tenantresolver/hostname/osgi/HostnameTenantResolverActivator.java
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/web/tenantresolver/hostname/service/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/web/tenantresolver/hostname/service/HostnameTenantResolverExtenderFilter.java
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/ (props
changed)
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/pom.xml
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/web/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/web/tenantresolver/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/web/tenantresolver/parameter/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/web/tenantresolver/parameter/osgi/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/web/tenantresolver/parameter/osgi/ParameterTenantResolverActivator.java
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/web/tenantresolver/parameter/service/
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/web/tenantresolver/parameter/service/ParameterTenantResolverExtenderFilter.java
Removed:
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/extender/
Modified:
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/ (props
changed)
branches/amdatu-dispatcher/amdatu-release/pom.xml
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/matcher/TenantAwareServletMatcher.java
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/osgi/DispatcherServiceActivator.java
branches/amdatu-dispatcher/amdatu-web/pom.xml
branches/amdatu-dispatcher/integration-tests/pom.xml
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/OAuthTestBase.java
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/util/Login.java
branches/amdatu-dispatcher/src/main/resources/conf/amdatu-web.properties
branches/amdatu-dispatcher/src/main/resources/conf/felix-config.properties
Modified: branches/amdatu-dispatcher/amdatu-release/pom.xml
==============================================================================
--- branches/amdatu-dispatcher/amdatu-release/pom.xml (original)
+++ branches/amdatu-dispatcher/amdatu-release/pom.xml Thu Feb 3 15:42:57 2011
@@ -285,6 +285,27 @@
</dependency>
<dependency>
<groupId>org.amdatu.web</groupId>
+ <artifactId>tenantresolver-hostname</artifactId>
+ <version>${platform.version}</version>
+ <scope>runtime</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>tenantresolver-parameter</artifactId>
+ <version>${platform.version}</version>
+ <scope>runtime</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>dispatcher</artifactId>
+ <version>${platform.version}</version>
+ <scope>runtime</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
<artifactId>resource</artifactId>
<version>${platform.version}</version>
<scope>runtime</scope>
Modified:
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/matcher/TenantAwareServletMatcher.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/matcher/TenantAwareServletMatcher.java
(original)
+++
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/matcher/TenantAwareServletMatcher.java
Thu Feb 3 15:42:57 2011
@@ -20,17 +20,18 @@
import org.amdatu.core.tenant.Tenant;
import org.amdatu.web.dispatcher.DispatchServletMatcher;
-import org.amdatu.web.dispatcher.extender.TenantParameterDispatchExtender;
import org.amdatu.web.dispatcher.handler.ServletHandler;
public class TenantAwareServletMatcher implements DispatchServletMatcher {
+ public final static String TENANT_REQUESTCONTEXT_KEY =
"org.amdatu.web.dispatcher.TENANT";
+
public boolean matches(ServletHandler servletHandler, HttpServletRequest
httpServletRequest) {
if (servletHandler.getTenantId() == null ||
servletHandler.getTenantId() == "") {
return true;
}
Tenant tenant =
- (Tenant)
httpServletRequest.getAttribute(TenantParameterDispatchExtender.TENANT_REQUESTCONTEXT_KEY);
+ (Tenant)
httpServletRequest.getAttribute(TENANT_REQUESTCONTEXT_KEY);
return (tenant != null &&
servletHandler.getTenantId().equals(tenant.getId()));
}
}
Modified:
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/osgi/DispatcherServiceActivator.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/osgi/DispatcherServiceActivator.java
(original)
+++
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/osgi/DispatcherServiceActivator.java
Thu Feb 3 15:42:57 2011
@@ -22,17 +22,13 @@
import javax.servlet.Filter;
import javax.servlet.Servlet;
-import org.amdatu.core.tenant.TenantManagementService;
import org.amdatu.web.dispatcher.DispatchExtenderFilter;
import org.amdatu.web.dispatcher.DispatcherService;
-import org.amdatu.web.dispatcher.extender.TenanHostNameDispatchExtender;
-import org.amdatu.web.dispatcher.extender.TenantParameterDispatchExtender;
import org.amdatu.web.dispatcher.service.DispatcherServiceImpl;
import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
import org.apache.felix.http.api.ExtHttpService;
import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
import org.osgi.service.http.HttpContext;
import org.osgi.service.log.LogService;
@@ -69,30 +65,6 @@
.setCallbacks("addFilter", "removeFilter")
.setRequired(false))
);
-
- Dictionary<String, Object> thProperties = new Hashtable<String,
Object>();
- thProperties.put(Constants.SERVICE_RANKING, 0);
- thProperties.put(DispatcherService.PATTERN_KEY, ".*");
- manager.add(
- createComponent()
- .setInterface(DispatchExtenderFilter.class.getName(),
thProperties)
- .setImplementation(TenanHostNameDispatchExtender.class)
- // Guards filter lifecycle
-
.add(createServiceDependency().setService(DispatcherService.class).setRequired(true))
-
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true))
-
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
-
- Dictionary<String, Object> tpProperties = new Hashtable<String,
Object>();
- tpProperties.put(Constants.SERVICE_RANKING, 0);
- tpProperties.put(DispatcherService.PATTERN_KEY, ".*");
- manager.add(
- createComponent()
- .setInterface(DispatchExtenderFilter.class.getName(),
tpProperties)
- .setImplementation(TenantParameterDispatchExtender.class)
- // Guards filter lifecycle
-
.add(createServiceDependency().setService(DispatcherService.class).setRequired(true))
-
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true))
-
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
}
@Override
Modified: branches/amdatu-dispatcher/amdatu-web/pom.xml
==============================================================================
--- branches/amdatu-dispatcher/amdatu-web/pom.xml (original)
+++ branches/amdatu-dispatcher/amdatu-web/pom.xml Thu Feb 3 15:42:57 2011
@@ -41,6 +41,8 @@
<modules>
<module>dispatcher</module>
+ <module>tenantresolver-hostname</module>
+ <module>tenantresolver-parameter</module>
<module>resource</module>
<module>httpcontext</module>
<module>jsp</module>
Added: branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/pom.xml
==============================================================================
--- (empty file)
+++ branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/pom.xml
Thu Feb 3 15:42:57 2011
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.amdatu</groupId>
+ <artifactId>org.amdatu.web</artifactId>
+ <version>0.1.0-SNAPSHOT</version>
+ </parent>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>tenantresolver-hostname</artifactId>
+ <packaging>bundle</packaging>
+ <name>Amdatu Web - Tenant Hostname Resolver</name>
+ <description>Implementation of a Dispatcher ExtenderFilter that
resolves a Tenant based on the request hostname</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.amdatu.core</groupId>
+ <artifactId>tenant</artifactId>
+ <scope>provided</scope>
+ <type>bundle</type>
+ <version>0.1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>dispatcher</artifactId>
+ <scope>provided</scope>
+ <type>bundle</type>
+ <version>0.1.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <configuration>
+ <instructions>
+ <Private-Package>
org.amdatu.web.tenantresolver.hostname.*</Private-Package>
+
<Bundle-Activator>org.amdatu.web.tenantresolver.hostname.osgi.HostnameTenantResolverActivator</Bundle-Activator>
+
<Bundle-SymbolicName>org.amdatu.web.tenantresolver.hostname</Bundle-SymbolicName>
+ <Export-Package>
+
org.amdatu.web.tenantresolver.hostname
+ </Export-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added:
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/web/tenantresolver/hostname/osgi/HostnameTenantResolverActivator.java
==============================================================================
--- (empty file)
+++
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/web/tenantresolver/hostname/osgi/HostnameTenantResolverActivator.java
Thu Feb 3 15:42:57 2011
@@ -0,0 +1,53 @@
+/*
+ Copyright (C) 2010 Amdatu.org
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.amdatu.web.tenantresolver.hostname.osgi;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.amdatu.core.tenant.TenantManagementService;
+import org.amdatu.web.dispatcher.DispatchExtenderFilter;
+import org.amdatu.web.dispatcher.DispatcherService;
+import
org.amdatu.web.tenantresolver.hostname.service.HostnameTenantResolverExtenderFilter;
+import org.apache.felix.dm.DependencyActivatorBase;
+import org.apache.felix.dm.DependencyManager;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.service.log.LogService;
+
+public final class HostnameTenantResolverActivator extends
DependencyActivatorBase {
+
+ @Override
+ public void init(BundleContext context, DependencyManager manager) throws
Exception {
+
+ Dictionary<String, Object> thProperties = new Hashtable<String,
Object>();
+ thProperties.put(Constants.SERVICE_RANKING, 0);
+ thProperties.put(DispatcherService.PATTERN_KEY, ".*");
+ manager.add(
+ createComponent()
+ .setInterface(DispatchExtenderFilter.class.getName(),
thProperties)
+
.setImplementation(HostnameTenantResolverExtenderFilter.class)
+ // Guards filter lifecycle
+
.add(createServiceDependency().setService(DispatcherService.class).setRequired(true))
+
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true))
+
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
+ }
+
+ @Override
+ public void destroy(BundleContext context, DependencyManager manager)
throws Exception {
+ }
+}
Added:
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/web/tenantresolver/hostname/service/HostnameTenantResolverExtenderFilter.java
==============================================================================
--- (empty file)
+++
branches/amdatu-dispatcher/amdatu-web/tenantresolver-hostname/src/main/java/org/amdatu/web/tenantresolver/hostname/service/HostnameTenantResolverExtenderFilter.java
Thu Feb 3 15:42:57 2011
@@ -0,0 +1,78 @@
+/*
+ Copyright (C) 2010 Amdatu.org
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.amdatu.web.tenantresolver.hostname.service;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+
+import org.amdatu.core.tenant.Tenant;
+import org.amdatu.core.tenant.TenantEntity;
+import org.amdatu.core.tenant.TenantException;
+import org.amdatu.core.tenant.TenantManagementService;
+import org.amdatu.web.dispatcher.DispatchExtenderFilter;
+import org.osgi.service.log.LogService;
+
+public final class HostnameTenantResolverExtenderFilter implements
DispatchExtenderFilter {
+
+ public final static String TENANT_REQUESTCONTEXT_KEY =
"org.amdatu.web.dispatcher.TENANT";
+
+ private volatile TenantManagementService m_tenantManagementService;
+ private volatile LogService m_logService;
+
+ public void setTenentManagementService(TenantManagementService
tenantManagementService) {
+ m_tenantManagementService = tenantManagementService;
+ }
+
+ public void init(FilterConfig filterConfig) throws ServletException {
+ }
+
+ public void destroy() {
+ }
+
+ public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse, FilterChain filterChain)
+ throws IOException,
+ ServletException {
+
+ HttpServletRequest httpServletRequest = (HttpServletRequest)
servletRequest;
+ String serverName = httpServletRequest.getServerName();
+ if (serverName != null) {
+ try {
+ Map<String, String> matchProperties = new HashMap<String,
String>();
+ matchProperties.put(Tenant.HOSTNAME_PROPERTY, serverName);
+ List<TenantEntity> tenants =
m_tenantManagementService.getTenants(matchProperties);
+ if (tenants != null && tenants.size() > 0) {
+ if (tenants.size() > 1) {
+ m_logService.log(LogService.LOG_WARNING,
+ "Hostname resolved to multiple tenants..... using
first");
+ }
+ servletRequest.setAttribute(TENANT_REQUESTCONTEXT_KEY,
tenants.get(0));
+ }
+ }
+ catch (TenantException e) {}
+ }
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+}
Added: branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/pom.xml
==============================================================================
--- (empty file)
+++ branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/pom.xml
Thu Feb 3 15:42:57 2011
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.amdatu</groupId>
+ <artifactId>org.amdatu.web</artifactId>
+ <version>0.1.0-SNAPSHOT</version>
+ </parent>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>tenantresolver-parameter</artifactId>
+ <packaging>bundle</packaging>
+ <name>Amdatu Web - Tenant Parameter Resolver</name>
+ <description>Implementation of a Dispatcher ExtenderFilter that
resolves a Tenant based on the request parameter</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.amdatu.core</groupId>
+ <artifactId>tenant</artifactId>
+ <scope>provided</scope>
+ <type>bundle</type>
+ <version>0.1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>dispatcher</artifactId>
+ <scope>provided</scope>
+ <type>bundle</type>
+ <version>0.1.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <configuration>
+ <instructions>
+ <Private-Package>
org.amdatu.web.tenantresolver.parameter.*</Private-Package>
+
<Bundle-Activator>org.amdatu.web.tenantresolver.parameter.osgi.ParameterTenantResolverActivator</Bundle-Activator>
+
<Bundle-SymbolicName>org.amdatu.web.tenantresolver.parameter</Bundle-SymbolicName>
+ <Export-Package>
+
org.amdatu.web.tenantresolver.parameter
+ </Export-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added:
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/web/tenantresolver/parameter/osgi/ParameterTenantResolverActivator.java
==============================================================================
--- (empty file)
+++
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/web/tenantresolver/parameter/osgi/ParameterTenantResolverActivator.java
Thu Feb 3 15:42:57 2011
@@ -0,0 +1,53 @@
+/*
+ Copyright (C) 2010 Amdatu.org
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.amdatu.web.tenantresolver.parameter.osgi;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.amdatu.core.tenant.TenantManagementService;
+import org.amdatu.web.dispatcher.DispatchExtenderFilter;
+import org.amdatu.web.dispatcher.DispatcherService;
+import
org.amdatu.web.tenantresolver.parameter.service.ParameterTenantResolverExtenderFilter;
+import org.apache.felix.dm.DependencyActivatorBase;
+import org.apache.felix.dm.DependencyManager;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.service.log.LogService;
+
+public final class ParameterTenantResolverActivator extends
DependencyActivatorBase {
+
+ @Override
+ public void init(BundleContext context, DependencyManager manager) throws
Exception {
+
+ Dictionary<String, Object> thProperties = new Hashtable<String,
Object>();
+ thProperties.put(Constants.SERVICE_RANKING, 0);
+ thProperties.put(DispatcherService.PATTERN_KEY, ".*");
+ manager.add(
+ createComponent()
+ .setInterface(DispatchExtenderFilter.class.getName(),
thProperties)
+
.setImplementation(ParameterTenantResolverExtenderFilter.class)
+ // Guards filter lifecycle
+
.add(createServiceDependency().setService(DispatcherService.class).setRequired(true))
+
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true))
+
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
+ }
+
+ @Override
+ public void destroy(BundleContext context, DependencyManager manager)
throws Exception {
+ }
+}
Added:
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/web/tenantresolver/parameter/service/ParameterTenantResolverExtenderFilter.java
==============================================================================
--- (empty file)
+++
branches/amdatu-dispatcher/amdatu-web/tenantresolver-parameter/src/main/java/org/amdatu/web/tenantresolver/parameter/service/ParameterTenantResolverExtenderFilter.java
Thu Feb 3 15:42:57 2011
@@ -0,0 +1,73 @@
+/*
+ Copyright (C) 2010 Amdatu.org
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.amdatu.web.tenantresolver.parameter.service;
+
+import java.io.IOException;
+
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+
+import org.amdatu.core.tenant.Tenant;
+import org.amdatu.core.tenant.TenantException;
+import org.amdatu.core.tenant.TenantManagementService;
+import org.amdatu.web.dispatcher.DispatchExtenderFilter;
+import org.osgi.service.log.LogService;
+
+public final class ParameterTenantResolverExtenderFilter implements
DispatchExtenderFilter {
+
+ public final static String TENANT_REQUESTCONTEXT_KEY =
"org.amdatu.web.dispatcher.TENANT";
+ public final static String TENANT_REQUEST_PARAMETER = "tenant";
+
+ private volatile TenantManagementService m_tenantManagementService;
+ private volatile LogService m_logService;
+
+ public void setTenentManagementService(TenantManagementService
tenantManagementService) {
+ m_tenantManagementService = tenantManagementService;
+ }
+
+ public void init(FilterConfig filterConfig) throws ServletException {
+ }
+
+ public void destroy() {
+ }
+
+ public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse, FilterChain filterChain)
+ throws IOException,
+ ServletException {
+
+ HttpServletRequest httpServletRequest = (HttpServletRequest)
servletRequest;
+ String tenantId =
httpServletRequest.getParameter(TENANT_REQUEST_PARAMETER);
+ if (tenantId != null) {
+ try {
+ Tenant tenant =
m_tenantManagementService.getTenantById(tenantId);
+ if (tenant != null) {
+ servletRequest.setAttribute(TENANT_REQUESTCONTEXT_KEY,
tenant);
+ }
+ else {
+ m_logService.log(LogService.LOG_WARNING,
+ "Tenant parameter did not resolve to a tenant..... " +
tenantId);
+ }
+ }
+ catch (TenantException e) {}
+ }
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+}
Modified: branches/amdatu-dispatcher/integration-tests/pom.xml
==============================================================================
--- branches/amdatu-dispatcher/integration-tests/pom.xml (original)
+++ branches/amdatu-dispatcher/integration-tests/pom.xml Thu Feb 3
15:42:57 2011
@@ -23,8 +23,8 @@
<scope>test</scope>
</dependency>
- <!-- This is required to be first so that pax-exam classloader is not
messed up with a newer version of felix
- which would lead to java.lang.NoSuchMethodError:
org.apache.felix.framework.Logger.<init>(I)V -->
+ <!-- This is required to be first so that pax-exam classloader is not
messed up with a newer version of felix which would
+ lead to java.lang.NoSuchMethodError:
org.apache.felix.framework.Logger.<init>(I)V -->
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
@@ -164,6 +164,20 @@
<type>bundle</type>
</dependency>
<dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>tenantresolver-hostname</artifactId>
+ <version>${platform.version}</version>
+ <scope>test</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>tenantresolver-parameter</artifactId>
+ <version>${platform.version}</version>
+ <scope>test</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
<groupId>org.ops4j.pax.useradmin</groupId>
<artifactId>pax-useradmin-service</artifactId>
<version>${pax.useradmin.version}</version>
@@ -377,8 +391,7 @@
</configuration>
</plugin>
- <!-- Enable the surefire plugin only in the integration-test
- phase such that we can use Pax Exam for integration testing -->
+ <!-- Enable the surefire plugin only in the integration-test phase such
that we can use Pax Exam for integration testing -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
Modified:
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
==============================================================================
---
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
(original)
+++
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
Thu Feb 3 15:42:57 2011
@@ -306,6 +306,14 @@
return
mavenBundle().groupId("org.amdatu.web").artifactId("dispatcher").versionAsInProject();
}
+ protected static MavenArtifactProvisionOption
amdatuHostnameTenantResolver() {
+ return
mavenBundle().groupId("org.amdatu.web").artifactId("tenantresolver-hostname").versionAsInProject();
+ }
+
+ protected static MavenArtifactProvisionOption amdatuParameterResolver() {
+ return
mavenBundle().groupId("org.amdatu.web").artifactId("tenantresolver-parameter").versionAsInProject();
+ }
+
protected static MavenArtifactProvisionOption amdatuJaxRs() {
return
mavenBundle().groupId("org.amdatu.web.rest").artifactId("jaxrs").versionAsInProject();
}
Modified:
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/OAuthTestBase.java
==============================================================================
---
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/OAuthTestBase.java
(original)
+++
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/OAuthTestBase.java
Thu Feb 3 15:42:57 2011
@@ -115,6 +115,8 @@
amdatuTenantUserAdminDecoratorService(),
felixHttpServiceJetty(),
amdatuDispatcher(),
+ amdatuHostnameTenantResolver(),
+ amdatuParameterResolver(),
slingMime(),
slingCommons(),
commonsCodec(),
Modified:
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
==============================================================================
---
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
(original)
+++
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
Thu Feb 3 15:42:57 2011
@@ -71,6 +71,8 @@
amdatuTenantUserAdminDecoratorService(),
felixHttpServiceJetty(),
amdatuDispatcher(),
+ amdatuHostnameTenantResolver(),
+ amdatuParameterResolver(),
amdatuHttpContext(),
amdatuJaxRs(),
amdatuWink(),
Modified:
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/util/Login.java
==============================================================================
---
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/util/Login.java
(original)
+++
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/util/Login.java
Thu Feb 3 15:42:57 2011
@@ -27,10 +27,12 @@
Assert.assertTrue("Login failed using Amdatu account '" + username
+ "', response code=" + status,
status == HttpStatus.SC_OK);
Header cookieHeader = postMethod.getResponseHeader("Set-Cookie");
- HeaderElement[] headerElements = cookieHeader.getElements();
- for (HeaderElement headerElement : headerElements) {
- if
(TokenProvider.TOKEN_COOKIE_NAME.equalsIgnoreCase(headerElement.getName())) {
- return headerElement;
+ if (cookieHeader != null) {
+ HeaderElement[] headerElements = cookieHeader.getElements();
+ for (HeaderElement headerElement : headerElements) {
+ if
(TokenProvider.TOKEN_COOKIE_NAME.equalsIgnoreCase(headerElement.getName())) {
+ return headerElement;
+ }
}
}
}
Modified:
branches/amdatu-dispatcher/src/main/resources/conf/amdatu-web.properties
==============================================================================
--- branches/amdatu-dispatcher/src/main/resources/conf/amdatu-web.properties
(original)
+++ branches/amdatu-dispatcher/src/main/resources/conf/amdatu-web.properties
Thu Feb 3 15:42:57 2011
@@ -92,7 +92,6 @@
reference:file:amdatu-system/org.osgi.core-${org.osgi.version}.jar \
reference:file:amdatu-system/pax-useradmin-service-0.0.1-SNAPSHOT.jar \
reference:file:amdatu-system/org.apache.felix.http.jetty-2.0.4.jar \
-
reference:file:amdatu-system/org.apache.felix.http.whiteboard-2.0.4.jar \
reference:file:amdatu-system/pax-swissbox-core-1.3.0.jar \
reference:file:amdatu-system/ops4j-base-lang-1.2.2.jar \
reference:file:amdatu-system/org.apache.felix.scr-1.6.0.jar \
@@ -102,6 +101,9 @@
reference:file:amdatu-core/org.amdatu.core.config.templates-0.1.0-SNAPSHOT.jar \
reference:file:amdatu-core/org.amdatu.core.useradminstore-fs-0.1.0-SNAPSHOT.jar
\
reference:file:amdatu-application/org.amdatu.web.httpcontext-0.1.0-SNAPSHOT.jar
\
+
reference:file:amdatu-application/org.amdatu.web.dispatcher-${platform.version}.jar
\
+
reference:file:amdatu-application/org.amdatu.web.tenantresolver-hostname-${platform.version}.jar
\
+
reference:file:amdatu-application/org.amdatu.web.tenantresolver-parameter-${platform.version}.jar
\
reference:file:amdatu-application/org.amdatu.web.jsp-0.1.0-SNAPSHOT.jar \
reference:file:amdatu-application/org.amdatu.web.rest.jaxrs-0.1.0-SNAPSHOT.jar \
reference:file:amdatu-application/org.amdatu.web.rest.wink-0.1.0-SNAPSHOT.jar
Modified:
branches/amdatu-dispatcher/src/main/resources/conf/felix-config.properties
==============================================================================
--- branches/amdatu-dispatcher/src/main/resources/conf/felix-config.properties
(original)
+++ branches/amdatu-dispatcher/src/main/resources/conf/felix-config.properties
Thu Feb 3 15:42:57 2011
@@ -118,6 +118,8 @@
reference:file:amdatu-application/org.amdatu.authentication.tokenstore.mem-${platform.version}.jar
\
reference:file:amdatu-application/org.amdatu.web.httpcontext-${platform.version}.jar
\
reference:file:amdatu-application/org.amdatu.web.dispatcher-${platform.version}.jar
\
+
reference:file:amdatu-application/org.amdatu.web.tenantresolver-hostname-${platform.version}.jar
\
+
reference:file:amdatu-application/org.amdatu.web.tenantresolver-parameter-${platform.version}.jar
\
reference:file:amdatu-application/org.amdatu.web.resource-${platform.version}.jar
\
reference:file:amdatu-application/org.amdatu.web.jsp-${platform.version}.jar \
reference:file:amdatu-application/org.amdatu.opensocial.dashboard-${platform.version}.jar
\