Author: jbonofre
Date: Sat Mar  3 10:12:26 2012
New Revision: 1296591

URL: http://svn.apache.org/viewvc?rev=1296591&view=rev
Log:
[KARAF-1247] Generate the maven-metadata-local.xml for local bundles

Modified:
    
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/InstallKarsMojo.java
    
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java

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=1296591&r1=1296590&r2=1296591&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
 Sat Mar  3 10:12:26 2012
@@ -271,6 +271,25 @@ public class InstallKarsMojo extends Moj
                         File target = new File(system.resolve(path));
                         if (!target.exists()) {
                             install(buffer, key, target);
+                            Artifact artifact = MavenUtil.mvnToArtifact(key);
+                            if (artifact.isSnapshot()) {
+                                // generate maven-metadata-local.xml for the 
artifact
+                                File metadataSource = new 
File(resolve(key).getParentFile(), "maven-metadata-local.xml");
+                                File metadataTarget = new 
File(target.getParentFile(), "maven-metadata-local.xml");
+                                metadataTarget.getParentFile().mkdirs();
+                                try {
+                                    if (!metadataSource.exists()) {
+                                        // the maven-metadata-local.xml 
doesn't exist in the local repo, generate one
+                                        
MavenUtil.generateMavenMetadata(artifact, metadataTarget);
+                                    } else {
+                                        // copy the metadata to the target
+                                        copy(buffer, metadataSource, 
metadataTarget);
+                                    }
+                                } catch (IOException ioException) {
+                                    getLog().warn(ioException);
+                                    getLog().warn("Unable to copy the 
maven-metadata-local.xml, it means that this SNAPSHOT will be overwritten by a 
remote one (if exist)");
+                                }
+                            }
                         }
                     }
                 }
@@ -296,23 +315,27 @@ public class InstallKarsMojo extends Moj
         File source = resolve(key);
         target.getParentFile().mkdirs();
         try {
-            InputStream is = new FileInputStream(source);
-            BufferedOutputStream bos = new BufferedOutputStream(new 
FileOutputStream(target));
-            int count = 0;
-            while ((count = is.read(buffer)) > 0) {
-                bos.write(buffer, 0, count);
-            }
-            bos.close();
+            copy(buffer, source, target);
         } catch (IOException e) {
             getLog().error("Could not copy bundle " + key, e);
         }
     }
+    
+    private void copy(byte[] buffer, File source, File target) throws 
IOException {
+        target.getParentFile().mkdirs();
+        InputStream is = new FileInputStream(source);
+        BufferedOutputStream bos = new BufferedOutputStream(new 
FileOutputStream(target));
+        int count = 0;
+        while ((count = is.read(buffer)) > 0) {
+            bos.write(buffer, 0, count);
+        }
+        bos.close();      
+    }
 
     private boolean acceptScope(Artifact artifact) {
         return "compile".equals(artifact.getScope()) || 
"runtime".equals(artifact.getScope());
     }
 
-
     public File resolve(String id) {
         id = MavenUtil.mvnToAether(id);
         ArtifactRequest request = new ArtifactRequest();

Modified: 
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java?rev=1296591&r1=1296590&r2=1296591&view=diff
==============================================================================
--- 
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java
 (original)
+++ 
karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/MavenUtil.java
 Sat Mar  3 10:12:26 2012
@@ -28,6 +28,8 @@ import java.util.regex.Pattern;
 
 import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.factory.DefaultArtifactFactory;
 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
 import org.apache.maven.artifact.repository.metadata.Metadata;
 import org.apache.maven.artifact.repository.metadata.Snapshot;
@@ -175,6 +177,13 @@ public class MavenUtil {
     private static boolean isEmpty(String classifier) {
         return classifier == null || classifier.length() == 0;
     }
+    
+    static Artifact mvnToArtifact(String name) {
+        name = mvnToAether(name);
+        DefaultArtifact artifact = new DefaultArtifact(name);
+        Artifact mavenArtifact = RepositoryUtils.toArtifact(artifact);
+        return mavenArtifact;
+    }
 
     /**
      * Generate the maven-metadata-local.xml for the given Maven 
<code>Artifact</code>.


Reply via email to