Author: [email protected]
Date: Wed Oct 12 13:57:26 2011
New Revision: 1494

Log:
AMDATU-434 dispatcher now carefully only uses the tenant ID compile time 
constant to detect if it should be tenant aware or not, the import on the 
tenant API package is therefore made optional

Modified:
   trunk/amdatu-web/dispatcher/pom.xml
   
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/DispatcherService.java
   
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/FilterHandlerRegistry.java
   
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/ServletHandlerRegistry.java

Modified: trunk/amdatu-web/dispatcher/pom.xml
==============================================================================
--- trunk/amdatu-web/dispatcher/pom.xml (original)
+++ trunk/amdatu-web/dispatcher/pom.xml Wed Oct 12 13:57:26 2011
@@ -59,6 +59,7 @@
             <Private-Package> org.amdatu.web.dispatcher.*</Private-Package>
             
<Bundle-Activator>org.amdatu.web.dispatcher.osgi.DispatcherServiceActivator</Bundle-Activator>
             
<Bundle-SymbolicName>org.amdatu.web.dispatcher</Bundle-SymbolicName>
+            <Import-Package>org.amdatu.core.tenant;resolution:=optional, 
*</Import-Package>
             <Export-Package>
               org.amdatu.web.dispatcher;version=1.0.0
             </Export-Package>

Modified: 
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/DispatcherService.java
==============================================================================
--- 
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/DispatcherService.java
  (original)
+++ 
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/DispatcherService.java
  Wed Oct 12 13:57:26 2011
@@ -60,10 +60,16 @@
 
     /**
      * <code>HttpServletRequest</code> attribute key where tenant resolving 
extenders
-     * must store the <code>Tenant</code> instance.
+     * must store the <code>Tenant</code> ID.
      */
-    String TENANT_REQUESTCONTEXT_KEY = "org.amdatu.web.dispatcher.TENANT";
+    String TENANTID_REQUESTCONTEXT_KEY = "org.amdatu.web.dispatcher.TENANTID";
 
