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 2016/11/15 18:08:18 UTC
svn commit: r1769867 - in /sling/trunk/contrib/scripting/java: ./
src/main/java/org/apache/sling/scripting/java/impl/ src/main/resources/
Author: cziegeler
Date: Tue Nov 15 18:08:18 2016
New Revision: 1769867
URL: http://svn.apache.org/viewvc?rev=1769867&view=rev
Log:
SLING-6289 : Improve java resource change listener to use globs
Removed:
sling/trunk/contrib/scripting/java/src/main/resources/
Modified:
sling/trunk/contrib/scripting/java/pom.xml
sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/CompilerOptions.java
sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/JavaScriptEngineFactory.java
sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/JavaServletConfig.java
Modified: sling/trunk/contrib/scripting/java/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/java/pom.xml?rev=1769867&r1=1769866&r2=1769867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/java/pom.xml (original)
+++ sling/trunk/contrib/scripting/java/pom.xml Tue Nov 15 18:08:18 2016
@@ -45,10 +45,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>
Modified: sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/CompilerOptions.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/CompilerOptions.java?rev=1769867&r1=1769866&r2=1769867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/CompilerOptions.java (original)
+++ sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/CompilerOptions.java Tue Nov 15 18:08:18 2016
@@ -16,10 +16,7 @@
*/
package org.apache.sling.scripting.java.impl;
-import java.util.Map;
-
import org.apache.sling.commons.compiler.Options;
-import org.apache.sling.commons.osgi.PropertiesUtil;
public class CompilerOptions extends Options {
@@ -31,31 +28,23 @@ public class CompilerOptions extends Opt
* Create an compiler options object using data available from
* the component configuration.
*/
- public static CompilerOptions createOptions(final Map<String, Object> props) {
+ public static CompilerOptions createOptions(final JavaScriptEngineFactory.Config config) {
final String currentVersion = System.getProperty("java.specification.version");
final CompilerOptions opts = new CompilerOptions();
- final Boolean classDebugInfo = PropertiesUtil.toBoolean(
- props.get(JavaScriptEngineFactory.PROPERTY_CLASSDEBUGINFO), true);
- opts.put(Options.KEY_GENERATE_DEBUG_INFO, classDebugInfo);
-
- final String sourceVM = PropertiesUtil.toString(
- props.get(JavaScriptEngineFactory.PROPERTY_COMPILER_SOURCE_V_M), null);
- opts.put(Options.KEY_SOURCE_VERSION, sourceVM != null && sourceVM.trim().length() > 0 ? sourceVM.trim() : JavaScriptEngineFactory.VERSION_AUTO);
+ opts.put(Options.KEY_GENERATE_DEBUG_INFO, config.java_classdebuginfo());
+
+ opts.put(Options.KEY_SOURCE_VERSION, config.java_compilerSourceVM());
if ( JavaScriptEngineFactory.VERSION_AUTO.equalsIgnoreCase((String)opts.get(Options.KEY_SOURCE_VERSION)) ) {
opts.put(Options.KEY_SOURCE_VERSION, currentVersion);
}
- final String targetVM = PropertiesUtil.toString(
- props.get(JavaScriptEngineFactory.PROPERTY_COMPILER_TARGET_V_M), null);
- opts.put(Options.KEY_TARGET_VERSION, targetVM != null && targetVM.trim().length() > 0 ? targetVM.trim() : JavaScriptEngineFactory.VERSION_AUTO);
+ opts.put(Options.KEY_TARGET_VERSION, config.java_compilerTargetVM());
if ( JavaScriptEngineFactory.VERSION_AUTO.equalsIgnoreCase((String)opts.get(Options.KEY_TARGET_VERSION)) ) {
opts.put(Options.KEY_TARGET_VERSION, currentVersion);
}
- final String encoding = PropertiesUtil.toString(
- props.get(JavaScriptEngineFactory.PROPERTY_ENCODING), null);
- opts.encoding = encoding != null && encoding.length() > 0 ? encoding : "UTF-8";
+ opts.encoding = config.java_javaEncoding();
opts.put(Options.KEY_IGNORE_WARNINGS, true);
Modified: sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/JavaScriptEngineFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/JavaScriptEngineFactory.java?rev=1769867&r1=1769866&r2=1769867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/JavaScriptEngineFactory.java (original)
+++ sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/JavaScriptEngineFactory.java Tue Nov 15 18:08:18 2016
@@ -20,7 +20,6 @@ import static org.apache.sling.api.scrip
import java.io.IOException;
import java.io.Reader;
-import java.util.Hashtable;
import java.util.List;
import java.util.Map;
@@ -32,13 +31,6 @@ import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
-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.Reference;
-import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingException;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingIOException;
@@ -55,6 +47,14 @@ import org.apache.sling.api.scripting.Sl
import org.apache.sling.commons.compiler.JavaCompiler;
import org.apache.sling.scripting.api.AbstractScriptEngineFactory;
import org.apache.sling.scripting.api.AbstractSlingScriptEngine;
+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.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;
@@ -62,31 +62,44 @@ import org.slf4j.LoggerFactory;
* The Java engine
*
*/
-@Component(metatype=true, label="%javahandler.name", description="%javahandler.description")
-@Service(value={javax.script.ScriptEngineFactory.class, ResourceChangeListener.class})
-@Properties({
- @Property(name="service.vendor", value="The Apache Software Foundation"),
- @Property(name="service.description", value="Java Servlet Script Handler"),
- @Property(name=JavaScriptEngineFactory.PROPERTY_COMPILER_SOURCE_V_M, value=JavaScriptEngineFactory.VERSION_AUTO),
- @Property(name=JavaScriptEngineFactory.PROPERTY_COMPILER_TARGET_V_M, value=JavaScriptEngineFactory.VERSION_AUTO),
- @Property(name=JavaScriptEngineFactory.PROPERTY_CLASSDEBUGINFO, boolValue=true),
- @Property(name=JavaScriptEngineFactory.PROPERTY_ENCODING, value="UTF-8"),
- @Property(name = ResourceChangeListener.CHANGES, value = {"CHANGED", "REMOVED"}, propertyPrivate = true),
- @Property(name = ResourceChangeListener.PATHS, value = {"."}, propertyPrivate = true)
-})
+@Component(service={javax.script.ScriptEngineFactory.class, ResourceChangeListener.class},
+ property={
+ Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+ Constants.SERVICE_DESCRIPTION + "=" + JavaScriptEngineFactory.DESCRIPTION,
+ ResourceChangeListener.CHANGES + "=CHANGED",
+ ResourceChangeListener.CHANGES + "=REMOVED",
+ ResourceChangeListener.PATHS + "=glob:**/*.java"
+ })
+@Designate(ocd = JavaScriptEngineFactory.Config.class)
public class JavaScriptEngineFactory
extends AbstractScriptEngineFactory
implements ResourceChangeListener, ExternalResourceChangeListener {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
+ public static final String DESCRIPTION = "Java Servlet Script Handler";
+
+ @ObjectClassDefinition(name = "Apache Sling Java Script Handler",
+ description = "The Java Script Handler supports development of Java Servlets to render response content. ")
+
+ public @interface Config {
- public static final String PROPERTY_COMPILER_SOURCE_V_M = "java.compilerSourceVM";
+ @AttributeDefinition(name = "Generate Debug Info", description = "Should the class file be compiled with " +
+ "debugging information? true or false, default true.")
+ boolean java_classdebuginfo() default true;
- public static final String PROPERTY_COMPILER_TARGET_V_M = "java.compilerTargetVM";
+ @AttributeDefinition(name = "Source Encoding", description = "")
+ String java_javaEncoding() default "UTF-8";
- public static final String PROPERTY_CLASSDEBUGINFO = "java.classdebuginfo";
+ @AttributeDefinition(name = "Source VM", description = "Java Specification to be used to read " +
+ "the source files. If left empty or the value \"auto\" is specified, the " +
+ "current vm version will be used.")
+ String java_compilerSourceVM() default JavaScriptEngineFactory.VERSION_AUTO;
- public static final String PROPERTY_ENCODING = "java.javaEncoding";
+ @AttributeDefinition(name = "Target VM", description = "Target Java version for compilation. If left " +
+ "empty or the value \"auto\" is specified, the current vm version will be used.")
+ String java_compilerTargetVM() default JavaScriptEngineFactory.VERSION_AUTO;
+ }
+
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
public static final String VERSION_AUTO = "auto";
@@ -153,13 +166,13 @@ public class JavaScriptEngineFactory
* @param config Configuration properties
*/
@Activate
- protected void activate(final Map<String, Object> config) {
- final CompilerOptions opts = CompilerOptions.createOptions(new Hashtable<>(config));
+ protected void activate(final Config config, final Map<String, Object> props) {
+ final CompilerOptions opts = CompilerOptions.createOptions(config);
this.ioProvider = new SlingIOProvider(this.javaCompiler, opts);
this.javaServletContext = new JavaServletContext(ioProvider,
slingServletContext);
- this.servletConfig = new JavaServletConfig(javaServletContext, config);
+ this.servletConfig = new JavaServletConfig(javaServletContext, props);
logger.info("Activating Apache Sling Script Engine for Java with options {}", opts);
}
Modified: sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/JavaServletConfig.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/JavaServletConfig.java?rev=1769867&r1=1769866&r2=1769867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/JavaServletConfig.java (original)
+++ sling/trunk/contrib/scripting/java/src/main/java/org/apache/sling/scripting/java/impl/JavaServletConfig.java Tue Nov 15 18:08:18 2016
@@ -26,8 +26,6 @@ import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
-import org.osgi.framework.Constants;
-
/**
* The <code>JavaServletConfig</code>
* is passed to the compiled servlets.
@@ -37,21 +35,11 @@ public class JavaServletConfig implement
/** The servlet context. */
private final ServletContext servletContext;
- /** The name of the servlet. */
- private final String servletName;
-
private final Map<String, String> initParams;
- public JavaServletConfig(ServletContext servletContext, Map<String, Object> config) {
+ public JavaServletConfig(ServletContext servletContext, final Map<String, Object> config) {
this.servletContext = servletContext;
- // set the servlet name
- if (config.get(Constants.SERVICE_DESCRIPTION) == null) {
- servletName = "Java Script Handler";
- } else{
- servletName = config.get(Constants.SERVICE_DESCRIPTION).toString();
- }
-
// copy the "java." properties
initParams = new HashMap<String, String>();
for (final Map.Entry<String, Object> entry : config.entrySet()) {
@@ -95,6 +83,6 @@ public class JavaServletConfig implement
*/
@Override
public String getServletName() {
- return servletName;
+ return JavaScriptEngineFactory.DESCRIPTION;
}
}
\ No newline at end of file