Author: cziegeler
Date: Fri Apr 28 08:16:18 2017
New Revision: 1793000

URL: http://svn.apache.org/viewvc?rev=1793000&view=rev
Log:
SLING-6737 Migrate to OSGi R6 annotations - Fix reference to factories being 
multiple. Add service.vendor property

Modified:
    
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/BindingsValuesProvidersByContextImpl.java
    
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java
    
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingVariablesConsolePlugin.java
    
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingBindingsVariablesListJsonServlet.java
    
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java

Modified: 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/BindingsValuesProvidersByContextImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/BindingsValuesProvidersByContextImpl.java?rev=1793000&r1=1792999&r2=1793000&view=diff
==============================================================================
--- 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/BindingsValuesProvidersByContextImpl.java
 (original)
+++ 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/BindingsValuesProvidersByContextImpl.java
 Fri Apr 28 08:16:18 2017
@@ -43,7 +43,9 @@ import org.osgi.service.component.annota
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Deactivate;
 import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.osgi.service.component.annotations.ReferencePolicy;
+import org.osgi.service.component.annotations.ReferencePolicyOption;
 import org.osgi.service.event.Event;
 import org.osgi.service.event.EventAdmin;
 import org.osgi.util.tracker.ServiceTracker;
@@ -53,11 +55,14 @@ import org.slf4j.LoggerFactory;
 
 /** Our default {@link BindingsValuesProvidersByContext} implementation */
 @Component(
-    service = BindingsValuesProvidersByContext.class
+    service = BindingsValuesProvidersByContext.class,
+    property = {
+            Constants.SERVICE_VENDOR + "=The Apache Software Foundation"
+    }
 )
 public class BindingsValuesProvidersByContextImpl implements 
