You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2011/08/09 14:27:06 UTC

svn commit: r1155333 - in /sling/trunk: bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java launchpad/builder/src/main/bundles/list.xml

Author: cziegeler
Date: Tue Aug  9 12:27:05 2011
New Revision: 1155333

URL: http://svn.apache.org/viewvc?rev=1155333&view=rev
Log:
SLING-2172 : NPE in DefaultSlingScript#verifySlingBindings

Modified:
    sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java
    sling/trunk/launchpad/builder/src/main/bundles/list.xml

Modified: sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java?rev=1155333&r1=1155332&r2=1155333&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java (original)
+++ sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java Tue Aug  9 12:27:05 2011
@@ -19,9 +19,9 @@ package org.apache.sling.scripting.core.
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.script.Bindings;
 import javax.script.ScriptEngine;
@@ -172,8 +172,8 @@ public class SlingScriptAdapterFactory i
     protected void activate(ComponentContext context) {
         this.bundleContext = context.getBundleContext();
 
-        this.genericBindingsValuesProviders = new HashMap<Object, BindingsValuesProvider>();
-        this.langBindingsValuesProviders = new HashMap<String, Map<Object, BindingsValuesProvider>>();
+        this.genericBindingsValuesProviders = new ConcurrentHashMap<Object, BindingsValuesProvider>();
+        this.langBindingsValuesProviders = new ConcurrentHashMap<String, Map<Object, BindingsValuesProvider>>();
 
         ServiceTrackerCustomizer customizer = new BindingsValuesProviderCustomizer();
 
@@ -208,10 +208,10 @@ public class SlingScriptAdapterFactory i
     }
 
     private Collection<BindingsValuesProvider> getBindingsValuesProviders(ScriptEngineFactory scriptEngineFactory) {
-        List<BindingsValuesProvider> results = new ArrayList<BindingsValuesProvider>();
+        final List<BindingsValuesProvider> results = new ArrayList<BindingsValuesProvider>();
         results.addAll(genericBindingsValuesProviders.values());
-        for (String name : scriptEngineFactory.getNames()) {
-            Map<Object, BindingsValuesProvider> langProviders = langBindingsValuesProviders.get(name);
+        for (final String name : scriptEngineFactory.getNames()) {
+            final Map<Object, BindingsValuesProvider> langProviders = langBindingsValuesProviders.get(name);
             if (langProviders != null) {
                 results.addAll(langProviders.values());
             }
@@ -222,33 +222,35 @@ public class SlingScriptAdapterFactory i
     private class BindingsValuesProviderCustomizer implements ServiceTrackerCustomizer {
 
         @SuppressWarnings("unchecked")
-        public Object addingService(ServiceReference ref) {
-            String engineName = (String) ref.getProperty(ScriptEngine.NAME);
-            Object serviceId = ref.getProperty(Constants.SERVICE_ID);
+        public Object addingService(final ServiceReference ref) {
+            final String engineName = (String) ref.getProperty(ScriptEngine.NAME);
+            final Object serviceId = ref.getProperty(Constants.SERVICE_ID);
             Object service = bundleContext.getService(ref);
-            if (service instanceof Map) {
-                service = new MapWrappingBindingsValuesProvider((Map<String, Object>) service);
-            }
-            if (engineName == null || ANY_ENGINE.contains(engineName.toUpperCase())) {
-                genericBindingsValuesProviders.put(serviceId, (BindingsValuesProvider) service);
-            } else {
-                Map<Object, BindingsValuesProvider> langProviders = langBindingsValuesProviders.get(engineName);
-                if (langProviders == null) {
-                    langProviders = new HashMap<Object, BindingsValuesProvider>();
-                    langBindingsValuesProviders.put(engineName, langProviders);
+            if ( service != null ) {
+                if (service instanceof Map) {
+                    service = new MapWrappingBindingsValuesProvider((Map<String, Object>) service);
                 }
+                if (engineName == null || ANY_ENGINE.contains(engineName.toUpperCase())) {
+                    genericBindingsValuesProviders.put(serviceId, (BindingsValuesProvider) service);
+                } else {
+                    Map<Object, BindingsValuesProvider> langProviders = langBindingsValuesProviders.get(engineName);
+                    if (langProviders == null) {
+                        langProviders = new ConcurrentHashMap<Object, BindingsValuesProvider>();
+                        langBindingsValuesProviders.put(engineName, langProviders);
+                    }
 
-                langProviders.put(serviceId, (BindingsValuesProvider) service);
+                    langProviders.put(serviceId, (BindingsValuesProvider) service);
+                }
             }
             return service;
         }
 
-        public void modifiedService(ServiceReference ref, Object service) {
+        public void modifiedService(final ServiceReference ref, final Object service) {
             removedService(ref, service);
             addingService(ref);
         }
 
-        public void removedService(ServiceReference ref, Object service) {
+        public void removedService(final ServiceReference ref, final Object service) {
             Object serviceId = ref.getProperty(Constants.SERVICE_ID);
             if (genericBindingsValuesProviders.remove(serviceId) == null) {
                 for (Map<Object, BindingsValuesProvider> coll : langBindingsValuesProviders.values()) {

Modified: sling/trunk/launchpad/builder/src/main/bundles/list.xml
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/builder/src/main/bundles/list.xml?rev=1155333&r1=1155332&r2=1155333&view=diff
==============================================================================
--- sling/trunk/launchpad/builder/src/main/bundles/list.xml (original)
+++ sling/trunk/launchpad/builder/src/main/bundles/list.xml Tue Aug  9 12:27:05 2011
@@ -160,7 +160,7 @@
         <bundle>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.scripting.core</artifactId>
-            <version>2.0.16</version>
+            <version>2.0.17-SNAPSHOT</version>
         </bundle>
         <bundle>
             <groupId>org.apache.sling</groupId>