Author: cschneider
Date: Fri Jun 15 15:51:05 2012
New Revision: 1350666
URL: http://svn.apache.org/viewvc?rev=1350666&view=rev
Log:
KARAF-1552 Check if kar features should be installed
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=1350666&r1=1350665&r2=1350666&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
Fri Jun 15 15:51:05 2012
@@ -34,6 +34,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.jar.Attributes;
import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
@@ -113,6 +114,7 @@ public class KarServiceImpl implements K
ZipFile zipFile = new ZipFile(karFile);
List<URI> featuresRepositoriesInKar = new ArrayList<URI>();
+ boolean shouldInstallFeatures = true;
@SuppressWarnings("unchecked")
Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>)
zipFile.entries();
@@ -128,6 +130,17 @@ public class KarServiceImpl implements K
featuresRepositoriesInKar.add(extract.toURI());
}
}
+
+ if ("meta-inf/manifest.mf".equals(entry.getName().toLowerCase())) {
+ InputStream is = zipFile.getInputStream(entry);
+ Manifest manifest = new Manifest(is);
+ Attributes attr = manifest.getMainAttributes();
+ String featureStartSt = (String)attr.get(new
Attributes.Name(MANIFEST_ATTR_KARAF_FEATURE_START));
+ if ("true".equals(featureStartSt)) {
+ shouldInstallFeatures = false;
+ }
+ is.close();
+ }
if (entry.getName().startsWith("resource")) {
String resourceEntryName =
entry.getName().substring("resource/".length());
@@ -135,7 +148,9 @@ public class KarServiceImpl implements K
}
}
- installFeatures(featuresRepositoriesInKar);
+ if (shouldInstallFeatures) {
+ installFeatures(featuresRepositoriesInKar);
+ }
zipFile.close();
}