BindingsValuesProvidersByContext, ServiceTrackerCustomizer {
 
-    private final Map<String, ContextBvpCollector> customizers = new 
HashMap<String, ContextBvpCollector>();
+    private final Map<String, ContextBvpCollector> customizers = new 
HashMap<>();
     public static final String [] DEFAULT_CONTEXT_ARRAY = new String [] { 
DEFAULT_CONTEXT };
 
     private static final String TOPIC_CREATED = 
"org/apache/sling/scripting/core/BindingsValuesProvider/CREATED";
@@ -68,13 +73,15 @@ public class BindingsValuesProvidersByCo
     private ServiceTracker mapsTracker;
     private BundleContext bundleContext;
     private final Logger logger = LoggerFactory.getLogger(getClass());
-    private final List<ServiceReference> pendingRefs = new 
ArrayList<ServiceReference>();
+    private final List<ServiceReference> pendingRefs = new ArrayList<>();
 
     @Reference
     private SlingScriptEngineManager scriptEngineManager;
 
     @Reference(
-        policy = ReferencePolicy.DYNAMIC
+        policy = ReferencePolicy.DYNAMIC,
+        policyOption = ReferencePolicyOption.GREEDY,
+        cardinality = ReferenceCardinality.OPTIONAL
     )
     private volatile EventAdmin eventAdmin;
 
@@ -129,7 +136,7 @@ public class BindingsValuesProvidersByCo
     public Collection<BindingsValuesProvider> getBindingsValuesProviders(
             ScriptEngineFactory scriptEngineFactory,
             String context) {
-        final List<BindingsValuesProvider> results = new 
ArrayList<BindingsValuesProvider>();
+        final List<BindingsValuesProvider> results = new ArrayList<>();
         if(context == null) {
             context = DEFAULT_CONTEXT;
         }

Modified: 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java?rev=1793000&r1=1792999&r2=1793000&view=diff
==============================================================================
--- 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java
 (original)
+++ 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java
 Fri Apr 28 08:16:18 2017
@@ -49,6 +49,7 @@ import org.apache.sling.scripting.api.Sc
 import org.apache.sling.scripting.core.impl.helper.CachingMap;
 import org.apache.sling.serviceusermapping.ServiceUserMapped;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.component.ComponentContext;
 import org.osgi.service.component.annotations.Activate;
@@ -66,9 +67,12 @@ import org.slf4j.LoggerFactory;
     reference = @Reference(
         name = "ScriptEngineFactory",
         service = ScriptEngineFactory.class,
-        cardinality = ReferenceCardinality.OPTIONAL,
+        cardinality = ReferenceCardinality.MULTIPLE,
         policy = ReferencePolicy.DYNAMIC
-    )
+    ),
+    property = {
+            Constants.SERVICE_VENDOR + "=The Apache Software Foundation"
+    }
 )
 @Designate(
     ocd = ScriptCacheImplConfiguration.class
@@ -253,7 +257,7 @@ public class ScriptCacheImpl implements
                 for (String extension : extensions) {
                     globPatterns.add("glob:**/*." + extension);
                 }
-                Dictionary<String, Object> resourceChangeListenerProperties = 
new Hashtable<String, Object>();
+                Dictionary<String, Object> resourceChangeListenerProperties = 
new Hashtable<>();
                 
resourceChangeListenerProperties.put(ResourceChangeListener.PATHS, 
globPatterns.toArray(new String[globPatterns.size()]));
                 
resourceChangeListenerProperties.put(ResourceChangeListener.CHANGES,
                         new String[]{ResourceChange.ChangeType.CHANGED.name(), 
ResourceChange.ChangeType.REMOVED.name()});

Modified: 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingVariablesConsolePlugin.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingVariablesConsolePlugin.java?rev=1793000&r1=1792999&r2=1793000&view=diff
==============================================================================
--- 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingVariablesConsolePlugin.java
 (original)
+++ 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptingVariablesConsolePlugin.java
 Fri Apr 28 08:16:18 2017
@@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.felix.webconsole.AbstractWebConsolePlugin;
 import org.apache.felix.webconsole.WebConsoleConstants;
+import org.osgi.framework.Constants;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
 
@@ -35,6 +36,7 @@ import org.osgi.service.component.annota
  */
 @Component(
     property = {
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
         WebConsoleConstants.PLUGIN_LABEL + "=" + 
ScriptingVariablesConsolePlugin.LABEL,
         WebConsoleConstants.PLUGIN_TITLE + "=" + 
ScriptingVariablesConsolePlugin.TITLE,
         "felix.webconsole.category=sling"
@@ -45,12 +47,12 @@ public class ScriptingVariablesConsolePl
     protected static final String LABEL = "scriptingvariables";
     protected static final String TITLE = "Scripting Variables";
     /**
-     * 
+     *
      */
     private static final long serialVersionUID = 261709110347150295L;
-    
+
     private static final String JS_RES_PATH = 
"scriptingvariables/ui/scriptingvariables.js";
-    
+
     /**
      * The script engine manager.
      */
@@ -61,11 +63,11 @@ public class ScriptingVariablesConsolePl
     }
 
     /**
-     * Automatically called from 
+     * Automatically called from
      * <a 
href="https://github.com/apache/felix/blob/4a60744d0f88f351551e4cb4673eb60b8fbd21d3/webconsole/src/main/java/org/apache/felix/webconsole/AbstractWebConsolePlugin.java#L510";>AbstractWebConsolePlugin#spoolResource</a>
-     * 
+     *
      * @param path the requested path
-     * @return either a URL from which to spool the resource requested through 
the given path or {@code null} 
+     * @return either a URL from which to spool the resource requested through 
the given path or {@code null}
      */
     public URL getResource(String path) {
         if (path.endsWith(JS_RES_PATH)) {
@@ -92,7 +94,7 @@ public class ScriptingVariablesConsolePl
         pw.append("<div id='content'>");
         pw.append("<table class='content'  cellpadding='0' cellspacing='0' 
width='100%'>");
         pw.append("<tr><th colspan='3' class='content container'>Sling 
Scripting Variables</th></tr>");
-        pw.append("<tr class='content'><td class='content' colspan='3'>Provide 
a resource path url and script engine (via extension) and then click on 
'Retrieve Variables' to expose all script bindings variables for context 
'request' which are available for that resource and script engine.</td></tr>"); 
+        pw.append("<tr class='content'><td class='content' colspan='3'>Provide 
a resource path url and script engine (via extension) and then click on 
'Retrieve Variables' to expose all script bindings variables for context 
'request' which are available for that resource and script engine.</td></tr>");
         pw.append("<tr class='content'>");
         pw.append("<td class='content'>Resource Url (without selectors and 
extension)</td> ");
         pw.append("<td class='content' colspan='2'><input type ='text' 
name='form.path' placeholder='path' required='required' value='/' ");

Modified: 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingBindingsVariablesListJsonServlet.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingBindingsVariablesListJsonServlet.java?rev=1793000&r1=1792999&r2=1793000&view=diff
==============================================================================
--- 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingBindingsVariablesListJsonServlet.java
 (original)
+++ 
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/SlingBindingsVariablesListJsonServlet.java
 Fri Apr 28 08:16:18 2017
@@ -28,6 +28,7 @@ import javax.servlet.Servlet;
 import javax.servlet.ServletException;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.felix.utils.json.JSONWriter;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.resource.NonExistingResource;
@@ -37,8 +38,8 @@ import org.apache.sling.api.scripting.Sl
 import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
 import org.apache.sling.scripting.api.BindingsValuesProvider;
 import org.apache.sling.scripting.api.BindingsValuesProvidersByContext;
-import org.apache.felix.utils.json.JSONWriter;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.service.component.ComponentContext;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
@@ -47,12 +48,13 @@ import org.osgi.service.component.annota
 /**
  * Return all scripting variables for all registered scripting languages for 
the default context (=request).
  * This can only be achieved when a real Sling request and Sling response is 
available.
- * Also the context (i.e. the resource on which the request is acting) is 
important, 
+ * Also the context (i.e. the resource on which the request is acting) is 
important,
  * because the actual binding variables might differ depending on the context
  */
 @Component(
     service = Servlet.class,
     property = {
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
         "sling.servlet.resourceTypes=sling/servlet/default",
         "sling.servlet.selectors=SLING_availablebindings",
         "sling.servlet.methods=GET",
@@ -62,7 +64,7 @@ import org.osgi.service.component.annota
 public class SlingBindingsVariablesListJsonServlet extends 
SlingSafeMethodsServlet {
 
     /**
-     * 
+     *
      */
     private static final long serialVersionUID = -6744726829737263875L;
 
@@ -71,7 +73,7 @@ public class SlingBindingsVariablesListJ
      */
     @Reference
     private ScriptEngineManager scriptEngineManager;
-    
+
     /**
      * The BindingsValuesProviderTracker
      */
@@ -134,33 +136,32 @@ public class SlingBindingsVariablesListJ
     /**
      * Gets the {@link Bindings} object for the given {@link 
ScriptEngineFactory}.
      * It only considers the default context "request".
-     * 
+     *
      * @see <a href="https://issues.apache.org/jira/browse/SLING-3038";>binding 
contexts(SLING-3083)</a>
-     * 
+     *
      * @param scriptEngineFactory the factory of the script engine, for which 
to retrieve the bindings
      * @param request the current request (necessary to create the bindings)
      * @param response the current response (necessary to create the bindings)
      * @return the bindings (list of key/value pairs) as defined by {@link 
Bindings} for the given script engine.
      * @throws IOException
-     * @throws JSONException
      */
     private Bindings getBindingsByEngine(ScriptEngineFactory 
scriptEngineFactory, SlingHttpServletRequest request, SlingHttpServletResponse 
response) throws IOException {
         String context = SlingScriptAdapterFactory.BINDINGS_CONTEXT; // use 
default context only
-        final Collection<BindingsValuesProvider> bindingsValuesProviders = 
+        final Collection<BindingsValuesProvider> bindingsValuesProviders =
                 
bindingsValuesProviderTracker.getBindingsValuesProviders(scriptEngineFactory, 
context);
-        
+
         Resource invalidScriptResource = new 
NonExistingResource(request.getResourceResolver(), "some/invalid/scriptpath");
         DefaultSlingScript defaultSlingScript = new 
DefaultSlingScript(bundleContext, invalidScriptResource, 
scriptEngineFactory.getScriptEngine(), bindingsValuesProviders, null, null);
-        
+
         // prepare the bindings (similar as in DefaultSlingScript#service)
         final SlingBindings initalBindings = new SlingBindings();
-        initalBindings.setRequest((SlingHttpServletRequest) request);
-        initalBindings.setResponse((SlingHttpServletResponse) response);
+        initalBindings.setRequest(request);
+        initalBindings.setResponse(response);
         final Bindings bindings = 
defaultSlingScript.verifySlingBindings(initalBindings);
-        
+
         // only thing being added in {DefaultSlingScript#call(...)} is 
resource resolver
         bindings.put(SlingScriptConstants.ATTR_SCRIPT_RESOURCE_RESOLVER, 
request.getResourceResolver());
-        
+
         return bindings;
     }
 }

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=1793000&r1=1792999&r2=1793000&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
 Fri Apr 28 08:16:18 2017
@@ -29,6 +29,7 @@ import org.apache.sling.scripting.api.Bi
 import org.apache.sling.scripting.api.ScriptCache;
 import org.apache.sling.scripting.core.impl.helper.SlingScriptEngineManager;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.service.component.ComponentContext;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
@@ -43,8 +44,8 @@ import org.osgi.service.component.annota
         MimeTypeProvider.class
     },
     property = {
-        "service.vendor=The Apache Software Foundation",
-        "service.description=Default SlingScriptResolver",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+        Constants.SERVICE_DESCRIPTION + "=Default SlingScriptResolver",
         "adaptables=org.apache.sling.api.resource.Resource",
         "adapters=org.apache.sling.api.scripting.SlingScript",
         "adapters=javax.servlet.Servlet",
@@ -68,7 +69,7 @@ public class SlingScriptAdapterFactory i
      */
     @Reference
     private SlingScriptEngineManager scriptEngineManager;
-    
+
     /**
      * The BindingsValuesProviderTracker
      */
@@ -80,6 +81,7 @@ public class SlingScriptAdapterFactory i
 
     // ---------- AdapterFactory 
-----------------------------------------------
 
+    @Override
     @SuppressWarnings("unchecked")
     public <AdapterType> AdapterType getAdapter(Object adaptable, 
Class<AdapterType> type) {
 
@@ -89,7 +91,7 @@ public class SlingScriptAdapterFactory i
 
         ScriptEngine engine = scriptEngineManager.getEngineByExtension(ext);
         if (engine != null) {
-            final Collection<BindingsValuesProvider> bindingsValuesProviders = 
+            final Collection<BindingsValuesProvider> bindingsValuesProviders =
                     
bindingsValuesProviderTracker.getBindingsValuesProviders(engine.getFactory(), 
BINDINGS_CONTEXT);
             // unchecked cast
             return (AdapterType) new DefaultSlingScript(this.bundleContext,
@@ -113,6 +115,7 @@ public class SlingScriptAdapterFactory i
      *            name contains no dot, the entire name is considered the
      *            extension.
      */
+    @Override
     public String getMimeType(String name) {
         name = name.substring(name.lastIndexOf('.') + 1);
         ScriptEngine se = scriptEngineManager.getEngineByExtension(name);
@@ -135,6 +138,7 @@ public class SlingScriptAdapterFactory i
      *
      * @param mimeType The MIME type to be mapped to an extension.
      */
+    @Override
     public String getExtension(String mimeType) {
         ScriptEngine se = scriptEngineManager.getEngineByMimeType(mimeType);
         if (se != null) {


Reply via email to