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 {