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]>.
