You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2013/09/24 17:08:39 UTC

svn commit: r1525919 - in /karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features: FeatureMetaDataExporter.java model/BundleRef.java

Author: cschneider
Date: Tue Sep 24 15:08:38 2013
New Revision: 1525919

URL: http://svn.apache.org/r1525919
Log:
KARAF-2484 Add some more meta data and fix root element name

Modified:
    karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/FeatureMetaDataExporter.java
    karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/model/BundleRef.java

Modified: karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/FeatureMetaDataExporter.java
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/FeatureMetaDataExporter.java?rev=1525919&r1=1525918&r2=1525919&view=diff
==============================================================================
--- karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/FeatureMetaDataExporter.java (original)
+++ karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/FeatureMetaDataExporter.java Tue Sep 24 15:08:38 2013
@@ -27,6 +27,7 @@ import javax.xml.stream.events.StartDocu
 
 import org.apache.karaf.tooling.features.model.BundleRef;
 import org.apache.karaf.tooling.features.model.Feature;
+import org.apache.maven.artifact.Artifact;
 
 /**
  * Export feature meta data as xml into a stream
@@ -43,7 +44,7 @@ public class FeatureMetaDataExporter {
         StartDocument startDocument = factory.createStartDocument();
         writer.add(startDocument);
         newLine();
-        writer.add(factory.createStartElement("", "", "bundles"));
+        writer.add(factory.createStartElement("", "", "features"));
         newLine();
     }
 
@@ -62,8 +63,13 @@ public class FeatureMetaDataExporter {
             if (bundle.getArtifact()!=null) {
                 String name = MavenUtil.getFileName(bundle.getArtifact());
                 writer.add(factory.createAttribute("name", name));
+                Artifact artifact = bundle.getArtifact();
+                bundle.readManifest();
+                writer.add(factory.createAttribute("Bundle-SymbolicName", bundle.getBundleSymbolicName()));
+                writer.add(factory.createAttribute("Bundle-Version", bundle.getBundleVersion()));
+                writer.add(factory.createAttribute("version", artifact.getVersion()));
             }
-            
+
             writer.add(factory.createCharacters(bundle.getUrl()));
             endElement("bundle");
         }
@@ -80,7 +86,7 @@ public class FeatureMetaDataExporter {
     }
 
     public void close() throws XMLStreamException {
-        endElement("bundles");
+        endElement("features");
         writer.add(factory.createEndDocument());
         writer.close();
     }

Modified: karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/model/BundleRef.java
URL: http://svn.apache.org/viewvc/karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/model/BundleRef.java?rev=1525919&r1=1525918&r2=1525919&view=diff
==============================================================================
--- karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/model/BundleRef.java (original)
+++ karaf/trunk/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/model/BundleRef.java Tue Sep 24 15:08:38 2013
@@ -17,12 +17,19 @@
  */
 package org.apache.karaf.tooling.features.model;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.jar.JarInputStream;
+import java.util.jar.Manifest;
+
 import org.apache.maven.artifact.Artifact;
 
 public class BundleRef {
     String url;
     Integer startLevel;
     Artifact artifact;
+    String bundleSymbolicName;
+    String bundleVersion;
 
     public BundleRef(String url, Integer startLevel) {
         super();
@@ -45,5 +52,27 @@ public class BundleRef {
     public void setArtifact(Artifact artifact) {
         this.artifact = artifact;
     }
+    
+    public void readManifest() {
+        JarInputStream bundleJar = null;
+        try {
+            File file = artifact.getFile();
+            bundleJar = new JarInputStream(new FileInputStream(file));
+            Manifest manifest = bundleJar.getManifest();
+            bundleSymbolicName = manifest.getMainAttributes().getValue("Bundle-SymbolicName");
+            bundleVersion = manifest.getMainAttributes().getValue("Bundle-Version");
+            bundleJar.close();
+        } catch (Exception e) {
+            // Ignore errors in manifest
+        }
+    }
+
+    public String getBundleSymbolicName() {
+        return bundleSymbolicName;
+    }
+
+    public String getBundleVersion() {
+        return bundleVersion;
+    }
 
 }