You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:11:57 UTC
[sling-org-apache-sling-scripting-sightly-js-provider] 04/06:
SLING-6125 - Switch HTL to OSGi R6 annotations
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.scripting.sightly.js.provider-1.0.14
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-sightly-js-provider.git
commit 390d6d9d1d0c1b1731785883868b8e030ccdbcb7
Author: Radu Cotescu <ra...@apache.org>
AuthorDate: Mon Oct 10 15:39:09 2016 +0000
SLING-6125 - Switch HTL to OSGi R6 annotations
* removed maven-scr-plugin and configured maven-bundle-plugin to generate SCR metadata
* replaced Felix SCR annotations with OSGi Component + Metatype annotations
* removed unused dependencies
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/scripting/sightly/js-use-provider@1764122 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 32 +++++-------
.../scripting/sightly/js/impl/JsUseProvider.java | 48 ++++++++++-------
.../js/impl/jsapi/ProxyAsyncScriptableFactory.java | 12 ++---
.../js/impl/jsapi/SlyBindingsValuesProvider.java | 61 ++++++++++++----------
4 files changed, 80 insertions(+), 73 deletions(-)
diff --git a/pom.xml b/pom.xml
index d980884..a4c61fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,13 +55,18 @@
<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>
+ <executions>
+ <execution>
+ <id>scr-metadata</id>
+ <goals>
+ <goal>manifest</goal>
+ </goals>
+ </execution>
+ </executions>
<configuration>
+ <exportScr>true</exportScr>
<instructions>
<Sling-Bundle-Resources>/libs/sling/sightly/js;path:=/SLING-INF/libs/sling/sightly/js</Sling-Bundle-Resources>
<Require-Capability>io.sightly; filter:="(&(version>=1.0)(!(version>=2.0)))"</Require-Capability>
@@ -116,30 +121,18 @@
<version>2.0.32</version>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.osgi</artifactId>
- <version>2.2.0</version>
- <scope>provided</scope>
- </dependency>
<!-- HTL -->
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.scripting.sightly</artifactId>
- <version>1.0.21-SNAPSHOT</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.scripting.sightly.compiler</artifactId>
- <version>1.0.1-SNAPSHOT</version>
+ <version>1.0.20</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.scripting.sightly.compiler.java</artifactId>
- <version>1.0.1-SNAPSHOT</version>
+ <version>1.0.0</version>
<scope>provided</scope>
</dependency>
@@ -165,8 +158,7 @@
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
+ <artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
diff --git a/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java b/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java
index 887ae2d..0e17a7b 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java
@@ -22,13 +22,7 @@ import javax.script.Bindings;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
-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.resource.Resource;
-import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.scripting.SlingScriptHelper;
import org.apache.sling.scripting.sightly.SightlyException;
import org.apache.sling.scripting.sightly.js.impl.async.AsyncContainer;
@@ -39,28 +33,42 @@ import org.apache.sling.scripting.sightly.render.RenderContext;
import org.apache.sling.scripting.sightly.use.ProviderOutcome;
import org.apache.sling.scripting.sightly.use.UseProvider;
import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.Designate;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
/**
* Use provider for JavaScript Use-API objects.
*/
@Component(
- metatype = true,
- label = "Apache Sling Scripting HTL JavaScript Use Provider",
- description = "The JavaScript Use Provider is responsible for instantiating JavaScript Use-API objects."
+ service = UseProvider.class,
+ configurationPid = "org.apache.sling.scripting.sightly.js.impl.JsUseProvider",
+ property = {
+ Constants.SERVICE_RANKING + ":Integer=80"
+ }
+)
+@Designate(
+ ocd = JsUseProvider.Configuration.class
)
-@Service(UseProvider.class)
-@Properties({
- @Property(
- name = Constants.SERVICE_RANKING,
- label = "Service Ranking",
- description = "The Service Ranking value acts as the priority with which this Use Provider is queried to return an " +
- "Use-object. A higher value represents a higher priority.",
- intValue = 80,
- propertyPrivate = false
- )
- })
public class JsUseProvider implements UseProvider {
+ @ObjectClassDefinition(
+ name = "Apache Sling Scripting HTL JavaScript Use Provider Configuration",
+ description = "HTL JavaScript Use Provider configuration options"
+ )
+ @interface Configuration {
+
+ @AttributeDefinition(
+ name = "Service Ranking",
+ description = "The Service Ranking value acts as the priority with which this Use Provider is queried to return an " +
+ "Use-object. A higher value represents a higher priority."
+ )
+ int service_ranking() default 80;
+
+ }
+
private static final String JS_ENGINE_NAME = "javascript";
private static final JsValueAdapter jsValueAdapter = new JsValueAdapter(new AsyncExtractor());
diff --git a/src/main/java/org/apache/sling/scripting/sightly/js/impl/jsapi/ProxyAsyncScriptableFactory.java b/src/main/java/org/apache/sling/scripting/sightly/js/impl/jsapi/ProxyAsyncScriptableFactory.java
index 3a38cac..75217b8 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/js/impl/jsapi/ProxyAsyncScriptableFactory.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/js/impl/jsapi/ProxyAsyncScriptableFactory.java
@@ -23,18 +23,18 @@ import javax.script.ScriptEngine;
import javax.script.SimpleBindings;
import org.apache.commons.lang.StringUtils;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
import org.apache.sling.scripting.sightly.js.impl.rhino.HybridObject;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
import org.mozilla.javascript.Undefined;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Component
-@Service(ProxyAsyncScriptableFactory.class)
+@Component(
+ service = ProxyAsyncScriptableFactory.class
+)
public class ProxyAsyncScriptableFactory {
private static final Logger LOGGER = LoggerFactory.getLogger(ProxyAsyncScriptableFactory.class);
@@ -56,7 +56,7 @@ public class ProxyAsyncScriptableFactory {
private String clazz;
private Bindings bindings;
- private Set<String> scriptNSUse = new HashSet<String>();
+ private Set<String> scriptNSUse = new HashSet<>();
public ShadowScriptableObject(String clazz, Bindings bindings) {
this.clazz = clazz;
diff --git a/src/main/java/org/apache/sling/scripting/sightly/js/impl/jsapi/SlyBindingsValuesProvider.java b/src/main/java/org/apache/sling/scripting/sightly/js/impl/jsapi/SlyBindingsValuesProvider.java
index 9ecb4e2..65e9c48 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/js/impl/jsapi/SlyBindingsValuesProvider.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/js/impl/jsapi/SlyBindingsValuesProvider.java
@@ -22,7 +22,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Collections;
-import java.util.Dictionary;
import java.util.HashMap;
import java.util.Map;
import javax.script.Bindings;
@@ -32,14 +31,6 @@ import javax.script.SimpleBindings;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.IOUtils;
-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.Service;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
@@ -62,30 +53,44 @@ import org.mozilla.javascript.Script;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
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.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.Designate;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Provides the {@code sightly} namespace for usage in HTL & JS scripts called from Sightly
*/
-@Component(metatype = true, label = "Apache Sling Scripting HTL JavaScript Bindings Provider",
- description = "The Apache Sling Scripting HTL JavaScript Bindings Provider loads the JS Use-API and makes it available in the" +
- " bindings map.")
-@Service(SlyBindingsValuesProvider.class)
-@Properties({
- @Property(
- name = SlyBindingsValuesProvider.SCR_PROP_JS_BINDING_IMPLEMENTATIONS,
- value = {
- "sightly:" + SlyBindingsValuesProvider.SLING_NS_PATH
- },
- unbounded = PropertyUnbounded.ARRAY,
- label = "Script Factories",
+@Component(
+ service = SlyBindingsValuesProvider.class,
+ configurationPid = "org.apache.sling.scripting.sightly.js.impl.jsapi.SlyBindingsValuesProvider"
+)
+@Designate(
+ ocd = SlyBindingsValuesProvider.Configuration.class
+)
+@SuppressWarnings("unused")
+public class SlyBindingsValuesProvider {
+
+ @ObjectClassDefinition(
+ name = "Apache Sling Scripting HTL JavaScript Use-API Factories Configuration",
+ description = "HTL JavaScript Use-API Factories configuration options"
+ )
+ @interface Configuration {
+
+ @AttributeDefinition(
+ name = "Script Factories",
description = "Script factories to load in the bindings map. The entries should be in the form " +
"'namespace:/path/from/repository'."
+
)
-})
-@SuppressWarnings("unused")
-public class SlyBindingsValuesProvider {
+ String[] org_apache_sling_scripting_sightly_js_bindings() default "sightly:" + SlyBindingsValuesProvider.SLING_NS_PATH;
+
+ }
public static final String SCR_PROP_JS_BINDING_IMPLEMENTATIONS = "org.apache.sling.scripting.sightly.js.bindings";
@@ -144,9 +149,11 @@ public class SlyBindingsValuesProvider {
}
@Activate
- protected void activate(ComponentContext componentContext) {
- Dictionary properties = componentContext.getProperties();
- String[] factories = PropertiesUtil.toStringArray(properties.get(SCR_PROP_JS_BINDING_IMPLEMENTATIONS), new String[]{SLING_NS_PATH});
+ protected void activate(Configuration configuration) {
+ String[] factories = PropertiesUtil.toStringArray(
+ configuration.org_apache_sling_scripting_sightly_js_bindings(),
+ new String[]{SLING_NS_PATH}
+ );
scriptPaths = new HashMap<>(factories.length);
for (String f : factories) {
String[] parts = f.split(":");
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.