You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2018/11/22 12:50:10 UTC
[sling-org-apache-sling-feature-launcher] branch master updated:
SLING-8125: Remove launchpad.api support and dao support from feature
launcher.
This is an automated email from the ASF dual-hosted git repository.
pauls pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-launcher.git
The following commit(s) were added to refs/heads/master by this push:
new d76f219 SLING-8125: Remove launchpad.api support and dao support from feature launcher.
d76f219 is described below
commit d76f219e816d303e705db1e9b21c572eb13578df
Author: Karl Pauls <ka...@gmail.com>
AuthorDate: Thu Nov 22 13:49:58 2018 +0100
SLING-8125: Remove launchpad.api support and dao support from feature launcher.
---
pom.xml | 6 -
.../sling/feature/launcher/impl/Installation.java | 6 +-
.../feature/launcher/impl/LauncherConfig.java | 6 +-
.../apache/sling/feature/launcher/impl/Main.java | 38 ----
.../launcher/impl/launchers/AbstractRunner.java | 203 ++-------------------
.../launcher/impl/launchers/FrameworkLauncher.java | 19 --
.../launcher/impl/launchers/FrameworkRunner.java | 14 +-
.../launcher/spi/LauncherPrepareContext.java | 4 +-
8 files changed, 31 insertions(+), 265 deletions(-)
diff --git a/pom.xml b/pom.xml
index 6486631..b29ee45 100644
--- a/pom.xml
+++ b/pom.xml
@@ -123,12 +123,6 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.launchpad.api</artifactId>
- <version>1.2.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.converter</artifactId>
<version>1.0.0</version>
diff --git a/src/main/java/org/apache/sling/feature/launcher/impl/Installation.java b/src/main/java/org/apache/sling/feature/launcher/impl/Installation.java
index 3f08856..dbc17a6 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/Installation.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/Installation.java
@@ -16,9 +16,6 @@
*/
package org.apache.sling.feature.launcher.impl;
-import org.apache.sling.feature.launcher.spi.LauncherRunContext;
-import org.apache.sling.feature.launcher.spi.extensions.ExtensionInstallationContext;
-
import java.io.File;
import java.util.ArrayList;
import java.util.Dictionary;
@@ -26,6 +23,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.sling.feature.launcher.spi.LauncherRunContext;
+import org.apache.sling.feature.launcher.spi.extensions.ExtensionInstallationContext;
+
/**
* This class holds the configuration of the launcher.
*/
diff --git a/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java b/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java
index 0f6298c..c6c4264 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java
@@ -16,15 +16,15 @@
*/
package org.apache.sling.feature.launcher.impl;
-import org.apache.sling.feature.io.file.ArtifactManagerConfig;
-import org.apache.sling.feature.io.file.spi.ArtifactProviderContext;
-
import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Map;
+import org.apache.sling.feature.io.file.ArtifactManagerConfig;
+import org.apache.sling.feature.io.file.spi.ArtifactProviderContext;
+
/**
* This class holds the configuration of the launcher.
*/
diff --git a/src/main/java/org/apache/sling/feature/launcher/impl/Main.java b/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
index 4005781..89d9c4f 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
@@ -62,8 +62,6 @@ public class Main {
return LOGGER;
}
- private static volatile File m_populate;
-
private static volatile String m_frameworkVersion = null; // DEFAULT is null
/** Split a string into key and value */
@@ -91,7 +89,6 @@ public class Main {
debugOption.setArgs(0);
final Option cacheOption = new Option("c", true, "Set cache dir");
final Option homeOption = new Option("p", true, "Set home dir");
- final Option populateOption = new Option("dao", true, "Only download required artifacts into directory");
final Option frameworkOption = new Option("fv", true, "Set felix framework version");
@@ -102,7 +99,6 @@ public class Main {
options.addOption(debugOption);
options.addOption(cacheOption);
options.addOption(homeOption);
- options.addOption(populateOption);
options.addOption(frameworkOption);
final CommandLineParser clp = new BasicParser();
@@ -142,12 +138,6 @@ public class Main {
if (cl.hasOption(homeOption.getOpt())) {
config.setHomeDirectory(new File(cl.getOptionValue(homeOption.getOpt())));
}
- if (cl.hasOption(populateOption.getOpt())) {
- m_populate = new File(cl.getOptionValue(populateOption.getOpt()));
- if (!m_populate.isDirectory() && !m_populate.mkdirs()) {
- throw new ParseException("Bad dao directory");
- }
- }
if (cl.hasOption(frameworkOption.getOpt())) {
m_frameworkVersion = cl.getOptionValue(frameworkOption.getOpt());
}
@@ -241,10 +231,6 @@ public class Main {
public File getArtifactFile(final ArtifactId artifact) throws IOException
{
final ArtifactHandler handler = artifactManager.getArtifactHandler(":" + artifact.toMvnPath());
- if (m_populate != null)
- {
- populate(handler.getFile(), artifact);
- }
return handler.getFile();
}
@@ -262,16 +248,6 @@ public class Main {
Main.LOG().info("Using {} local artifacts, {} cached artifacts, and {} downloaded artifacts",
launcherConfig.getLocalArtifacts(), launcherConfig.getCachedArtifacts(), launcherConfig.getDownloadedArtifacts());
- if (m_populate != null)
- {
- Map<Artifact, File> local = FeatureProcessor.calculateArtifacts(artifactManager, app);
- for (Map.Entry<Artifact, File> entry : local.entrySet())
- {
- populate(entry.getValue(), entry.getKey().getId());
- }
- return;
- }
-
if (restart) {
launcherConfig.getInstallation().getInstallableArtifacts().clear();
launcherConfig.getInstallation().getConfigurations().clear();
@@ -295,20 +271,6 @@ public class Main {
}
}
- private static void populate(File file, ArtifactId artifactId) throws IOException{
- File target = new File(m_populate, artifactId.toMvnPath().replace('/', File.separatorChar));
-
- if (!target.isFile())
- {
- if (Main.LOG().isDebugEnabled())
- {
- Main.LOG().debug("Populating {} with {}", target.getAbsolutePath(), file.getAbsolutePath());
- }
- target.getParentFile().mkdirs();
- Files.copy(file.toPath(), target.toPath());
- }
- }
-
private static Feature assemble(final LauncherConfig launcherConfig, final ArtifactManager artifactManager) throws IOException
{
if (launcherConfig.getFeatureFiles().length == 0) {
diff --git a/src/main/java/org/apache/sling/feature/launcher/impl/launchers/AbstractRunner.java b/src/main/java/org/apache/sling/feature/launcher/impl/launchers/AbstractRunner.java
index f532a2c..44519a4 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/launchers/AbstractRunner.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/launchers/AbstractRunner.java
@@ -16,23 +16,6 @@
*/
package org.apache.sling.feature.launcher.impl.launchers;
-import org.apache.sling.feature.launcher.impl.Main;
-import org.apache.sling.launchpad.api.LaunchpadContentProvider;
-import org.apache.sling.launchpad.api.StartupHandler;
-import org.apache.sling.launchpad.api.StartupMode;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
-import org.osgi.framework.FrameworkEvent;
-import org.osgi.framework.FrameworkListener;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.launch.Framework;
-import org.osgi.framework.startlevel.BundleStartLevel;
-import org.osgi.framework.startlevel.FrameworkStartLevel;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -40,16 +23,11 @@ import java.io.InputStream;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
-import java.net.JarURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Dictionary;
-import java.util.Enumeration;
import java.util.Hashtable;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
@@ -58,10 +36,19 @@ import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.regex.Pattern;
+
+import org.apache.sling.feature.launcher.impl.Main;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
+import org.osgi.framework.Constants;
+import org.osgi.framework.FrameworkEvent;
+import org.osgi.framework.FrameworkListener;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.launch.Framework;
+import org.osgi.framework.startlevel.BundleStartLevel;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
/**
* Common functionality for the framework start.
@@ -76,28 +63,9 @@ public abstract class AbstractRunner implements Callable<Integer> {
private final List<File> installables;
- private final int targetStartlevel;
-
- private final AtomicInteger waitRequested = new AtomicInteger(0);
-
- private volatile boolean install;
-
- public AbstractRunner(final Map<String, String> frameworkProperties, final List<Object[]> configurations, final List<File> installables) {
+ public AbstractRunner(final List<Object[]> configurations, final List<File> installables) {
this.configurations = new ArrayList<>(configurations);
this.installables = installables;
- String target = frameworkProperties.get(Constants.FRAMEWORK_BEGINNING_STARTLEVEL);
- if (target != null) {
- targetStartlevel = Integer.parseInt(target);
- }
- else {
- targetStartlevel = 1;
- }
- if (!this.installables.isEmpty()) {
- if ("true".equalsIgnoreCase(frameworkProperties.get("sling.framework.install.incremental")))
- {
- frameworkProperties.put(Constants.FRAMEWORK_BEGINNING_STARTLEVEL, "1");
- }
- }
}
protected void setupFramework(final Framework framework, final Map<Integer, List<File>> bundlesMap)
@@ -170,110 +138,6 @@ public abstract class AbstractRunner implements Callable<Integer> {
} catch ( final IOException ioe) {
throw new BundleException("Unable to install bundles.", ioe);
}
-
- // TODO: double check bundles and take installables into account
- install = !this.configurations.isEmpty() || !this.installables.isEmpty() || !bundlesMap.isEmpty();
- try
- {
- // TODO: double check bundles and take installables into account
- final StartupMode mode = !install ? StartupMode.RESTART : StartupMode.INSTALL;
-
- framework.getBundleContext().registerService(StartupHandler.class, new StartupHandler()
- {
- @Override
- public StartupMode getMode()
- {
- return mode;
- }
-
- @Override
- public boolean isFinished() {
- return framework.getState() == Framework.ACTIVE && targetStartlevel > framework.adapt(FrameworkStartLevel.class).getStartLevel();
- }
-
- @Override
- public void waitWithStartup(boolean b) {
- if (b) {
- waitRequested.incrementAndGet();
- }
- else {
- waitRequested.decrementAndGet();
- }
- }
- }, null);
-
- framework.getBundleContext().registerService(LaunchpadContentProvider.class, new LaunchpadContentProvider()
- {
- @Override
- public Iterator<String> getChildren(String path) {
- List<String> children;
-
- // Guard against extra trailing slashes
- if(path.endsWith("/") && path.length() > 1) {
- path = path.substring(0, path.length()-1);
- }
-
- URL url = this.getClass().getResource(path);
- if (url != null) {
- Pattern pathPattern = Pattern.compile("^" + path + "/[^/]+/?$");
-
- children = new ArrayList<String>();
- try {
- URLConnection conn = url.openConnection();
- if (conn instanceof JarURLConnection) {
- JarFile jar = ((JarURLConnection) conn).getJarFile();
- Enumeration<JarEntry> entries = jar.entries();
- while (entries.hasMoreElements()) {
- String entry = entries.nextElement().getName();
- if (pathPattern.matcher(entry).matches()) {
- children.add(entry);
- }
- }
- }
- } catch (IOException ioe) {
- // ignore for now
- }
- } else {
- children = Collections.emptyList();
- }
-
- return children.iterator();
- }
-
- @Override
- public URL getResource(String path) {
- // ensure path
- if (path == null || path.length() == 0) {
- return null;
- }
-
- // remove leading slash
- if (path.charAt(0) == '/') {
- path = path.substring(1);
- }
-
- return this.getResource(path);
- }
-
- @Override
- public InputStream getResourceAsStream(String path) {
- URL res = this.getResource(path);
- if (res != null) {
- try {
- return res.openStream();
- } catch (IOException ioe) {
- // ignore this one
- }
- }
-
- // no resource
- return null;
-
- }
- }, null);
- } catch (NoClassDefFoundError ex) {
- // Ignore, we don't have the launchpad.api
- }
}
protected boolean startFramework(final Framework framework, long timeout, TimeUnit unit) throws BundleException, InterruptedException
@@ -287,43 +151,8 @@ public abstract class AbstractRunner implements Callable<Integer> {
@Override
public void frameworkEvent(FrameworkEvent frameworkEvent)
{
- if (frameworkEvent.getType() == FrameworkEvent.STARTED || frameworkEvent.getType() == FrameworkEvent.STARTLEVEL_CHANGED) {
- if (framework.getState() == Framework.ACTIVE && targetStartlevel > framework.adapt(FrameworkStartLevel.class).getStartLevel()) {
- if (install) {
- executor.execute(() ->
- {
- if (waitRequested.get() == 0) {
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- while (waitRequested.get() > 0) {
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- try {
- framework.adapt(FrameworkStartLevel.class).setStartLevel(framework.adapt(FrameworkStartLevel.class).getStartLevel() + 1);
- } catch (Exception ex) {
- latch.countDown();
- }
- });
- }
- else {
- try {
- framework.adapt(FrameworkStartLevel.class).setStartLevel(targetStartlevel);
- } catch (Exception ex) {
- latch.countDown();
- }
- }
- }
- else {
- latch.countDown();
- }
+ if (frameworkEvent.getType() == FrameworkEvent.STARTED) {
+ latch.countDown();
}
}
};
diff --git a/src/main/java/org/apache/sling/feature/launcher/impl/launchers/FrameworkLauncher.java b/src/main/java/org/apache/sling/feature/launcher/impl/launchers/FrameworkLauncher.java
index fb2dac2..0e251e1 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/launchers/FrameworkLauncher.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/launchers/FrameworkLauncher.java
@@ -25,14 +25,12 @@ import java.util.concurrent.Callable;
import org.apache.commons.lang.text.StrLookup;
import org.apache.commons.lang.text.StrSubstitutor;
-import org.apache.sling.feature.Artifact;
import org.apache.sling.feature.ArtifactId;
import org.apache.sling.feature.Feature;
import org.apache.sling.feature.launcher.impl.Main;
import org.apache.sling.feature.launcher.spi.Launcher;
import org.apache.sling.feature.launcher.spi.LauncherPrepareContext;
import org.apache.sling.feature.launcher.spi.LauncherRunContext;
-import org.osgi.framework.Constants;
/**
* Launcher directly using the OSGi launcher API.
@@ -45,23 +43,6 @@ public class FrameworkLauncher implements Launcher {
final ArtifactId frameworkId,
final Feature app) throws Exception {
context.addAppJar(context.getArtifactFile(frameworkId));
- ArtifactId api = ArtifactId.fromMvnId("org.apache.sling:org.apache.sling.launchpad.api:1.2.0");
- Artifact artifact = app.getBundles().getSame(api);
- if (artifact != null)
- {
- api = artifact.getId();
- context.addAppJar(context.getArtifactFile(api));
- app.getBundles().removeExact(api);
- String extra = app.getFrameworkProperties().get(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA);
- if (extra != null && !extra.trim().isEmpty()) {
- extra = extra + ",";
- }
- else {
- extra = "";
- }
- extra = extra + "org.apache.sling.launchpad.api;version=\"" + api.getOSGiVersion() + "\"";
- app.getFrameworkProperties().put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA, extra);
- }
}
/**
diff --git a/src/main/java/org/apache/sling/feature/launcher/impl/launchers/FrameworkRunner.java b/src/main/java/org/apache/sling/feature/launcher/impl/launchers/FrameworkRunner.java
index 3f3ebb6..02de5f0 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/launchers/FrameworkRunner.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/launchers/FrameworkRunner.java
@@ -16,12 +16,6 @@
*/
package org.apache.sling.feature.launcher.impl.launchers;
-import org.apache.sling.feature.launcher.impl.Main;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.FrameworkEvent;
-import org.osgi.framework.launch.Framework;
-import org.osgi.framework.launch.FrameworkFactory;
-
import java.io.File;
import java.util.List;
import java.util.Map;
@@ -29,6 +23,12 @@ import java.util.ServiceLoader;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
+import org.apache.sling.feature.launcher.impl.Main;
+import org.osgi.framework.BundleException;
+import org.osgi.framework.FrameworkEvent;
+import org.osgi.framework.launch.Framework;
+import org.osgi.framework.launch.FrameworkFactory;
+
/**
* Launcher directly using the OSGi launcher API.
*/
@@ -44,7 +44,7 @@ public class FrameworkRunner extends AbstractRunner {
final Map<Integer, List<File>> bundlesMap,
final List<Object[]> configurations,
final List<File> installables) throws Exception {
- super(frameworkProperties, configurations, installables);
+ super(configurations, installables);
final ServiceLoader<FrameworkFactory> loader = ServiceLoader.load(FrameworkFactory.class);
FrameworkFactory factory = null;
diff --git a/src/main/java/org/apache/sling/feature/launcher/spi/LauncherPrepareContext.java b/src/main/java/org/apache/sling/feature/launcher/spi/LauncherPrepareContext.java
index 6d6f02b..840c044 100644
--- a/src/main/java/org/apache/sling/feature/launcher/spi/LauncherPrepareContext.java
+++ b/src/main/java/org/apache/sling/feature/launcher/spi/LauncherPrepareContext.java
@@ -16,11 +16,11 @@
*/
package org.apache.sling.feature.launcher.spi;
-import org.apache.sling.feature.ArtifactId;
-
import java.io.File;
import java.io.IOException;
+import org.apache.sling.feature.ArtifactId;
+
/**
* This is the context for the launcher
*/