SLING-9380 - Bundles should be able to provide both precompiled script units and regular scripts
* removed the artificial separation between precompiled script units
and bundled scripts
diff --git a/src/main/java/org/apache/sling/scripting/bundle/tracker/TypeProvider.java b/src/main/java/org/apache/sling/scripting/bundle/tracker/TypeProvider.java
index cbb89fb..f508c52 100644
--- a/src/main/java/org/apache/sling/scripting/bundle/tracker/TypeProvider.java
+++ b/src/main/java/org/apache/sling/scripting/bundle/tracker/TypeProvider.java
@@ -42,10 +42,4 @@
*/
@NotNull Bundle getBundle();
- /**
- * Returns {@code true} if the bundle provides precompiled scripts.
- *
- * @return {@code true} if the bundle provides precompiled scripts, {@code false} otherwise
- */
- boolean isPrecompiled();
}
diff --git a/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptFinder.java b/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptFinder.java
index 6cf351c..e2b28f3 100644
--- a/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptFinder.java
+++ b/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptFinder.java
@@ -52,9 +52,7 @@
String scriptExtension = capability.getScriptExtension();
String scriptEngineName = capability.getScriptEngineName();
if (StringUtils.isNotEmpty(scriptExtension) && StringUtils.isNotEmpty(scriptEngineName)) {
- Executable executable =
- getExecutable(provider.getBundle(), provider.isPrecompiled(), match, scriptEngineName, scriptExtension,
- providers);
+ Executable executable = getExecutable(provider.getBundle(), match, scriptEngineName, scriptExtension, providers);
if (executable != null) {
return executable;
}
@@ -64,30 +62,27 @@
return null;
}
- Executable getScript(@NotNull Bundle bundle, boolean precompiled, @NotNull String path, @NotNull String scriptEngineName,
+ Executable getScript(@NotNull Bundle bundle, @NotNull String path, @NotNull String scriptEngineName,
@NotNull Set<TypeProvider> providers) {
- if (precompiled) {
- String className = JavaEscapeHelper.makeJavaPackage(path);
- try {
- Class<?> clazz = bundle.loadClass(className);
- return new PrecompiledScript(providers, bundle, path, clazz, scriptEngineName);
- } catch (ClassNotFoundException ignored) {
- // do nothing here
- }
- } else {
+ String className = JavaEscapeHelper.makeJavaPackage(path);
+ try {
+ Class<?> clazz = bundle.loadClass(className);
+ return new PrecompiledScript(providers, bundle, path, clazz, scriptEngineName);
+ } catch (ClassNotFoundException ignored) {
URL bundledScriptURL = bundle.getEntry(NS_JAVAX_SCRIPT_CAPABILITY + (path.startsWith("/") ? "" : SLASH) + path);
if (bundledScriptURL != null) {
return new Script(providers, bundle, path, bundledScriptURL, scriptEngineName);
- }
+ } // do nothing here
}
+
return null;
}
@Nullable
- private Executable getExecutable(@NotNull Bundle bundle, boolean precompiled, @NotNull String match, @NotNull String scriptEngineName,
+ private Executable getExecutable(@NotNull Bundle bundle, @NotNull String match, @NotNull String scriptEngineName,
@NotNull String scriptExtension, @NotNull Set<TypeProvider> providers) {
String path = match + DOT + scriptExtension;
- return getScript(bundle, precompiled, path, scriptEngineName, providers);
+ return getScript(bundle, path, scriptEngineName, providers);
}
private List<String> buildScriptMatches(Set<ResourceType> resourceTypes, String[] selectors, String method, String extension) {
diff --git a/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptTracker.java b/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptTracker.java
index a3d6048..5bf7e67 100644
--- a/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptTracker.java
+++ b/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptTracker.java
@@ -177,7 +177,7 @@
bundledRenderUnitCapability.getScriptEngineName())) {
Set<TypeProvider> aggregate =
Stream.concat(inheritanceChain.stream(), requiresChain.stream()).collect(Collectors.toCollection(LinkedHashSet::new));
- executable = bundledScriptFinder.getScript(baseTypeProvider.getBundle(), baseTypeProvider.isPrecompiled(),
+ executable = bundledScriptFinder.getScript(baseTypeProvider.getBundle(),
bundledRenderUnitCapability.getPath(), bundledRenderUnitCapability.getScriptEngineName(), aggregate);
}
List<ServiceRegistration<Servlet>> regs = new ArrayList<>();
diff --git a/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/TypeProviderImpl.java b/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/TypeProviderImpl.java
index 27fb136..fe04d66 100644
--- a/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/TypeProviderImpl.java
+++ b/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/TypeProviderImpl.java
@@ -28,12 +28,10 @@
private final BundledRenderUnitCapability bundledRenderUnitCapability;
private final Bundle bundle;
- private final boolean precompiled;
TypeProviderImpl(BundledRenderUnitCapability bundledRenderUnitCapability, Bundle bundle) {
this.bundledRenderUnitCapability = bundledRenderUnitCapability;
this.bundle = bundle;
- precompiled = Boolean.parseBoolean(bundle.getHeaders().get("Sling-ResourceType-Precompiled"));
}
@NotNull
@@ -49,13 +47,8 @@
}
@Override
- public boolean isPrecompiled() {
- return precompiled;
- }
-
- @Override
public int hashCode() {
- return Objects.hash(bundle, bundledRenderUnitCapability, precompiled);
+ return Objects.hash(bundle, bundledRenderUnitCapability);
}
@Override
@@ -65,15 +58,13 @@
}
if (obj instanceof TypeProviderImpl) {
TypeProviderImpl other = (TypeProviderImpl) obj;
- return Objects.equals(bundle, other.bundle) && Objects.equals(bundledRenderUnitCapability, other.bundledRenderUnitCapability) &&
- Objects.equals(precompiled, other.precompiled);
+ return Objects.equals(bundle, other.bundle) && Objects.equals(bundledRenderUnitCapability, other.bundledRenderUnitCapability);
}
return false;
}
@Override
public String toString() {
- return String.format("TypeProvider{ bundledRenderUnitCapability=%s; bundle=%s; precompiled=%s }", bundledRenderUnitCapability,
- bundle.getSymbolicName(), precompiled);
+ return String.format("TypeProvider{ bundledRenderUnitCapability=%s; bundle=%s }", bundledRenderUnitCapability, bundle.getSymbolicName());
}
}