You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2012/02/13 09:11:08 UTC

svn commit: r1243427 - in /karaf/trunk/tooling/karaf-maven-plugin/src: main/java/org/apache/karaf/tooling/features/ test/java/org/apache/karaf/tooling/features/

Author: jbonofre
Date: Mon Feb 13 08:11:08 2012
New Revision: 1243427

URL: http://svn.apache.org/viewvc?rev=1243427&view=rev
Log:
[KARAF-1198] Refactoring of the MvnUrlUtil into MavenUtil in order to add a method dedicated to the metadata generation

Added:
    karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java
      - copied, changed from r1243208, karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MvnUrlUtil.java
    karaf/trunk/tooling/karaf-maven-plugin/src/test/java/org/apache/karaf/tooling/features/MavenUtilTest.java
      - copied, changed from r1243208, karaf/trunk/tooling/karaf-maven-plugin/src/test/java/org/apache/karaf/tooling/features/MvnUrlUtilTest.java
Removed:
    karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MvnUrlUtil.java
    karaf/trunk/tooling/karaf-maven-plugin/src/test/java/org/apache/karaf/tooling/features/MvnUrlUtilTest.java
Modified:
    karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/CreateKarMojo.java
    karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java
    karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java

Modified: karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/CreateKarMojo.java
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/CreateKarMojo.java?rev=1243427&r1=1243426&r2=1243427&view=diff
==============================================================================
--- karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/CreateKarMojo.java (original)
+++ karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/CreateKarMojo.java Mon Feb 13 08:11:08 2012
@@ -249,30 +249,8 @@ public class CreateKarMojo extends MojoS
                     File metadataTarget = new File(localFile.getParentFile(), "maven-metadata-local.xml");
                     if (!metadataTarget.exists()) {
                         // the maven-metadata-local.xml doesn't exist, create it
-                        Metadata metadata = new Metadata();
-                        metadata.setGroupId(artifact.getGroupId());
-                        metadata.setArtifactId(artifact.getArtifactId());
-                        metadata.setVersion(artifact.getVersion());
-                        metadata.setModelVersion("1.1.0");
-
-                        Versioning versioning = new Versioning();
-                        versioning.setLastUpdatedTimestamp(new Date(System.currentTimeMillis()));
-                        Snapshot snapshot = new Snapshot();
-                        snapshot.setLocalCopy(true);
-                        versioning.setSnapshot(snapshot);
-                        SnapshotVersion snapshotVersion = new SnapshotVersion();
-                        snapshotVersion.setClassifier(artifact.getClassifier());
-                        snapshotVersion.setVersion(artifact.getVersion());
-                        snapshotVersion.setExtension(artifact.getType());
-                        snapshotVersion.setUpdated(versioning.getLastUpdated());
-                        versioning.addSnapshotVersion(snapshotVersion);
-
-                        metadata.setVersioning(versioning);
-
-                        MetadataXpp3Writer metadataWriter = new MetadataXpp3Writer();
                         try {
-                            Writer writer = new FileWriter(metadataTarget);
-                            metadataWriter.write(writer, metadata);
+                            MavenUtil.generateMavenMetadata(artifact, metadataTarget);
                         } catch (Exception e) {
                             getLog().warn("Could not create maven-metadata-local.xml", e);
                             getLog().warn("It means that this SNAPSHOT could be overwritten by an older one present on remote repositories");

Modified: karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java?rev=1243427&r1=1243426&r2=1243427&view=diff
==============================================================================
--- karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java (original)
+++ karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java Mon Feb 13 08:11:08 2012
@@ -293,7 +293,7 @@ public class GenerateDescriptorMojo exte
                     feature.getFeature().add(dependency);
                 }
             } else {
-                String bundleName = MvnUrlUtil.artifactToMvn(artifact);
+                String bundleName = MavenUtil.artifactToMvn(artifact);
                 File bundleFile = resolve(artifact);
                 Manifest manifest = getManifest(bundleFile);
 

Modified: karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java?rev=1243427&r1=1243426&r2=1243427&view=diff
==============================================================================
--- karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java (original)
+++ karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java Mon Feb 13 08:11:08 2012
@@ -206,7 +206,7 @@ public class InstallKarsMojo extends Moj
                 }
             }
             if ("features".equals(artifact.getClassifier()) && acceptScope(artifact)) {
-                String uri = MvnUrlUtil.artifactToMvn(artifact);
+                String uri = MavenUtil.artifactToMvn(artifact);
 
                 File source = artifact.getFile();
                 DefaultRepositoryLayout layout = new DefaultRepositoryLayout();
@@ -233,30 +233,8 @@ public class InstallKarsMojo extends Moj
                     if (artifact.isSnapshot()) {
                         getLog().debug("Feature " + uri + " is a SNAPSHOT, generate the maven-metadata-local.xml file");
                         File metadataTarget = new File(target.getParentFile(), "maven-metadata-local.xml");
-                        Metadata metadata = new Metadata();
-                        metadata.setGroupId(artifact.getGroupId());
-                        metadata.setArtifactId(artifact.getArtifactId());
-                        metadata.setVersion(artifact.getVersion());
-                        metadata.setModelVersion("1.1.0");
-
-                        Versioning versioning = new Versioning();
-                        versioning.setLastUpdatedTimestamp(new Date(System.currentTimeMillis()));
-                        Snapshot snapshot = new Snapshot();
-                        snapshot.setLocalCopy(true);
-                        versioning.setSnapshot(snapshot);
-                        SnapshotVersion snapshotVersion = new SnapshotVersion();
-                        snapshotVersion.setClassifier(artifact.getClassifier());
-                        snapshotVersion.setVersion(artifact.getVersion());
-                        snapshotVersion.setExtension(artifact.getType());
-                        snapshotVersion.setUpdated(versioning.getLastUpdated());
-                        versioning.addSnapshotVersion(snapshotVersion);
-
-                        metadata.setVersioning(versioning);
-
-                        MetadataXpp3Writer metadataWriter = new MetadataXpp3Writer();
                         try {
-                            Writer writer = new FileWriter(metadataTarget);
-                            metadataWriter.write(writer, metadata);
+                            MavenUtil.generateMavenMetadata(artifact, metadataTarget);
                         } catch (Exception e) {
                             getLog().warn("Could not create maven-metadata-local.xml", e);
                             getLog().warn("It means that this SNAPSHOT could be overwritten by an older one present on remote repositories");
@@ -275,7 +253,7 @@ public class InstallKarsMojo extends Moj
 
         //install bundles listed in startup properties that weren't in kars into the system dir
         for (String key : (Set<String>) startupProperties.keySet()) {
-            String path = MvnUrlUtil.pathFromMaven(key);
+            String path = MavenUtil.pathFromMaven(key);
             File target = new File(system.resolve(path));
             if (!target.exists()) {
                 install(buffer, key, target);
@@ -287,7 +265,7 @@ public class InstallKarsMojo extends Moj
             for (Bundle bundle : feature.getBundle()) {
                 if (!bundle.isDependency()) {
                     String key = bundle.getLocation();
-                    String path = MvnUrlUtil.pathFromMaven(key);
+                    String path = MavenUtil.pathFromMaven(key);
                     File test = new File(system.resolve(path));
                     if (!test.exists()) {
                         File target = new File(system.resolve(path));
@@ -336,7 +314,7 @@ public class InstallKarsMojo extends Moj
 
 
     public File resolve(String id) {
-        id = MvnUrlUtil.mvnToAether(id);
+        id = MavenUtil.mvnToAether(id);
         ArtifactRequest request = new ArtifactRequest();
         request.setArtifact(new DefaultArtifact(id));
         request.setRepositories(remoteRepos);
@@ -415,7 +393,7 @@ public class InstallKarsMojo extends Moj
         private Features readFeatures(URI uri) throws XMLStreamException, JAXBException, IOException {
             File repoFile;
             if (uri.toString().startsWith("mvn:")) {
-                URI featuresPath = system.resolve(MvnUrlUtil.pathFromMaven(uri.toString()));
+                URI featuresPath = system.resolve(MavenUtil.pathFromMaven(uri.toString()));
                 repoFile = new File(featuresPath);
             } else {
                 repoFile = new File(uri);

Copied: karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java (from r1243208, karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MvnUrlUtil.java)
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java?p2=karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java&p1=karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MvnUrlUtil.java&r1=1243208&r2=1243427&rev=1243427&view=diff
==============================================================================
--- karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MvnUrlUtil.java (original)
+++ karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java Mon Feb 13 08:11:08 2012
@@ -16,35 +16,43 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-
 package org.apache.karaf.tooling.features;
 
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Date;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.Snapshot;
+import org.apache.maven.artifact.repository.metadata.SnapshotVersion;
+import org.apache.maven.artifact.repository.metadata.Versioning;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
 import org.sonatype.aether.util.artifact.DefaultArtifact;
 
 /**
- * Methods to convert between
- * pax mvn format: mvn-uri := 'mvn:' [ repository-url '!' ] group-id '/' artifact-id [ '/' [version] [ '/' [type] [ '/' classifier ] ] ] ]
- * aether coordinate format: <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>
- * and repository paths
- *
- * N.B. we do not handle repository-url in mvn urls.
- * N.B. version is required in mvn urls.
- *
- * @version $Revision$
+ * Util method for Maven manipulation (URL convert, metadata generation, etc).
  */
-public class MvnUrlUtil {
+public class MavenUtil {
 
     private static final DefaultRepositoryLayout layout = new DefaultRepositoryLayout();
-    private static final Pattern aetherPatterh = Pattern.compile( "([^: ]+):([^: ]+)(:([^: ]*)(:([^: ]+))?)?:([^: ]+)" );
-    private static final Pattern mvnPattern = Pattern.compile( "mvn:([^/ ]+)/([^/ ]+)/([^/ ]*)(/([^/ ]+)(/([^/ ]+))?)?" );
+    private static final Pattern aetherPattern = Pattern.compile("([^: ]+):([^: ]+)(:([^: ]*)(:([^: ]+))?)?:([^: ]+)");
+    private static final Pattern mvnPattern = Pattern.compile("mvn:([^/ ]+)/([^/ ]+)/([^/ ]*)(/([^/ ]+)(/([^/ ]+))?)?");
 
+    /**
+     * Convert PAX URL mvn format to aether coordinate format.
+     * N.B. we do not handle repository-url in mvn urls.
+     * N.B. version is required in mvn urls.
+     *
+     * @param name PAX URL mvn format: mvn-uri := 'mvn:' [ repository-url '!' ] group-id '/' artifact-id [ '/' [version] [ '/' [type] [ '/' classifier ] ] ] ]
+     * @return aether coordinate format: <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>
+     */
     static String mvnToAether(String name) {
         Matcher m = mvnPattern.matcher(name);
         if (!m.matches()) {
@@ -75,8 +83,16 @@ public class MvnUrlUtil {
         return part != null && !part.isEmpty();
     }
 
+    /**
+     * Convert Aether coordinate format to PAX mvn format.
+     * N.B. we do not handle repository-url in mvn urls.
+     * N.B. version is required in mvn urls.
+     *
+     * @param name aether coordinate format: <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>
+     * @return PAX URL mvn format: mvn-uri := 'mvn:' [ repository-url '!' ] group-id '/' artifact-id [ '/' [version] [ '/' [type] [ '/' classifier ] ] ] ]
+     */
     static String aetherToMvn(String name) {
-        Matcher m = aetherPatterh.matcher(name);
+        Matcher m = aetherPattern.matcher(name);
         if (!m.matches()) {
             return name;
         }
@@ -101,16 +117,10 @@ public class MvnUrlUtil {
     }
 
     /**
-     * Similar to a Main class method
-     * Returns a path for an srtifact.
-     * Input: path (no ':') returns path
-     * Input: mvn:<groupId>/<artifactId>/<version>/<type>/<classifier> converts to default repo location path
-     * Input:  <groupId>:<artifactId>:<type>:<classifier>:<version>:<type>:<classifier> converts to default repo location path
-     * type and classifier are optional.
-     *
+     * Convert a PAX URL mvn format into a filesystem path.
      *
-     * @param name input artifact info
-     * @return path as supplied or a default maven repo path
+     * @param name PAX URL mvn format (mvn:<groupId>/<artifactId>/<version>/<type>/<classifier>)
+     * @return a filesystem path
      */
     static String pathFromMaven(String name) {
         if (name.indexOf(':') == -1) {
@@ -120,16 +130,34 @@ public class MvnUrlUtil {
         return pathFromAether(name);
     }
 
+    /**
+     * Convert a Aether coordinate format into a filesystem path.
+     *
+     * @param name the Aether coordinate format (<groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>)
+     * @return the filesystem path
+     */
     static String pathFromAether(String name) {
         DefaultArtifact artifact = new DefaultArtifact(name);
         Artifact mavenArtifact = RepositoryUtils.toArtifact(artifact);
         return layout.pathOf(mavenArtifact);
     }
 
+    /**
+     * Convert a Maven <code>Artifact</code> into a PAX URL mvn format.
+     *
+     * @param artifact the Maven <code>Artifact</code>.
+     * @return the corresponding PAX URL mvn format (mvn:<groupId>/<artifactId>/<version>/<type>/<classifier>)
+     */
     static String artifactToMvn(Artifact artifact) {
-        return  artifactToMvn(RepositoryUtils.toArtifact(artifact));
+        return artifactToMvn(RepositoryUtils.toArtifact(artifact));
     }
 
+    /**
+     * Convert an Aether <code>org.sonatype.aether.artifact.Artifact</code> into a PAX URL mvn format.
+     *
+     * @param artifact the Aether <code>org.sonatype.aether.artifact.Artifact</code>.
+     * @return the corresponding PAX URL mvn format (mvn:<groupId>/<artifactId>/<version>/<type>/<classifier>)
+     */
     static String artifactToMvn(org.sonatype.aether.artifact.Artifact artifact) {
         String bundleName;
         if (artifact.getExtension().equals("jar") && isEmpty(artifact.getClassifier())) {
@@ -148,4 +176,38 @@ public class MvnUrlUtil {
         return classifier == null || classifier.length() == 0;
     }
 
+    /**
+     * Generate the maven-metadata-local.xml for the given Maven <code>Artifact</code>.
+     *
+     * @param artifact the Maven <code>Artifact</code>.
+     * @param target   the target maven-metadata-local.xml file to generate.
+     * @throws IOException if the maven-metadata-local.xml can't be generated.
+     */
+    static void generateMavenMetadata(Artifact artifact, File target) throws IOException {
+        target.getParentFile().mkdirs();
+        Metadata metadata = new Metadata();
+        metadata.setGroupId(artifact.getGroupId());
+        metadata.setArtifactId(artifact.getArtifactId());
+        metadata.setVersion(artifact.getVersion());
+        metadata.setModelVersion("1.1.0");
+
+        Versioning versioning = new Versioning();
+        versioning.setLastUpdatedTimestamp(new Date(System.currentTimeMillis()));
+        Snapshot snapshot = new Snapshot();
+        snapshot.setLocalCopy(true);
+        versioning.setSnapshot(snapshot);
+        SnapshotVersion snapshotVersion = new SnapshotVersion();
+        snapshotVersion.setClassifier(artifact.getClassifier());
+        snapshotVersion.setVersion(artifact.getVersion());
+        snapshotVersion.setExtension(artifact.getType());
+        snapshotVersion.setUpdated(versioning.getLastUpdated());
+        versioning.addSnapshotVersion(snapshotVersion);
+
+        metadata.setVersioning(versioning);
+
+        MetadataXpp3Writer metadataWriter = new MetadataXpp3Writer();
+        Writer writer = new FileWriter(target);
+        metadataWriter.write(writer, metadata);
+    }
+
 }

Copied: karaf/trunk/tooling/karaf-maven-plugin/src/test/java/org/apache/karaf/tooling/features/MavenUtilTest.java (from r1243208, karaf/trunk/tooling/karaf-maven-plugin/src/test/java/org/apache/karaf/tooling/features/MvnUrlUtilTest.java)
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/test/java/org/apache/karaf/tooling/features/MavenUtilTest.java?p2=karaf/trunk/tooling/karaf-maven-plugin/src/test/java/org/apache/karaf/tooling/features/MavenUtilTest.java&p1=karaf/trunk/tooling/karaf-maven-plugin/src/test/java/org/apache/karaf/tooling/features/MvnUrlUtilTest.java&r1=1243208&r2=1243427&rev=1243427&view=diff
==============================================================================
--- karaf/trunk/tooling/karaf-maven-plugin/src/test/java/org/apache/karaf/tooling/features/MvnUrlUtilTest.java (original)
+++ karaf/trunk/tooling/karaf-maven-plugin/src/test/java/org/apache/karaf/tooling/features/MavenUtilTest.java Mon Feb 13 08:11:08 2012
@@ -20,21 +20,20 @@
 
 package org.apache.karaf.tooling.features;
 
-import org.junit.Assert;
 import org.junit.Test;
 import org.sonatype.aether.util.artifact.DefaultArtifact;
 
-import static org.apache.karaf.tooling.features.MvnUrlUtil.aetherToMvn;
-import static org.apache.karaf.tooling.features.MvnUrlUtil.artifactToMvn;
-import static org.apache.karaf.tooling.features.MvnUrlUtil.mvnToAether;
-import static org.apache.karaf.tooling.features.MvnUrlUtil.pathFromAether;
-import static org.apache.karaf.tooling.features.MvnUrlUtil.pathFromMaven;
+import static org.apache.karaf.tooling.features.MavenUtil.aetherToMvn;
+import static org.apache.karaf.tooling.features.MavenUtil.artifactToMvn;
+import static org.apache.karaf.tooling.features.MavenUtil.mvnToAether;
+import static org.apache.karaf.tooling.features.MavenUtil.pathFromAether;
+import static org.apache.karaf.tooling.features.MavenUtil.pathFromMaven;
 import static org.junit.Assert.assertEquals;
 
 /**
  * @version $Rev:$ $Date:$
  */
-public class MvnUrlUtilTest {
+public class MavenUtilTest {
 
     @Test
     public void testMvnToAether() throws Exception {