You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2010/12/20 17:15:27 UTC
svn commit: r1051167 - in /sling/trunk: ./ launchpad/api/ launchpad/api/src/
launchpad/api/src/main/ launchpad/api/src/main/java/
launchpad/api/src/main/java/org/ launchpad/api/src/main/java/org/apache/
launchpad/api/src/main/java/org/apache/sling/ lau...
Author: justin
Date: Mon Dec 20 16:15:25 2010
New Revision: 1051167
URL: http://svn.apache.org/viewvc?rev=1051167&view=rev
Log:
SLING-1597 - adding config installation via launchpad
Added:
sling/trunk/launchpad/api/
sling/trunk/launchpad/api/README.txt
sling/trunk/launchpad/api/pom.xml
sling/trunk/launchpad/api/src/
sling/trunk/launchpad/api/src/main/
sling/trunk/launchpad/api/src/main/java/
sling/trunk/launchpad/api/src/main/java/org/
sling/trunk/launchpad/api/src/main/java/org/apache/
sling/trunk/launchpad/api/src/main/java/org/apache/sling/
sling/trunk/launchpad/api/src/main/java/org/apache/sling/launchpad/
sling/trunk/launchpad/api/src/main/java/org/apache/sling/launchpad/api/
sling/trunk/launchpad/api/src/main/java/org/apache/sling/launchpad/api/LaunchpadContentProvider.java
sling/trunk/launchpad/installer/
sling/trunk/launchpad/installer/README.txt
sling/trunk/launchpad/installer/pom.xml
sling/trunk/launchpad/installer/src/
sling/trunk/launchpad/installer/src/main/
sling/trunk/launchpad/installer/src/main/java/
sling/trunk/launchpad/installer/src/main/java/org/
sling/trunk/launchpad/installer/src/main/java/org/apache/
sling/trunk/launchpad/installer/src/main/java/org/apache/sling/
sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/
sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/
sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/
sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/LaunchpadConfigInstaller.java
Removed:
sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ResourceProvider.java
Modified:
sling/trunk/launchpad/base/pom.xml
sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/app/MainDelegate.java
sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/BootstrapInstaller.java
sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ClassLoaderResourceProvider.java
sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ContextConnection.java
sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ContextProtocolHandler.java
sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/DeploymentPackageInstaller.java
sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/Sling.java
sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/webapp/SlingBridge.java
sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/webapp/SlingServletDelegate.java
sling/trunk/launchpad/base/src/main/resources/sling.properties
sling/trunk/launchpad/builder/pom.xml
sling/trunk/launchpad/builder/src/main/bundles/list.xml
sling/trunk/launchpad/testing/pom.xml
sling/trunk/maven/maven-launchpad-plugin/pom.xml
sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java
sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java
sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java
sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/RunMojo.java
sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/StartMojo.java
sling/trunk/pom.xml
Added: sling/trunk/launchpad/api/README.txt
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/api/README.txt?rev=1051167&view=auto
==============================================================================
--- sling/trunk/launchpad/api/README.txt (added)
+++ sling/trunk/launchpad/api/README.txt Mon Dec 20 16:15:25 2010
@@ -0,0 +1,29 @@
+Apache Sling Launchpad API
+
+This module contains the API exposed by the Launchpad to bundles within the embedded framework.
+It is not intended to be installed as a bundle into an OSGi framework; merely used as a dependency
+for bundles where access to the Launchpad environment is necessary.
+
+Getting Started
+===============
+
+This component uses a Maven 2 (http://maven.apache.org/) build
+environment. It requires a Java 5 JDK (or higher) and Maven (http://maven.apache.org/)
+2.0.7 or later. We recommend to use the latest Maven version.
+
+If you have Maven 2 installed, you can compile and
+package the jar using the following command:
+
+ mvn package
+
+See the Maven 2 documentation for other build features.
+
+The latest source code for this component is available in the
+Subversion (http://subversion.tigris.org/) source repository of
+the Apache Software Foundation. If you have Subversion installed,
+you can checkout the latest source using the following command:
+
+ svn checkout http://svn.apache.org/repos/asf/sling/trunk/launchpad/api
+
+See the Subversion documentation for other source control features.
+
Added: sling/trunk/launchpad/api/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/api/pom.xml?rev=1051167&view=auto
==============================================================================
--- sling/trunk/launchpad/api/pom.xml (added)
+++ sling/trunk/launchpad/api/pom.xml Mon Dec 20 16:15:25 2010
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>sling</artifactId>
+ <version>9</version>
+ <relativePath>../../parent/pom.xml</relativePath>
+ </parent>
+
+ <artifactId>org.apache.sling.launchpad.api</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>bundle</packaging>
+ <name>Apache Sling Launchpad API</name>
+
+ <description>
+ This module contains the API exposed by Launchpad to bundles.
+ </description>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Export-Package>org.apache.sling.launchpad.api;version=1.0.0</Export-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Added: sling/trunk/launchpad/api/src/main/java/org/apache/sling/launchpad/api/LaunchpadContentProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/api/src/main/java/org/apache/sling/launchpad/api/LaunchpadContentProvider.java?rev=1051167&view=auto
==============================================================================
--- sling/trunk/launchpad/api/src/main/java/org/apache/sling/launchpad/api/LaunchpadContentProvider.java (added)
+++ sling/trunk/launchpad/api/src/main/java/org/apache/sling/launchpad/api/LaunchpadContentProvider.java Mon Dec 20 16:15:25 2010
@@ -0,0 +1,46 @@
+/*
+ * 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.launchpad.api;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Iterator;
+
+/**
+ * The <code>ResourceProvider</code> defines a simple API to access resources
+ * from the environment depending on how Sling is launched.
+ */
+public interface LaunchpadContentProvider {
+
+ /**
+ * Returns an iterator of paths strings of the children of the given folder
+ * defined by its path.
+ */
+ Iterator<String> getChildren(String path);
+
+ /**
+ * Returns an URL to the resource with the given path or <code>null</code>
+ * if no such resource exists.
+ */
+ URL getResource(String path);
+
+ /**
+ * Returns an <code>InputStream</code> to the resource given by the path
+ * or <code>null</code> if no such resource exists.
+ */
+ InputStream getResourceAsStream(String path);
+}
Modified: sling/trunk/launchpad/base/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/pom.xml?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/base/pom.xml (original)
+++ sling/trunk/launchpad/base/pom.xml Mon Dec 20 16:15:25 2010
@@ -111,6 +111,20 @@
</outputDirectory>
</configuration>
</execution>
+ <!-- Embed code from launchpad.api -->
+ <execution>
+ <id>extract-sling-launchpad-api</id>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeArtifactIds>org.apache.sling.launchpad.api</includeArtifactIds>
+ <excludeTransitive>true</excludeTransitive>
+ <outputDirectory>
+ ${project.build.directory}/classes
+ </outputDirectory>
+ </configuration>
+ </execution>
<!-- Embed osgi Version class from framework-->
<execution>
<id>extract-osgi-framework</id>
@@ -149,6 +163,7 @@
</archive>
<classifier>app</classifier>
<includes>
+ <include>org/apache/sling/launchpad/api/**</include>
<include>org/apache/sling/launchpad/base/shared/**</include>
<include>org/apache/sling/launchpad/app/**</include>
<include>org/apache/sling/commons/osgi/bundleversion/**</include>
@@ -179,6 +194,7 @@
<classifier>webapp</classifier>
<packagingIncludes>
META-INF/**,
+ WEB-INF/classesorg/apache/sling/launchpad/api/**,
WEB-INF/classes/org/apache/sling/launchpad/base/shared/**,
WEB-INF/classes/org/apache/sling/launchpad/webapp/**,
WEB-INF/classes/org/apache/sling/commons/osgi/bundleversion/**,
@@ -253,6 +269,12 @@
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.launchpad.api</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.osgi</artifactId>
<version>2.0.6</version>
<scope>provided</scope>
Modified: sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/app/MainDelegate.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/app/MainDelegate.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/app/MainDelegate.java (original)
+++ sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/app/MainDelegate.java Mon Dec 20 16:15:25 2010
@@ -27,8 +27,8 @@ import java.util.Map;
import java.util.Map.Entry;
import org.apache.felix.framework.Logger;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
import org.apache.sling.launchpad.base.impl.ClassLoaderResourceProvider;
-import org.apache.sling.launchpad.base.impl.ResourceProvider;
import org.apache.sling.launchpad.base.impl.Sling;
import org.apache.sling.launchpad.base.shared.Launcher;
import org.apache.sling.launchpad.base.shared.Notifiable;
@@ -151,7 +151,7 @@ public class MainDelegate implements Lau
logger.setLogLevel(Logger.LOG_ERROR);
try {
- ResourceProvider resProvider = new ClassLoaderResourceProvider(
+ LaunchpadContentProvider resProvider = new ClassLoaderResourceProvider(
getClass().getClassLoader());
// creating the instance launches the framework and we are done here
Modified: sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/BootstrapInstaller.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/BootstrapInstaller.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/BootstrapInstaller.java (original)
+++ sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/BootstrapInstaller.java Mon Dec 20 16:15:25 2010
@@ -38,6 +38,7 @@ import java.util.jar.JarInputStream;
import java.util.jar.Manifest;
import org.apache.felix.framework.Logger;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
import org.apache.sling.launchpad.base.impl.bootstrapcommands.BootstrapCommandFile;
import org.apache.sling.launchpad.base.shared.SharedConstants;
import org.osgi.framework.Bundle;
@@ -140,10 +141,10 @@ class BootstrapInstaller implements Bund
private final Logger logger;
/**
- * The {@link ResourceProvider} used to access the Bundle files to
+ * The {@link LaunchpadContentProvider} used to access the Bundle files to
* install.
*/
- private final ResourceProvider resourceProvider;
+ private final LaunchpadContentProvider resourceProvider;
private BundleContext bundleContext;
@@ -157,13 +158,13 @@ class BootstrapInstaller implements Bund
* the update of an installed framework extension bundle.
* <p>
* This value is preset by the
- * {@link #BootstrapInstaller(Logger, ResourceProvider, Map)} constructor to
+ * {@link #BootstrapInstaller(Logger, LaunchpadContentProvider, Map)} constructor to
* the value set in the <code>org.osgi.framework.startlevel.beginning</code>
* property of the supplied map.
*/
private int targetStartLevel;
- BootstrapInstaller(Logger logger, ResourceProvider resourceProvider,
+ BootstrapInstaller(Logger logger, LaunchpadContentProvider resourceProvider,
Map<String, String> props) {
this.logger = logger;
this.resourceProvider = resourceProvider;
Modified: sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ClassLoaderResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ClassLoaderResourceProvider.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ClassLoaderResourceProvider.java (original)
+++ sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ClassLoaderResourceProvider.java Mon Dec 20 16:15:25 2010
@@ -17,6 +17,7 @@
package org.apache.sling.launchpad.base.impl;
import java.io.IOException;
+import java.io.InputStream;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLConnection;
@@ -29,11 +30,12 @@ import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.regex.Pattern;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
/**
* The <code>ClassLoaderResourceProvider</code> TODO
*/
-public class ClassLoaderResourceProvider extends ResourceProvider {
+public class ClassLoaderResourceProvider implements LaunchpadContentProvider {
private final ClassLoader classLoader;
@@ -43,7 +45,6 @@ public class ClassLoaderResourceProvider
: this.getClass().getClassLoader();
}
- @Override
public Iterator<String> getChildren(String path) {
List<String> children;
@@ -74,9 +75,6 @@ public class ClassLoaderResourceProvider
return children.iterator();
}
- /**
- * @see org.apache.sling.launchpad.base.impl.ResourceProvider#getResource(java.lang.String)
- */
public URL getResource(String path) {
// ensure path
if (path == null || path.length() == 0) {
@@ -91,4 +89,19 @@ public class ClassLoaderResourceProvider
return (this.classLoader != null) ? this.classLoader.getResource(path) : null;
}
+ 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;
+
+ }
+
}
Modified: sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ContextConnection.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ContextConnection.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ContextConnection.java (original)
+++ sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ContextConnection.java Mon Dec 20 16:15:25 2010
@@ -21,10 +21,12 @@ import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
+
/**
* The <code>ContextConnection</code> extends the
* <code>java.net.URLConnection</code> to provide access to a resource which
- * is available from {@link ResourceProvider} provided to {@link Sling}.
+ * is available from {@link LaunchpadContentProvider} provided to {@link Sling}.
* <p>
* This class is implemented by actually connecting to a resource URL which is
* provided by the resource provider and delegating the relevant method calls.
@@ -34,10 +36,10 @@ import java.net.URLConnection;
public class ContextConnection extends URLConnection {
/**
- * The {@link ResourceProvider} to which requests for content access are
+ * The {@link LaunchpadContentProvider} to which requests for content access are
* delegated.
*/
- private final ResourceProvider resourceProvider;
+ private final LaunchpadContentProvider resourceProvider;
/**
* The delegatee <code>URLConnection</code> to which some of the method
@@ -50,10 +52,10 @@ public class ContextConnection extends U
*
* @param url The original URL whose path part is used to address the
* resource from the resource provider.
- * @param resourceProvider The {@link ResourceProvider} to which requests
+ * @param resourceProvider The {@link LaunchpadContentProvider} to which requests
* for content access are delegated.
*/
- ContextConnection(URL url, ResourceProvider resourceProvider) {
+ ContextConnection(URL url, LaunchpadContentProvider resourceProvider) {
super(url);
this.resourceProvider = resourceProvider;
}
Modified: sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ContextProtocolHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ContextProtocolHandler.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ContextProtocolHandler.java (original)
+++ sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/ContextProtocolHandler.java Mon Dec 20 16:15:25 2010
@@ -19,6 +19,7 @@ package org.apache.sling.launchpad.base.
import java.net.URL;
import java.net.URLConnection;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
import org.osgi.service.url.AbstractURLStreamHandlerService;
/**
@@ -30,19 +31,19 @@ import org.osgi.service.url.AbstractURLS
public class ContextProtocolHandler extends AbstractURLStreamHandlerService {
/**
- * The {@link ResourceProvider} to which requests for content access are
+ * The {@link LaunchpadContentProvider} to which requests for content access are
* delegated.
*/
- private final ResourceProvider resourceProvider;
+ private final LaunchpadContentProvider resourceProvider;
/**
* Creates an instance of this protocol handler setting the servlet context
* which is queried to access content.
*
- * @param resourceProvider The {@link ResourceProvider} to which requests
+ * @param resourceProvider The {@link LaunchpadContentProvider} to which requests
* for content access are delegated.
*/
- public ContextProtocolHandler(ResourceProvider resourceProvider) {
+ public ContextProtocolHandler(LaunchpadContentProvider resourceProvider) {
this.resourceProvider = resourceProvider;
}
Modified: sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/DeploymentPackageInstaller.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/DeploymentPackageInstaller.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/DeploymentPackageInstaller.java (original)
+++ sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/DeploymentPackageInstaller.java Mon Dec 20 16:15:25 2010
@@ -27,6 +27,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import org.apache.felix.framework.Logger;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkEvent;
import org.osgi.framework.FrameworkListener;
@@ -58,13 +59,13 @@ public class DeploymentPackageInstaller
private final BundleContext bundleContext;
private final Logger logger;
- private final ResourceProvider resourceProvider;
+ private final LaunchpadContentProvider resourceProvider;
private DeploymentAdmin deploymentAdmin;
private ServiceReference deploymentAdminReference;
public DeploymentPackageInstaller(final BundleContext bundleContext,
- Logger logger, ResourceProvider resourceProvider) {
+ Logger logger, LaunchpadContentProvider resourceProvider) {
this.logger = logger;
this.resourceProvider = resourceProvider;
this.bundleContext = bundleContext;
Modified: sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/Sling.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/Sling.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/Sling.java (original)
+++ sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/Sling.java Mon Dec 20 16:15:25 2010
@@ -46,6 +46,7 @@ import javax.management.ObjectName;
import org.apache.felix.framework.Felix;
import org.apache.felix.framework.Logger;
import org.apache.felix.framework.util.FelixConstants;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
import org.apache.sling.launchpad.base.shared.Notifiable;
import org.apache.sling.launchpad.base.shared.SharedConstants;
import org.osgi.framework.BundleActivator;
@@ -59,7 +60,7 @@ import org.osgi.service.url.URLStreamHan
/**
* The <code>Sling</code> serves as the starting point for Sling.
* <ul>
- * <li>The {@link #Sling(Notifiable, Logger, ResourceProvider, Map)} method launches Apache
+ * <li>The {@link #Sling(Notifiable, Logger, LaunchpadContentProvider, Map)} method launches Apache
* <code>Felix</code> as the OSGi framework implementation we use.
* </ul>
* <p>
@@ -174,7 +175,7 @@ public class Sling implements BundleActi
*/
protected final Logger logger;
- private ResourceProvider resourceProvider;
+ private LaunchpadContentProvider resourceProvider;
/**
* The <code>Felix</code> instance loaded on {@link #init()} and stopped
@@ -198,7 +199,7 @@ public class Sling implements BundleActi
* @throws BundleException if the framework cannot be initialized.
*/
public Sling(Notifiable notifiable, Logger logger,
- ResourceProvider resourceProvider, Map<String, String> propOverwrite)
+ LaunchpadContentProvider resourceProvider, Map<String, String> propOverwrite)
throws BundleException {
this.logger = logger;
@@ -339,6 +340,7 @@ public class Sling implements BundleActi
}
bundleContext.registerService(MBeanServer.class.getName(),
platformMBeanServer, mbeanProps);
+ bundleContext.registerService(LaunchpadContentProvider.class.getName(), resourceProvider, null);
// execute optional bundle startup tasks of an extension
this.doStartBundle();
Modified: sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/webapp/SlingBridge.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/webapp/SlingBridge.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/webapp/SlingBridge.java (original)
+++ sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/webapp/SlingBridge.java Mon Dec 20 16:15:25 2010
@@ -21,7 +21,7 @@ import java.util.Map;
import javax.servlet.ServletContext;
import org.apache.felix.framework.Logger;
-import org.apache.sling.launchpad.base.impl.ResourceProvider;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
import org.apache.sling.launchpad.base.impl.Sling;
import org.apache.sling.launchpad.base.shared.Notifiable;
import org.osgi.framework.BundleContext;
@@ -35,7 +35,7 @@ import org.osgi.framework.BundleExceptio
public class SlingBridge extends Sling {
public SlingBridge(Notifiable notifiable, Logger logger,
- ResourceProvider resourceProvider, Map<String, String> propOverwrite,
+ LaunchpadContentProvider resourceProvider, Map<String, String> propOverwrite,
ServletContext servletContext)
throws BundleException {
super(notifiable, logger, resourceProvider, propOverwrite);
Modified: sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/webapp/SlingServletDelegate.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/webapp/SlingServletDelegate.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/webapp/SlingServletDelegate.java (original)
+++ sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/webapp/SlingServletDelegate.java Mon Dec 20 16:15:25 2010
@@ -16,7 +16,7 @@
*/
package org.apache.sling.launchpad.base.webapp;
-import static org.apache.felix.framework.util.FelixConstants.LOG_LEVEL_PROP;
+import static org.apache.felix.framework.util.FelixConstants.*;
import java.io.IOException;
import java.net.MalformedURLException;
@@ -38,8 +38,8 @@ import javax.servlet.http.HttpServletRes
import org.apache.felix.framework.Logger;
import org.apache.felix.http.proxy.ProxyServlet;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
import org.apache.sling.launchpad.base.impl.ClassLoaderResourceProvider;
-import org.apache.sling.launchpad.base.impl.ResourceProvider;
import org.apache.sling.launchpad.base.impl.Sling;
import org.apache.sling.launchpad.base.shared.Launcher;
import org.apache.sling.launchpad.base.shared.Notifiable;
@@ -198,7 +198,7 @@ public class SlingServletDelegate extend
Map<String, String> props = loadConfigProperties(slingHome);
Logger logger = new ServletContextLogger(getServletContext());
- ResourceProvider rp = new ServletContextResourceProvider(
+ LaunchpadContentProvider rp = new ServletContextResourceProvider(
getServletContext());
tmpSling = new SlingBridge(notifiable, logger, rp, props, getServletContext());
Modified: sling/trunk/launchpad/base/src/main/resources/sling.properties
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/main/resources/sling.properties?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/base/src/main/resources/sling.properties (original)
+++ sling/trunk/launchpad/base/src/main/resources/sling.properties Mon Dec 20 16:15:25 2010
@@ -134,6 +134,7 @@ sling.include.jre = jre-${java.specifica
org.osgi.framework.system.packages= \
${osgi-core-packages}, \
${osgi-compendium-services}, \
+ org.apache.sling.launchpad.api;version=1.0.0, \
${jre-${java.specification.version}} \
${org.apache.sling.launcher.system.packages}
Modified: sling/trunk/launchpad/builder/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/builder/pom.xml?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/builder/pom.xml (original)
+++ sling/trunk/launchpad/builder/pom.xml Mon Dec 20 16:15:25 2010
@@ -119,6 +119,10 @@
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.webconsole</artifactId>
</bundle>
+ <bundle>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.launchpad.installer</artifactId>
+ </bundle>
</bundleExclusions>
</configuration>
</execution>
Modified: sling/trunk/launchpad/builder/src/main/bundles/list.xml
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/builder/src/main/bundles/list.xml?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/builder/src/main/bundles/list.xml (original)
+++ sling/trunk/launchpad/builder/src/main/bundles/list.xml Mon Dec 20 16:15:25 2010
@@ -190,6 +190,18 @@
<artifactId>org.apache.aries.jmx.core</artifactId>
<version>0.2-incubating</version>
</bundle>
+
+ <bundle>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.launchpad.installer</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </bundle>
+
+ <bundle>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.osgi.installer</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ </bundle>
</startLevel>
<startLevel level="1">
<bundle>
Added: sling/trunk/launchpad/installer/README.txt
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/installer/README.txt?rev=1051167&view=auto
==============================================================================
--- sling/trunk/launchpad/installer/README.txt (added)
+++ sling/trunk/launchpad/installer/README.txt Mon Dec 20 16:15:25 2010
@@ -0,0 +1,24 @@
+ Apache Sling Launchpad Installer
+
+The Launchpad Installer project installs resources from the launchpad archive
+
+Getting Started
+===============
+
+This component uses a Maven 2 (http://maven.apache.org/) build
+environment. It requires a Java 5 JDK (or higher) and Maven (http://maven.apache.org/)
+2.0.7 or later. We recommend to use the latest Maven version.
+
+If you have Maven 2 installed, you can compile and
+package the jar using the following command:
+
+ mvn package
+
+See the Maven 2 documentation for other build features.
+
+The latest source code for this component is available in the
+Subversion (http://subversion.tigris.org/) source repository of
+the Apache Software Foundation. If you have Subversion installed,
+you can checkout the latest source using the following command:
+
+ svn checkout http://svn.apache.org/repos/asf/sling/trunk/launchpad/installer
Added: sling/trunk/launchpad/installer/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/installer/pom.xml?rev=1051167&view=auto
==============================================================================
--- sling/trunk/launchpad/installer/pom.xml (added)
+++ sling/trunk/launchpad/installer/pom.xml Mon Dec 20 16:15:25 2010
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>sling</artifactId>
+ <version>9</version>
+ <relativePath>../../parent/pom.xml</relativePath>
+ </parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.launchpad.installer</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>bundle</packaging>
+ <name>Apache Sling Launchpad Installer</name>
+
+ <description>
+ This module installs the contents of the launchpad archive into the framework.
+ </description>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ </instructions>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-scr-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-scr-scrdescriptor</id>
+ <goals>
+ <goal>scr</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.scr.annotations</artifactId>
+ <version>1.0.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.launchpad.api</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.osgi.installer</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>4.2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>4.2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.5.2</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Added: sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/LaunchpadConfigInstaller.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/LaunchpadConfigInstaller.java?rev=1051167&view=auto
==============================================================================
--- sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/LaunchpadConfigInstaller.java (added)
+++ sling/trunk/launchpad/installer/src/main/java/org/apache/sling/launchpad/installer/impl/LaunchpadConfigInstaller.java Mon Dec 20 16:15:25 2010
@@ -0,0 +1,68 @@
+/*
+ * 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.launchpad.installer.impl;
+
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
+import org.apache.sling.osgi.installer.InstallableResource;
+import org.apache.sling.osgi.installer.OsgiInstaller;
+import org.osgi.service.component.ComponentContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component
+public class LaunchpadConfigInstaller {
+
+ /**
+ *
+ */
+ private static final String ROOT_CONFIG_PATH = "resources/config";
+
+ @Reference
+ private OsgiInstaller installer;
+
+ @Reference
+ private LaunchpadContentProvider resourceProvider;
+
+ private Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ protected void activate(ComponentContext componentContext) {
+ logger.info("Activating launchpad config installer.");
+
+ Collection<InstallableResource> installables = new HashSet<InstallableResource>();
+
+ Iterator<String> configPaths = resourceProvider.getChildren(ROOT_CONFIG_PATH);
+ while (configPaths.hasNext()) {
+ String path = configPaths.next();
+
+ logger.info("Installing config launchpad file: {}", path);
+
+ InputStream stream = resourceProvider.getResourceAsStream(path);
+
+ installables.add(new InstallableResource(path, stream, null, null, InstallableResource.TYPE_CONFIG, 0));
+
+ }
+
+ installer.registerResources("launchpad", installables);
+ }
+}
Modified: sling/trunk/launchpad/testing/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/testing/pom.xml?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/launchpad/testing/pom.xml (original)
+++ sling/trunk/launchpad/testing/pom.xml Mon Dec 20 16:15:25 2010
@@ -133,7 +133,7 @@
<plugin>
<groupId>org.apache.sling</groupId>
<artifactId>maven-launchpad-plugin</artifactId>
- <version>2.0.7-SNAPSHOT</version>
+ <version>2.0.9-SNAPSHOT</version>
<executions>
<execution>
<id>prepare-package</id>
@@ -453,7 +453,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.launchpad.base</artifactId>
- <version>2.2.0</version>
+ <version>2.2.1-SNAPSHOT</version>
<classifier>app</classifier>
</dependency>
Modified: sling/trunk/maven/maven-launchpad-plugin/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/pom.xml?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/pom.xml (original)
+++ sling/trunk/maven/maven-launchpad-plugin/pom.xml Mon Dec 20 16:15:25 2010
@@ -137,13 +137,18 @@
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.launchpad.api</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.launchpad.base</artifactId>
- <version>2.2.0</version>
+ <version>2.2.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.launchpad.base</artifactId>
- <version>2.2.0</version>
+ <version>2.2.1-SNAPSHOT</version>
<classifier>app</classifier>
</dependency>
<dependency>
Modified: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java (original)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java Mon Dec 20 16:15:25 2010
@@ -52,6 +52,12 @@ import org.drools.runtime.StatefulKnowle
public abstract class AbstractBundleListMojo extends AbstractMojo {
/**
+ * @parameter expression="${configDirectory}"
+ * default-value="src/main/config"
+ */
+ protected File configDirectory;
+
+ /**
* JAR Packaging type.
*/
protected static final String JAR = "jar";
@@ -61,6 +67,10 @@ public abstract class AbstractBundleList
*/
protected static final String WAR = "war";
+ protected static final String CONFIG_PATH_PREFIX = "resources/config";
+
+ protected static final String BUNDLE_PATH_PREFIX = "resources/bundles";
+
protected static boolean shouldCopy(File source, File dest) {
if (!dest.exists()) {
return true;
Modified: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java (original)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java Mon Dec 20 16:15:25 2010
@@ -19,7 +19,11 @@ package org.apache.sling.maven.projectsu
import static org.apache.felix.framework.util.FelixConstants.*;
import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
@@ -37,7 +41,7 @@ import org.apache.maven.plugin.MojoExecu
import org.apache.maven.shared.filtering.MavenFileFilter;
import org.apache.maven.shared.filtering.MavenFilteringException;
import org.apache.maven.shared.filtering.PropertyUtils;
-import org.apache.sling.launchpad.base.impl.ResourceProvider;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
import org.apache.sling.launchpad.base.impl.Sling;
import org.apache.sling.launchpad.base.shared.Notifiable;
import org.apache.sling.launchpad.base.shared.SharedConstants;
@@ -46,10 +50,6 @@ import org.apache.sling.maven.projectsup
import org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.StartLevel;
import org.osgi.framework.BundleException;
-/**
- * Base plugin class for goals which start Sling.
- *
- */
public abstract class AbstractLaunchpadStartingMojo extends AbstractBundleListMojo implements Notifiable {
/** Default log level setting if no set on command line (value is "INFO"). */
@@ -101,7 +101,7 @@ public abstract class AbstractLaunchpadS
/**
* @parameter expression="${resourceProviderRoot}"
- * default-value="src/test/resources"
+ * default-value="src/test/resources"
*/
private File resourceProviderRoot;
@@ -110,22 +110,51 @@ public abstract class AbstractLaunchpadS
*/
private MavenFileFilter mavenFileFilter;
- private ResourceProvider resourceProvider = new ResourceProvider() {
+ /**
+ * @parameter expression="${session}"
+ * @required
+ * @readonly
+ */
+ private MavenSession mavenSession;
+
+ private LaunchpadContentProvider resourceProvider = new LaunchpadContentProvider() {
- @Override
public Iterator<String> getChildren(String path) {
- if (path.equals("resources/bundles")) {
+ if (path.equals(BUNDLE_PATH_PREFIX)) {
List<String> levels = new ArrayList<String>();
for (StartLevel level : getBundleList().getStartLevels()) {
- levels.add(String.valueOf(level.getLevel()) + "/");
+ levels.add(String.valueOf(BUNDLE_PATH_PREFIX + "/" + level.getLevel()) + "/");
}
return levels.iterator();
} else if (path.equals("resources/corebundles")) {
List<String> empty = Collections.emptyList();
return empty.iterator();
- } else {
+ } else if (path.equals(CONFIG_PATH_PREFIX)) {
+ if (configDirectory.exists() && configDirectory.isDirectory()) {
+ File[] configFiles = configDirectory.listFiles(new FileFilter() {
+
+ public boolean accept(File file) {
+ return file.isFile();
+ }
+ });
+
+ List<String> fileNames = new ArrayList<String>();
+ for (File cfgFile : configFiles) {
+ if (cfgFile.isFile()) {
+ fileNames.add(CONFIG_PATH_PREFIX + "/" + cfgFile.getName());
+ }
+ }
+
+ return fileNames.iterator();
+
+ } else {
+ List<String> empty = Collections.emptyList();
+ return empty.iterator();
+ }
+ } else if (path.startsWith(BUNDLE_PATH_PREFIX)) {
+ String startLevel = path.substring(BUNDLE_PATH_PREFIX.length() + 1);
try {
- int i = Integer.parseInt(path);
+ int i = Integer.parseInt(startLevel);
List<String> bundles = new ArrayList<String>();
for (StartLevel level : getBundleList().getStartLevels()) {
if (level.getLevel() == i) {
@@ -145,15 +174,25 @@ public abstract class AbstractLaunchpadS
return bundles.iterator();
} catch (NumberFormatException e) {
- getLog().warn("un-handlable path " + path);
- return null;
-
}
}
+
+ getLog().warn("un-handlable path " + path);
+ return null;
}
- @Override
public URL getResource(String path) {
+ if (path.startsWith(CONFIG_PATH_PREFIX)) {
+ File configFile = new File(configDirectory, path.substring(CONFIG_PATH_PREFIX.length() + 1));
+ if (configFile.exists()) {
+ try {
+ return configFile.toURI().toURL();
+ } catch (MalformedURLException e) {
+ // ignore this one
+ }
+ }
+ }
+
File resourceFile = new File(resourceProviderRoot, path);
if (resourceFile.exists()) {
try {
@@ -167,13 +206,29 @@ public abstract class AbstractLaunchpadS
if (fromClasspath != null) {
return fromClasspath;
}
-
+
try {
return new URL(path);
} catch (MalformedURLException e) {
return null;
}
}
+
+ }
+
+ 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;
+
}
};
@@ -200,9 +255,9 @@ public abstract class AbstractLaunchpadS
if (updateFile != null) {
getLog().warn("Maven Launchpad Plugin doesn't support updating the framework bundle.");
}
-
+
getLog().info("Restarting Framework and Sling");
-
+
try {
executeWithArtifacts();
} catch (MojoExecutionException e) {
@@ -270,8 +325,8 @@ public abstract class AbstractLaunchpadS
}
- protected abstract Sling startSling(ResourceProvider resourceProvider, Map<String, String> props, Logger logger)
- throws BundleException;
+ protected abstract Sling startSling(LaunchpadContentProvider resourceProvider, Map<String, String> props,
+ Logger logger) throws BundleException;
protected void stopSling() {
if (sling != null) {
Modified: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java (original)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java Mon Dec 20 16:15:25 2010
@@ -92,12 +92,13 @@ public class PreparePackageMojo extends
public void executeWithArtifacts() throws MojoExecutionException, MojoFailureException {
copyBaseArtifact();
copyBundles(getBundleList(), getOutputDirectory());
+ copyConfigurationFiles();
if (JAR.equals(packaging)) {
unpackBaseArtifact();
}
}
- protected void initArtifactDefinitions(Properties dependencies) {
+ protected void initArtifactDefinitions(Properties dependencies) {
if (base == null) {
base = new ArtifactDefinition();
}
@@ -186,6 +187,15 @@ public class PreparePackageMojo extends
unpack(artifact.getFile(), buildOutputDirectory, null, null);
}
+ private void copyConfigurationFiles() throws MojoExecutionException {
+ try {
+ FileUtils.copyDirectory(configDirectory, new File(getOutputDirectory(), CONFIG_PATH_PREFIX));
+ } catch (IOException e) {
+ throw new MojoExecutionException("Unable to copy configuration files", e);
+ }
+
+ }
+
private void unpack(File source, File destination, String includes, String excludes)
throws MojoExecutionException {
getLog().info("Unpacking " + source.getPath() + " to\n " + destination.getPath());
Modified: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/RunMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/RunMojo.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/RunMojo.java (original)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/RunMojo.java Mon Dec 20 16:15:25 2010
@@ -19,7 +19,7 @@ package org.apache.sling.maven.projectsu
import java.util.Map;
import org.apache.felix.framework.Logger;
-import org.apache.sling.launchpad.base.impl.ResourceProvider;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
import org.apache.sling.launchpad.base.impl.Sling;
import org.osgi.framework.BundleException;
@@ -65,7 +65,7 @@ public class RunMojo extends AbstractLau
private boolean registeredHook = false;
- protected Sling startSling(ResourceProvider resourceProvider, final Map<String, String> props, Logger logger)
+ protected Sling startSling(LaunchpadContentProvider resourceProvider, final Map<String, String> props, Logger logger)
throws BundleException {
if (!registeredHook) {
Runtime.getRuntime().addShutdownHook(shutdown);
Modified: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/StartMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/StartMojo.java?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/StartMojo.java (original)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/StartMojo.java Mon Dec 20 16:15:25 2010
@@ -19,7 +19,7 @@ package org.apache.sling.maven.projectsu
import java.util.Map;
import org.apache.felix.framework.Logger;
-import org.apache.sling.launchpad.base.impl.ResourceProvider;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
import org.apache.sling.launchpad.base.impl.Sling;
import org.osgi.framework.BundleException;
@@ -46,7 +46,7 @@ public class StartMojo extends AbstractL
* {@inheritDoc}
*/
@Override
- protected Sling startSling(ResourceProvider resourceProvider, final Map<String, String> props, Logger logger)
+ protected Sling startSling(LaunchpadContentProvider resourceProvider, final Map<String, String> props, Logger logger)
throws BundleException {
new ControlListener(this, getLog(), controlHost, controlPort).listen();
Modified: sling/trunk/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/pom.xml?rev=1051167&r1=1051166&r2=1051167&view=diff
==============================================================================
--- sling/trunk/pom.xml (original)
+++ sling/trunk/pom.xml Mon Dec 20 16:15:25 2010
@@ -142,7 +142,9 @@
<module>installer/it</module>
<!-- Launchpad -->
+ <module>launchpad/api</module>
<module>launchpad/base</module>
+ <module>launchpad/installer</module>
<module>launchpad/content</module>
<module>launchpad/builder</module>