This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-extension-apiregions.git
The following commit(s) were added to refs/heads/master by this push:
new 78b57a2 SLING-12487 : Reuse temp directory from extension handler
78b57a2 is described below
commit 78b57a2815c93480ba4855f0a201705f263e2e44
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Fri Nov 15 10:49:01 2024 +0100
SLING-12487 : Reuse temp directory from extension handler
---
.../apiregions/launcher/LauncherProperties.java | 2 ++
.../apiregions/launcher/RegionLauncher.java | 34 ++++++++++++----------
.../launcher/RegionLauncherExtension.java | 14 ++++-----
3 files changed, 27 insertions(+), 23 deletions(-)
diff --git
a/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/LauncherProperties.java
b/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/LauncherProperties.java
index e4d1f41..5bb66af 100644
---
a/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/LauncherProperties.java
+++
b/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/LauncherProperties.java
@@ -47,6 +47,8 @@ public class LauncherProperties
{
private static final String REGION_ORDER = "__region.order__";
+ public static final String PROPERTY_PREFIX =
"sling.feature.apiregions.resource.";
+
public static Properties getBundleIDtoBSNandVersionMap(Feature app,
ArtifactProvider artifactProvider) {
Properties result = new Properties();
diff --git
a/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/RegionLauncher.java
b/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/RegionLauncher.java
index ebb7fd2..01acd19 100644
---
a/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/RegionLauncher.java
+++
b/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/RegionLauncher.java
@@ -19,6 +19,7 @@ package
org.apache.sling.feature.extension.apiregions.launcher;
import java.io.File;
import java.io.IOException;
import java.io.UncheckedIOException;
+import java.net.URL;
import java.nio.file.Files;
import org.apache.sling.feature.ArtifactId;
@@ -28,43 +29,44 @@ import
org.apache.sling.feature.launcher.impl.launchers.FrameworkLauncher;
import org.apache.sling.feature.launcher.spi.LauncherPrepareContext;
import org.apache.sling.feature.launcher.spi.LauncherRunContext;
-public class RegionLauncher extends FrameworkLauncher
-{
+public class RegionLauncher extends FrameworkLauncher {
+
public static final String IDBSNVER_FILENAME = "idbsnver.properties";
public static final String BUNDLE_FEATURE_FILENAME = "bundles.properties";
@Override
- public void prepare(LauncherPrepareContext context, ArtifactId
frameworkId, Feature app) throws Exception
- {
+ public void prepare(LauncherPrepareContext context, ArtifactId
frameworkId, Feature app) throws Exception {
super.prepare(context, frameworkId, app);
- ArtifactProvider artifactProvider = id ->
- {
- try
- {
+ ArtifactProvider artifactProvider = id -> {
+ try {
return context.getArtifactFile(id);
- }
- catch (IOException e)
- {
+ } catch (IOException e) {
throw new UncheckedIOException(e);
}
};
+ // try to get base directory created by region launcher extension
+ final String regionFileName =
app.getFrameworkProperties().get(LauncherProperties.PROPERTY_PREFIX.concat(RegionLauncherExtension.FEATURE_REGION_FILENAME));
+ final File base;
+ if (regionFileName != null) {
+ base = new File(new URL(regionFileName).toURI()).getParentFile();
+ } else {
+ base = Files.createTempDirectory("apiregions").toFile();
+ }
- final File base = Files.createTempDirectory("apiregions").toFile();
final File idbsnverFile = new File(base, IDBSNVER_FILENAME);
final File bundlesFile = new File(base, BUNDLE_FEATURE_FILENAME);
LauncherProperties.save(LauncherProperties.getBundleIDtoBSNandVersionMap(app,
artifactProvider), idbsnverFile);
LauncherProperties.save(LauncherProperties.getBundleIDtoFeaturesMap(app),
bundlesFile);
- app.getFrameworkProperties().put("sling.feature.apiregions.resource."
+ IDBSNVER_FILENAME, idbsnverFile.toURI().toURL().toString());
- app.getFrameworkProperties().put("sling.feature.apiregions.resource."
+ BUNDLE_FEATURE_FILENAME, bundlesFile.toURI().toURL().toString());
+
app.getFrameworkProperties().put(LauncherProperties.PROPERTY_PREFIX.concat(IDBSNVER_FILENAME),
idbsnverFile.toURI().toURL().toString());
+
app.getFrameworkProperties().put(LauncherProperties.PROPERTY_PREFIX.concat(BUNDLE_FEATURE_FILENAME),
bundlesFile.toURI().toURL().toString());
}
@Override
- public int run(LauncherRunContext context, ClassLoader cl) throws Exception
- {
+ public int run(LauncherRunContext context, ClassLoader cl) throws
Exception {
return super.run(context, cl);
}
}
diff --git
a/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/RegionLauncherExtension.java
b/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/RegionLauncherExtension.java
index b1e79a3..9f9dac3 100644
---
a/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/RegionLauncherExtension.java
+++
b/src/main/java/org/apache/sling/feature/extension/apiregions/launcher/RegionLauncherExtension.java
@@ -26,16 +26,16 @@ import
org.apache.sling.feature.extension.apiregions.api.ApiRegions;
import org.apache.sling.feature.launcher.spi.extensions.ExtensionContext;
import org.apache.sling.feature.launcher.spi.extensions.ExtensionHandler;
-public class RegionLauncherExtension implements ExtensionHandler
-{
+public class RegionLauncherExtension implements ExtensionHandler {
+
public static final String FEATURE_REGION_FILENAME = "features.properties";
public static final String REGION_PACKAGE_FILENAME = "regions.properties";
@Override
- public boolean handle(ExtensionContext extensionContext, Extension
extension) throws Exception
- {
- if (!extension.getName().equals(ApiRegions.EXTENSION_NAME))
+ public boolean handle(ExtensionContext extensionContext, Extension
extension) throws Exception {
+ if (!extension.getName().equals(ApiRegions.EXTENSION_NAME)) {
return false;
+ }
final File base = Files.createTempDirectory("apiregions").toFile();
final File featuresFile = new File(base, FEATURE_REGION_FILENAME);
@@ -46,8 +46,8 @@ public class RegionLauncherExtension implements
ExtensionHandler
LauncherProperties.save(LauncherProperties.getFeatureIDtoRegionsMap(apiRegions),
featuresFile);
LauncherProperties.save(LauncherProperties.getRegionNametoPackagesMap(apiRegions),
regionsFile);
-
extensionContext.addFrameworkProperty("sling.feature.apiregions.resource." +
FEATURE_REGION_FILENAME, featuresFile.toURI().toURL().toString());
-
extensionContext.addFrameworkProperty("sling.feature.apiregions.resource." +
REGION_PACKAGE_FILENAME, regionsFile.toURI().toURL().toString());
+
extensionContext.addFrameworkProperty(LauncherProperties.PROPERTY_PREFIX.concat(FEATURE_REGION_FILENAME),
featuresFile.toURI().toURL().toString());
+
extensionContext.addFrameworkProperty(LauncherProperties.PROPERTY_PREFIX.concat(REGION_PACKAGE_FILENAME),
regionsFile.toURI().toURL().toString());
return true;
}