Author: [email protected]
Date: Thu Jan 26 10:37:24 2012
New Revision: 2001

Log:
Cleanup; improve readabiliy.

Modified:
   
trunk/amdatu-core/tenant-adaptor/src/main/java/org/amdatu/core/tenant/adaptor/MultiTenantBundleActivator.java
   
trunk/amdatu-core/tenant-adaptor/src/main/java/org/amdatu/core/tenant/adaptor/TenantAdapter.java

Modified: 
trunk/amdatu-core/tenant-adaptor/src/main/java/org/amdatu/core/tenant/adaptor/MultiTenantBundleActivator.java
==============================================================================
--- 
trunk/amdatu-core/tenant-adaptor/src/main/java/org/amdatu/core/tenant/adaptor/MultiTenantBundleActivator.java
       (original)
+++ 
trunk/amdatu-core/tenant-adaptor/src/main/java/org/amdatu/core/tenant/adaptor/MultiTenantBundleActivator.java
       Thu Jan 26 10:37:24 2012
@@ -15,6 +15,8 @@
  */
 package org.amdatu.core.tenant.adaptor;
 
+import static org.amdatu.core.tenant.Tenant.*;
+import static org.amdatu.core.tenant.TenantConstants.*;
 import java.util.Properties;
 
 import org.amdatu.core.tenant.Tenant;
@@ -46,38 +48,28 @@
     public void init(BundleContext context, DependencyManager manager) throws 
