You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ff...@apache.org on 2015/01/08 08:29:36 UTC
karaf git commit: [KARAF-3433]when OBR resolver to resolve the
bundles in a given feature,
it should also take the dependency feature bundles into account
Repository: karaf
Updated Branches:
refs/heads/karaf-2.x d955e1c32 -> 910fedee7
[KARAF-3433]when OBR resolver to resolve the bundles in a given feature, it should also take the dependency feature bundles into account
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/910fedee
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/910fedee
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/910fedee
Branch: refs/heads/karaf-2.x
Commit: 910fedee74832a15fca8a514c851ad3d979d1b0f
Parents: d955e1c
Author: Freeman Fang <fr...@gmail.com>
Authored: Thu Jan 8 15:29:15 2015 +0800
Committer: Freeman Fang <fr...@gmail.com>
Committed: Thu Jan 8 15:29:15 2015 +0800
----------------------------------------------------------------------
.../features/obr/internal/ObrResolver.java | 32 ++++++++++++++++++--
.../OSGI-INF/blueprint/features-obr.xml | 3 ++
2 files changed, 33 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/910fedee/features/obr/src/main/java/org/apache/karaf/features/obr/internal/ObrResolver.java
----------------------------------------------------------------------
diff --git a/features/obr/src/main/java/org/apache/karaf/features/obr/internal/ObrResolver.java b/features/obr/src/main/java/org/apache/karaf/features/obr/internal/ObrResolver.java
index 2fd1eeb..1e04c6b 100644
--- a/features/obr/src/main/java/org/apache/karaf/features/obr/internal/ObrResolver.java
+++ b/features/obr/src/main/java/org/apache/karaf/features/obr/internal/ObrResolver.java
@@ -34,11 +34,13 @@ import org.apache.felix.bundlerepository.Requirement;
import org.apache.felix.bundlerepository.Resource;
import org.apache.karaf.features.BundleInfo;
import org.apache.karaf.features.Feature;
+import org.apache.karaf.features.FeaturesService;
import org.apache.karaf.features.Resolver;
public class ObrResolver implements Resolver {
private RepositoryAdmin repositoryAdmin;
+ private FeaturesService featuresService;
private boolean resolveOptionalImports;
private boolean startByDefault;
private int startLevel;
@@ -78,8 +80,8 @@ public class ObrResolver implements Resolver {
List<Resource> ress = new ArrayList<Resource>();
List<Resource> featureDeploy = new ArrayList<Resource>();
Map<Object, BundleInfo> infos = new HashMap<Object, BundleInfo>();
- for (BundleInfo bundleInfo : feature.getBundles()) {
- URL url = null;
+ for (BundleInfo bundleInfo : getAllBundles(feature)) {
+ URL url = null;
try {
url = new URL(bundleInfo.getLocation());
} catch (MalformedURLException e) {
@@ -155,6 +157,7 @@ public class ObrResolver implements Resolver {
}
bundles.add(info);
}
+
return bundles;
}
@@ -166,6 +169,23 @@ public class ObrResolver implements Resolver {
}
}
+ /**
+ * get all bundles from a given feature, including the bundles from dependency
+ * features
+ *
+ * @param feature
+ */
+ public List<BundleInfo> getAllBundles(Feature feature) throws Exception {
+ List<BundleInfo> bundles = new ArrayList<BundleInfo>();
+ bundles.addAll(feature.getBundles());
+ for (Feature dependency : feature.getDependencies()) {
+ dependency = getFeaturesService().getFeature(dependency.getName(), dependency.getVersion());
+ bundles.addAll(getAllBundles(dependency));
+ }
+ return bundles;
+
+ }
+
protected void printUnderline(PrintWriter out, int length) {
for (int i = 0; i < length; i++) {
out.print('-');
@@ -195,4 +215,12 @@ public class ObrResolver implements Resolver {
}
return repositoryAdmin.getHelper().requirement(name, filter);
}
+
+ public FeaturesService getFeaturesService() {
+ return featuresService;
+ }
+
+ public void setFeaturesService(FeaturesService featuresService) {
+ this.featuresService = featuresService;
+ }
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/910fedee/features/obr/src/main/resources/OSGI-INF/blueprint/features-obr.xml
----------------------------------------------------------------------
diff --git a/features/obr/src/main/resources/OSGI-INF/blueprint/features-obr.xml b/features/obr/src/main/resources/OSGI-INF/blueprint/features-obr.xml
index 590258f..d709be2 100644
--- a/features/obr/src/main/resources/OSGI-INF/blueprint/features-obr.xml
+++ b/features/obr/src/main/resources/OSGI-INF/blueprint/features-obr.xml
@@ -34,12 +34,15 @@
<bean id="obrResolver" class="org.apache.karaf.features.obr.internal.ObrResolver">
<property name="repositoryAdmin" ref="repositoryAdmin" />
+ <property name="featuresService" ref="featuresService" />
<property name="resolveOptionalImports" value="$[resolveOptionalImports]" />
<property name="startByDefault" value="$[startByDefault]" />
<property name="startLevel" value="$[startLevel]" />
</bean>
<reference id="repositoryAdmin" interface="org.apache.felix.bundlerepository.RepositoryAdmin" />
+
+ <reference id="featuresService" interface="org.apache.karaf.features.FeaturesService" />
<service ref="obrResolver" interface="org.apache.karaf.features.Resolver">
<service-properties>