Repository: karaf
Updated Branches:
  refs/heads/master 1ff5aa1aa -> 2a4e50e54


[KARAF-4824] Add Option to bundle:update which doesn't rewrite MANIFEST file

Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/856e734a
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/856e734a
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/856e734a

Branch: refs/heads/master
Commit: 856e734aa3d5c37a756ed82ef713521b9b45a8c1
Parents: 1ff5aa1
Author: Guillaume Nodet <[email protected]>
Authored: Tue Dec 6 10:16:31 2016 +0100
Committer: Guillaume Nodet <[email protected]>
Committed: Tue Dec 6 10:16:31 2016 +0100

----------------------------------------------------------------------
 .../org/apache/karaf/bundle/command/Update.java     | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/856e734a/bundle/core/src/main/java/org/apache/karaf/bundle/command/Update.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/command/Update.java 
b/bundle/core/src/main/java/org/apache/karaf/bundle/command/Update.java
index 4470f9f..88ea368 100644
--- a/bundle/core/src/main/java/org/apache/karaf/bundle/command/Update.java
+++ b/bundle/core/src/main/java/org/apache/karaf/bundle/command/Update.java
@@ -25,6 +25,7 @@ import java.net.URL;
 
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Option;
 import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.apache.karaf.util.bundles.BundleUtils;
 import org.osgi.framework.Bundle;
@@ -38,6 +39,9 @@ public class Update extends BundleCommand {
     @Argument(index = 1, name = "location", description = "The bundles update 
location", required = false, multiValued = false)
     URI location;
 
+    @Option(name = "--raw", description = "Do not update the bundles's 
Bundle-UpdateLocation manifest header")
+    boolean raw;
+
     protected Object doExecute(Bundle bundle) throws Exception {
         if (location != null) {
             update(bundle, location.toURL());
@@ -54,11 +58,15 @@ public class Update extends BundleCommand {
 
     private void update(Bundle bundle, URL location) throws IOException, 
BundleException {
         try (InputStream is = location.openStream()) {
-            File file = BundleUtils.fixBundleWithUpdateLocation(is, 
location.toString());
-            try (FileInputStream fis = new FileInputStream(file)) {
-                bundle.update(fis);
+            if (raw) {
+                bundle.update(is);
+            } else {
+                File file = BundleUtils.fixBundleWithUpdateLocation(is, 
location.toString());
+                try (FileInputStream fis = new FileInputStream(file)) {
+                    bundle.update(fis);
+                }
+                file.delete();
             }
-            file.delete();
         }
     }
 

Reply via email to