Exception {
         m_context = context;
 
-        // determine scope
-        String scope = (String) 
context.getBundle().getHeaders().get(TenantConstants.MULTITENANT_SCOPE_KEY);
-        if (scope == null || 
(!scope.equals(TenantConstants.MULTITENANT_SCOPE_VALUE_PLATFORM)
-            && !scope.equals(TenantConstants.MULTITENANT_SCOPE_VALUE_BOTH))) {
-            // default to tenants
-            scope = TenantConstants.MULTITENANT_SCOPE_VALUE_TENANTS;
-        }
+        String scope = determineScope();
 
-        // create platform instance
-        if (!scope.equals(TenantConstants.MULTITENANT_SCOPE_VALUE_TENANTS)) {
-            log(LogService.LOG_DEBUG, "[" + 
TenantConstants.MULTITENANT_SCOPE_PLATFORM_TENANTID + "] Starting "
-                + (String) 
m_context.getBundle().getHeaders().get(Constants.BUNDLE_NAME), null);
+        if (createPlatformInstance(scope)) {
+            log(LogService.LOG_DEBUG, "[" + 
MULTITENANT_SCOPE_PLATFORM_TENANTID + "] Starting "
+                + getBundleHeader(Constants.BUNDLE_NAME), null);
+
+            m_bundleActivatorClass = 
getBundleHeader(MULTITENANT_BUNDLE_ACTIVATOR_KEY);
+            if (m_bundleActivatorClass == null) {
+                log(LogService.LOG_ERROR, "Missing manifest header " + 
MULTITENANT_BUNDLE_ACTIVATOR_KEY, null);
+                return;
+            }
+            
             try {
-                m_bundleActivatorClass =
-                    (String) 
context.getBundle().getHeaders().get(TenantConstants.MULTITENANT_BUNDLE_ACTIVATOR_KEY);
-                if (m_bundleActivatorClass == null) {
-                    log(LogService.LOG_ERROR, "Missing manifest header "
-                        + TenantConstants.MULTITENANT_BUNDLE_ACTIVATOR_KEY, 
null);
-                    return;
-                }
                 m_tenantBundleActivator =
                     (BundleActivator) 
context.getBundle().loadClass(m_bundleActivatorClass).newInstance();
 
                 Properties props = new Properties();
-                props.put(Tenant.TENANT_ID_SERVICEPROPERTY, 
TenantConstants.MULTITENANT_SCOPE_PLATFORM_TENANTID);
+                props.put(TENANT_ID_SERVICEPROPERTY, 
MULTITENANT_SCOPE_PLATFORM_TENANTID);
 
                 m_tenantAwareBundleContext =
-                    new TenantAwareBundleContext(context, 
TenantConstants.MULTITENANT_SCOPE_PLATFORM_TENANTID, props,
-                        "(|("
-                            + Tenant.TENANT_ID_SERVICEPROPERTY + "="
-                            + 
TenantConstants.MULTITENANT_SCOPE_PLATFORM_TENANTID + ")(!("
-                            + Tenant.TENANT_ID_SERVICEPROPERTY + "=*)))");
+                    new TenantAwareBundleContext(context, 
MULTITENANT_SCOPE_PLATFORM_TENANTID, props, getPlatformTenantFilter());
+
                 m_tenantBundleActivator.start(m_tenantAwareBundleContext);
             }
             catch (Exception e) {
@@ -85,8 +77,7 @@
             }
         }
 
-        // create tenant adaptor
-        if (!scope.equals(TenantConstants.MULTITENANT_SCOPE_VALUE_PLATFORM)) {
+        if (createTenantAdapter(scope)) {
             manager.add(createAdapterService(Tenant.class, null)
                 .setImplementation(TenantAdapter.class)
                 .add(createServiceDependency()
@@ -101,6 +92,50 @@
     public void destroy(BundleContext context, DependencyManager manager) 
throws Exception {
     }
 
+    /**
+     * @return
+     */
+    private String getPlatformTenantFilter() {
+        return String.format("(|(%1$s=%2$s)(!(%1$s=*)))", 
TENANT_ID_SERVICEPROPERTY, MULTITENANT_SCOPE_PLATFORM_TENANTID);
+    }
+
+    /**
+     * @param scope
+     * @return
+     */
+    private boolean createPlatformInstance(String scope) {
+        return !MULTITENANT_SCOPE_VALUE_TENANTS.equals(scope);
+    }
+
+    /**
+     * @param scope
+     * @return
+     */
+    private boolean createTenantAdapter(String scope) {
+        return !MULTITENANT_SCOPE_VALUE_PLATFORM.equals(scope);
+    }
+
+    /**
+     * @return
+     */
+    private String determineScope() {
+        String scope = getBundleHeader(MULTITENANT_SCOPE_KEY);
+        if (scope == null
+            || (createTenantAdapter(scope) && 
!MULTITENANT_SCOPE_VALUE_BOTH.equals(scope))) {
+            // default to tenants
+            scope = MULTITENANT_SCOPE_VALUE_TENANTS;
+        }
+        return scope;
+    }
+
+    /**
+     * @param m_context
+     * @return
+     */
+    private String getBundleHeader(String key) {
+        return (String) m_context.getBundle().getHeaders().get(key);
+    }
+
     private void log(int level, String message, Throwable exception) {
         final ServiceReference ref = 
m_context.getServiceReference(LogService.class.getName());
         if (ref != null) {

Modified: 
trunk/amdatu-core/tenant-adaptor/src/main/java/org/amdatu/core/tenant/adaptor/TenantAdapter.java
==============================================================================
--- 
trunk/amdatu-core/tenant-adaptor/src/main/java/org/amdatu/core/tenant/adaptor/TenantAdapter.java
    (original)
+++ 
trunk/amdatu-core/tenant-adaptor/src/main/java/org/amdatu/core/tenant/adaptor/TenantAdapter.java
    Thu Jan 26 10:37:24 2012
@@ -15,10 +15,12 @@
  */
 package org.amdatu.core.tenant.adaptor;
 
+import static org.amdatu.core.tenant.Tenant.*;
+import static 
org.amdatu.core.tenant.TenantConstants.MULTITENANT_BUNDLE_ACTIVATOR_KEY;
+
 import java.util.Properties;
 
 import org.amdatu.core.tenant.Tenant;
-import org.amdatu.core.tenant.TenantConstants;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
@@ -35,34 +37,32 @@
     private volatile BundleContext m_context;
     private volatile Tenant m_tenant;
     private volatile LogService m_log;
+    
     private String m_bundleActivatorClass;
     private BundleActivator m_tenantBundleActivator;
     private TenantAwareBundleContext m_tenantAwareBundleContext;
 
+    /**
+     * Called by Felix dependency manager when this service adapter is started.
+     */
     public void start() {
-        m_log.log(LogService.LOG_DEBUG, "[" + m_tenant.getId() + "] Starting "
-            + (String) 
m_context.getBundle().getHeaders().get(Constants.BUNDLE_NAME));
+        m_log.log(LogService.LOG_DEBUG, "[" + m_tenant.getId() + "] Starting " 
+ getBundleHeader(Constants.BUNDLE_NAME));
+
+        m_bundleActivatorClass = 
getBundleHeader(MULTITENANT_BUNDLE_ACTIVATOR_KEY);
+        if (m_bundleActivatorClass == null) {
+            m_log.log(LogService.LOG_ERROR, "Missing manifest header " + 
MULTITENANT_BUNDLE_ACTIVATOR_KEY);
+            return;
+        }
+
         try {
-            m_bundleActivatorClass =
-                (String) 
m_context.getBundle().getHeaders().get(TenantConstants.MULTITENANT_BUNDLE_ACTIVATOR_KEY);
-            if (m_bundleActivatorClass == null) {
-                m_log.log(LogService.LOG_ERROR, "Missing manifest header "
-                    + TenantConstants.MULTITENANT_BUNDLE_ACTIVATOR_KEY);
-                return;
-            }
-            m_tenantBundleActivator =
-                (BundleActivator) 
m_context.getBundle().loadClass(m_bundleActivatorClass).newInstance();
+            m_tenantBundleActivator = (BundleActivator) 
m_context.getBundle().loadClass(m_bundleActivatorClass).newInstance();
 
             Properties props = new Properties();
-            props.put(Tenant.TENANT_ID_SERVICEPROPERTY, m_tenant.getId());
+            props.put(TENANT_ID_SERVICEPROPERTY, m_tenant.getId());
+            props.put(TENANT_NAME_SERVICEPROPERTY, m_tenant.getName());
+
+            m_tenantAwareBundleContext = new 
TenantAwareBundleContext(m_context, m_tenant.getId(), props, getTenantFilter());
 
-            m_tenantAwareBundleContext =
-                new TenantAwareBundleContext(m_context, m_tenant.getId(), 
props,
-                    "(|(objectClass=org.amdatu.web.rest.jaxrs.JaxRsSpi)"
-                        + "(objectClass=org.osgi.service.log.LogService)("
-                        + Tenant.TENANT_ID_SERVICEPROPERTY + "="
-                        + m_tenant.getId() + "))");
-            
             m_tenantBundleActivator.start(m_tenantAwareBundleContext);
         }
         catch (Exception e) {
@@ -70,17 +70,41 @@
         }
     }
 
+    /**
+     * Called by Felix dependency manager when this service adapter is stopped.
+     */
     public void stop() {
-        m_log.log(LogService.LOG_DEBUG, "[" + m_tenant.getId() + "] Stopping "
-            + (String) 
m_context.getBundle().getHeaders().get(Constants.BUNDLE_NAME));
+        m_log.log(LogService.LOG_DEBUG, "[" + m_tenant.getId() + "] Stopping " 
+ getBundleHeader(Constants.BUNDLE_NAME));
+
         try {
             if (m_tenantBundleActivator != null) {
                 m_tenantBundleActivator.stop(m_tenantAwareBundleContext);
-                m_tenantAwareBundleContext.unregisterServices();
             }
         }
         catch (Exception e) {
             m_log.log(LogService.LOG_ERROR, "Could not stop activator for 
tenant " + m_tenant.getId(), e);
         }
+        finally {
+            m_tenantAwareBundleContext.unregisterServices();
+        }
+    }
+
+    /**
+     * @return
+     */
+    private String getTenantFilter() {
+        return "(|(objectClass=org.amdatu.web.rest.jaxrs.JaxRsSpi)"
+            + "(objectClass=org.osgi.service.log.LogService)("
+            + TENANT_ID_SERVICEPROPERTY + "="
+            + m_tenant.getId() + "))";
     }
+
+    /**
+     * @param m_context
+     * @return
+     */
+    private String getBundleHeader(String key) {
+        return (String) m_context.getBundle().getHeaders().get(key);
+    }
+
 }
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to