Author: ivol37 at gmail.com
Date: Thu Feb 3 08:57:11 2011
New Revision: 751
Log:
[AMDATU-84] Small refactoring and javadoc improvements
Modified:
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/TenantManagementService.java
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/osgi/Activator.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/osgi/Activator.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/osgi/FSUserAdminStorageProviderActivator.java
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
branches/amdatu-dispatcher/amdatu-opensocial/profile/src/main/java/org/amdatu/opensocial/profile/service/PersonServiceImpl.java
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/WinkRestServlet.java
Modified:
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/TenantManagementService.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/TenantManagementService.java
(original)
+++
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/TenantManagementService.java
Thu Feb 3 08:57:11 2011
@@ -70,5 +70,10 @@
*/
void updateTenant(TenantEntity tenant) throws TenantException;
+ /**
+ * Deletes an existing tenant
+ * @param tenant the tenant to be deleted
+ * @throws TenantException
+ */
void deleteTenant(TenantEntity tenant) throws TenantException;
}
Modified:
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/osgi/Activator.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/osgi/Activator.java
(original)
+++
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/osgi/Activator.java
Thu Feb 3 08:57:11 2011
@@ -33,7 +33,6 @@
public class Activator extends DependencyActivatorBase {
@Override
public void init(BundleContext context, DependencyManager manager) throws
Exception {
-
// Create and register the Tenant management service
manager.add(
createComponent()
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 08:57:11 2011
@@ -38,6 +38,13 @@
import org.osgi.service.cm.ManagedService;
import org.osgi.service.log.LogService;
+/**
+ * This class implements the Tenant management service. It provides CRUD
operations on tenants and ensures
+ * that tenants are not only persisted (using the TenantStorageProvider) but
that Tenants are also registered
+ * as a service such that tenant aware services can become tenant adaptors.
+ *
+ * @author ivol
+ */
public class TenantManagementServiceImpl implements TenantManagementService,
ManagedService {
private volatile LogService m_logService;
private volatile DependencyManager m_manager;
Modified:
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/osgi/Activator.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/osgi/Activator.java
(original)
+++
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/osgi/Activator.java
Thu Feb 3 08:57:11 2011
@@ -28,13 +28,11 @@
/**
* This class represents the OSGi activator for the Tenant UserAdmin decorator
service
+ *
* @author ivol
- *
*/
public class Activator extends DependencyActivatorBase {
- @Override
public void init(BundleContext context, DependencyManager manager) throws
Exception {
-
// Create and register the Tenant UserAdmin decorator service
//org.ops4j.pax.useradmin.storageprovider.type
String filter = "(&(org.ops4j.pax.useradmin.storageprovider.type=*)("
+ Constants.OBJECTCLASS
@@ -47,7 +45,6 @@
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true)));
}
- @Override
public void destroy(BundleContext context, DependencyManager manager)
throws Exception {
}
}
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 08:57:11 2011
@@ -29,6 +29,20 @@
import org.osgi.service.useradmin.User;
import org.osgi.service.useradmin.UserAdmin;
+/**
+ * This class decorated UserAdmin services with tenant service properties. The
UserAdmin service is tenant
+ * aware since we register a UserAdmin service for each tenant. But the
UserAdmin implementation itself is
+ * not aware of that fact (Amdatu currently uses the Pax implementation which
obviously is not tenant aware).
+ * So the UserAdmin service does not set the Amdatu-specific tenant properties
(tenant_id and tenant_name)
+ * used by services to define the proper service dependencies on UserAdmin.
This decorator service is an aspect
+ * of UserAdmin appending those properties.
+ * Note that effectively, this aspect will double the amount of registered
UserAdmin services; for each tenant
+ * the 'normal' UserAdmin and one TenantUserAdminDecorator aspect. When using
UserAdmin in a multi-tenant
+ * environment, you must ensure defining the proper service dependencies in
order to get the proper UserAdmin
+ * service injected.
+ *
+ * @author ivol
+ */
public class TenantUserAdminDecorator implements UserAdmin {
// Service dependencies injected by the dependency manager
private volatile UserAdmin m_userAdmin;
Modified:
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/osgi/FSUserAdminStorageProviderActivator.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/osgi/FSUserAdminStorageProviderActivator.java
(original)
+++
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/osgi/FSUserAdminStorageProviderActivator.java
Thu Feb 3 08:57:11 2011
@@ -30,8 +30,7 @@
import org.osgi.service.log.LogService;
/**
- * This class represents the OSGi activator for the tenant service
- *
+ * This class represents the OSGi activator for the FS UserAdmin storage
provider service.
*/
public class FSUserAdminStorageProviderActivator extends
DependencyActivatorBase {
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 08:57:11 2011
@@ -33,6 +33,7 @@
/**
* Filesystem backed implementation of the PAX <code>StorageProvider</code>
service interface.
+ * This service is tenant aware.
*/
public final class FSUserAdminStorageProvider implements StorageProvider {
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 08:57:11 2011
@@ -73,7 +73,6 @@
}
public Future<Person> getPerson(UserId id, Set<String> fields,
SecurityToken token) throws ProtocolException {
- // TODO: determine tenant from user profile. For now we just take the
first available tenant
if (!"".equals(id.getUserId(token))) {
Person person = getPerson(id.getUserId(token));
if (person != null) {
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 08:57:11 2011
@@ -45,12 +45,11 @@
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
-import org.osgi.service.http.HttpContext;
import org.osgi.service.http.HttpService;
import org.osgi.service.log.LogService;
/**
- * This class is responsible for booting Wink as well as registration of
dynamic resources.
+ * This class is responsible for booting Wink as well as registration of new
REST services as servlets.
*
* @author ivol
*/
@@ -65,12 +64,11 @@
private volatile BundleContext m_bundleContext;
private volatile HttpContextServiceFactory m_httpContextServiceFactory;
- // List of registered servlets, stored to be sure the servlet is registerd
before unregistering it
+ // List of registered servlets, stored to be sure the servlet is
registered before unregistering it
private List<String> m_registeredServlets = new ArrayList<String>();
// Our HTTP context
private Component m_httpContextComponent;
- private HttpContext m_httpContext;
private Component m_spiComponent;
/**
@@ -79,14 +77,12 @@
public void init() {
// Create our own http context and register resources
m_httpContextComponent =
m_httpContextServiceFactory.create(m_bundleContext, this);
- m_httpContext = (HttpContext) m_httpContextComponent.getService();
// Set the runtime delegate
setRuntimeDelegate();
registerSpiService();
// Register REST dispatcher servlet
-
m_logService.log(LogService.LOG_INFO, getClass().getName() + " service
initialized");
}
@@ -184,42 +180,29 @@
private void addRestServlet(ServiceReference ref, Object service) {
synchronized (m_registeredServlets) {
- //try {
- // Initialize the servlet
+ // Prepare init parameter used internally by Wink. Note that we
must prefix the parameters
+ // by "init." according to the whiteboard style of servlet
registration.
Dictionary<String, String> initParams = new Hashtable<String,
String>();
- initParams.put("applicationConfigLocation", APP_RPOPS);
+ initParams.put("init.applicationConfigLocation", APP_RPOPS);
+
+ // Create the Wink REST servlet
String restPath =
service.getClass().getAnnotation(Path.class).value();
if (restPath.startsWith("/")) {
restPath = restPath.substring(1);
}
-
String tenantId = getTenantId(ref);
-
WinkRestServlet restServlet = new WinkRestServlet(restPath,
service, tenantId);
- String servletUrl = "/" + RESOURCE_ID + "/" + restPath;
// Register servlet whiteboard style
+ String servletUrl = "/" + RESOURCE_ID + "/" + restPath;
registerServlet(tenantId, servletUrl, restServlet, initParams);
- //m_httpService.registerServlet(servletUrl, restServlet,
initParams, m_httpContext);
- String reqProcAttr = restPath;
-
//RegistrationUtils.registerInstances(restServlet.getServletContext(),
reqProcAttr, service);
m_registeredServlets.add(servletUrl);
m_logService.log(LogService.LOG_DEBUG, "Wink application
registered REST servlet '" + servletUrl + "'");
- // Register a Wink servlet filter to forward requests from
/rest/path to
- // /rest/path/path
+ // Register a Wink servlet filter to forward requests from
/rest/path to /rest/path/path
WinkServletFilter filter = new WinkServletFilter(servletUrl,
servletUrl + "/" + restPath);
registerFilter(servletUrl, filter);
m_logService.log(LogService.LOG_DEBUG, "Wink application
registered REST servlet filter on '" + servletUrl + "'");
-
- /*catch (ServletException e) {
- m_logService.log(LogService.LOG_ERROR, "Failed to register
servlet for REST service '"
- + service.getClass() + "'", e);
- }
- catch (NamespaceException e) {
- m_logService.log(LogService.LOG_ERROR, "Failed to register
servlet for REST service '"
- + service.getClass() + "'", e);
- }*/
}
}
Modified:
branches/amdatu-dispatcher/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkRestServlet.java
==============================================================================
---
branches/amdatu-dispatcher/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkRestServlet.java
(original)
+++
branches/amdatu-dispatcher/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkRestServlet.java
Thu Feb 3 08:57:11 2011
@@ -100,18 +100,8 @@
requestProcessor.storeRequestProcessorOnServletContext(getServletContext(),
m_requestProcessorId);
}
- /* public void init() throws ServletException {
- if (getServletConfig() != null) {
- super.init();
- }
- }*/
-
- @Override
public void init(ServletConfig config) throws ServletException {
- // TODO Auto-generated method stub
super.init(config);
-
-
RegistrationUtils.registerInstances(getServletContext(),
m_requestProcessorId, m_service);
}
}