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>();