Author: ivol37 at gmail.com
Date: Thu Feb 3 11:01:16 2011
New Revision: 752
Log:
[AMDATU-84] Refactored tenant resolvers to use the DispatchExtenderFilter. Also
refactored tenant_id, tenant_name and hostname properties to all use the
contants available on the Tenant interface.
Added:
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/service/TenantHostnameDispatchExtenderFilter.java
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/service/TenantHostnameDispatchExtenderFilter.java
- copied, changed from r750,
/branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/TenantDispatchExtender.java
Removed:
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/TenantDispatchExtender.java
Modified:
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/osgi/Activator.java
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/osgi/Activator.java
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/ResourceBase.java
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/UsersResource.java
branches/amdatu-dispatcher/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/service/CassandraStorageProviderRegistrationServiceImpl.java
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/Tenant.java
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/service/TenantManagementServiceImpl.java
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/service/TenantUserAdminDecorator.java
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
branches/amdatu-dispatcher/amdatu-opensocial/profile/pom.xml
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/osgi/Activator.java
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/service/PersonServiceImpl.java
branches/amdatu-dispatcher/amdatu-opensocial/shindig/pom.xml
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/persistence/CassandraAppDataServiceStore.java
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/extender/TenanHostNameDispatchExtender.java
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/FilterHandlerRegistry.java
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/ServletHandlerRegistry.java
branches/amdatu-dispatcher/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkRegistrationServiceImpl.java
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/TenantManagementServiceTest.java
Modified:
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/osgi/Activator.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/osgi/Activator.java
(original)
+++
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/osgi/Activator.java
Thu Feb 3 11:01:16 2011
@@ -47,7 +47,7 @@
public void initWithDependencies(BundleContext context, DependencyManager
manager) throws Exception {
// The login service is tenant aware. This filter ensures that these
tenant aware services
// only adapt UserAdmin services which are also tenant aware.
- String filter = "(&(" + Tenant.SERVICE_PREFIX + "id=*)(" +
Constants.OBJECTCLASS
+ String filter = "(&(" + Tenant.TENANT_ID_SERVICEPROPERTY + "=*)(" +
Constants.OBJECTCLASS
+ "=" + UserAdmin.class.getName() + "))";
// Create and register the authorization service.
Modified:
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
(original)
+++
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
Thu Feb 3 11:01:16 2011
@@ -102,11 +102,11 @@
m_httpContextComponent =
m_httpContextServiceFactory.create(m_bundleContext, this);
// Retrieve the tenant
- String tenantId = (String)
component.getServiceProperties().get("tenant_id");
+ String tenantId = (String)
component.getServiceProperties().get(Tenant.TENANT_ID_SERVICEPROPERTY);
m_tenant = m_tenantManagementService.getTenantById(tenantId);
// Create a service dependency on the token provider for 'our'
tenant
- String tenantFilter = "(&(" + Tenant.SERVICE_PREFIX + "id=" +
tenantId + ")(" + Constants.OBJECTCLASS
+ String tenantFilter = "(&(" + Tenant.TENANT_ID_SERVICEPROPERTY
+ "=" + tenantId + ")(" + Constants.OBJECTCLASS
+ "=" + TokenProvider.class.getName() + "))";
m_component.add(m_dependencyManager.createServiceDependency()
.setService(TokenProvider.class,
tenantFilter).setRequired(true).setInstanceBound(true));
Modified:
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/osgi/Activator.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/osgi/Activator.java
(original)
+++
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/osgi/Activator.java
Thu Feb 3 11:01:16 2011
@@ -45,7 +45,7 @@
public void initWithDependencies(BundleContext context, DependencyManager
manager) throws Exception {
// These REST services are tenant aware. This filter ensures that these
tenant aware services
// only adapt UserAdmin services which are also tenant aware.
- String filter = "(&(" + Tenant.SERVICE_PREFIX + "id=*)(" +
Constants.OBJECTCLASS
+ String filter = "(&(" + Tenant.TENANT_ID_SERVICEPROPERTY + "=*)(" +
Constants.OBJECTCLASS
+ "=" + UserAdmin.class.getName() + "))";
// Create the users resource service and register it as REST service
Modified:
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/ResourceBase.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/ResourceBase.java
(original)
+++
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/ResourceBase.java
Thu Feb 3 11:01:16 2011
@@ -53,7 +53,7 @@
abstract class ResourceBase implements RESTService {
// FIXME: Temporary fix for AMDATU-81
private static final String DEFAULT_ADMIN_GROUP = "Administrators";
-
+
// Service dependencies injected by the depedency manager
protected volatile LogService m_logService;
protected volatile UserAdmin m_userAdmin;
@@ -69,14 +69,14 @@
m_cacheControl = new CacheControl();
m_cacheControl.setNoCache(true);
}
-
+
public void init(Component component) throws TenantException {
// Retrieve the tenant
- String tenantId = (String)
component.getServiceProperties().get("tenant_id");
+ String tenantId = (String)
component.getServiceProperties().get(Tenant.TENANT_ID_SERVICEPROPERTY);
m_tenant = m_tenantManagementService.getTenantById(tenantId);
-
+
// Create a service dependency on the token provider for 'our' tenant
- String tenantFilter = "(&(" + Tenant.SERVICE_PREFIX + "id=" +
tenantId + ")(" + Constants.OBJECTCLASS
+ String tenantFilter = "(&(" + Tenant.TENANT_ID_SERVICEPROPERTY
+ "=" + tenantId + ")(" + Constants.OBJECTCLASS
+ "=" + TokenProvider.class.getName() + "))";
m_component.add(m_dependencyManager.createServiceDependency()
.setService(TokenProvider.class,
tenantFilter).setRequired(true).setInstanceBound(true));
@@ -84,7 +84,7 @@
/**
* Returns the roles (users or groups) for the specified filter options.
- *
+ *
* @param filter the filter to pass to UserAdmin
* @param sortOrder The sort order ('ascending' or 'descending')
* @param startIndex The startindex
@@ -162,7 +162,7 @@
getBaseUrl() + "?startIndex=" + paging.pageStartIndex +
"&endIndex=" + paging.pageEndIndex
+ "&maxResults=" + maxResults;
result.addLink(new
AtomSyndicationLink().setHref(url).setRel("Alternate").setType("application/json"));
-
+
// Start
url =
getBaseUrl() + "?startIndex=" + paging.firstStartIndex +
"&endIndex=" + paging.firstEndIndex
@@ -310,7 +310,7 @@
/**
* Calculate paging
- *
+ *
* @param currentStartIndex The requested start index to display
* @param pageResults The amount of results in the current selection
* @param maxResults The maximum amount of results displayed on one
page
@@ -363,10 +363,10 @@
}
protected abstract String getBaseUrl();
-
+
// FIXME: Temporary fix for AMDATU-81. Until AMDATU-230 has been fixed we
need to make a
// quick fix, not having any form of authorization is simply not
acceptable. For now
- // we check if the user is logged in and in the "Administrators" role.
This role is
+ // we check if the user is logged in and in the "Administrators" role.
This role is
// hard coded.
protected boolean isAuthorized(HttpServletRequest request) {
String token = m_tokenProvider.getTokenFromRequest(request);
@@ -381,7 +381,7 @@
return
m_userAdmin.getAuthorization(user).hasRole(DEFAULT_ADMIN_GROUP);
}
}
- }
+ }
}
catch (TokenProviderException e) {
// Ignore invalid tokens
@@ -392,7 +392,7 @@
}
return false;
}
-
+
public void fix() {
Role role = m_userAdmin.getRole("Administrator");
Group group = (Group) m_userAdmin.getRole(DEFAULT_ADMIN_GROUP);
Modified:
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/UsersResource.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/UsersResource.java
(original)
+++
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/UsersResource.java
Thu Feb 3 11:01:16 2011
@@ -58,8 +58,8 @@
@Produces({MediaType.TEXT_PLAIN})
@Path("status")
public String status() {
- String tenantId = (String)
m_component.getServiceProperties().get(Tenant.SERVICE_PREFIX + "id");
- String tenantName = (String)
m_component.getServiceProperties().get(Tenant.SERVICE_PREFIX + "name");
+ String tenantId = (String)
m_component.getServiceProperties().get(Tenant.TENANT_ID_SERVICEPROPERTY);
+ String tenantName = (String)
m_component.getServiceProperties().get(Tenant.TENANT_NAME_SERVICEPROPERTY);
return "UserAdmin Users management for tenant '" + tenantName + " (" +
tenantId + ")' service online";
}
Modified:
branches/amdatu-dispatcher/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/service/CassandraStorageProviderRegistrationServiceImpl.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/service/CassandraStorageProviderRegistrationServiceImpl.java
(original)
+++
branches/amdatu-dispatcher/amdatu-cassandra/cassandra-useradminstore/src/main/java/org/amdatu/cassandra/useradminstore/service/CassandraStorageProviderRegistrationServiceImpl.java
Thu Feb 3 11:01:16 2011
@@ -30,6 +30,14 @@
import org.osgi.framework.Constants;
import org.osgi.service.log.LogService;
+/**
+ * This tenant aware service is responsible for registration of tenant aware
StorageProvider services. It register a
+ * StorageProvider for each available tenant (it is an adaptor of tenant
itself) but more importantly, it defines
+ * the proper service dependencies; availability of the Role ColumnFamily in
the keyspace associated with the tenant
+ * and the Cassandra Persistence Manager for the keyspace associated with the
tenant.
+ *
+ * @author ivol
+ */
public class CassandraStorageProviderRegistrationServiceImpl {
// Service dependencies injected by the depedency manager
private volatile DependencyManager m_dependencyManager;
@@ -56,7 +64,7 @@
Hashtable<String, Object> properties = new Hashtable<String,
Object>();
properties.put(UserAdminConstants.STORAGEPROVIDER_TYPE,
"Cassandra_" + m_tenant.getId());
properties.put(Constants.SERVICE_RANKING, 10);
- properties.put(Tenant.SERVICE_PREFIX + "id", m_tenant.getId());
+ properties.put(Tenant.TENANT_ID_SERVICEPROPERTY, m_tenant.getId());
m_dependencyManager.add(m_dependencyManager.createComponent()
.setInterface(new String[]{StorageProvider.class.getName()},
properties)
.setImplementation(CassandraStorageProvider.class)
@@ -65,11 +73,11 @@
.add(m_dependencyManager.createServiceDependency().setService(ColumnFamilyAvailable.class,
roleFilter).setRequired(true))
.add(m_dependencyManager.createServiceDependency().setService(CassandraDaemonService.class).setRequired(true)));
- m_logService.log(LogService.LOG_INFO, "Cassandra useradmin storage
provider started successfully for tenant '" + m_tenant.getId() + "'");
+ m_logService.log(LogService.LOG_INFO, "Cassandra UserAdmin storage
provider started successfully for tenant '" + m_tenant.getId() + "'");
} catch (TException e) {
- m_logService.log(LogService.LOG_ERROR, "Could not start cassandra
useradmin storage provider for tenant '" + m_tenant.getId() + "'", e);
+ m_logService.log(LogService.LOG_ERROR, "Could not start Cassandra
UserAdmin storage provider for tenant '" + m_tenant.getId() + "'", e);
} catch (InvalidRequestException e) {
- m_logService.log(LogService.LOG_ERROR, "Could not start cassandra
useradmin storage provider for tenant '" + m_tenant.getId() + "'", e);
+ m_logService.log(LogService.LOG_ERROR, "Could not start Cassandra
UserAdmin storage provider for tenant '" + m_tenant.getId() + "'", e);
}
}
}
Modified:
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/Tenant.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/Tenant.java
(original)
+++
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/Tenant.java
Thu Feb 3 11:01:16 2011
@@ -33,9 +33,34 @@
*/
public interface Tenant {
/**
- * All properties from the
+ * Service property with the id of the tenant available on each Tenant
service. When a tenant is registered as
+ * a service, this property will always be set on this service. It can be
retrieved from the service reference by
+ * using ref.getProperty(TENANT_ID_SERVICEPROPERTY).
+ * If a service dependency is defined
*/
- final String SERVICE_PREFIX = "tenant_";
+ final String TENANT_ID_SERVICEPROPERTY = "tenant_id";
+
+ /**
+ * Service property with the name of the tenant available on each Tenant
service. When a tenant is registered as
+ * a service, this property will always be set on this service. It can be
retrieved from the service reference by
+ * using ref.getProperty(TENANT_NAME_SERVICEPROPERTY).
+ */
+ final String TENANT_NAME_SERVICEPROPERTY = "tenant_name";
+
+ /**
+ * Service property containing any property contained by the properties
map of the tenant available on each Tenant
+ * service. When a tenant is registered as a service, all properties
available in the properties map (see getProperties)
+ * are set as service property with key [TENANT_SERVICEPROPERTY][property
name]. It can be retrieved from the service
+ * reference by using ref.getProperty(TENANT_SERVICEPROPERTY + "[property
name]").
+ */
+ final String TENANT_SERVICEPROPERTY = "tenant_property_";
+
+ /**
+ * Default property used by the platform to associate a hostname with a
Tenant. If you create a tenant in a multi-tenant
+ * environment and want to make use of amdatu-web bundles, be sure to set
this property on your tenant such that
+ * the tenant resolvers in amdatu-web can map the servername of a http
request to the corresponding tenant.
+ */
+ final String HOSTNAME_PROPERTY = "hostname";
/**
* The unique ID for this tenant.
Modified:
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/service/TenantManagementServiceImpl.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/service/TenantManagementServiceImpl.java
(original)
+++
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/service/TenantManagementServiceImpl.java
Thu Feb 3 11:01:16 2011
@@ -243,11 +243,10 @@
Properties properties = new Properties();
Map<String, String> tenantProperties = tenant.getProperties();
for (Map.Entry<String, String> entry :
tenantProperties.entrySet()) {
- properties.put(Tenant.SERVICE_PREFIX + entry.getKey(),
entry.getValue());
+ properties.put(Tenant.TENANT_SERVICEPROPERTY +
entry.getKey(), entry.getValue());
}
- properties.put(Tenant.SERVICE_PREFIX + "id", tenant.getId());
- properties.put(Tenant.SERVICE_PREFIX + "name",
tenant.getName());
-
+ properties.put(Tenant.TENANT_ID_SERVICEPROPERTY,
tenant.getId());
+ properties.put(Tenant.TENANT_NAME_SERVICEPROPERTY,
tenant.getName());
return properties;
}
Modified:
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/service/TenantUserAdminDecorator.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/service/TenantUserAdminDecorator.java
(original)
+++
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/service/TenantUserAdminDecorator.java
Thu Feb 3 11:01:16 2011
@@ -63,8 +63,8 @@
// this property.
String tenantId = pid.substring(pid.lastIndexOf("_") + 1);
m_tenant = m_tenantManagementService.getTenantById(tenantId);
- properties.put(Tenant.SERVICE_PREFIX + "id", m_tenant.getId());
- properties.put(Tenant.SERVICE_PREFIX + "name", m_tenant.getName());
+ properties.put(Tenant.TENANT_ID_SERVICEPROPERTY, m_tenant.getId());
+ properties.put(Tenant.TENANT_NAME_SERVICEPROPERTY,
m_tenant.getName());
component.setServiceProperties(properties);
m_logService.log(LogService.LOG_INFO, "Decorated UserAdmin for pid
'" + pid + "' with tenant '" + m_tenant.getId() + "'");
}
Modified:
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
(original)
+++
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
Thu Feb 3 11:01:16 2011
@@ -63,7 +63,7 @@
Dictionary properties = m_component.getServiceProperties();
properties.put(UserAdminConstants.STORAGEPROVIDER_TYPE, "FS_" +
m_tenant.getId());
- properties.put(Tenant.SERVICE_PREFIX + "id", m_tenant.getId());
+ properties.put(Tenant.TENANT_ID_SERVICEPROPERTY, m_tenant.getId());
m_component.setServiceProperties(properties);
File dataDirectory = new File(m_dataDirectoryName);
Modified:
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
(original)
+++
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
Thu Feb 3 11:01:16 2011
@@ -50,7 +50,7 @@
public void initWithDependencies(BundleContext context, DependencyManager
manager) throws Exception {
// This REST service is tenant aware. This filter ensures that these
tenant aware services
// only adapt UserAdmin services which are also tenant aware.
- String userAdminfilter = "(&(" + Tenant.SERVICE_PREFIX + "id=*)(" +
Constants.OBJECTCLASS
+ String userAdminfilter = "(&(" + Tenant.TENANT_ID_SERVICEPROPERTY +
"=*)(" + Constants.OBJECTCLASS
+ "=" + UserAdmin.class.getName() + "))";
// Create and register the gadget management service.
Modified:
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
(original)
+++
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
Thu Feb 3 11:01:16 2011
@@ -138,12 +138,12 @@
m_httpContextComponent =
m_httpContextFactoryService.create(m_bundleContext, this);
// Create a service dependency on the token provider for 'our' tenant
- String tenantId = (String)
m_component.getServiceProperties().get("tenant_id");
- String tenantFilter = "(&(" + Tenant.SERVICE_PREFIX + "id=" +
tenantId + ")(" + Constants.OBJECTCLASS
+ String tenantId = (String)
m_component.getServiceProperties().get(Tenant.TENANT_ID_SERVICEPROPERTY);
+ String tenantFilter = "(&(" + Tenant.TENANT_ID_SERVICEPROPERTY
+ "=" + tenantId + ")(" + Constants.OBJECTCLASS
+ "=" + TokenProvider.class.getName() + "))";
m_component.add(m_dependencyManager.createServiceDependency()
.setService(TokenProvider.class,
tenantFilter).setRequired(true).setInstanceBound(true));
-
+
m_logService.log(LogService.LOG_INFO, getClass().getName() + " service
initialized");
}
Modified: branches/amdatu-dispatcher/amdatu-opensocial/profile/pom.xml
==============================================================================
--- branches/amdatu-dispatcher/amdatu-opensocial/profile/pom.xml
(original)
+++ branches/amdatu-dispatcher/amdatu-opensocial/profile/pom.xml Thu Feb
3 11:01:16 2011
@@ -12,7 +12,7 @@
<packaging>bundle</packaging>
<name>Amdatu Open Social - Profile Service</name>
<description>Provides a profile service on top of the OpenSocial
services</description>
-
+
<dependencies>
<dependency>
<groupId>org.amdatu.opensocial</groupId>
@@ -31,9 +31,23 @@
<artifactId>service</artifactId>
<scope>provided</scope>
<type>bundle</type>
- </dependency>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>dispatcher</artifactId>
+ <version>${platform.version}</version>
+ <scope>provided</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.core</groupId>
+ <artifactId>tenant</artifactId>
+ <version>${platform.version}</version>
+ <scope>provided</scope>
+ <type>bundle</type>
+ </dependency>
</dependencies>
-
+
<build>
<plugins>
<plugin>
@@ -51,5 +65,5 @@
</plugin>
</plugins>
- </build>
+ </build>
</project>
Modified:
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/osgi/Activator.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/osgi/Activator.java
(original)
+++
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/osgi/Activator.java
Thu Feb 3 11:01:16 2011
@@ -16,14 +16,22 @@
*/
package org.amdatu.opensocial.profile.osgi;
+import java.util.Dictionary;
+import java.util.Hashtable;
+
import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
import org.amdatu.cassandra.listener.ColumnFamilyProvider;
+import org.amdatu.core.tenant.TenantManagementService;
import org.amdatu.opensocial.profile.PersonService;
import org.amdatu.opensocial.profile.service.FriendColumnFamilyProvider;
import org.amdatu.opensocial.profile.service.PersonServiceImpl;
+import
org.amdatu.opensocial.profile.service.TenantHostnameDispatchExtenderFilter;
+import org.amdatu.web.dispatcher.DispatchExtenderFilter;
+import org.amdatu.web.dispatcher.DispatcherService;
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 class Activator extends DependencyActivatorBase {
@@ -44,6 +52,16 @@
.setInterface(new String[]{PersonService.class.getName(),
org.apache.shindig.social.opensocial.spi.PersonService.class.getName()}, null)
.add(createServiceDependency().setService(LogService.class).setRequired(true))
.add(createServiceDependency().setService(ColumnFamilyAvailable.class,
filter).setRequired(true)));
+
+ // Register the dispatch extender filter, used to resolve tenants
+ Dictionary<String, Object> properties = new Hashtable<String,
Object>();
+ properties.put(Constants.SERVICE_RANKING, 0);
+ properties.put(DispatcherService.PATTERN_KEY, ".*");
+ manager.add(
+ createComponent()
+ .setInterface(DispatchExtenderFilter.class.getName(),
properties)
+
.setImplementation(TenantHostnameDispatchExtenderFilter.class)
+
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true)));
}
@Override
Modified:
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/service/PersonServiceImpl.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/service/PersonServiceImpl.java
(original)
+++
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/service/PersonServiceImpl.java
Thu Feb 3 11:01:16 2011
@@ -30,7 +30,6 @@
import org.amdatu.authorization.login.service.LoginService;
import org.amdatu.opensocial.profile.PersonService;
-import org.amdatu.opensocial.shindig.TenantDispatchExtender;
import org.apache.shindig.auth.SecurityToken;
import org.apache.shindig.common.util.ImmediateFuture;
import org.apache.shindig.protocol.ProtocolException;
@@ -47,7 +46,7 @@
import org.osgi.service.useradmin.User;
/**
- * Implementation of the person service.
+ * Implementation of the person service. The person service itself is not
tenant aware
* @author ivol
*/
public class PersonServiceImpl implements PersonService {
@@ -92,7 +91,7 @@
List<Person> result = new ArrayList<Person>();
try {
// First retrieve all Users
- Role[] allRoles =
TenantDispatchExtender.getUserAdmin().getRoles(null);
+ Role[] allRoles =
TenantHostnameDispatchExtenderFilter.getUserAdmin().getRoles(null);
for (Role role : allRoles) {
if (role.getType() == Role.USER) {
Object person =
role.getProperties().get(PersonService.OPEN_SOCIAL_PERSON_PROPERTIES_KEY);
@@ -135,7 +134,7 @@
private User getUser(String personId) {
// Retrieved all persons that match the specified profile.
try {
- return
TenantDispatchExtender.getUserAdmin().getUser(LoginService.USER_NAME_CREDENTIAL_KEY,
personId);
+ return
TenantHostnameDispatchExtenderFilter.getUserAdmin().getUser(LoginService.USER_NAME_CREDENTIAL_KEY,
personId);
} catch (InvalidSyntaxException e) {
m_logService.log(LogService.LOG_ERROR, "Could not
retrieve user for person '" + personId + "'.", e);
return null;
Added:
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/service/TenantHostnameDispatchExtenderFilter.java
==============================================================================
--- (empty file)
+++
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/service/TenantHostnameDispatchExtenderFilter.java
Thu Feb 3 11:01:16 2011
@@ -0,0 +1,111 @@
+/*
+ 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.opensocial.profile.service;
+
+import java.io.IOException;
+import java.util.List;
+
+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.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.useradmin.UserAdmin;
+
+/**
+ * This tenant dispatch extender filter is registered on .* and captures all
HTTP requests to resolve the
+ * tenant from the hostname of the request. It stores the tenant for the
lifetime of that request on a
+ * ThreadLocal so that the PersonServiceImpl can retrieve the tenant from this
ThreadLocal. Note that
+ * the PersonServiceImpl is not tenant aware, nor does it have access to the
HTTP request.
+ *
+ * @author ivol
+ */
+public class TenantHostnameDispatchExtenderFilter implements
DispatchExtenderFilter {
+ // Service dependencies, injected by the framework
+ private volatile TenantManagementService m_tenantManagementService;
+ private static volatile BundleContext m_bundleContext;
+
+ // Tenant context information is bound to a ThreadLocal variable.
+ private static ThreadLocal<Tenant> m_properties = null;
+
+ public void init(FilterConfig filterConfig) throws ServletException {
+ // Create the threadlocal
+ m_properties = new ThreadLocal<Tenant>();
+ }
+
+ public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
+ HttpServletRequest httpServletRequest = (HttpServletRequest)
request;
+ String serverName = httpServletRequest.getServerName();
+ if (serverName != null) {
+ try {
+ List<TenantEntity> tenants =
m_tenantManagementService.getTenants();
+ for (TenantEntity tenant : tenants) {
+ if
(serverName.equals(tenant.getProperties().get(Tenant.HOSTNAME_PROPERTY))) {
+ // The servername of the
request matches the hostname of this tenant so
+ // set the tenant on the
threadlocal variable
+ m_properties.set(tenant);
+ }
+ }
+ }
+ catch (TenantException e) {}
+ }
+
+ chain.doFilter(request, response);
+
+ // Set the tenant to null
+ m_properties.set(null);
+ }
+
+ public void destroy() {
+ // Destroy the threadlocal
+ m_properties = null;
+ }
+
+ /**
+ * Returns the tenant on the ThreadLocal.
+ * @return the current tenant
+ */
+ public static Tenant getTenant() {
+ return m_properties.get();
+ }
+
+ /**
+ * Returns the UserAdmin service that is associated with the current
tenant.
+ * @return the UserAdmin service that is associated with the current
tenant.
+ * @throws InvalidSyntaxException In case the UserAdmin service
references could not be retrieved.
+ */
+ public static UserAdmin getUserAdmin() throws InvalidSyntaxException {
+ Tenant tenant = getTenant();
+ ServiceReference[] refs =
m_bundleContext.getAllServiceReferences(UserAdmin.class.getName(), null);
+ for (ServiceReference ref : refs) {
+ if
(tenant.getId().equals(ref.getProperty(Tenant.TENANT_ID_SERVICEPROPERTY))) {
+ return (UserAdmin)
m_bundleContext.getService(ref);
+ }
+ }
+ return null;
+ }
+}
Modified: branches/amdatu-dispatcher/amdatu-opensocial/shindig/pom.xml
==============================================================================
--- branches/amdatu-dispatcher/amdatu-opensocial/shindig/pom.xml
(original)
+++ branches/amdatu-dispatcher/amdatu-opensocial/shindig/pom.xml Thu Feb
3 11:01:16 2011
@@ -146,6 +146,13 @@
<scope>provided</scope>
<type>bundle</type>
</dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>dispatcher</artifactId>
+ <version>${platform.version}</version>
+ <scope>provided</scope>
+ <type>bundle</type>
+ </dependency>
</dependencies>
<build>
Modified:
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java
(original)
+++
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java
Thu Feb 3 11:01:16 2011
@@ -29,7 +29,6 @@
import org.amdatu.opensocial.shindig.OAuthModule;
import org.amdatu.opensocial.shindig.ShindigService;
import org.amdatu.opensocial.shindig.SocialApiModule;
-import org.amdatu.opensocial.shindig.TenantDispatchExtender;
import org.amdatu.opensocial.shindig.module.ConfigurationAdminGuiceModule;
import org.amdatu.opensocial.shindig.module.OAuthModuleImpl;
import org.amdatu.opensocial.shindig.module.SocialApiModuleImpl;
@@ -40,6 +39,9 @@
import org.amdatu.opensocial.shindig.service.GuiceInjectorService;
import org.amdatu.opensocial.shindig.service.GuiceInjectorServiceImpl;
import org.amdatu.opensocial.shindig.service.ShindigRegistrationServiceImpl;
+import
org.amdatu.opensocial.shindig.service.TenantHostnameDispatchExtenderFilter;
+import org.amdatu.web.dispatcher.DispatchExtenderFilter;
+import org.amdatu.web.dispatcher.DispatcherService;
import org.amdatu.web.httpcontext.HttpContextServiceFactory;
import org.amdatu.web.httpcontext.ResourceProvider;
import org.apache.felix.dm.DependencyActivatorBase;
@@ -148,11 +150,10 @@
Dictionary<String, Object> properties = new Hashtable<String,
Object>();
properties.put("pattern", ".*");
properties.put(Constants.SERVICE_RANKING, 0);
- properties.put("contextId", RESOURCE_ID);
manager.add(
createComponent()
- .setInterface(Filter.class.getName(), properties)
- .setImplementation(TenantDispatchExtender.class)
+ .setInterface(DispatchExtenderFilter.class.getName(),
properties)
+ .setImplementation(TenantHostnameDispatchExtenderFilter.class)
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true)));
}
Modified:
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/persistence/CassandraAppDataServiceStore.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/persistence/CassandraAppDataServiceStore.java
(original)
+++
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/persistence/CassandraAppDataServiceStore.java
Thu Feb 3 11:01:16 2011
@@ -26,7 +26,7 @@
import org.amdatu.libraries.utilities.ConversionUtil;
import org.amdatu.opensocial.shindig.OpenSocialConstants;
-import org.amdatu.opensocial.shindig.TenantDispatchExtender;
+import
org.amdatu.opensocial.shindig.service.TenantHostnameDispatchExtenderFilter;
import org.apache.shindig.auth.SecurityToken;
import org.apache.shindig.common.util.ImmediateFuture;
import org.apache.shindig.protocol.DataCollection;
@@ -42,7 +42,11 @@
import com.google.common.collect.Maps;
/**
- * This class is responsible for storage of the OpenSocial content called
"AppData".
+ * This class is responsible for storage of the OpenSocial content called
"AppData". It is not tenant aware itself, but it
+ * resolves users against a tenant aware UserAdmin. To resolve the proper
tenant currently a Tenant dispatch extender filter
+ * is used to puts the current tenant on a ThreadLocal variable. This is a
temporary solution, until a better solution is
+ * available.
+ *
* @author ivol
*/
public class CassandraAppDataServiceStore implements AppDataService {
@@ -144,7 +148,7 @@
private User getUser(UserId userId, SecurityToken token) throws
InvalidSyntaxException {
String id = userId.getUserId(token);
if (!"".equals(userId.getUserId(token))) {
- Role user =
TenantDispatchExtender.getUserAdmin().getRole(id);
+ Role user =
TenantHostnameDispatchExtenderFilter.getUserAdmin().getRole(id);
if (user != null) {
return (User) user;
}
Copied:
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/service/TenantHostnameDispatchExtenderFilter.java
(from r750,
/branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/TenantDispatchExtender.java)
==============================================================================
---
/branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/TenantDispatchExtender.java
(original)
+++
branches/amdatu-dispatcher/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/service/TenantHostnameDispatchExtenderFilter.java
Thu Feb 3 11:01:16 2011
@@ -1,9 +1,8 @@
-package org.amdatu.opensocial.shindig;
+package org.amdatu.opensocial.shindig.service;
import java.io.IOException;
import java.util.List;
-import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
@@ -15,55 +14,79 @@
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.framework.BundleContext;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.osgi.service.useradmin.UserAdmin;
-public class TenantDispatchExtender implements Filter {
+/**
+ * This tenant dispatch extender filter is registered on .* and captures all
HTTP requests to resolve the
+ * tenant from the hostname of the request. It stores the tenant for the
lifetime of that request on a
+ * ThreadLocal so that the PersonServiceImpl can retrieve the tenant from this
ThreadLocal. Note that
+ * the CassandraAppDataServiceStore is not tenant aware, nor does it have
access to the HTTP request.
+ *
+ * @author ivol
+ */
+public class TenantHostnameDispatchExtenderFilter implements
DispatchExtenderFilter {
+ // Service dependencies, injected by the framework
private volatile TenantManagementService m_tenantManagementService;
private static volatile BundleContext m_bundleContext;
-
- // Tenant context information is bound to a ThreadLocal variable.
- private static ThreadLocal<Tenant> m_properties = new
ThreadLocal<Tenant>();
- public void destroy() {
+ // Tenant context information is bound to a ThreadLocal variable.
+ private static ThreadLocal<Tenant> m_properties = null;
+
+ public void init(FilterConfig filterConfig) throws ServletException {
+ // Create the threadlocal
+ m_properties = new ThreadLocal<Tenant>();
}
- public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
- throws IOException, ServletException {
-
- HttpServletRequest httpServletRequest = (HttpServletRequest) request;
- String serverName = httpServletRequest.getServerName();
- if (serverName != null) {
- try {
- List<TenantEntity> tenants =
m_tenantManagementService.getTenants();
- for (TenantEntity tenant : tenants) {
- if
(serverName.equals(tenant.getProperties().get("hostname"))) {
- m_properties.set(tenant);
- }
- }
- }
- catch (TenantException e) {}
- }
-
- chain.doFilter(request, response);
-
- m_properties.set(null);
+ public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
+ HttpServletRequest httpServletRequest = (HttpServletRequest)
request;
+ String serverName = httpServletRequest.getServerName();
+ if (serverName != null) {
+ try {
+ List<TenantEntity> tenants =
m_tenantManagementService.getTenants();
+ for (TenantEntity tenant : tenants) {
+ if
(serverName.equals(tenant.getProperties().get(Tenant.HOSTNAME_PROPERTY))) {
+ // The servername of the
request matches the hostname of this tenant so
+ // set the tenant on the
threadlocal variable
+ m_properties.set(tenant);
+ }
+ }
+ }
+ catch (TenantException e) {}
+ }
+
+ chain.doFilter(request, response);
+
+ // Set the tenant to null
+ m_properties.set(null);
}
- public void init(FilterConfig filterConfig) throws ServletException {
+ public void destroy() {
+ // Destroy the threadlocal
+ m_properties = null;
}
+ /**
+ * Returns the tenant on the ThreadLocal.
+ * @return the current tenant
+ */
public static Tenant getTenant() {
return m_properties.get();
}
-
+
+ /**
+ * Returns the UserAdmin service that is associated with the current
tenant.
+ * @return the UserAdmin service that is associated with the current
tenant.
+ * @throws InvalidSyntaxException In case the UserAdmin service
references could not be retrieved.
+ */
public static UserAdmin getUserAdmin() throws InvalidSyntaxException {
Tenant tenant = getTenant();
ServiceReference[] refs =
m_bundleContext.getAllServiceReferences(UserAdmin.class.getName(), null);
for (ServiceReference ref : refs) {
- if
(tenant.getId().equals(ref.getProperty("tenant_id"))) {
+ if
(tenant.getId().equals(ref.getProperty(Tenant.TENANT_ID_SERVICEPROPERTY))) {
return (UserAdmin)
m_bundleContext.getService(ref);
}
}
Modified:
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/extender/TenanHostNameDispatchExtender.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/extender/TenanHostNameDispatchExtender.java
(original)
+++
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/extender/TenanHostNameDispatchExtender.java
Thu Feb 3 11:01:16 2011
@@ -12,17 +12,16 @@
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.amdatu.web.dispatcher.DispatcherService;
import org.osgi.service.log.LogService;
public final class TenanHostNameDispatchExtender implements
DispatchExtenderFilter {
public final static String TENANT_REQUESTCONTEXT_KEY =
"org.amdatu.web.dispatcher.TENANT";
- public final static String TENANT_PROPERTY_PARAMETER = "hostname";
private volatile TenantManagementService m_tenantManagementService;
private volatile LogService m_logService;
@@ -47,7 +46,7 @@
if (serverName != null) {
try {
Map<String, String> matchProperties = new HashMap<String,
String>();
- matchProperties.put(TENANT_PROPERTY_PARAMETER, serverName);
+ matchProperties.put(Tenant.TENANT_ID_SERVICEPROPERTY,
serverName);
List<TenantEntity> tenants =
m_tenantManagementService.getTenants(matchProperties);
if (tenants != null && tenants.size() > 0) {
if (tenants.size() > 1) {
Modified:
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/FilterHandlerRegistry.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/FilterHandlerRegistry.java
(original)
+++
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/FilterHandlerRegistry.java
Thu Feb 3 11:01:16 2011
@@ -10,6 +10,7 @@
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
+import org.amdatu.core.tenant.Tenant;
import org.amdatu.web.dispatcher.DispatchExtenderFilter;
import org.amdatu.web.dispatcher.DispatchFilterMatcher;
import org.amdatu.web.dispatcher.DispatcherService;
@@ -94,7 +95,7 @@
return;
}
- String tenant = getStringProperty(serviceReference, "tenant_id");
+ String tenant = getStringProperty(serviceReference,
Tenant.TENANT_ID_SERVICEPROPERTY);
HandlerServletContext extServletContextWrapper =
new HandlerServletContext(getServletContext(),
getHttpContext(serviceReference));
Modified:
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/ServletHandlerRegistry.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/ServletHandlerRegistry.java
(original)
+++
branches/amdatu-dispatcher/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/ServletHandlerRegistry.java
Thu Feb 3 11:01:16 2011
@@ -10,6 +10,7 @@
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
+import org.amdatu.core.tenant.Tenant;
import org.amdatu.web.dispatcher.DispatchServletMatcher;
import org.amdatu.web.dispatcher.DispatcherService;
import org.amdatu.web.dispatcher.context.HandlerServletContext;
@@ -55,7 +56,7 @@
return;
}
- String tenant = getStringProperty(serviceReference, "tenant_id");
+ String tenant = getStringProperty(serviceReference,
Tenant.TENANT_ID_SERVICEPROPERTY);
HandlerServletContext servletContextWrapper =
new HandlerServletContext(getServletContext(),
getHttpContext(serviceReference));
Modified:
branches/amdatu-dispatcher/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkRegistrationServiceImpl.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkRegistrationServiceImpl.java
(original)
+++
branches/amdatu-dispatcher/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkRegistrationServiceImpl.java
Thu Feb 3 11:01:16 2011
@@ -229,8 +229,8 @@
}
private String getTenantId(ServiceReference ref) {
- if (ref != null && ref.getProperty(Tenant.SERVICE_PREFIX + "id") !=
null) {
- return (String) ref.getProperty(Tenant.SERVICE_PREFIX + "id");
+ if (ref != null && ref.getProperty(Tenant.TENANT_ID_SERVICEPROPERTY)
!= null) {
+ return (String) ref.getProperty(Tenant.TENANT_ID_SERVICEPROPERTY);
}
return null;
}
@@ -248,7 +248,7 @@
properties.put("contextId", alias);
if (tenantId != null) {
- properties.put(Tenant.SERVICE_PREFIX + "id", tenantId);
+ properties.put(Tenant.TENANT_ID_SERVICEPROPERTY, tenantId);
}
m_dependencyManager.add(m_dependencyManager.createComponent()
Modified:
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/TenantManagementServiceTest.java
==============================================================================
---
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/TenantManagementServiceTest.java
(original)
+++
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/TenantManagementServiceTest.java
Thu Feb 3 11:01:16 2011
@@ -115,13 +115,13 @@
}
public void tenantAdded(ServiceReference reference) {
- if (reference.getProperty(Tenant.SERVICE_PREFIX +
"id").equals("tenant1")) {
+ if
(reference.getProperty(Tenant.TENANT_ID_SERVICEPROPERTY).equals("tenant1")) {
m_tenant1Added.release();
}
}
public void tenantRemoved(ServiceReference reference) {
- if (reference.getProperty(Tenant.SERVICE_PREFIX +
"id").equals("tenant1")) {
+ if
(reference.getProperty(Tenant.TENANT_ID_SERVICEPROPERTY).equals("tenant1")) {
m_tenant1Removed.release();
}
}
@@ -156,7 +156,7 @@
m_tenantManagementService.updateTenant(tenant);
assertNotNull("The service did not become available",
- getService(Tenant.class, "(" + Tenant.SERVICE_PREFIX +
"host=shouldPublishTenantProperties.org)"));
+ getService(Tenant.class, "(" + Tenant.TENANT_SERVICEPROPERTY +
"host=shouldPublishTenantProperties.org)"));
}
@Test
@@ -166,16 +166,16 @@
m_tenantManagementService.updateTenant(tenant);
assertNotNull("The service did not become available",
- getService(Tenant.class, "(" + Tenant.SERVICE_PREFIX +
"host=shouldPublishTenantProperties.org)"));
+ getService(Tenant.class, "(" + Tenant.TENANT_SERVICEPROPERTY +
"host=shouldPublishTenantProperties.org)"));
tenant.putProperty("host", "shouldUpdateTenantProperties.com");
m_tenantManagementService.updateTenant(tenant);
assertNotNull("The service did not become available with the new
properties",
- getService(Tenant.class, "(" + Tenant.SERVICE_PREFIX +
"host=shouldPublishTenantProperties.com)"));
+ getService(Tenant.class, "(" + Tenant.TENANT_SERVICEPROPERTY +
"host=shouldPublishTenantProperties.com)"));
assertNull("The service with the old property still lies around",
- m_bundleContext.getServiceReference("(" + Tenant.SERVICE_PREFIX +
"host=shouldPublishTenantProperties.org)"));
+ m_bundleContext.getServiceReference("(" +
Tenant.TENANT_SERVICEPROPERTY + "host=shouldPublishTenantProperties.org)"));
}
}