You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:24:59 UTC
[sling-org-apache-sling-crankstart-launcher] 02/31: Use more
flexible command pattern
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.crankstart.launcher-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-crankstart-launcher.git
commit c8f35d32605c2d001d503f07c499cbd0ff03a0c9
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Tue Apr 22 12:40:50 2014 +0000
Use more flexible command pattern
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/crankstart/launcher@1589114 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 14 ++-
.../sling/crankstart/CrankstartFileProcessor.java | 140 ---------------------
.../launcher/CrankstartFileProcessor.java | 81 ++++++++++++
.../sling/crankstart/{ => launcher}/Main.java | 2 +-
.../launcher/commands/InstallBundle.java | 52 ++++++++
.../{Main.java => launcher/commands/Log.java} | 42 +++----
.../commands/SetOsgiFrameworkProperty.java | 47 +++++++
.../crankstart/launcher/commands/StartBundles.java | 48 +++++++
.../launcher/commands/StartFramework.java | 43 +++++++
.../{Main.java => launcher/commands/U.java} | 29 +----
10 files changed, 307 insertions(+), 191 deletions(-)
diff --git a/pom.xml b/pom.xml
index 72a30d4..54e8c79 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
- <name>Apache Sling Crankstart Module</name>
+ <name>Apache Sling Crankstart Launcher</name>
<inceptionYear>2014</inceptionYear>
<description>
@@ -34,7 +34,7 @@
<configuration>
<archive>
<manifest>
- <mainClass>org.apache.sling.crankstart.Main</mainClass>
+ <mainClass>org.apache.sling.crankstart.launcher.Main</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
@@ -50,7 +50,7 @@
<goal>unpack-dependencies</goal>
</goals>
<configuration>
- <includeGroupIds>org.osgi,org.apache.felix,org.slf4j,javax.servlet,org.ops4j.pax.url</includeGroupIds>
+ <includeGroupIds>org.osgi,org.apache.felix,org.slf4j,javax.servlet,org.ops4j.pax.url,org.apache.sling</includeGroupIds>
<excludeTransitive>false</excludeTransitive>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<overWriteReleases>false</overWriteReleases>
@@ -89,11 +89,19 @@
<groupId>org.osgi</groupId>
<artifactId>org.osgi.compendium</artifactId>
<version>4.2.0</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.framework</artifactId>
<version>4.0.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.crankstart.api</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
diff --git a/src/main/java/org/apache/sling/crankstart/CrankstartFileProcessor.java b/src/main/java/org/apache/sling/crankstart/CrankstartFileProcessor.java
deleted file mode 100644
index 424064b..0000000
--- a/src/main/java/org/apache/sling/crankstart/CrankstartFileProcessor.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sling.crankstart;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.launch.Framework;
-import org.osgi.framework.launch.FrameworkFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/** Process a crankstart file */
-public class CrankstartFileProcessor {
- public static final String I_BUNDLE = "bundle ";
- public static final String I_START_ALL_BUNDLES = "start.all.bundles";
- public static final String I_LOG = "log";
- public static final String I_START_FRAMEWORK = "start.framework";
- public static final String I_OSGI_PROPERTY = "osgi.property";
-
- private Framework framework;
- private final List<Bundle> bundles = new LinkedList<Bundle>();
- private final Logger log = LoggerFactory.getLogger(getClass());
- private final Map<String, String> osgiProperties = new HashMap<String, String>();
-
- public CrankstartFileProcessor() {
- System.setProperty( "java.protocol.handler.pkgs", "org.ops4j.pax.url" );
- }
-
- public void process(Reader input) throws IOException, BundleException {
- final BufferedReader r = new BufferedReader(input);
- String line = null;
- while((line = r.readLine()) != null) {
- processLine(line);
- }
- }
-
- private String removePrefix(String line, String prefix) {
- return line.substring(prefix.length()).trim();
- }
-
- private void processLine(String line) throws IOException, BundleException {
- line = line.trim();
- if(line.length() == 0 || line.startsWith("#")) {
- // ignore comments and blank lines
- } else if(line.startsWith(I_BUNDLE)) {
- bundle(removePrefix(line, I_BUNDLE));
- } else if(line.startsWith(I_START_ALL_BUNDLES)) {
- startAllBundles();
- } else if(line.startsWith(I_LOG)) {
- log.info(removePrefix(line, I_LOG));
- } else if(line.startsWith(I_START_FRAMEWORK)) {
- startFramework();
- } else if(line.startsWith(I_OSGI_PROPERTY)) {
- osgiProperty(removePrefix(line, I_OSGI_PROPERTY));
- } else {
- log.warn("Invalid command line: [{}]", line);
- }
- }
-
- private void osgiProperty(String line) {
- final String [] parts = line.split(" ");
- if(parts.length != 2) {
- log.warn("Invalid OSGi property [{}]", line);
- return;
- }
- final String key = parts[0].trim();
- final String value = parts[1].trim();
- log.info("Setting OSGI property {}={}", key, value);
- osgiProperties.put(key, value);
- }
-
- private void startFramework() throws BundleException {
- if(framework != null) {
- throw new IllegalStateException("OSGi framework already created");
- }
-
- // TODO get framework as a Maven artifact?
- FrameworkFactory frameworkFactory = java.util.ServiceLoader.load(FrameworkFactory.class).iterator().next();
- framework = frameworkFactory.newFramework(osgiProperties);
- framework.start();
-
- log.info("OSGi framework started");
- }
-
- private void bundle(String line) throws IOException, BundleException {
- final URL url = new URL( "mvn:" + line);
- final BundleContext ctx = framework.getBundleContext();
- final String ref = "crankstart://" + line;
- final InputStream bundleStream = url.openStream();
- try {
- bundles.add(ctx.installBundle(ref, url.openStream()));
- log.info("bundle installed: {}", ref);
- } finally {
- bundleStream.close();
- }
- }
-
- public void waitForExit() throws InterruptedException {
- log.info("Waiting for OSGi framework to exit...");
- framework.waitForStop(0);
- }
-
- private void startAllBundles() throws BundleException {
- for (Bundle bundle : bundles) {
- log.info("Starting bundle {}", bundle.getSymbolicName());
- bundle.start();
- }
-
- // TODO check that all bundles have started?
- // or use a crankstart instruction for that?
-
- log.info("{} bundles installed", bundles.size());
- }
-
-}
diff --git a/src/main/java/org/apache/sling/crankstart/launcher/CrankstartFileProcessor.java b/src/main/java/org/apache/sling/crankstart/launcher/CrankstartFileProcessor.java
new file mode 100644
index 0000000..c3e6794
--- /dev/null
+++ b/src/main/java/org/apache/sling/crankstart/launcher/CrankstartFileProcessor.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.crankstart.launcher;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.sling.crankstart.api.CrankstartCommand;
+import org.apache.sling.crankstart.api.CrankstartContext;
+import org.apache.sling.crankstart.launcher.commands.InstallBundle;
+import org.apache.sling.crankstart.launcher.commands.Log;
+import org.apache.sling.crankstart.launcher.commands.SetOsgiFrameworkProperty;
+import org.apache.sling.crankstart.launcher.commands.StartBundles;
+import org.apache.sling.crankstart.launcher.commands.StartFramework;
+import org.osgi.framework.BundleException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** Process a crankstart file */
+public class CrankstartFileProcessor {
+ private final CrankstartContext crankstartContext = new CrankstartContext();
+ private final Logger log = LoggerFactory.getLogger(getClass());
+ private List<CrankstartCommand> commands = new ArrayList<CrankstartCommand>();
+
+ public CrankstartFileProcessor() {
+ System.setProperty( "java.protocol.handler.pkgs", "org.ops4j.pax.url" );
+
+ commands.add(new InstallBundle());
+ commands.add(new Log());
+ commands.add(new SetOsgiFrameworkProperty());
+ commands.add(new StartBundles());
+ commands.add(new StartFramework());
+ }
+
+ public void process(Reader input) throws IOException, BundleException {
+ final BufferedReader r = new BufferedReader(input);
+ String line = null;
+ while((line = r.readLine()) != null) {
+ if(line.length() == 0 || line.startsWith("#")) {
+ // ignore comments and blank lines
+ } else {
+ for(CrankstartCommand c : commands) {
+ if(c.appliesTo(line)) {
+ try {
+ c.execute(crankstartContext, line);
+ } catch(Exception e) {
+ log.warn("Command execution failed", e);
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ public void waitForExit() throws InterruptedException {
+ if(crankstartContext.getOsgiFramework() == null) {
+ throw new IllegalStateException("OSGi framework not started");
+ }
+ log.info("Waiting for OSGi framework to exit...");
+ crankstartContext.getOsgiFramework().waitForStop(0);
+ log.info("OSGi framework exited");
+ }
+}
diff --git a/src/main/java/org/apache/sling/crankstart/Main.java b/src/main/java/org/apache/sling/crankstart/launcher/Main.java
similarity index 97%
copy from src/main/java/org/apache/sling/crankstart/Main.java
copy to src/main/java/org/apache/sling/crankstart/launcher/Main.java
index 04c4a90..e858143 100644
--- a/src/main/java/org/apache/sling/crankstart/Main.java
+++ b/src/main/java/org/apache/sling/crankstart/launcher/Main.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.sling.crankstart;
+package org.apache.sling.crankstart.launcher;
import java.io.File;
import java.io.FileReader;
diff --git a/src/main/java/org/apache/sling/crankstart/launcher/commands/InstallBundle.java b/src/main/java/org/apache/sling/crankstart/launcher/commands/InstallBundle.java
new file mode 100644
index 0000000..1df274c
--- /dev/null
+++ b/src/main/java/org/apache/sling/crankstart/launcher/commands/InstallBundle.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.crankstart.launcher.commands;
+
+import java.io.InputStream;
+import java.net.URL;
+
+import org.apache.sling.crankstart.api.CrankstartCommand;
+import org.apache.sling.crankstart.api.CrankstartContext;
+import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** CrankstartCommand that installs a bundle */
+public class InstallBundle implements CrankstartCommand {
+ public static final String I_BUNDLE = "bundle ";
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ @Override
+ public boolean appliesTo(String commandLine) {
+ return commandLine.startsWith(I_BUNDLE);
+ }
+
+ @Override
+ public void execute(CrankstartContext crankstartContext, String commandLine) throws Exception {
+ final String bundleRef = U.removePrefix(I_BUNDLE, commandLine);
+ final URL url = new URL( "mvn:" + bundleRef);
+ final BundleContext ctx = crankstartContext.getOsgiFramework().getBundleContext();
+ final String ref = "crankstart://" + bundleRef;
+ final InputStream bundleStream = url.openStream();
+ try {
+ ctx.installBundle(ref, url.openStream());
+ log.info("bundle installed: {}", ref);
+ } finally {
+ bundleStream.close();
+ }
+ }
+}
diff --git a/src/main/java/org/apache/sling/crankstart/Main.java b/src/main/java/org/apache/sling/crankstart/launcher/commands/Log.java
similarity index 50%
copy from src/main/java/org/apache/sling/crankstart/Main.java
copy to src/main/java/org/apache/sling/crankstart/launcher/commands/Log.java
index 04c4a90..569c83d 100644
--- a/src/main/java/org/apache/sling/crankstart/Main.java
+++ b/src/main/java/org/apache/sling/crankstart/launcher/commands/Log.java
@@ -14,29 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.sling.crankstart;
+package org.apache.sling.crankstart.launcher.commands;
-import java.io.File;
-import java.io.FileReader;
-import java.io.Reader;
+import org.apache.sling.crankstart.api.CrankstartCommand;
+import org.apache.sling.crankstart.api.CrankstartContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-/** Execute a crankstart file */
-public class Main {
- public static void main(String [] args) throws Exception {
- String crankFile = "default.crank.txt";
- if(args.length < 1) {
- System.err.println("Using default crank file " + crankFile);
- System.err.println("To use a different one, provide its name as a jar file argument");
- } else {
- crankFile = args[0];
- }
- final Reader r = new FileReader(new File(crankFile));
- try {
- final CrankstartFileProcessor p = new CrankstartFileProcessor();
- p.process(r);
- p.waitForExit();
- } finally {
- r.close();
- }
+/** CrankstartCommand that logs a message */
+public class Log implements CrankstartCommand {
+ public static final String I_LOG = "log";
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ @Override
+ public boolean appliesTo(String commandLine) {
+ return commandLine.startsWith(I_LOG);
}
-}
\ No newline at end of file
+
+ @Override
+ public void execute(CrankstartContext crankstartContext, String commandLine) throws Exception {
+ log.info(U.removePrefix(I_LOG, commandLine));
+ }
+}
diff --git a/src/main/java/org/apache/sling/crankstart/launcher/commands/SetOsgiFrameworkProperty.java b/src/main/java/org/apache/sling/crankstart/launcher/commands/SetOsgiFrameworkProperty.java
new file mode 100644
index 0000000..4661430
--- /dev/null
+++ b/src/main/java/org/apache/sling/crankstart/launcher/commands/SetOsgiFrameworkProperty.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.crankstart.launcher.commands;
+
+import org.apache.sling.crankstart.api.CrankstartCommand;
+import org.apache.sling.crankstart.api.CrankstartContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** CrankstartCommand that logs a message */
+public class SetOsgiFrameworkProperty implements CrankstartCommand {
+ public static final String I_OSGI_PROPERTY = "osgi.property";
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ @Override
+ public boolean appliesTo(String commandLine) {
+ return commandLine.startsWith(I_OSGI_PROPERTY);
+ }
+
+ @Override
+ public void execute(CrankstartContext crankstartContext, String commandLine) throws Exception {
+ final String args = U.removePrefix(I_OSGI_PROPERTY, commandLine);
+ final String [] parts = args.split(" ");
+ if(parts.length != 2) {
+ log.warn("Invalid OSGi property statement, ignored: [{}]", commandLine);
+ return;
+ }
+ final String key = parts[0].trim();
+ final String value = parts[1].trim();
+ log.info("Setting OSGI property {}={}", key, value);
+ crankstartContext.setOsgiFrameworkProperty(key, value);
+ }
+}
diff --git a/src/main/java/org/apache/sling/crankstart/launcher/commands/StartBundles.java b/src/main/java/org/apache/sling/crankstart/launcher/commands/StartBundles.java
new file mode 100644
index 0000000..bcd0eda
--- /dev/null
+++ b/src/main/java/org/apache/sling/crankstart/launcher/commands/StartBundles.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.crankstart.launcher.commands;
+
+import org.apache.sling.crankstart.api.CrankstartCommand;
+import org.apache.sling.crankstart.api.CrankstartContext;
+import org.osgi.framework.Bundle;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** CrankstartCommand that logs a message */
+public class StartBundles implements CrankstartCommand {
+ public static final String I_START_ALL_BUNDLES = "start.all.bundles";
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ @Override
+ public boolean appliesTo(String commandLine) {
+ return commandLine.startsWith(I_START_ALL_BUNDLES);
+ }
+
+ @Override
+ public void execute(CrankstartContext crankstartContext, String commandLine) throws Exception {
+ int count = 0;
+ for (Bundle bundle : crankstartContext.getOsgiFramework().getBundleContext().getBundles()) {
+ log.info("Starting bundle {}", bundle.getSymbolicName());
+ bundle.start();
+ count++;
+ }
+
+ // TODO check that all bundles have started?
+ // or use a crankstart instruction for that?
+ log.info("{} bundles processed", count);
+ }
+}
diff --git a/src/main/java/org/apache/sling/crankstart/launcher/commands/StartFramework.java b/src/main/java/org/apache/sling/crankstart/launcher/commands/StartFramework.java
new file mode 100644
index 0000000..205d1c9
--- /dev/null
+++ b/src/main/java/org/apache/sling/crankstart/launcher/commands/StartFramework.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.crankstart.launcher.commands;
+
+import org.apache.sling.crankstart.api.CrankstartCommand;
+import org.apache.sling.crankstart.api.CrankstartContext;
+import org.osgi.framework.launch.FrameworkFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** CrankstartCommand that logs a message */
+public class StartFramework implements CrankstartCommand {
+ public static final String I_START_FRAMEWORK = "start.framework";
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ @Override
+ public boolean appliesTo(String commandLine) {
+ return commandLine.startsWith(I_START_FRAMEWORK);
+ }
+
+ @Override
+ public void execute(CrankstartContext crankstartContext, String commandLine) throws Exception {
+ // TODO get framework as a Maven artifact?
+ FrameworkFactory frameworkFactory = java.util.ServiceLoader.load(FrameworkFactory.class).iterator().next();
+ crankstartContext.setOsgiFramework(frameworkFactory.newFramework(crankstartContext.getOsgiFrameworkProperties()));
+ crankstartContext.getOsgiFramework().start();
+ log.info("OSGi framework started");
+ }
+}
diff --git a/src/main/java/org/apache/sling/crankstart/Main.java b/src/main/java/org/apache/sling/crankstart/launcher/commands/U.java
similarity index 50%
rename from src/main/java/org/apache/sling/crankstart/Main.java
rename to src/main/java/org/apache/sling/crankstart/launcher/commands/U.java
index 04c4a90..d736771 100644
--- a/src/main/java/org/apache/sling/crankstart/Main.java
+++ b/src/main/java/org/apache/sling/crankstart/launcher/commands/U.java
@@ -14,29 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.sling.crankstart;
+package org.apache.sling.crankstart.launcher.commands;
-import java.io.File;
-import java.io.FileReader;
-import java.io.Reader;
-
-/** Execute a crankstart file */
-public class Main {
- public static void main(String [] args) throws Exception {
- String crankFile = "default.crank.txt";
- if(args.length < 1) {
- System.err.println("Using default crank file " + crankFile);
- System.err.println("To use a different one, provide its name as a jar file argument");
- } else {
- crankFile = args[0];
- }
- final Reader r = new FileReader(new File(crankFile));
- try {
- final CrankstartFileProcessor p = new CrankstartFileProcessor();
- p.process(r);
- p.waitForExit();
- } finally {
- r.close();
- }
+class U {
+ static String removePrefix(String prefix, String line) {
+ return line.substring(prefix.length()).trim();
}
-}
\ No newline at end of file
+}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.