Author: [email protected]
Date: Wed Apr 25 14:16:37 2012
New Revision: 2285

Log:
[AMDATUAUTH-123] Updated login-service and useradmin-rest for new multi-tenancy 
design

Added:
   
trunk/amdatu-auth/config/src/main/resources/org.amdatu.auth.useradmin.rest.xml
   
trunk/amdatu-auth/release-demo/src/main/resources/config/org.amdatu.web.rest.wink.xml
Modified:
   
trunk/amdatu-auth/config/src/main/resources/org.amdatu.auth.useradmin.rest.cfg
   trunk/amdatu-auth/login-service/pom.xml
   
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/osgi/Activator.java
   
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/service/LoginServiceImpl.java
   trunk/amdatu-auth/release-demo/pom.xml
   trunk/amdatu-auth/release-demo/src/main/assembly/bin-component.xml
   trunk/amdatu-auth/useradmin-rest/pom.xml
   
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/osgi/Activator.java
   
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/service/ResourceBase.java

Added: 
trunk/amdatu-auth/config/src/main/resources/org.amdatu.auth.useradmin.rest.xml
==============================================================================
--- (empty file)
+++ 
trunk/amdatu-auth/config/src/main/resources/org.amdatu.auth.useradmin.rest.xml  
    Wed Apr 25 14:16:37 2012
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright (c) 2010-2012 The Amdatu Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.1.0"; 
filter="(org.amdatu.tenant.pid=tenant1)">
+  <OCD name="Amdatu Auth - UserAdmin REST service config" 
id="org.amdatu.auth.useradmin.rest">
+    <AD id="password.minimum_length" type="INTEGER" cardinality="0" />
+    <AD id="password.require_mixed_case" type="BOOLEAN" cardinality="0" />
+    <AD id="password.minimum_digits" type="INTEGER" cardinality="0" />
+    <AD id="password.minimum_special_characters" type="INTEGER" 
cardinality="0" />
+  </OCD>
+  <Designate pid="org.amdatu.auth.useradmin.rest" bundle="*">
+    <Object ocdref="org.amdatu.auth.useradmin.rest">
+      <!-- Requires that the password consists of at least this amount of 
characters -->
+      <Attribute adref="password.minimum_length">
+        <Value>6</Value>
+      </Attribute>
+
+      <!-- Requires that the password contains letters in both lowercase and 
uppercase (true or false) -->
+      <Attribute adref="password.require_mixed_case">
+        <Value>false</Value>
+      </Attribute>
+
+      <!-- Minimum amount of digits the password must have -->
+      <Attribute adref="password.minimum_digits">
+        <Value>0</Value>
+      </Attribute>
+
+      <!-- Minimum amount of special characters (other then digits and 
letters) the password must have -->
+      <Attribute adref="password.minimum_special_characters">
+        <Value>0</Value>
+      </Attribute>
+    </Object>
+  </Designate>
+</MetaData>
\ No newline at end of file

Modified: trunk/amdatu-auth/login-service/pom.xml
==============================================================================
--- trunk/amdatu-auth/login-service/pom.xml     (original)
+++ trunk/amdatu-auth/login-service/pom.xml     Wed Apr 25 14:16:37 2012
@@ -74,7 +74,11 @@
         <artifactId>maven-bundle-plugin</artifactId>
         <configuration>
           <instructions>
-            
<Bundle-Activator>org.amdatu.auth.login.service.osgi.Activator</Bundle-Activator>
+            <X-MultiTenant-Version>1</X-MultiTenant-Version>
+            
<X-MultiTenant-Bundle-Activator>org.amdatu.auth.login.service.osgi.Activator</X-MultiTenant-Bundle-Activator>
+            <X-MultiTenant-Binding>TENANTS</X-MultiTenant-Binding>
+            
<X-MultiTenant-Scope>(|(org.amdatu.tenant.pid=%TENANTPID%)(objectClass=org.osgi.service.log.LogService)(objectClass=org.amdatu.web.rest.jaxrs.JaxRsSpi))</X-MultiTenant-Scope>
+            
<Bundle-Activator>org.amdatu.tenant.adapter.MultiTenantBundleActivator</Bundle-Activator>
             <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
             
