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

Reply via email to