Author: rombert Date: Mon Sep 30 12:25:14 2013 New Revision: 1527531 URL: http://svn.apache.org/r1527531 Log: SLING-3125 - Centralize and improve embedded artifact handling
Move all embedded artifacts into the .artifacts plug-in. Modified: sling/trunk/tooling/ide/artifacts/build.properties sling/trunk/tooling/ide/artifacts/pom.xml sling/trunk/tooling/ide/artifacts/src/org/apache/sling/ide/artifacts/EmbeddedArtifactLocator.java sling/trunk/tooling/ide/artifacts/src/org/apache/sling/ide/artifacts/impl/ArtifactsLocatorImpl.java sling/trunk/tooling/ide/eclipse-m2e-ui/build.properties sling/trunk/tooling/ide/eclipse-m2e-ui/pom.xml sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/EmbeddedArchetypeInstaller.java sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/NewSlingBundleWizard.java Modified: sling/trunk/tooling/ide/artifacts/build.properties URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/artifacts/build.properties?rev=1527531&r1=1527530&r2=1527531&view=diff ============================================================================== --- sling/trunk/tooling/ide/artifacts/build.properties (original) +++ sling/trunk/tooling/ide/artifacts/build.properties Mon Sep 30 12:25:14 2013 @@ -2,5 +2,5 @@ source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ - target/sling-tooling-support-install/,\ - OSGI-INF/ + OSGI-INF/,\ + target/artifacts/ Modified: sling/trunk/tooling/ide/artifacts/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/artifacts/pom.xml?rev=1527531&r1=1527530&r2=1527531&view=diff ============================================================================== --- sling/trunk/tooling/ide/artifacts/pom.xml (original) +++ sling/trunk/tooling/ide/artifacts/pom.xml Mon Sep 30 12:25:14 2013 @@ -30,9 +30,21 @@ <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.tooling.support.install</artifactId> <version>0.0.1-SNAPSHOT</version> - <overWrite>false</overWrite> - <outputDirectory>${project.build.directory}/sling-tooling-support-install</outputDirectory> + <outputDirectory>${project.build.directory}/artifacts/sling-tooling-support-install</outputDirectory> </artifactItem> + <artifactItem> + <groupId>org.apache.sling</groupId> + <artifactId>sling-bundle-archetype</artifactId> + <version>${sling-bundle-archetype.version}</version> + <outputDirectory>${project.build.directory}/artifacts/archetypes</outputDirectory> + </artifactItem> + <artifactItem> + <groupId>org.apache.sling</groupId> + <artifactId>sling-bundle-archetype</artifactId> + <version>${sling-bundle-archetype.version}</version> + <type>pom</type> + <outputDirectory>${project.build.directory}/artifacts/archetypes</outputDirectory> + </artifactItem> </artifactItems> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>true</overWriteSnapshots> @@ -43,4 +55,7 @@ </plugin> </plugins> </build> + <properties> + <sling-bundle-archetype.version>1.0.1-SNAPSHOT</sling-bundle-archetype.version> + </properties> </project> Modified: sling/trunk/tooling/ide/artifacts/src/org/apache/sling/ide/artifacts/EmbeddedArtifactLocator.java URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/artifacts/src/org/apache/sling/ide/artifacts/EmbeddedArtifactLocator.java?rev=1527531&r1=1527530&r2=1527531&view=diff ============================================================================== --- sling/trunk/tooling/ide/artifacts/src/org/apache/sling/ide/artifacts/EmbeddedArtifactLocator.java (original) +++ sling/trunk/tooling/ide/artifacts/src/org/apache/sling/ide/artifacts/EmbeddedArtifactLocator.java Mon Sep 30 12:25:14 2013 @@ -22,4 +22,9 @@ public interface EmbeddedArtifactLocator EmbeddedArtifact loadToolingSupportBundle(); + /** + * @return a two-element array, where the first element is the pom artifact, and the second element is the jar + * artifact + */ + EmbeddedArtifact[] loadSlingBundleArchetype(); } Modified: sling/trunk/tooling/ide/artifacts/src/org/apache/sling/ide/artifacts/impl/ArtifactsLocatorImpl.java URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/artifacts/src/org/apache/sling/ide/artifacts/impl/ArtifactsLocatorImpl.java?rev=1527531&r1=1527530&r2=1527531&view=diff ============================================================================== --- sling/trunk/tooling/ide/artifacts/src/org/apache/sling/ide/artifacts/impl/ArtifactsLocatorImpl.java (original) +++ sling/trunk/tooling/ide/artifacts/src/org/apache/sling/ide/artifacts/impl/ArtifactsLocatorImpl.java Mon Sep 30 12:25:14 2013 @@ -25,6 +25,8 @@ import org.osgi.service.component.Compon public class ArtifactsLocatorImpl implements EmbeddedArtifactLocator { + private static final String ARTIFACTS_LOCATION = "target/artifacts"; + private ComponentContext context; protected void activate(ComponentContext context) { @@ -38,16 +40,47 @@ public class ArtifactsLocatorImpl implem BundleContext bundleContext = context.getBundleContext(); + String version = "0.0.1.SNAPSHOT"; // TODO - remove version hardcoding String artifactId = "org.apache.sling.tooling.support.install"; String extension = "jar"; - String resourceLocation = "target/sling-tooling-support-install/" + artifactId + "." + extension; - URL jarUrl = bundleContext.getBundle().getResource(resourceLocation); - String version = "0.0.1.SNAPSHOT"; // TODO - remove version hardcoding - if (jarUrl == null) { - throw new RuntimeException("Unable to locate bundle resource " + resourceLocation); - } + + URL jarUrl = loadResource(bundleContext, ARTIFACTS_LOCATION + "/sling-tooling-support-install/" + artifactId + + "." + extension); return new EmbeddedArtifact(artifactId + "-" + version + "." + extension, version, jarUrl); } + @Override + public EmbeddedArtifact[] loadSlingBundleArchetype() { + + BundleContext bundleContext = context.getBundleContext(); + + String version = "1.0.1-SNAPSHOT"; // TODO - remove version hardcoding + String artifactId = "sling-bundle-archetype"; + String extension = "jar"; + + URL resourceUrl = loadResource(bundleContext, ARTIFACTS_LOCATION + "/archetypes/" + artifactId + "." + + extension); + + EmbeddedArtifact jarArtifact = new EmbeddedArtifact(artifactId + "-" + version + "." + extension, version, + resourceUrl); + + extension = "pom"; + resourceUrl = loadResource(bundleContext, ARTIFACTS_LOCATION + "/archetypes/" + artifactId + "." + extension); + + EmbeddedArtifact pomArtifact = new EmbeddedArtifact(artifactId + "-" + version + "." + extension, version, + resourceUrl); + + return new EmbeddedArtifact[] { pomArtifact, jarArtifact }; + } + + private URL loadResource(BundleContext bundleContext, String resourceLocation) { + + URL resourceUrl = bundleContext.getBundle().getResource(resourceLocation); + if (resourceUrl == null) { + throw new RuntimeException("Unable to locate bundle resource " + resourceLocation); + } + return resourceUrl; + } + } Modified: sling/trunk/tooling/ide/eclipse-m2e-ui/build.properties URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-m2e-ui/build.properties?rev=1527531&r1=1527530&r2=1527531&view=diff ============================================================================== --- sling/trunk/tooling/ide/eclipse-m2e-ui/build.properties (original) +++ sling/trunk/tooling/ide/eclipse-m2e-ui/build.properties Mon Sep 30 12:25:14 2013 @@ -1,6 +1,4 @@ bin.includes = plugin.xml,\ META-INF/,\ - .,\ - target/sling-tooling-support-install/,\ - target/archetypes/ + . source.. = src/ Modified: sling/trunk/tooling/ide/eclipse-m2e-ui/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-m2e-ui/pom.xml?rev=1527531&r1=1527530&r2=1527531&view=diff ============================================================================== --- sling/trunk/tooling/ide/eclipse-m2e-ui/pom.xml (original) +++ sling/trunk/tooling/ide/eclipse-m2e-ui/pom.xml Mon Sep 30 12:25:14 2013 @@ -19,81 +19,5 @@ </excludes> </resource> </resources> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <version>2.8</version> - <executions> - <execution> - <id>copy</id> - <phase>compile</phase> - <goals> - <goal>copy</goal> - </goals> - <configuration> - <artifactItems> - <artifactItem> - <groupId>org.apache.sling</groupId> - <artifactId>org.apache.sling.tooling.support.install</artifactId> - <version>0.0.1-SNAPSHOT</version> - <overWrite>false</overWrite> - <outputDirectory>${project.build.directory}/sling-tooling-support-install</outputDirectory> - </artifactItem> - <artifactItem> - <groupId>org.apache.sling</groupId> - <artifactId>sling-bundle-archetype</artifactId> - <version>1.0.1-SNAPSHOT</version> - <overWrite>false</overWrite> - <outputDirectory>${project.build.directory}/archetypes</outputDirectory> - </artifactItem> - <artifactItem> - <groupId>org.apache.sling</groupId> - <artifactId>sling-bundle-archetype</artifactId> - <version>1.0.1-SNAPSHOT</version> - <type>pom</type> - <overWrite>false</overWrite> - <outputDirectory>${project.build.directory}/archetypes</outputDirectory> - </artifactItem> - </artifactItems> - <overWriteReleases>false</overWriteReleases> - <overWriteSnapshots>true</overWriteSnapshots> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - <pluginManagement> - <plugins> - <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--> - <plugin> - <groupId>org.eclipse.m2e</groupId> - <artifactId>lifecycle-mapping</artifactId> - <version>1.0.0</version> - <configuration> - <lifecycleMappingMetadata> - <pluginExecutions> - <pluginExecution> - <pluginExecutionFilter> - <groupId> - org.apache.maven.plugins - </groupId> - <artifactId> - maven-dependency-plugin - </artifactId> - <versionRange>[2.8,)</versionRange> - <goals> - <goal>copy</goal> - </goals> - </pluginExecutionFilter> - <action> - <ignore></ignore> - </action> - </pluginExecution> - </pluginExecutions> - </lifecycleMappingMetadata> - </configuration> - </plugin> - </plugins> - </pluginManagement> -</build></project> +</build> +</project> Modified: sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/EmbeddedArchetypeInstaller.java URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/EmbeddedArchetypeInstaller.java?rev=1527531&r1=1527530&r2=1527531&view=diff ============================================================================== --- sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/EmbeddedArchetypeInstaller.java (original) +++ sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/EmbeddedArchetypeInstaller.java Mon Sep 30 12:25:14 2013 @@ -84,6 +84,10 @@ public class EmbeddedArchetypeInstaller public void addResource(String fileExtension, URL origin) throws IOException { origins.put(fileExtension, origin.openStream()); } + + public void addResource(String fileExtension, InputStream inputStream) throws IOException { + origins.put(fileExtension, inputStream); + } public void addResource(String fileExtension, File origin) throws FileNotFoundException { origins.put(fileExtension, new FileInputStream(origin)); Modified: sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/NewSlingBundleWizard.java URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/NewSlingBundleWizard.java?rev=1527531&r1=1527530&r2=1527531&view=diff ============================================================================== --- sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/NewSlingBundleWizard.java (original) +++ sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/NewSlingBundleWizard.java Mon Sep 30 12:25:14 2013 @@ -17,9 +17,10 @@ package org.apache.sling.ide.eclipse.ui.wizards.np; import java.io.IOException; -import java.net.URL; import org.apache.maven.archetype.catalog.Archetype; +import org.apache.sling.ide.artifacts.EmbeddedArtifact; +import org.apache.sling.ide.artifacts.EmbeddedArtifactLocator; import org.apache.sling.ide.eclipse.m2e.EmbeddedArchetypeInstaller; import org.apache.sling.ide.eclipse.m2e.internal.Activator; import org.apache.sling.ide.eclipse.m2e.internal.SharedImages; @@ -40,16 +41,18 @@ public class NewSlingBundleWizard extend @Override public void installArchetypes() { - // embedding the 1.0.1-SNAPSHOT cos the 1.0.0 doesn't include the pom + + EmbeddedArtifactLocator artifactsLocator = Activator.getDefault().getArtifactsLocator(); + + // TODO - should we remove the special slingclipse-embedded artifact and simply install our version? EmbeddedArchetypeInstaller archetypeInstaller = new EmbeddedArchetypeInstaller( "org.apache.sling", "sling-bundle-archetype", "slingclipse-embedded"); try { - URL jarUrl = Activator.getDefault().getBundle().getResource( - "target/archetypes/sling-bundle-archetype-1.0.1-SNAPSHOT.jar"); - archetypeInstaller.addResource("jar", jarUrl); - URL pomUrl = Activator.getDefault().getBundle().getResource( - "target/archetypes/sling-bundle-archetype-1.0.1-SNAPSHOT.pom"); - archetypeInstaller.addResource("pom", pomUrl); + + EmbeddedArtifact[] archetypeArtifacts = artifactsLocator.loadSlingBundleArchetype(); + + archetypeInstaller.addResource("pom", archetypeArtifacts[0].openInputStream()); + archetypeInstaller.addResource("jar", archetypeArtifacts[1].openInputStream()); archetypeInstaller.installArchetype(); } catch (IOException e) {