This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag maven-launchpad-plugin-2.1.0
in repository 
https://gitbox.apache.org/repos/asf/sling-maven-launchpad-plugin.git

commit 67eb31614ee6e29be702327d9ca16d65c8ccaad7
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Mon Jul 4 08:54:14 2011 +0000

    SLING-2124 : Improve support for OSGi installer by distinguishing between 
bootstrap and app bundles
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/maven/maven-launchpad-plugin@1142589
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../AbstractLaunchpadFrameworkMojo.java            | 24 ++++++++++++++---
 .../AbstractLaunchpadStartingMojo.java             |  2 +-
 .../maven/projectsupport/CreateBundleJarMojo.java  |  6 ++---
 .../projectsupport/bundlelist/BaseBundleList.java  |  6 ++---
 .../projectsupport/bundlelist/BaseStartLevel.java  | 31 ++++++++++++++++++++++
 src/main/mdo/bundle-list.xml                       |  4 +--
 6 files changed, 59 insertions(+), 14 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadFrameworkMojo.java
 
b/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadFrameworkMojo.java
index 4697899..ea86646 100644
--- 
a/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadFrameworkMojo.java
+++ 
b/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadFrameworkMojo.java
@@ -45,12 +45,29 @@ public abstract class AbstractLaunchpadFrameworkMojo 
extends AbstractUsingBundle
      *
      * @parameter default-value="bundles"
      */
-    protected String bundlesDirectory;
+    private String bundlesDirectory;
+
+    /**
+     * The directory which contains the bootstraop bundle directories.
+     *
+     * @parameter
+     */
+    private String bootDirectory;
+
+    protected String getPathForArtifact(final int startLevel, final String 
artifactName) {
+        if ( startLevel == -1 && bootDirectory != null ) {
+            return String.format("%s/%s/%s", baseDestination, bootDirectory,
+                    artifactName);
+        }
+        return String.format("%s/%s/%s/%s", baseDestination, bundlesDirectory,
+                (startLevel == -1 ? 1 : startLevel),
+                artifactName);
+    }
 
     protected void copyBundles(BundleList bundles, File outputDirectory) 
throws MojoExecutionException {
         for (StartLevel startLevel : bundles.getStartLevels()) {
             for (Bundle bundle : startLevel.getBundles()) {
-                copy(new ArtifactDefinition(bundle, startLevel.getLevel()), 
outputDirectory);
+                copy(new ArtifactDefinition(bundle, 
startLevel.getStartLevel()), outputDirectory);
             }
         }
     }
@@ -61,8 +78,7 @@ public abstract class AbstractLaunchpadFrameworkMojo extends 
AbstractUsingBundle
     }
 
     protected void copy(File file, int startLevel, File outputDirectory) 
