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:40:06 UTC

svn commit: r1243433 - /karaf/trunk/kar/core/src/main/java/org/apache/karaf/kar/internal/KarServiceImpl.java

Author: jbonofre
Date: Mon Feb 13 08:40:06 2012
New Revision: 1243433

URL: http://svn.apache.org/viewvc?rev=1243433&view=rev
Log:
[KARAF-460] Add the clean support in the Kar Service

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

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=1243433&r1=1243432&r2=1243433&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 Feb 13 08:40:06 2012
@@ -122,20 +122,44 @@ public class KarServiceImpl implements K
     }
     
     public void uninstall(String karName) throws Exception {
+        uninstall(karName, false);
+    }
+    
+    public void uninstall(String karName, boolean clean) throws Exception {
         File karStorage = new File(storage);
         File karFile = new File(karStorage, karName);
         
         if (!karFile.exists()) {
             throw new IllegalArgumentException("The KAR " + karName + " is not installed");
         }
-
+        
+        if (clean) {
+            LOGGER.debug("Looking for KAR entries to purge the local repository");
+            ZipFile zipFile = new ZipFile(karFile);
+            Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) zipFile.entries();
+            while (entries.hasMoreElements()) {
+                ZipEntry entry = entries.nextElement();
+                String repoEntryName = getRepoEntryName(entry);
+                if (repoEntryName != null) {
+                    File toDelete = new File(base + File.separator + repoEntryName);
+                    if (toDelete.exists()) {
+                        toDelete.delete();
+                    }
+                }
+                if (entry.getName().startsWith("resource")) {
+                    String resourceEntryName = entry.getName().substring("resource/".length());
+                    File toDelete = new File(base + File.separator + resourceEntryName);
+                    if (toDelete.exists()) {
+                        toDelete.delete();
+                    }
+                }
+            }
+            zipFile.close();
+        }
+        
         karFile.delete();
     }
     
-    public void uninstall(String karName, boolean clean) throws Exception {
-        // TODO
-    }
-    
     public List<String> list() throws Exception {
         File karStorage = new File(storage);
         List<String> kars = new ArrayList<String>();