Author: fmeschbe
Date: Fri Jun  4 07:34:46 2010
New Revision: 951311

URL: http://svn.apache.org/viewvc?rev=951311&view=rev
Log:
SLING-1544 Prevent NullPointer- and IllegalStateExceptions from being thrown 
from the refreshScriptEngineManager method (no thread safety yet)

Modified:
    
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java

Modified: 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java?rev=951311&r1=951310&r2=951311&view=diff
==============================================================================
--- 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java
 (original)
+++ 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java
 Fri Jun  4 07:34:46 2010
@@ -78,9 +78,12 @@ public class ScriptEngineManagerFactory 
 
     @SuppressWarnings("unchecked")
     private void refreshScriptEngineManager() {
+
         if (scriptEngineManagerRegistration != null) {
             scriptEngineManagerRegistration.unregister();
+            scriptEngineManagerRegistration = null;
         }
+
         // create (empty) script engine manager
         ClassLoader loader = getClass().getClassLoader();
         SlingScriptEngineManager tmp = new SlingScriptEngineManager(loader);
@@ -97,8 +100,12 @@ public class ScriptEngineManagerFactory 
         }
 
         scriptEngineManager = tmp;
-        scriptEngineManagerRegistration = 
bundleContext.registerService(ScriptEngineManager.class.getName(),
-                scriptEngineManager, new Hashtable());
+
+        if (bundleContext != null) {
+            scriptEngineManagerRegistration = bundleContext.registerService(
+                ScriptEngineManager.class.getName(), scriptEngineManager,
+                new Hashtable());
+        }
 
         // Log messages to verify which ScriptEngine is actually used
         // for our registered extensions
@@ -210,12 +217,13 @@ public class ScriptEngineManagerFactory 
 
         context.getBundleContext().removeBundleListener(this);
 
-        engineSpiBundles.clear();
-        engineSpiServices.clear();
-        scriptEngineManager = null;
         if (scriptEngineManagerRegistration != null) {
             scriptEngineManagerRegistration.unregister();
+            scriptEngineManagerRegistration = null;
         }
+        engineSpiBundles.clear();
+        engineSpiServices.clear();
+        scriptEngineManager = null;
         if (this.eventAdminTracker != null) {
             this.eventAdminTracker.close();
             this.eventAdminTracker = null;


Reply via email to