throws MojoExecutionException {
-        File destination = new File(outputDirectory, 
String.format("%s/%s/%s/%s", baseDestination, bundlesDirectory,
-                startLevel, file.getName()));
+        File destination = new File(outputDirectory, 
getPathForArtifact(startLevel, file.getName().replace('/', 
File.separatorChar)));
         if (shouldCopy(file, destination)) {
             getLog().info(String.format("Copying bundle from %s to %s", 
file.getPath(), destination.getPath()));
             try {
diff --git 
a/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java
 
b/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java
index d1abf68..bc5cf72 100644
--- 
a/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java
+++ 
b/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java
@@ -155,7 +155,7 @@ public abstract class AbstractLaunchpadStartingMojo extends 
AbstractUsingBundleL
                     int i = Integer.parseInt(startLevel);
                     List<String> bundles = new ArrayList<String>();
                     for (StartLevel level : getBundleList().getStartLevels()) {
-                        if (level.getLevel() == i) {
+                        if (level.getStartLevel() == i) {
                             for (Bundle bundle : level.getBundles()) {
                                 ArtifactDefinition d = new 
ArtifactDefinition(bundle, i);
                                 try {
diff --git 
a/src/main/java/org/apache/sling/maven/projectsupport/CreateBundleJarMojo.java 
b/src/main/java/org/apache/sling/maven/projectsupport/CreateBundleJarMojo.java
index 01802db..b1b22b0 100644
--- 
a/src/main/java/org/apache/sling/maven/projectsupport/CreateBundleJarMojo.java
+++ 
b/src/main/java/org/apache/sling/maven/projectsupport/CreateBundleJarMojo.java
@@ -80,10 +80,8 @@ public class CreateBundleJarMojo extends 
AbstractLaunchpadFrameworkMojo {
                for (StartLevel level : bundles.getStartLevels()) {
                        for (Bundle bundle : level.getBundles()) {
                                Artifact artifact = getArtifact(new 
ArtifactDefinition(bundle,
-                                               level.getLevel()));
-                               String destFileName = baseDestination + "/" + 
bundlesDirectory
-                                               + "/" + level.getLevel() + "/"
-                                               + artifact.getFile().getName();
+                                               level.getStartLevel()));
+                               final String destFileName = 
getPathForArtifact(level.getStartLevel(), artifact.getFile().getName());
                                try {
                                        jarArchiver.addFile(artifact.getFile(), 
destFileName);
                                } catch (ArchiverException e) {
diff --git 
a/src/main/java/org/apache/sling/maven/projectsupport/bundlelist/BaseBundleList.java
 
b/src/main/java/org/apache/sling/maven/projectsupport/bundlelist/BaseBundleList.java
index 2079203..70050e3 100644
--- 
a/src/main/java/org/apache/sling/maven/projectsupport/bundlelist/BaseBundleList.java
+++ 
b/src/main/java/org/apache/sling/maven/projectsupport/bundlelist/BaseBundleList.java
@@ -84,7 +84,7 @@ public abstract class BaseBundleList {
             if ( mergeStartLevel == null || newBnd.getStartLevel() > 0) {
                 startLevel = getOrCreateStartLevel(newBnd.getStartLevel());
             } else {
-                startLevel = getOrCreateStartLevel(mergeStartLevel.getLevel());
+                startLevel = 
getOrCreateStartLevel(mergeStartLevel.getStartLevel());
             }
             startLevel.getBundles().add(newBnd);
         }
@@ -93,14 +93,14 @@ public abstract class BaseBundleList {
 
     private StartLevel getOrCreateStartLevel(int startLevel) {
         for (StartLevel sl : getStartLevels()) {
-            if (sl.getLevel() == startLevel) {
+            if (sl.getStartLevel() == startLevel) {
                 return sl;
             }
         }
 
         StartLevel sl = new StartLevel();
         getStartLevels().add(sl);
-        sl.setLevel(startLevel);
+        sl.setRawLevel(startLevel);
         return sl;
     }
 
diff --git 
a/src/main/java/org/apache/sling/maven/projectsupport/bundlelist/BaseStartLevel.java
 
b/src/main/java/org/apache/sling/maven/projectsupport/bundlelist/BaseStartLevel.java
index b7e5923..e2f08a2 100644
--- 
a/src/main/java/org/apache/sling/maven/projectsupport/bundlelist/BaseStartLevel.java
+++ 
b/src/main/java/org/apache/sling/maven/projectsupport/bundlelist/BaseStartLevel.java
@@ -23,8 +23,12 @@ import 
org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.Bundle;
 
 public abstract class BaseStartLevel {
 
+    private static final String BOOT_MARKER = "boot";
+
     public abstract List<Bundle> getBundles();
 
+    private int startLevel;
+
     public boolean removeBundle(Bundle bundle, boolean compareVersions) {
         for (ListIterator<Bundle> it = getBundles().listIterator(); 
it.hasNext();) {
             if (isSameArtifact(bundle, it.next(), compareVersions)) {
@@ -57,4 +61,31 @@ public abstract class BaseStartLevel {
                 && bundle1.getGroupId().equals(bundle2.getGroupId()) && 
bundle1.getType().equals(bundle2.getType());
     }
 
+    /**
+     * Set the level field.
+     *
+     * @param level
+     */
+    public void setLevel( final String level ) {
+        if ( BOOT_MARKER.equalsIgnoreCase(level) ) {
+            this.startLevel = -1;
+        } else {
+            this.startLevel = Integer.valueOf(level);
+            if ( this.startLevel < 0 ) {
+                throw new IllegalArgumentException("Start level must either be 
'" + BOOT_MARKER + "' or non-negative: " + level);
+            }
+        }
+    }
+
+    public void setRawLevel( final int level ) {
+        this.startLevel = level;
+    }
+
+    public String getLevel() {
+        return String.valueOf(this.startLevel);
+    }
+
+    public int getStartLevel() {
+        return this.startLevel;
+    }
 }
diff --git a/src/main/mdo/bundle-list.xml b/src/main/mdo/bundle-list.xml
index 8c078b2..dbe123a 100644
--- a/src/main/mdo/bundle-list.xml
+++ b/src/main/mdo/bundle-list.xml
@@ -52,10 +52,10 @@
             <version>1.0.0</version>
             
<superClass>org.apache.sling.maven.projectsupport.bundlelist.BaseStartLevel</superClass>
             <fields>
-               <field xml.attribute="true">
+               <field xml.attribute="true" java.setter="false" 
java.getter="false">
                        <name>level</name>
                        <version>1.0.0</version>
-                       <type>int</type>
+                       <type>String</type>
                </field>
                 <field>
                     <name>bundles</name>

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to