Author: gnodet
Date: Fri Jun 11 07:21:04 2010
New Revision: 953589
URL: http://svn.apache.org/viewvc?rev=953589&view=rev
Log:
FELIX-2382: do not refresh host bundles that have just been installed
Modified:
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
Modified:
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
URL:
http://svn.apache.org/viewvc/felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java?rev=953589&r1=953588&r2=953589&view=diff
==============================================================================
---
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
(original)
+++
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
Fri Jun 11 07:21:04 2010
@@ -393,22 +393,26 @@ public class FeaturesServiceImpl impleme
protected Set<Bundle> findBundlesWithFramentsToRefresh(InstallationState
state) {
Set<Bundle> bundles = new HashSet<Bundle>();
- for (Bundle b : state.installed) {
- String hostHeader = (String)
b.getHeaders().get(Constants.FRAGMENT_HOST);
- if (hostHeader != null) {
- Clause[] clauses = Parser.parseHeader(hostHeader);
- if (clauses != null && clauses.length > 0) {
- Clause path = clauses[0];
- for (Bundle hostBundle : state.bundles) {
- if
(hostBundle.getSymbolicName().equals(path.getName())) {
- String ver =
path.getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE);
- if (ver != null) {
- VersionRange v =
VersionRange.parseVersionRange(ver);
- if (v.contains(hostBundle.getVersion())) {
+ Set<Bundle> oldBundles = new HashSet<Bundle>(state.bundles);
+ oldBundles.removeAll(state.installed);
+ if (!oldBundles.isEmpty()) {
+ for (Bundle b : state.installed) {
+ String hostHeader = (String)
b.getHeaders().get(Constants.FRAGMENT_HOST);
+ if (hostHeader != null) {
+ Clause[] clauses = Parser.parseHeader(hostHeader);
+ if (clauses != null && clauses.length > 0) {
+ Clause path = clauses[0];
+ for (Bundle hostBundle : oldBundles) {
+ if
(hostBundle.getSymbolicName().equals(path.getName())) {
+ String ver =
path.getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE);
+ if (ver != null) {
+ VersionRange v =
VersionRange.parseVersionRange(ver);
+ if (v.contains(hostBundle.getVersion())) {
+ bundles.add(hostBundle);
+ }
+ } else {
bundles.add(hostBundle);
}
- } else {
- bundles.add(hostBundle);
}
}
}