You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ol...@apache.org on 2017/03/28 11:58:59 UTC

svn commit: r1789102 - in /sling/trunk/bundles/scripting/core: ./ src/main/java/org/apache/sling/scripting/core/impl/

Author: olli
Date: Tue Mar 28 11:58:59 2017
New Revision: 1789102

URL: http://svn.apache.org/viewvc?rev=1789102&view=rev
Log:
SLING-6737 Migrate to OSGi R6 annotations

Added:
    sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImplConfiguration.java
Modified:
    sling/trunk/bundles/scripting/core/pom.xml
    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/ScriptCacheConsolePlugin.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/ScriptEngineManagerFactory.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/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/pom.xml?rev=1789102&r1=1789101&r2=1789102&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/core/pom.xml (original)
+++ sling/trunk/bundles/scripting/core/pom.xml Tue Mar 28 11:58:59 2017
@@ -52,10 +52,6 @@
         <plugins>
             <plugin>
                 <groupId>org.apache.felix</groupId>
-                <artifactId>maven-scr-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <extensions>true</extensions>
                 <configuration>
@@ -162,10 +158,6 @@
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>osgi.core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.scr.annotations</artifactId>
             <scope>provided</scope>
         </dependency>
         <!-- for serializing to JSON, must be after osgi.core to make Maven use the correct osgi.core version -->

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=1789102&r1=1789101&r2=1789102&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 Tue Mar 28 11:58:59 2017
@@ -31,12 +31,6 @@ import java.util.Map;
 
 import javax.script.ScriptEngineFactory;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferencePolicy;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.scripting.api.BindingsValuesProvider;
 import org.apache.sling.scripting.api.BindingsValuesProvidersByContext;
@@ -45,6 +39,11 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+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.ReferencePolicy;
 import org.osgi.service.event.Event;
 import org.osgi.service.event.EventAdmin;
 import org.osgi.util.tracker.ServiceTracker;
