This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-tenant.git
commit 48183e033629cfb0f57674caa7d74cbb96035383 Author: Carsten Ziegeler <[email protected]> AuthorDate: Mon Apr 22 11:37:20 2013 +0000 Implementation is mostly resource based git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1470460 13f79535-47bb-0310-9956-ffa450edef68 --- .../tenant/internal/TenantAdapterFactory.java | 34 ++++++++++++---------- .../sling/tenant/internal/TenantProviderImpl.java | 14 ++++----- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/apache/sling/tenant/internal/TenantAdapterFactory.java b/src/main/java/org/apache/sling/tenant/internal/TenantAdapterFactory.java index 691f956..3494615 100644 --- a/src/main/java/org/apache/sling/tenant/internal/TenantAdapterFactory.java +++ b/src/main/java/org/apache/sling/tenant/internal/TenantAdapterFactory.java @@ -40,7 +40,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * JCR based tenant adapter factory, that adapts <code>ResourceResolver</code> + * Resource based tenant adapter factory, that adapts <code>ResourceResolver</code> * and <code>Resource</code> to <code>Tenant</code>. * * It tries to resolve the tenant based on logged in user by looking at the user @@ -72,7 +72,7 @@ class TenantAdapterFactory implements AdapterFactory { } Dictionary<String, Object> props = new Hashtable<String, Object>(); - props.put(Constants.SERVICE_DESCRIPTION, "Apache Sling JCR Tenant Adapter"); + props.put(Constants.SERVICE_DESCRIPTION, "Apache Sling Tenant Adapter"); props.put(AdapterFactory.ADAPTER_CLASSES, new String[]{ TENANT_CLASS.getName() }); props.put(AdapterFactory.ADAPTABLE_CLASSES, new String[] { RESOURCERESOLVER_CLASS .getName(), RESOURCE_CLASS.getName() }); @@ -113,20 +113,22 @@ class TenantAdapterFactory implements AdapterFactory { private <AdapterType> AdapterType getAdapter(Session session, Class<AdapterType> type) { - String userID = session.getUserID(); - - JackrabbitSession jrSession = (JackrabbitSession) session; - try { - Authorizable authorizable = jrSession.getUserManager() - .getAuthorizable(userID); - String userHome = authorizable.getPath(); - - // tries to get tenant information from user home - // i.e. /home/users/tenant1/a/admin - return getAdapter(userHome, type); - } catch (Exception e) { - log.error("can not get user from session", e); - } + if ( session != null ) { + String userID = session.getUserID(); + + JackrabbitSession jrSession = (JackrabbitSession) session; + try { + Authorizable authorizable = jrSession.getUserManager() + .getAuthorizable(userID); + String userHome = authorizable.getPath(); + + // tries to get tenant information from user home + // i.e. /home/users/tenant1/a/admin + return getAdapter(userHome, type); + } catch (Exception e) { + log.error("can not get user from session", e); + } + } log.debug("Unable to adapt to resource of type {}", type.getName()); return null; } diff --git a/src/main/java/org/apache/sling/tenant/internal/TenantProviderImpl.java b/src/main/java/org/apache/sling/tenant/internal/TenantProviderImpl.java index 669e054..e52c884 100644 --- a/src/main/java/org/apache/sling/tenant/internal/TenantProviderImpl.java +++ b/src/main/java/org/apache/sling/tenant/internal/TenantProviderImpl.java @@ -62,16 +62,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * JCR Tenant Provider implementation. + * Resource based Tenant Provider implementation. */ @Component( metatype = true, - label = "Apache Sling JCR Tenant Provider", + label = "Apache Sling Tenant Provider", description = "Service responsible for providing Tenants", immediate = true) @Service @Properties(value = { - @Property(name = Constants.SERVICE_DESCRIPTION, value = "Apache Sling JCR Tenant Provider") + @Property(name = Constants.SERVICE_DESCRIPTION, value = "Apache Sling Tenant Provider") }) @Reference( name = "tenantSetup", @@ -86,9 +86,9 @@ public class TenantProviderImpl implements TenantProvider, TenantManager { /** * Root path for tenant */ - private static final String JCR_TENANT_ROOT = "/etc/tenants"; + private static final String RESOURCE_TENANT_ROOT = "/etc/tenants"; - @Property(value = JCR_TENANT_ROOT, label = "Tenants Root Path", description = "Defines tenants root path") + @Property(value = RESOURCE_TENANT_ROOT, label = "Tenants Root Path", description = "Defines tenants root path") private static final String TENANT_ROOT = "tenant.root"; private static final String[] DEFAULT_PATH_MATCHER = {}; @@ -103,7 +103,7 @@ public class TenantProviderImpl implements TenantProvider, TenantManager { description = "Defines tenants path matcher i.e. /content/sample/([^/]+)/*, used while resolving path to tenant") private static final String TENANT_PATH_MATCHER = "tenant.path.matcher"; - private String tenantRootPath = JCR_TENANT_ROOT; + private String tenantRootPath = RESOURCE_TENANT_ROOT; @Reference private ResourceResolverFactory factory; @@ -114,7 +114,7 @@ public class TenantProviderImpl implements TenantProvider, TenantManager { @Activate private void activate(final BundleContext bundleContext, final Map<String, Object> properties) { - this.tenantRootPath = PropertiesUtil.toString(properties.get(TENANT_ROOT), JCR_TENANT_ROOT); + this.tenantRootPath = PropertiesUtil.toString(properties.get(TENANT_ROOT), RESOURCE_TENANT_ROOT); this.adapterFactory = new TenantAdapterFactory(bundleContext, this, PropertiesUtil.toStringArray(properties.get(TENANT_PATH_MATCHER), DEFAULT_PATH_MATCHER)); this.plugin = new WebConsolePlugin(bundleContext, this); } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
