Author: ivol37 at gmail.com
Date: Wed Dec  1 08:58:36 2010
New Revision: 458

Log:
[AMDATU-189] Improved bundle state check, which could fail at normal statrup

Modified:
   
trunk/amdatu-web/jsp/src/main/java/org/amdatu/web/jsp/service/ResourceProviderListener.java

Modified: 
trunk/amdatu-web/jsp/src/main/java/org/amdatu/web/jsp/service/ResourceProviderListener.java
==============================================================================
--- 
trunk/amdatu-web/jsp/src/main/java/org/amdatu/web/jsp/service/ResourceProviderListener.java
 (original)
+++ 
trunk/amdatu-web/jsp/src/main/java/org/amdatu/web/jsp/service/ResourceProviderListener.java
 Wed Dec  1 08:58:36 2010
@@ -98,7 +98,8 @@
                 onRemoved(m_resourceProviders.get(0));
             }
             m_httpContextComponent.stop();
-        } finally {
+        }
+        finally {
             destructionLock.unlock();
         }
     }
@@ -108,9 +109,9 @@
         WriteLock destructionLock = m_destructionLock.writeLock();
         destructionLock.lock();
         try {
-            // After retrieving the destruction lock, be sure the bundle is 
not being stopped (we might have been waiting for 
+            // After retrieving the destruction lock, be sure the bundle is 
not being stopped (we might have been waiting for
             // the destruction lock to be released by the destroy() method)
-            if (m_bundleContext.getBundle().getState() == Bundle.ACTIVE) {
+            if (m_bundleContext.getBundle().getState() != Bundle.STOPPING) {
                 Dictionary<String, String> initParams = new Hashtable<String, 
String>();
                 String servletAlias = getServletAlias(provider);
 
@@ -120,7 +121,8 @@
                 component.setImplementation(jspServlet);
 
                 // Add service dependencies
-                
component.add(m_dependencyManager.createServiceDependency().setService(LogService.class).setRequired(true));
+                
component.add(m_dependencyManager.createServiceDependency().setService(LogService.class).setRequired(
+                    true));
 
                 // Add the component to the dependency manager
                 m_components.put(normalizeResourceId(provider), component);
@@ -142,7 +144,14 @@
                     return;
                 }
             }
-        } finally {
+            else {
+                m_logService.log(LogService.LOG_INFO, "Bundle state of JSP 
bundle is '"
+                    + m_bundleContext.getBundle().getState()
+                    + "', JSP servlet registration ignored for resource 
provider " + provider.getResourceId());
+                return;
+            }
+        }
+        finally {
             destructionLock.unlock();
         }
     }

Reply via email to