@@ -53,8 +52,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /** Our default {@link BindingsValuesProvidersByContext} implementation */
-@Component
-@Service(BindingsValuesProvidersByContext.class)
+@Component(
+    service = BindingsValuesProvidersByContext.class
+)
 public class BindingsValuesProvidersByContextImpl implements BindingsValuesProvidersByContext, ServiceTrackerCustomizer {
 
     private final Map<String, ContextBvpCollector> customizers = new HashMap<String, ContextBvpCollector>();
@@ -73,7 +73,9 @@ public class BindingsValuesProvidersByCo
     @Reference
     private SlingScriptEngineManager scriptEngineManager;
 
-    @Reference(policy = ReferencePolicy.DYNAMIC)
+    @Reference(
+        policy = ReferencePolicy.DYNAMIC
+    )
     private volatile EventAdmin eventAdmin;
 
     private abstract class ContextLoop {

Modified: sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheConsolePlugin.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheConsolePlugin.java?rev=1789102&r1=1789101&r2=1789102&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheConsolePlugin.java (original)
+++ sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheConsolePlugin.java Tue Mar 28 11:58:59 2017
@@ -29,27 +29,23 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.felix.webconsole.AbstractWebConsolePlugin;
 import org.apache.felix.webconsole.WebConsoleConstants;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.scripting.api.ScriptCache;
 import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
-@Component
-@Service
-@Properties({
-        @Property(name = Constants.SERVICE_DESCRIPTION, value = "Script Cache"),
-        @Property(name = Constants.SERVICE_VENDOR, value = "The Apache Software Foundation"),
-        @Property(name = WebConsoleConstants.PLUGIN_LABEL, value = ScriptCacheConsolePlugin.CONSOLE_LABEL),
-        @Property(name = WebConsoleConstants.PLUGIN_TITLE, value = ScriptCacheConsolePlugin.CONSOLE_TITLE),
-        @Property(name = "felix.webconsole.category", value = "Sling")
-})
+@Component(
+    property = {
+        Constants.SERVICE_DESCRIPTION + "=Script Cache",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+        WebConsoleConstants.PLUGIN_LABEL + "=" + ScriptCacheConsolePlugin.CONSOLE_LABEL,
+        WebConsoleConstants.PLUGIN_TITLE + "=" + ScriptCacheConsolePlugin.CONSOLE_TITLE,
+        "felix.webconsole.category=sling"
+    })
 public class ScriptCacheConsolePlugin extends AbstractWebConsolePlugin {
 
     public static final String CONSOLE_LABEL = "scriptcache";

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=1789102&r1=1789101&r2=1789102&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 Tue Mar 28 11:58:59 2017
@@ -35,16 +35,6 @@ import javax.script.Compilable;
 import javax.script.ScriptEngine;
 import javax.script.ScriptEngineFactory;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.PropertyUnbounded;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.ReferencePolicy;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.resource.LoginException;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceResolverFactory;
@@ -52,7 +42,6 @@ import org.apache.sling.api.resource.obs
 import org.apache.sling.api.resource.observation.ResourceChange;
 import org.apache.sling.api.resource.observation.ResourceChange.ChangeType;
 import org.apache.sling.api.resource.observation.ResourceChangeListener;
-import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.commons.threads.ThreadPool;
 import org.apache.sling.commons.threads.ThreadPoolManager;
 import org.apache.sling.scripting.api.CachedScript;
@@ -62,37 +51,27 @@ import org.apache.sling.serviceusermappi
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+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.metatype.annotations.Designate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @Component(
-        metatype = true,
-        label = "Apache Sling Script Cache",
-        description = "The Script Cache is useful for running previously compiled scripts."
-)
-@Properties({
-        @Property(
-                name = ScriptCacheImpl.PROP_CACHE_SIZE,
-                intValue = ScriptCacheImpl.DEFAULT_CACHE_SIZE,
-                label = "Cache Size",
-                description = "The Cache Size defines the maximum number of compiled script references that will be stored in the cache's" +
-                        " internal map."
-        ),
-        @Property(
-                name = ScriptCacheImpl.PROP_ADDITIONAL_EXTENSIONS,
-                value = "",
-                label = "Additional Extensions",
-                description = "Scripts from the search paths with these extensions will also be monitored so that changes to them will " +
-                        "clean the cache if the cache contains them.",
-                unbounded = PropertyUnbounded.ARRAY
-        )
-})
-@Service(ScriptCache.class)
-@Reference(
-        name = "scriptEngineFactory",
-        cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE,
-        referenceInterface = ScriptEngineFactory.class,
+    service = ScriptCache.class,
+    reference = @Reference(
+        name = "ScriptEngineFactory",
+        service = ScriptEngineFactory.class,
+        cardinality = ReferenceCardinality.OPTIONAL,
         policy = ReferencePolicy.DYNAMIC
+    )
+)
+@Designate(
+    ocd = ScriptCacheImplConfiguration.class
 )
 /**
  * The {@code ScriptCache} stores information about {@link CompiledScript} instances evaluated by various {@link ScriptEngine}s that
@@ -103,8 +82,6 @@ public class ScriptCacheImpl implements
     private static final Logger LOGGER = LoggerFactory.getLogger(ScriptCacheImpl.class);
 
     public static final int DEFAULT_CACHE_SIZE = 65536;
-    public static final String PROP_CACHE_SIZE = "org.apache.sling.scripting.cache.size";
-    public static final String PROP_ADDITIONAL_EXTENSIONS = "org.apache.sling.scripting.cache.additional_extensions";
 
     private BundleContext bundleContext;
     private Map<String, SoftReference<CachedScript>> internalMap;
@@ -114,7 +91,9 @@ public class ScriptCacheImpl implements
     private String[] searchPaths = {};
 
     // use a static policy so that we can reconfigure the watched script files if the search paths are changed
-    @Reference(policy = ReferencePolicy.STATIC)
+    @Reference(
+        policy = ReferencePolicy.STATIC
+    )
     private ResourceResolverFactory rrf = null;
 
     @Reference
@@ -232,12 +211,12 @@ public class ScriptCacheImpl implements
 
     @Activate
     @SuppressWarnings("unused")
-    protected void activate(ComponentContext componentContext) {
+    protected void activate(ScriptCacheImplConfiguration configuration, ComponentContext componentContext) {
         threadPool = threadPoolManager.get("Script Cache Thread Pool");
         bundleContext = componentContext.getBundleContext();
         Dictionary properties = componentContext.getProperties();
-        additionalExtensions = PropertiesUtil.toStringArray(properties.get(PROP_ADDITIONAL_EXTENSIONS));
-        int newMaxCacheSize = PropertiesUtil.toInteger(properties.get(PROP_CACHE_SIZE), DEFAULT_CACHE_SIZE);
+        additionalExtensions = configuration.org_apache_sling_scripting_cache_additional__extensions();
+        int newMaxCacheSize = configuration.org_apache_sling_scripting_cache_size();
         if (newMaxCacheSize != DEFAULT_CACHE_SIZE) {
             // change the map only if there's a configuration change regarding the cache's max size
             CachingMap<CachedScript> newMap = new CachingMap<>(newMaxCacheSize);

Added: sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImplConfiguration.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImplConfiguration.java?rev=1789102&view=auto
==============================================================================
--- sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImplConfiguration.java (added)
+++ sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImplConfiguration.java Tue Mar 28 11:58:59 2017
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.scripting.core.impl;
+
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
+
+import static org.apache.sling.scripting.core.impl.ScriptCacheImpl.DEFAULT_CACHE_SIZE;
+
+@ObjectClassDefinition(
+    name = "Apache Sling Script Cache",
+    description = "The Script Cache is useful for running previously compiled scripts."
+)
+@interface ScriptCacheImplConfiguration {
+
+    @AttributeDefinition(
+        name = "Cache Size",
+        description = "The Cache Size defines the maximum number of compiled script references that will be stored in the cache's internal map."
+    )
+    int org_apache_sling_scripting_cache_size() default DEFAULT_CACHE_SIZE;
+
+    @AttributeDefinition(
+        name = "Additional Extensions",
+        description = "Scripts from the search paths with these extensions will also be monitored so that changes to them will clean the cache if the cache contains them."
+
+    )
+    String[] org_apache_sling_scripting_cache_additional__extensions() default {};
+
+}

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=1789102&r1=1789101&r2=1789102&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 Tue Mar 28 11:58:59 2017
@@ -32,10 +32,6 @@ import java.util.Set;
 import javax.script.ScriptEngineFactory;
 import javax.script.ScriptEngineManager;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.sling.api.scripting.SlingScriptConstants;
 import org.apache.sling.scripting.core.impl.helper.ProxyScriptEngineManager;
 import org.apache.sling.scripting.core.impl.helper.SlingScriptEngineManager;
@@ -45,6 +41,10 @@ import org.osgi.framework.BundleEvent;
 import org.osgi.framework.BundleListener;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Component;
+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.event.Event;
 import org.osgi.service.event.EventAdmin;
 import org.osgi.util.tracker.ServiceTracker;
@@ -55,9 +55,14 @@ import org.slf4j.LoggerFactory;
  * Component which exposes a ScriptEngineManager service.
  *
  */
-@Component(metatype=false, immediate=true, specVersion="1.1")
-@Reference(name="ScriptEngineFactory", referenceInterface=ScriptEngineFactory.class,
-           policy=ReferencePolicy.DYNAMIC, cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE)
+@Component(
+    reference = @Reference(
+        name = "ScriptEngineFactory",
+        service = ScriptEngineFactory.class,
+        policy = ReferencePolicy.DYNAMIC,
+        cardinality = ReferenceCardinality.OPTIONAL
+    )
+)
 public class ScriptEngineManagerFactory implements BundleListener {
 
     private final Logger log = LoggerFactory.getLogger(ScriptEngineManagerFactory.class);

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=1789102&r1=1789101&r2=1789102&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 Tue Mar 28 11:58:59 2017
@@ -25,24 +25,21 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.felix.webconsole.AbstractWebConsolePlugin;
 import org.apache.felix.webconsole.WebConsoleConstants;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 /**
  * Web Console Plugin exposing all binding provider values.
  */
-@Component
-@Service
-@Properties({
-    @Property(name = WebConsoleConstants.PLUGIN_LABEL, value = ScriptingVariablesConsolePlugin.LABEL),
-    @Property(name = WebConsoleConstants.PLUGIN_TITLE, value = ScriptingVariablesConsolePlugin.TITLE),
-    @Property(name = "felix.webconsole.category", value = "Sling")
-})
+@Component(
+    property = {
+        WebConsoleConstants.PLUGIN_LABEL + "=" + ScriptingVariablesConsolePlugin.LABEL,
+        WebConsoleConstants.PLUGIN_TITLE + "=" + ScriptingVariablesConsolePlugin.TITLE,
+        "felix.webconsole.category=sling"
+    }
+)
 public class ScriptingVariablesConsolePlugin extends AbstractWebConsolePlugin {
 
     protected static final String LABEL = "scriptingvariables";

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=1789102&r1=1789101&r2=1789102&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 Tue Mar 28 11:58:59 2017
@@ -24,12 +24,10 @@ import javax.script.Bindings;
 import javax.script.ScriptEngine;
 import javax.script.ScriptEngineFactory;
 import javax.script.ScriptEngineManager;
+import javax.servlet.Servlet;
 import javax.servlet.ServletException;
 
 import org.apache.commons.lang.StringUtils;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.sling.SlingServlet;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.resource.NonExistingResource;
@@ -42,6 +40,9 @@ import org.apache.sling.scripting.api.Bi
 import org.apache.felix.utils.json.JSONWriter;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 /**
  * Return all scripting variables for all registered scripting languages for the default context (=request).
@@ -49,11 +50,14 @@ import org.osgi.service.component.Compon
  * 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
  */
-@SlingServlet(
-        resourceTypes = "sling/servlet/default",
-        selectors = "SLING_availablebindings",
-        methods = "GET",
-        extensions = "json"
+@Component(
+    service = Servlet.class,
+    property = {
+        "sling.servlet.resourceTypes=sling/servlet/default",
+        "sling.servlet.selectors=SLING_availablebindings",
+        "sling.servlet.methods=GET",
+        "sling.servlet.extensions=json"
+    }
 )
 public class SlingBindingsVariablesListJsonServlet extends SlingSafeMethodsServlet {
 

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=1789102&r1=1789101&r2=1789102&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 Mar 28 11:58:59 2017
@@ -21,11 +21,6 @@ import java.util.List;
 
 import javax.script.ScriptEngine;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.adapter.AdapterFactory;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.commons.mime.MimeTypeProvider;
@@ -35,21 +30,27 @@ import org.apache.sling.scripting.api.Sc
 import org.apache.sling.scripting.core.impl.helper.SlingScriptEngineManager;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 /**
  * AdapterFactory that adapts Resources to the DefaultSlingScript servlet, which
  * executes the Resources as scripts.
  */
-@Component(metatype=false, immediate=true)
-@Service({AdapterFactory.class, MimeTypeProvider.class})
-@Properties({
-    @Property(name="service.vendor", value="The Apache Software Foundation"),
-    @Property(name="service.description", value="Default SlingScriptResolver"),
-    @Property(name="adaptables", value="org.apache.sling.api.resource.Resource"),
-    @Property(name="adapters", value={"org.apache.sling.api.scripting.SlingScript",
-                                      "javax.servlet.Servlet"}),
-    @Property(name="adapter.condition", value="If the resource's path ends in an extension registered by a script engine.")
-})
+@Component(
+    service = {
+        AdapterFactory.class,
+        MimeTypeProvider.class
+    },
+    property = {
+        "service.vendor=The Apache Software Foundation",
+        "service.description=Default SlingScriptResolver",
+        "adaptables=org.apache.sling.api.resource.Resource",
+        "adapters=org.apache.sling.api.scripting.SlingScript",
+        "adapters=javax.servlet.Servlet",
+        "adapter.condition=If the resource's path ends in an extension registered by a script engine."
+    }
+)
 public class SlingScriptAdapterFactory implements AdapterFactory, MimeTypeProvider {
 
     private BundleContext bundleContext;