+    /**
+     * <code>HttpServletRequest</code> attribute key where tenant resolving 
extenders
+     * must store the <code>Tenant</code> instance.
+     */
+    String TENANT_REQUESTCONTEXT_KEY = "org.amdatu.web.dispatcher.TENANT";
+
     /**
      * <code>Servlet</code> and <code>Filter</code> service registration 
property
      * considered for reusing or creating a specific named 
<code>HttpContext</code>.

Modified: 
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/FilterHandlerRegistry.java
==============================================================================
--- 
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/FilterHandlerRegistry.java
      (original)
+++ 
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/FilterHandlerRegistry.java
      Wed Oct 12 13:57:26 2011
@@ -44,25 +44,14 @@
  * TODO add eager filter matching and optimize
  */
 public final class FilterHandlerRegistry extends AbstractHandlerRegistry {
-
+    private static final String MAGIC_NOTENANT_ID = "";
     private final ReentrantReadWriteLock m_extenderFilterHandlersLock = new 
ReentrantReadWriteLock();
     private final ReentrantReadWriteLock m_filterHandlersLock = new 
ReentrantReadWriteLock();
-
-    private final Map<ServiceReference, FilterHandler> m_filterHandlers =
-        new HashMap<ServiceReference, FilterHandler>();
-
-    private final Map<String, FilterHandler[]> m_tenantFilterHandlerArrays =
-        new HashMap<String, FilterHandler[]>();
-
-    private final Map<ServiceReference, FilterHandler> 
m_extenderFilterHandlers =
-        new HashMap<ServiceReference, FilterHandler>();
-
+    private final Map<ServiceReference, FilterHandler> m_filterHandlers = new 
HashMap<ServiceReference, FilterHandler>();
+    private final Map<String, FilterHandler[]> m_tenantFilterHandlerArrays = 
new HashMap<String, FilterHandler[]>();
+    private final Map<ServiceReference, FilterHandler> 
m_extenderFilterHandlers = new HashMap<ServiceReference, FilterHandler>();
     private FilterHandler[] m_extenderFilterHandlerArray = new FilterHandler[] 
{};
 
-    public FilterHandlerRegistry() {
-        super();
-    }
-
     public void addDispatchExtenderFilter(ServiceReference serviceReference, 
DispatchExtenderFilter extenderFilter) {
 
         int serviceId = getIntProperty(serviceReference, Constants.SERVICE_ID, 
0);
@@ -214,14 +203,9 @@
     }
 
     public FilterHandler[] getFilterHandlers(HttpServletRequest 
httpServletRequest) {
-
-        Tenant tenant =
-            (Tenant) 
httpServletRequest.getAttribute(DispatcherService.TENANT_REQUESTCONTEXT_KEY);
-
-        String tenantId = "";
-        if (tenant != null) {
-            tenantId = tenant.getId();
-
+        String tenantId = (String) 
httpServletRequest.getAttribute(DispatcherService.TENANTID_REQUESTCONTEXT_KEY);
+        if (tenantId == null) {
+               tenantId = MAGIC_NOTENANT_ID;
         }
 
         m_filterHandlersLock.readLock().lock();
@@ -244,10 +228,10 @@
             }
 
             // build
-            if (tenant == null) {
+            if (tenantId.equals(MAGIC_NOTENANT_ID)) {
                 List<FilterHandler> filterHandlers = new 
LinkedList<FilterHandler>();
                 for (FilterHandler filterHandler : m_filterHandlers.values()) {
-                    if (filterHandler.getTenantId() == null || 
filterHandler.getTenantId() == "") {
+                    if (filterHandler.getTenantId() == null || 
filterHandler.getTenantId() == MAGIC_NOTENANT_ID) {
                         filterHandlers.add(filterHandler);
                     }
                 }
@@ -256,8 +240,7 @@
             else {
                 List<FilterHandler> filterHandlers = new 
LinkedList<FilterHandler>();
                 for (FilterHandler filterHandler : m_filterHandlers.values()) {
-                    if (filterHandler.getTenantId() == null || 
filterHandler.getTenantId() == ""
-                            || 
filterHandler.getTenantId().equals(tenant.getId())) {
+                    if (filterHandler.getTenantId() == null || 
filterHandler.getTenantId() == MAGIC_NOTENANT_ID || 
filterHandler.getTenantId().equals(tenantId)) {
                         filterHandlers.add(filterHandler);
                     }
                 }

Modified: 
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/ServletHandlerRegistry.java
==============================================================================
--- 
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/ServletHandlerRegistry.java
     (original)
+++ 
trunk/amdatu-web/dispatcher/src/main/java/org/amdatu/web/dispatcher/handler/ServletHandlerRegistry.java
     Wed Oct 12 13:57:26 2011
@@ -43,18 +43,10 @@
  * TODO consider caching for getServletHandler
  */
 public final class ServletHandlerRegistry extends AbstractHandlerRegistry {
-
-    private final ReentrantReadWriteLock m_servletHandlersLock = new 
ReentrantReadWriteLock();
-
-    private final Map<ServiceReference, ServletHandler> m_servletHandlers =
-        new HashMap<ServiceReference, ServletHandler>();
-
-    private final Map<String, ServletHandler[]> m_tenantServletHandlerArrays =
-        new HashMap<String, ServletHandler[]>();
-
-    public ServletHandlerRegistry() {
-        super();
-    }
+    private static final String MAGIC_NOTENANT_ID = "";
+       private final ReentrantReadWriteLock m_servletHandlersLock = new 
ReentrantReadWriteLock();
+    private final Map<ServiceReference, ServletHandler> m_servletHandlers = 
new HashMap<ServiceReference, ServletHandler>();
+    private final Map<String, ServletHandler[]> m_tenantServletHandlerArrays = 
new HashMap<String, ServletHandler[]>();
 
     @Override
     public void httpContextAdded(String contextId, HttpContext context) {
@@ -228,13 +220,9 @@
     }
 
     public ServletHandler[] getServletHandlers(HttpServletRequest 
httpServletRequest) {
-
-        Tenant tenant =
-            (Tenant) 
httpServletRequest.getAttribute(DispatcherService.TENANT_REQUESTCONTEXT_KEY);
-        String tenantId = "";
-        if (tenant != null) {
-            tenantId = tenant.getId();
-
+        String tenantId = (String) 
httpServletRequest.getAttribute(DispatcherService.TENANTID_REQUESTCONTEXT_KEY);
+        if (tenantId == null) {
+               tenantId = MAGIC_NOTENANT_ID;
         }
 
         m_servletHandlersLock.readLock().lock();
@@ -257,10 +245,10 @@
             }
 
             // build
-            if (tenant == null) {
+            if (tenantId.equals(MAGIC_NOTENANT_ID)) {
                 List<ServletHandler> filterHandlers = new 
LinkedList<ServletHandler>();
                 for (ServletHandler filterHandler : 
m_servletHandlers.values()) {
-                    if (filterHandler.getTenantId() == null || 
filterHandler.getTenantId() == "") {
+                    if (filterHandler.getTenantId() == null || 
filterHandler.getTenantId() == MAGIC_NOTENANT_ID) {
                         filterHandlers.add(filterHandler);
                     }
                 }
@@ -269,8 +257,7 @@
             else {
                 List<ServletHandler> filterHandlers = new 
LinkedList<ServletHandler>();
                 for (ServletHandler servletHandler : 
m_servletHandlers.values()) {
-                    if (servletHandler.getTenantId() == null || 
servletHandler.getTenantId() == ""
-                        || 
servletHandler.getTenantId().equals(tenant.getId())) {
+                    if (servletHandler.getTenantId() == null || 
servletHandler.getTenantId() == MAGIC_NOTENANT_ID || 
servletHandler.getTenantId().equals(tenantId)) {
                         filterHandlers.add(servletHandler);
                     }
                 }
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to