Author: jbonofre
Date: Mon Aug  6 16:54:19 2012
New Revision: 1369880

URL: http://svn.apache.org/viewvc?rev=1369880&view=rev
Log:
[KARAF-1699] Add create operation to the KarMBean

Modified:
    karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/KarsMBean.java
    
karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/internal/KarServiceImpl.java
    karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/internal/Kars.java

Modified: karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/KarsMBean.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/KarsMBean.java?rev=1369880&r1=1369879&r2=1369880&view=diff
==============================================================================
--- karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/KarsMBean.java 
(original)
+++ karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/KarsMBean.java Mon 
Aug  6 16:54:19 2012
@@ -29,6 +29,15 @@ public interface KarsMBean {
     List<String> getKars() throws Exception;
 
     /**
+     * Create a kar file for a list of feature repos
+     *
+     * @param repoName the name of features repository
+     * @param features the features to include in the kar
+     * @throws Exception in case of creation failure
+     */
+    void create(String repoName, List<String> features) throws Exception;
+
+    /**
      * Install a KAR file from the given URL.
      *
      * @param url the JAR URL.

Modified: 
karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/internal/KarServiceImpl.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/internal/KarServiceImpl.java?rev=1369880&r1=1369879&r2=1369880&view=diff
==============================================================================
--- 
karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/internal/KarServiceImpl.java
 (original)
+++ 
karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/internal/KarServiceImpl.java
 Mon Aug  6 16:54:19 2012
@@ -236,7 +236,7 @@ public class KarServiceImpl implements K
             jos = new JarOutputStream(new BufferedOutputStream(fos, 100000), 
manifest);
             
             Map<URI, Integer> locationMap = new HashMap<URI, Integer>();
-            copyResourceToJar(jos, repo.getURI(), locationMap, console);
+            copyResourceToJar(jos, repo.getURI(), locationMap);
         
             Map<String, Feature> featureMap = new HashMap<String, Feature>();
             for (Feature feature : repo.getFeatures()) {
@@ -246,11 +246,13 @@ public class KarServiceImpl implements K
             Set<Feature> featuresToCopy = getFeatures(featureMap, features, 1);
             
             for (Feature feature : featuresToCopy) {
-                console.println("Adding feature " + feature.getName());
-                copyFeatureToJar(jos, feature, locationMap, console);
+                if (console != null)
+                    console.println("Adding feature " + feature.getName());
+                copyFeatureToJar(jos, feature, locationMap);
             }
-            
-            console.println("Kar file created : " + karPath);
+
+            if (console != null)
+                console.println("Kar file created : " + karPath);
         } catch (Exception e) {
             throw new RuntimeException("Error creating kar: " + 
e.getMessage(), e);
         } finally {
@@ -307,19 +309,19 @@ public class KarServiceImpl implements K
         }
     }
 
-    private void copyFeatureToJar(JarOutputStream jos, Feature feature, 
Map<URI, Integer> locationMap, PrintStream console)
+    private void copyFeatureToJar(JarOutputStream jos, Feature feature, 
Map<URI, Integer> locationMap)
         throws URISyntaxException {
         for (BundleInfo bundleInfo : feature.getBundles()) {
             URI location = new URI(bundleInfo.getLocation());
-            copyResourceToJar(jos, location, locationMap, console);
+            copyResourceToJar(jos, location, locationMap);
         }
         for (ConfigFileInfo configFileInfo : feature.getConfigurationFiles()) {
             URI location = new URI(configFileInfo.getLocation());
-            copyResourceToJar(jos, location, locationMap, console);
+            copyResourceToJar(jos, location, locationMap);
         }
     }
 
-    private void copyResourceToJar(JarOutputStream jos, URI location, Map<URI, 
Integer> locationMap, PrintStream console) {
+    private void copyResourceToJar(JarOutputStream jos, URI location, Map<URI, 
Integer> locationMap) {
         if (locationMap.containsKey(location)) {
             return;
         }

Modified: 
karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/internal/Kars.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/internal/Kars.java?rev=1369880&r1=1369879&r2=1369880&view=diff
==============================================================================
--- karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/internal/Kars.java 
(original)
+++ karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/internal/Kars.java 
Mon Aug  6 16:54:19 2012
@@ -35,6 +35,10 @@ public class Kars extends StandardMBean 
     public List<String> getKars() throws Exception {
         return karService.list();
     }
+
+    public void create(String repoName, List<String> features) throws 
Exception {
+        karService.create(repoName, features, null);
+    }
     
     public void install(String url) throws Exception {
         karService.install(new URI(url));


Reply via email to