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);
                      }

Reply via email to