This is an automated email from the ASF dual-hosted git repository. radu pushed a commit to branch experimental-scripting-resolver in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-sightly.git
commit 46638f1f34f6d3435102fd5e282943cb4127a5be Merge: 81312ca e8ad892 Author: Radu Cotescu <[email protected]> AuthorDate: Thu Oct 18 17:47:29 2018 +0200 Merge branch 'master' into experimental-scripting-resolver pom.xml | 24 +- .../sightly/impl/engine/SightlyCompiledScript.java | 13 +- .../impl/engine/SightlyJavaCompilerService.java | 280 ----------- .../sightly/impl/engine/SightlyScriptEngine.java | 138 ++---- .../impl/engine/SightlyScriptEngineFactory.java | 85 +--- .../engine/compiled/SightlyCompilationUnit.java | 53 +++ .../engine/compiled/SlingHTLMasterCompiler.java | 512 +++++++++++++++++++++ .../engine/compiled/SlingJavaImportsAnalyser.java | 47 ++ .../impl/engine/compiled/SourceIdentifier.java | 155 +------ .../engine/extension/FormatFilterExtension.java | 5 +- .../engine/extension/I18nRuntimeExtension.java | 5 +- .../engine/extension/IncludeRuntimeExtension.java | 5 +- .../impl/engine/extension/JoinFilterExtension.java | 5 +- .../engine/extension/ResourceRuntimeExtension.java | 5 +- .../extension/URIManipulationFilterExtension.java | 5 +- .../impl/engine/extension/XSSRuntimeExtension.java | 60 ++- .../impl/engine/extension/use/JavaUseProvider.java | 96 ++-- .../engine/extension/use/RenderUnitProvider.java | 2 +- .../engine/extension/use/UseRuntimeExtension.java | 5 +- .../impl/engine/runtime/RenderContextImpl.java | 6 +- .../compiler/SightlyJavaCompilerServiceTest.java | 189 -------- .../impl/engine/SightlyCompiledScriptTest.java | 6 +- .../engine/SightlyScriptEngineFactoryTest.java | 122 ----- .../compiled/SlingHTLMasterCompilerTest.java | 296 ++++++++++++ .../impl/engine/compiled/SourceIdentifierTest.java | 29 +- 25 files changed, 1097 insertions(+), 1051 deletions(-) diff --cc pom.xml index f5ed0b7,b4c88b1..a9a321b --- a/pom.xml +++ b/pom.xml @@@ -37,7 -37,7 +37,7 @@@ The versioning scheme defined here corresponds to SLING-7406 (<module_version>-<htl_specification_version>). Take care when releasing to only increase the first part, unless the module provides support for a newer version of the HTL specification. --> - <version>1.0.57-1.4.0-exp-SNAPSHOT</version> - <version>1.1.0-1.4.0-SNAPSHOT</version> ++ <version>1.1.0-1.4.0-exp-SNAPSHOT</version> <packaging>bundle</packaging> <name>Apache Sling Scripting HTL Engine</name> diff --cc src/main/java/org/apache/sling/scripting/sightly/impl/engine/SightlyScriptEngine.java index f757be5,fdb6456..a19bc7c --- a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/SightlyScriptEngine.java +++ b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/SightlyScriptEngine.java @@@ -20,33 -20,14 +20,30 @@@ package org.apache.sling.scripting.sigh import java.io.Reader; import java.io.StringReader; - import java.util.Set; +import javax.script.Bindings; import javax.script.Compilable; import javax.script.CompiledScript; import javax.script.ScriptContext; - import javax.script.ScriptEngine; - import javax.script.ScriptEngineFactory; import javax.script.ScriptException; - import org.apache.sling.api.scripting.SlingScriptHelper; import org.apache.sling.scripting.api.AbstractSlingScriptEngine; +import org.apache.sling.scripting.api.ScriptNameAware; +import org.apache.sling.scripting.api.resource.ScriptingResourceResolverProvider; +import org.apache.sling.scripting.resolver.BundledRenderUnit; +import org.apache.sling.scripting.sightly.SightlyException; +import org.apache.sling.scripting.sightly.compiler.CompilationResult; +import org.apache.sling.scripting.sightly.compiler.CompilationUnit; +import org.apache.sling.scripting.sightly.compiler.CompilerMessage; +import org.apache.sling.scripting.sightly.compiler.SightlyCompiler; +import org.apache.sling.scripting.sightly.impl.engine.compiled.SourceIdentifier; +import org.apache.sling.scripting.sightly.impl.utils.BindingsUtils; +import org.apache.sling.scripting.sightly.java.compiler.GlobalShadowCheckBackendCompiler; +import org.apache.sling.scripting.sightly.java.compiler.JavaClassBackendCompiler; +import org.apache.sling.scripting.sightly.java.compiler.JavaEscapeUtils; +import org.apache.sling.scripting.sightly.java.compiler.JavaImportsAnalyzer; - import org.apache.sling.scripting.sightly.java.compiler.RenderUnit; + import org.apache.sling.scripting.sightly.impl.engine.compiled.SlingHTLMasterCompiler; ++import org.apache.sling.scripting.sightly.render.RenderUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@@ -91,20 -64,13 +80,23 @@@ public class SightlyScriptEngine extend public Object eval(Reader reader, ScriptContext scriptContext) throws ScriptException { checkArguments(reader, scriptContext); try { - SightlyCompiledScript compiledScript; + SightlyCompiledScript compiledScript = null; + Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE); + Object bundledRenderUnit = bindings.get(BundledRenderUnit.VARIABLE); + Object renderUnit = null; + if (bundledRenderUnit instanceof BundledRenderUnit) { + renderUnit = ((BundledRenderUnit) bundledRenderUnit).getUnit(); ++ if (renderUnit instanceof RenderUnit) { ++ compiledScript = new SightlyCompiledScript(this, (RenderUnit) renderUnit); ++ return compiledScript.eval(scriptContext); ++ } + } - - if (renderUnit instanceof RenderUnit) { - compiledScript = new SightlyCompiledScript(this, (RenderUnit) renderUnit); - } else { - compiledScript = internalCompile(reader, scriptContext); + if (slingHTLMasterCompiler != null) { + compiledScript = slingHTLMasterCompiler.compileHTLScript(this, reader, scriptContext); - } - if (compiledScript != null) { - return compiledScript.eval(scriptContext); ++ if (compiledScript != null) { ++ return compiledScript.eval(scriptContext); ++ } } - return compiledScript.eval(scriptContext); } catch (Exception e) { throw new ScriptException(e); } diff --cc src/main/java/org/apache/sling/scripting/sightly/impl/engine/SightlyScriptEngineFactory.java index 1b108b3,d80f13b..257482d --- a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/SightlyScriptEngineFactory.java +++ b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/SightlyScriptEngineFactory.java @@@ -21,23 -21,14 +21,13 @@@ package org.apache.sling.scripting.sigh import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; - import org.apache.commons.io.IOUtils; - import org.apache.commons.lang3.StringUtils; - import org.apache.sling.commons.classloader.ClassLoaderWriter; - import org.apache.sling.commons.classloader.DynamicClassLoaderManager; import org.apache.sling.scripting.api.AbstractScriptEngineFactory; - import org.apache.sling.scripting.api.resource.ScriptingResourceResolverProvider; - import org.apache.sling.scripting.sightly.compiler.SightlyCompiler; + import org.apache.sling.scripting.sightly.impl.engine.compiled.SlingHTLMasterCompiler; 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.Reference; - import org.slf4j.Logger; - import org.slf4j.LoggerFactory; + import org.osgi.service.component.annotations.ReferenceCardinality; -import org.osgi.service.component.annotations.ReferencePolicy; + import org.osgi.service.component.annotations.ReferencePolicyOption; /** * HTL template engine factory diff --cc src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/JavaUseProvider.java index 308ccec,1cb5919..84694d0 --- a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/JavaUseProvider.java +++ b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/JavaUseProvider.java @@@ -29,9 -29,7 +29,8 @@@ import org.apache.sling.api.SlingHttpSe import org.apache.sling.api.adapter.Adaptable; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.scripting.SlingScriptHelper; - import org.apache.sling.commons.classloader.ClassLoaderWriter; +import org.apache.sling.scripting.resolver.BundledRenderUnit; - import org.apache.sling.scripting.sightly.impl.engine.SightlyJavaCompilerService; + import org.apache.sling.scripting.sightly.impl.engine.compiled.SlingHTLMasterCompiler; import org.apache.sling.scripting.sightly.impl.utils.BindingsUtils; import org.apache.sling.scripting.sightly.impl.utils.Patterns; import org.apache.sling.scripting.sightly.pojo.Use; @@@ -39,9 -37,10 +38,11 @@@ import org.apache.sling.scripting.sight import org.apache.sling.scripting.sightly.use.ProviderOutcome; import org.apache.sling.scripting.sightly.use.UseProvider; import org.osgi.framework.Constants; +import org.osgi.framework.wiring.BundleWiring; 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.ReferencePolicyOption; import org.osgi.service.metatype.annotations.AttributeDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@@ -96,29 -94,16 +96,26 @@@ public class JavaUseProvider implement return ProviderOutcome.success(result); } else { LOG.debug("Attempting to load class {} from the classloader cache.", identifier); + BundledRenderUnit bundledRenderUnit = null; - ClassLoader classLoader; + ClassLoader classLoader = null; - if (slingHTLMasterCompiler != null) { - classLoader = slingHTLMasterCompiler.getClassLoader(); + Object bru = globalBindings.get(BundledRenderUnit.VARIABLE); + if (bru instanceof BundledRenderUnit) { + bundledRenderUnit = (BundledRenderUnit) bru; + classLoader = bundledRenderUnit.getBundle().adapt(BundleWiring.class).getClassLoader(); + } else { - classLoader = classLoaderWriter.getClassLoader(); ++ if (slingHTLMasterCompiler != null) { ++ classLoader = slingHTLMasterCompiler.getClassLoader(); ++ } } - Class<?> cls = classLoader.loadClass(identifier); - // attempt OSGi service load - if (bundledRenderUnit != null) { - result = bundledRenderUnit.getService(identifier); - } else { - result = sling.getService(cls); - } - if (result != null) { - return ProviderOutcome.success(result); - } - Object adaptableCandidate = arguments.get(ADAPTABLE); - if (adaptableCandidate instanceof Adaptable) { - Adaptable adaptable = (Adaptable) adaptableCandidate; - result = adaptable.adaptTo(cls); + if (classLoader != null) { + Class<?> cls = classLoader.loadClass(identifier); - - result = sling.getService(cls); ++ // attempt OSGi service load ++ if (bundledRenderUnit != null) { ++ result = bundledRenderUnit.getService(identifier); ++ } else { ++ result = sling.getService(cls); ++ } if (result != null) { return ProviderOutcome.success(result); }
