Author: [email protected]
Date: Tue Oct  4 16:09:48 2011
New Revision: 1439

Log:
[AMDATUAUTH-97] Implemented multi-tenancy for the OAuth example gadget

Modified:
   
trunk/amdatu-auth/oauth-example/src/main/java/org/amdatu/auth/example/oauth/service/OAuthProtectedResource.java

Modified: 
trunk/amdatu-auth/oauth-example/src/main/java/org/amdatu/auth/example/oauth/service/OAuthProtectedResource.java
==============================================================================
--- 
trunk/amdatu-auth/oauth-example/src/main/java/org/amdatu/auth/example/oauth/service/OAuthProtectedResource.java
     (original)
+++ 
trunk/amdatu-auth/oauth-example/src/main/java/org/amdatu/auth/example/oauth/service/OAuthProtectedResource.java
     Tue Oct  4 16:09:48 2011
@@ -34,6 +34,11 @@
 
 import org.amdatu.auth.oauth.server.OAuthTokenProvider;
 import org.amdatu.auth.tokenprovider.Token;
+import org.amdatu.core.tenant.Tenant;
+import org.apache.felix.dm.Component;
+import org.apache.felix.dm.DependencyManager;
+import org.apache.felix.dm.ServiceDependency;
+import org.osgi.framework.Constants;
 
 /**
  * Full path to this resource becomes: /rest/resource
@@ -42,9 +47,27 @@
  *
  */
 @Path("resource")
-public class OAuthProtectedResource implements DummyInterface {
+public class OAuthProtectedResource implements DummyInterface {
+    // Tenant unaware service dependencies
+    private volatile Tenant m_tenant;
+    private volatile DependencyManager m_dependencyManager;
+    
+    // Tenant aware service dependencies
     private volatile OAuthTokenProvider m_tokenProvider;
-
+
+    public void init(final Component component) {
+        component.add(getTenantServiceDependency(OAuthTokenProvider.class));
+    }
+    
+    private ServiceDependency getTenantServiceDependency(Class<?> clazz) {
+        String tenantFilter =  "(&(" + Tenant.TENANT_ID_SERVICEPROPERTY + "=" 
+ m_tenant.getId()
+            + ")(" + Constants.OBJECTCLASS + "=" + clazz.getName() + "))";
+        return m_dependencyManager.createServiceDependency()
+            .setService(clazz, tenantFilter)
+            .setRequired(true)
+            .setInstanceBound(true);
+    }
+    
     @GET
     @Produces( { MediaType.TEXT_HTML })
     public Response getResource(@Context HttpServletRequest request) {
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to