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 2016/04/26 05:43:04 UTC
svn commit: r1740939 - in /sling/trunk/contrib/scripting/freemarker: ./
src/main/java/org/apache/sling/scripting/freemarker/
src/main/java/org/apache/sling/scripting/freemarker/internal/
src/main/resources/META-INF/services/
Author: olli
Date: Tue Apr 26 03:43:04 2016
New Revision: 1740939
URL: http://svn.apache.org/viewvc?rev=1740939&view=rev
Log:
SLING-5687 Make ScriptEngine factory configurable
Added:
sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/
sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngine.java
- copied, changed from r1740846, sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/FreemarkerScriptEngine.java
sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngineFactory.java
- copied, changed from r1740846, sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/FreemarkerScriptEngineFactory.java
sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngineFactoryConfiguration.java
Removed:
sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/FreemarkerScriptEngine.java
sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/FreemarkerScriptEngineFactory.java
Modified:
sling/trunk/contrib/scripting/freemarker/pom.xml
sling/trunk/contrib/scripting/freemarker/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory
Modified: sling/trunk/contrib/scripting/freemarker/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/freemarker/pom.xml?rev=1740939&r1=1740938&r2=1740939&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/freemarker/pom.xml (original)
+++ sling/trunk/contrib/scripting/freemarker/pom.xml Tue Apr 26 03:43:04 2016
@@ -32,8 +32,8 @@
<version>2.0.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>Apache Sling Scripting Freemarker Support</name>
- <description>Support for Freemarker scripting</description>
+ <name>Apache Sling Scripting FreeMarker</name>
+ <description>Support for FreeMarker scripting</description>
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/contrib/scripting/freemarker</connection>
@@ -78,6 +78,13 @@
</Import-Package>
<ScriptEngine-Name>${project.name}</ScriptEngine-Name>
<ScriptEngine-Version>${project.version}</ScriptEngine-Version>
+ <_dsannotations>*</_dsannotations>
+ <_metatypeannotations>*</_metatypeannotations>
+ <_removeheaders>
+ Embed-Dependency,
+ Private-Package,
+ Include-Resource
+ </_removeheaders>
</instructions>
</configuration>
</plugin>
@@ -100,11 +107,33 @@
</reporting>
<dependencies>
+ <!-- OSGi -->
<dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.scr.annotations</artifactId>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.core</artifactId>
+ <version>6.0.0</version>
+ <scope>provided</scope>
</dependency>
<dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.annotation</artifactId>
+ <version>6.0.1</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.service.component.annotations</artifactId>
+ <version>1.3.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.service.metatype.annotations</artifactId>
+ <version>1.3.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <!-- Apache Sling -->
+ <dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.api</artifactId>
<version>2.0.8</version>
Copied: sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngine.java (from r1740846, sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/FreemarkerScriptEngine.java)
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngine.java?p2=sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngine.java&p1=sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/FreemarkerScriptEngine.java&r1=1740846&r2=1740939&rev=1740939&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/FreemarkerScriptEngine.java (original)
+++ sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngine.java Tue Apr 26 03:43:04 2016
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.sling.scripting.freemarker;
+package org.apache.sling.scripting.freemarker.internal;
import java.io.Reader;
Copied: sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngineFactory.java (from r1740846, sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/FreemarkerScriptEngineFactory.java)
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngineFactory.java?p2=sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngineFactory.java&p1=sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/FreemarkerScriptEngineFactory.java&r1=1740846&r2=1740939&rev=1740939&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/FreemarkerScriptEngineFactory.java (original)
+++ sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngineFactory.java Tue Apr 26 03:43:04 2016
@@ -16,30 +16,38 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.scripting.freemarker;
+package org.apache.sling.scripting.freemarker.internal;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.script.ScriptEngine;
+import javax.script.ScriptEngineFactory;
import org.apache.sling.scripting.api.AbstractScriptEngineFactory;
-
+import org.osgi.framework.Constants;
+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.Modified;
+import org.osgi.service.metatype.annotations.Designate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component(
+ service = ScriptEngineFactory.class,
+ immediate = true,
+ property = {
+ Constants.SERVICE_DESCRIPTION + "=Scripting engine for FreeMarker templates",
+ Constants.SERVICE_VENDOR + "=The Apache Software Foundation"
+ }
+)
+@Designate(
+ ocd = FreemarkerScriptEngineFactoryConfiguration.class
+)
public class FreemarkerScriptEngineFactory extends AbstractScriptEngineFactory {
- /** The extensions of FreeMarker scripts (value is "ftl"). */
- public final static String FREEMARKER_SCRIPT_EXTENSION = "ftl";
-
- /** The MIME type of FreeMarker script files (value is "text/x-freemarker"). */
- public final static String FREEMARKER_MIME_TYPE = "text/x-freemarker";
-
- /**
- * The short name of the FreeMarker script engine factory (value is
- * "freemarker").
- */
- public final static String SHORT_NAME = "freemarker";
-
/** The name of the FreeMarker language (value is "FreeMarker"). */
private static final String FREEMARKER_NAME = "FreeMarker";
@@ -69,10 +77,9 @@ public class FreemarkerScriptEngineFacto
*/
private final String languageVersion;
+ private final Logger logger = LoggerFactory.getLogger(FreemarkerScriptEngineFactory.class);
+
public FreemarkerScriptEngineFactory() {
- setExtensions(FREEMARKER_SCRIPT_EXTENSION);
- setMimeTypes(FREEMARKER_MIME_TYPE);
- setNames(SHORT_NAME);
// extract language version from version.properties file
String langVersion = null;
@@ -103,6 +110,29 @@ public class FreemarkerScriptEngineFacto
: langVersion;
}
+ @Activate
+ private void activate(final FreemarkerScriptEngineFactoryConfiguration configuration) {
+ logger.debug("activate");
+ configure(configuration);
+ }
+
+ @Modified
+ private void modified(final FreemarkerScriptEngineFactoryConfiguration configuration) {
+ logger.debug("modified");
+ configure(configuration);
+ }
+
+ @Deactivate
+ private void deactivate() {
+ logger.debug("deactivate");
+ }
+
+ private void configure(final FreemarkerScriptEngineFactoryConfiguration configuration) {
+ setExtensions(configuration.extensions());
+ setMimeTypes(configuration.mimeTypes());
+ setNames(configuration.names());
+ }
+
public ScriptEngine getScriptEngine() {
return new FreemarkerScriptEngine(this);
}
Added: sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngineFactoryConfiguration.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngineFactoryConfiguration.java?rev=1740939&view=auto
==============================================================================
--- sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngineFactoryConfiguration.java (added)
+++ sling/trunk/contrib/scripting/freemarker/src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngineFactoryConfiguration.java Tue Apr 26 03:43:04 2016
@@ -0,0 +1,60 @@
+/*
+ * 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.freemarker.internal;
+
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
+
+@ObjectClassDefinition(
+ name = "Apache Sling Scripting FreeMarker âScriptEngine Factoryâ",
+ description = "scripting engine for FreeMarker templates"
+)
+@interface FreemarkerScriptEngineFactoryConfiguration {
+
+ @AttributeDefinition(
+ name = "service ranking",
+ description = "service property for identifying the service's ranking number"
+ )
+ int service_ranking() default 0;
+
+ @AttributeDefinition(
+ name = "extensions",
+ description = "extensions"
+ )
+ String[] extensions() default {
+ "ftl"
+ };
+
+ @AttributeDefinition(
+ name = "mime types",
+ description = "mime types"
+ )
+ String[] mimeTypes() default {
+ "text/x-freemarker"
+ };
+
+ @AttributeDefinition(
+ name = "names",
+ description = "names"
+ )
+ String[] names() default {
+ "freemarker"
+ };
+
+}
Modified: sling/trunk/contrib/scripting/freemarker/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/freemarker/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory?rev=1740939&r1=1740938&r2=1740939&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/freemarker/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory (original)
+++ sling/trunk/contrib/scripting/freemarker/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory Tue Apr 26 03:43:04 2016
@@ -16,4 +16,4 @@
# specific language governing permissions and limitations
# under the License.
#
-org.apache.sling.scripting.freemarker.FreemarkerScriptEngineFactory
\ No newline at end of file
+org.apache.sling.scripting.freemarker.internal.FreemarkerScriptEngineFactory
\ No newline at end of file