Implementation is mostly resource based

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1470460 13f79535-47bb-0310-9956-ffa450edef68
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.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 @@
         }

 

 	    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 @@
 

 	private <AdapterType> AdapterType getAdapter(Session session,

 			Class<AdapterType> type) {

-		String userID = session.getUserID();

+	    if ( session != null ) {

+    		String userID = session.getUserID();

 

-		JackrabbitSession jrSession = (JackrabbitSession) session;

-		try {

-			Authorizable authorizable = jrSession.getUserManager()

-					.getAuthorizable(userID);

-			String userHome = authorizable.getPath();

+    		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);

-		}

+    			// 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.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 @@
     /**

      * 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 @@
             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 @@
 

     @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);

     }