<Export-Package>org.amdatu.auth.login.service;version="1.0.0"</Export-Package>
             <Embed-Dependency>*;scope=compile</Embed-Dependency>

Modified: 
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/osgi/Activator.java
==============================================================================
--- 
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/osgi/Activator.java
     (original)
+++ 
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/osgi/Activator.java
     Wed Apr 25 14:16:37 2012
@@ -17,12 +17,13 @@
 
 import org.amdatu.auth.login.service.LoginService;
 import org.amdatu.auth.login.service.service.LoginServiceImpl;
+import org.amdatu.auth.tokenprovider.TokenProvider;
 import org.amdatu.libraries.osgi.ServiceDependentActivator;
+import org.amdatu.tenant.Tenant;
 import org.amdatu.web.rest.jaxrs.JaxRsSpi;
 
 import org.apache.felix.dm.DependencyManager;
 import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
 import org.osgi.service.log.LogService;
 import org.osgi.service.useradmin.UserAdmin;
 
@@ -31,7 +32,6 @@
  * 
  * @author ivol
  */
-@SuppressWarnings("deprecation")
 public class Activator extends ServiceDependentActivator {
 
     @Override
@@ -41,15 +41,14 @@
 
     @Override
     public void initWithDependencies(final BundleContext context, final 
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 = "(&(" + org.amdatu.tenant.Constants.PID_KEY + "=*)(" + 
Constants.OBJECTCLASS
-            + "=" + UserAdmin.class.getName() + "))";
-
         // Create and register the authorization service.
-        manager.add(createAdapterService(UserAdmin.class, filter)
+        manager.add(
+            createComponent()
             .setInterface(LoginService.class.getName(), null)
             .setImplementation(LoginServiceImpl.class)
+            
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true))
+            
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
+            
.add(createServiceDependency().setService(Tenant.class).setRequired(true))
             
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
     }
 

Modified: 
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/service/LoginServiceImpl.java
==============================================================================
--- 
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/service/LoginServiceImpl.java
   (original)
+++ 
trunk/amdatu-auth/login-service/src/main/java/org/amdatu/auth/login/service/service/LoginServiceImpl.java
   Wed Apr 25 14:16:37 2012
@@ -21,8 +21,6 @@
 import org.amdatu.auth.tokenprovider.TokenProviderException;
 import org.amdatu.tenant.Tenant;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
@@ -43,12 +41,8 @@
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.ResponseBuilder;
 
-import org.apache.felix.dm.Component;
-import org.apache.felix.dm.DependencyManager;
-import org.apache.felix.dm.ServiceDependency;
 import org.json.JSONException;
 import org.json.JSONObject;
-import org.osgi.framework.Constants;
 import org.osgi.service.log.LogService;
 import org.osgi.service.useradmin.Group;
 import org.osgi.service.useradmin.Role;
@@ -60,7 +54,6 @@
  * 
  * @author ivol
  */
-@SuppressWarnings("deprecation")
 @Path("authorization")
 public class LoginServiceImpl implements LoginService {
 
@@ -73,7 +66,6 @@
     private volatile LogService m_logService;
     private volatile UserAdmin m_userAdmin;
     private volatile TokenProvider m_tokenProvider;
-    private volatile DependencyManager m_dependencyManager;
     private volatile Tenant m_tenant;
 
     // Disable HTTP caching in this REST interface
@@ -83,30 +75,6 @@
         NO_CACHE_CONTROL.setNoCache(true);
     }
 
-    /**
-     * The init() method is invoked by the Felix dependency manager.
-     * 
-     * @throws TenantException
-     */
-    public void init(final Component component) {
-        List<ServiceDependency> dependencies = new 
ArrayList<ServiceDependency>();
-
-        // Retrieve the tenant
-        String tenantId = (String) 
component.getServiceProperties().get(org.amdatu.tenant.Constants.PID_KEY);
-        //FIXME: how to solve? m_tenant = 
m_tenantManagementService.getTenantById(tenantId);
-
-        // Create a service dependency on the token provider for 'our' tenant
-        String tenantFilter = "(&(" + org.amdatu.tenant.Constants.PID_KEY + 
"=" + tenantId + ")(" + Constants.OBJECTCLASS
-            + "=" + TokenProvider.class.getName() + "))";
-        dependencies.add(m_dependencyManager.createServiceDependency()
-            .setService(TokenProvider.class, 
tenantFilter).setRequired(true).setInstanceBound(true));
-
-        component.add(dependencies);
-
-        m_logService.log(LogService.LOG_INFO, getClass().getName() + " service 
initialized for tenant '" + tenantId
-            + "'");
-    }
-
     @SuppressWarnings("unchecked")
     public void start() {
         // If we don't have a user named 'Administrator' for this tenant, we 
create one now.

Modified: trunk/amdatu-auth/release-demo/pom.xml
==============================================================================
--- trunk/amdatu-auth/release-demo/pom.xml      (original)
+++ trunk/amdatu-auth/release-demo/pom.xml      Wed Apr 25 14:16:37 2012
@@ -28,7 +28,7 @@
 
   <properties>
     <amdatu.http.hostname>localhost</amdatu.http.hostname>
-    <amdatu.http.port>8080</amdatu.http.port>
+    <amdatu.http.port>2204</amdatu.http.port>
     <amdatu.https.port>8045</amdatu.https.port>
     <amdatu.log.level>INFO</amdatu.log.level>
     <amdatu.tenant.id>tenant1</amdatu.tenant.id>
@@ -256,6 +256,27 @@
       <type>bundle</type>
     </dependency>
 
+
+    <dependency>
+      <groupId>org.amdatu.web</groupId>
+      <artifactId>org.amdatu.web.jsp</artifactId>
+      <version>${org.amdatu.web.version}</version>
+      <scope>runtime</scope>
+      <type>bundle</type>
+    </dependency>
+
+    <dependency>
+      <groupId>org.amdatu.web</groupId>
+      <artifactId>org.amdatu.web.resource</artifactId>
+      <version>${org.amdatu.web.version}</version>
+      <scope>runtime</scope>
+      <type>bundle</type>
+    </dependency>
+
+
+
+
+
     <!-- Auth dependencies -->
     <dependency>
       <groupId>org.amdatu.auth</groupId>
@@ -299,8 +320,6 @@
       <type>bundle</type>
       <scope>compile</scope>
     </dependency>
-
-<!--
     <dependency>
       <groupId>org.amdatu.auth</groupId>
       <artifactId>org.amdatu.auth.login.service</artifactId>
@@ -309,23 +328,26 @@
     </dependency>
     <dependency>
       <groupId>org.amdatu.auth</groupId>
-      <artifactId>org.amdatu.auth.oauth.client</artifactId>
+      <artifactId>org.amdatu.auth.useradmin.rest</artifactId>
       <type>bundle</type>
       <scope>compile</scope>
     </dependency>
+
+<!--
     <dependency>
       <groupId>org.amdatu.auth</groupId>
-      <artifactId>org.amdatu.auth.oauth.server</artifactId>
+      <artifactId>org.amdatu.auth.oauth.client</artifactId>
       <type>bundle</type>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>org.amdatu.auth</groupId>
-      <artifactId>org.amdatu.auth.useradmin.rest</artifactId>
+      <artifactId>org.amdatu.auth.oauth.server</artifactId>
       <type>bundle</type>
       <scope>compile</scope>
     </dependency>
 
+
     <dependency>
       <groupId>org.amdatu.auth</groupId>
       <artifactId>org.amdatu.auth.example.oauth.consumer</artifactId>

Modified: trunk/amdatu-auth/release-demo/src/main/assembly/bin-component.xml
==============================================================================
--- trunk/amdatu-auth/release-demo/src/main/assembly/bin-component.xml  
(original)
+++ trunk/amdatu-auth/release-demo/src/main/assembly/bin-component.xml  Wed Apr 
25 14:16:37 2012
@@ -43,6 +43,8 @@
         
<include>org.amdatu.web:org.amdatu.web.tenantresolver.hostname</include>
         
<include>org.amdatu.web:org.amdatu.web.tenantresolver.parameter</include>
         <include>org.amdatu.web:org.amdatu.web.wink</include>
+        <include>org.amdatu.web:org.amdatu.web.jsp</include>
+        <include>org.amdatu.web:org.amdatu.web.resource</include>
       </includes>
       <unpack>false</unpack>
       <useTransitiveDependencies>false</useTransitiveDependencies>

Added: 
trunk/amdatu-auth/release-demo/src/main/resources/config/org.amdatu.web.rest.wink.xml
==============================================================================
--- (empty file)
+++ 
trunk/amdatu-auth/release-demo/src/main/resources/config/org.amdatu.web.rest.wink.xml
       Wed Apr 25 14:16:37 2012
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<MetaData xmlns="http://www.osgi.org/xmlns/metatype/v1.0.0"; 
filter="(|(!(org.amdatu.tenant.pid=*))(org.amdatu.tenant.pid=org.amdatu.tenant.PLATFORM))">
+  <OCD name="Amdatu Web REST Wink Configuration" id="org.amdatu.web.rest">
+    <AD id="wink.rest.path" type="STRING" cardinality="0" />
+  </OCD>
+  <Designate pid="org.amdatu.web.rest.wink" bundle="*">
+    <Object ocdref="org.amdatu.web.rest">
+     <Attribute adref="wink.rest.path">
+        <Value>/rest</Value>
+      </Attribute>
+      </Object>
+  </Designate>
+</MetaData>
\ No newline at end of file

Modified: trunk/amdatu-auth/useradmin-rest/pom.xml
==============================================================================
--- trunk/amdatu-auth/useradmin-rest/pom.xml    (original)
+++ trunk/amdatu-auth/useradmin-rest/pom.xml    Wed Apr 25 14:16:37 2012
@@ -103,7 +103,11 @@
         <artifactId>maven-bundle-plugin</artifactId>
         <configuration>
           <instructions>
-            
<Bundle-Activator>org.amdatu.auth.useradmin.rest.osgi.Activator</Bundle-Activator>
+            <X-MultiTenant-Version>1</X-MultiTenant-Version>
+            
<X-MultiTenant-Bundle-Activator>org.amdatu.auth.useradmin.rest.osgi.Activator</X-MultiTenant-Bundle-Activator>
+            <X-MultiTenant-Binding>TENANTS</X-MultiTenant-Binding>
+            
<X-MultiTenant-Scope>(|(org.amdatu.tenant.pid=%TENANTPID%)(objectClass=org.osgi.service.log.LogService)(objectClass=org.amdatu.web.rest.jaxrs.JaxRsSpi))</X-MultiTenant-Scope>
+            
<Bundle-Activator>org.amdatu.tenant.adapter.MultiTenantBundleActivator</Bundle-Activator>
             <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
             
<Private-Package>org.amdatu.auth.useradmin.rest.*,org.apache.wink.common.internal.uri</Private-Package>
             
<Embed-Dependency>commons-lang3,json,org.amdatu.auth.tools.config,org.amdatu.auth.tools.rest,org.amdatu.osgisupport;scope=compile</Embed-Dependency>

Modified: 
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/osgi/Activator.java
==============================================================================
--- 
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/osgi/Activator.java
   (original)
+++ 
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/osgi/Activator.java
   Wed Apr 25 14:16:37 2012
@@ -15,6 +15,7 @@
  */
 package org.amdatu.auth.useradmin.rest.osgi;
 
+import org.amdatu.auth.tokenprovider.TokenProvider;
 import org.amdatu.auth.useradmin.rest.service.GroupsResource;
 import org.amdatu.auth.useradmin.rest.service.RolesResource;
 import org.amdatu.auth.useradmin.rest.service.UsersResource;
@@ -23,7 +24,6 @@
 
 import org.apache.felix.dm.DependencyManager;
 import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
 import org.osgi.service.cm.ManagedService;
 import org.osgi.service.log.LogService;
 import org.osgi.service.useradmin.UserAdmin;
@@ -43,28 +43,29 @@
 
     @Override
     public void initWithDependencies(final BundleContext context, final 
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 = "(&(" + org.amdatu.tenant.Constants.PID_KEY + "=*)(" + 
Constants.OBJECTCLASS
-            + "=" + UserAdmin.class.getName() + "))";
-
         // Create the users resource service and register it as REST service
-        manager.add(createAdapterService(UserAdmin.class, filter)
+        manager.add(createComponent()
             .setInterface(new String[] {ManagedService.class.getName(), 
Object.class.getName()}, null)
             .setImplementation(UsersResource.class)
             
.add(createServiceDependency().setService(LogService.class).setRequired(true))
+            
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true))
+            
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
             .add(createConfigurationDependency().setPid(UsersResource.PID)));
 
         // Create the groups resource service and register it as REST service
-        manager.add(createAdapterService(UserAdmin.class, filter)
+        manager.add(createComponent()
             .setInterface(Object.class.getName(), null)
             .setImplementation(GroupsResource.class)
+            
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true))
+            
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
             
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
 
         // Create the groups resource service and register it as REST service
-        manager.add(createAdapterService(UserAdmin.class, filter)
+        manager.add(createComponent()
             .setInterface(Object.class.getName(), null)
             .setImplementation(RolesResource.class)
+            
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true))
+            
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
             
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
     }
 

Modified: 
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/service/ResourceBase.java
==============================================================================
--- 
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/service/ResourceBase.java
     (original)
+++ 
trunk/amdatu-auth/useradmin-rest/src/main/java/org/amdatu/auth/useradmin/rest/service/ResourceBase.java
     Wed Apr 25 14:16:37 2012
@@ -36,11 +36,7 @@
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
 
-import org.apache.felix.dm.Component;
-import org.apache.felix.dm.DependencyManager;
-import org.apache.felix.dm.ServiceDependency;
 import org.json.JSONObject;
-import org.osgi.framework.Constants;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.service.log.LogService;
 import org.osgi.service.useradmin.Group;
@@ -59,7 +55,6 @@
     private volatile LogService m_logService;
     private volatile UserAdmin m_userAdmin;
     private volatile TokenProvider m_tokenProvider;
-    private volatile DependencyManager m_dependencyManager;
 
     // Disable HTTP caching in this REST interface
     private static CacheControl NO_CACHE_CONTROL;
@@ -68,21 +63,6 @@
         NO_CACHE_CONTROL.setNoCache(true);
     }
 
-    public void init(final Component component) {
-        List<ServiceDependency> dependencies = new 
ArrayList<ServiceDependency>();
-
-        // Retrieve the tenant
-        String tenantId = (String) 
component.getServiceProperties().get(org.amdatu.tenant.Constants.PID_KEY);
-
-        // Create a service dependency on the token provider for 'our' tenant
-        String tenantFilter = "(&(" + org.amdatu.tenant.Constants.PID_KEY + 
"=" + tenantId
-            + ")(" + Constants.OBJECTCLASS + "=" + 
TokenProvider.class.getName() + "))";
-        dependencies.add(m_dependencyManager.createServiceDependency()
-            .setService(TokenProvider.class, 
tenantFilter).setRequired(true).setInstanceBound(true));
-
-        component.add(dependencies);
-    }
-
     /**
      * Returns the roles (users or groups) for the specified filter options.
      * 
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to