This is an automated email from the ASF dual-hosted git repository. ggrzybek pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/karaf.git
The following commit(s) were added to refs/heads/master by this push: new 0cde0aa [KARAF-5591] Do not consider blacklisted feature dependencies and conditionals 0cde0aa is described below commit 0cde0aabdce7474ed4a69f0013f89296b6dd5247 Author: Grzegorz Grzybek <ggrzy...@redhat.com> AuthorDate: Thu Feb 1 16:50:31 2018 +0100 [KARAF-5591] Do not consider blacklisted feature dependencies and conditionals --- .../java/org/apache/karaf/features/Conditional.java | 2 +- .../main/java/org/apache/karaf/features/Dependency.java | 2 +- .../karaf/features/internal/model/Conditional.java | 15 ++++++++++++++- .../karaf/features/internal/model/Dependency.java | 15 +++++++++++++-- .../karaf/features/internal/region/Subsystem.java | 17 ++++++++++++++--- .../internal/service/FeaturesProcessorImpl.java | 14 ++++++++++++++ .../java/org/apache/karaf/profile/assembly/Builder.java | 6 ++++++ 7 files changed, 63 insertions(+), 8 deletions(-) diff --git a/features/core/src/main/java/org/apache/karaf/features/Conditional.java b/features/core/src/main/java/org/apache/karaf/features/Conditional.java index 26463f2..b4e4362 100644 --- a/features/core/src/main/java/org/apache/karaf/features/Conditional.java +++ b/features/core/src/main/java/org/apache/karaf/features/Conditional.java @@ -18,7 +18,7 @@ package org.apache.karaf.features; import java.util.List; -public interface Conditional { +public interface Conditional extends Blacklisting { List<String> getCondition(); diff --git a/features/core/src/main/java/org/apache/karaf/features/Dependency.java b/features/core/src/main/java/org/apache/karaf/features/Dependency.java index 3f8fda8..aea3be8 100644 --- a/features/core/src/main/java/org/apache/karaf/features/Dependency.java +++ b/features/core/src/main/java/org/apache/karaf/features/Dependency.java @@ -17,7 +17,7 @@ package org.apache.karaf.features; -public interface Dependency { +public interface Dependency extends Blacklisting { String getName(); diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/model/Conditional.java b/features/core/src/main/java/org/apache/karaf/features/internal/model/Conditional.java index d9fc5ce..8bbde76 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/model/Conditional.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/model/Conditional.java @@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; +import org.apache.karaf.features.Blacklisting; import org.apache.karaf.features.Feature; @XmlAccessorType(XmlAccessType.FIELD) @@ -45,6 +46,9 @@ public class Conditional extends Content implements org.apache.karaf.features.Co @XmlTransient protected Feature owner; + @XmlTransient + private boolean blacklisted; + public Feature getOwner() { return owner; } @@ -76,7 +80,16 @@ public class Conditional extends Content implements org.apache.karaf.features.Co return f; } - private String getConditionId() { + @Override + public boolean isBlacklisted() { + return blacklisted; + } + + public void setBlacklisted(boolean blacklisted) { + this.blacklisted = blacklisted; + } + + public String getConditionId() { StringBuffer sb = new StringBuffer(); for (String cond : getCondition()) { if (sb.length() > 0) { diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/model/Dependency.java b/features/core/src/main/java/org/apache/karaf/features/internal/model/Dependency.java index f004204..cfc3c56 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/model/Dependency.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/model/Dependency.java @@ -19,10 +19,10 @@ package org.apache.karaf.features.internal.model; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.XmlValue; - /** * <p>Dependency of feature.</p> * <p>Java class for dependency complex type.</p> @@ -50,6 +50,9 @@ public class Dependency implements org.apache.karaf.features.Dependency { @XmlAttribute protected Boolean dependency; + @XmlTransient + private boolean blacklisted; + public Dependency() { // Nothing to do } @@ -131,6 +134,15 @@ public class Dependency implements org.apache.karaf.features.Dependency { this.dependency = dependency; } + @Override + public boolean isBlacklisted() { + return blacklisted; + } + + public void setBlacklisted(boolean blacklisted) { + this.blacklisted = blacklisted; + } + public String toString() { return getName() + Feature.VERSION_SEPARATOR + getVersion(); } @@ -146,7 +158,6 @@ public class Dependency implements org.apache.karaf.features.Dependency { if (dependency != null ? !dependency.equals(that.dependency) : that.dependency != null) return false; if (name != null ? !name.equals(that.name) : that.name != null) return false; return version != null ? version.equals(that.version) : that.version == null; - } @Override diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/region/Subsystem.java b/features/core/src/main/java/org/apache/karaf/features/internal/region/Subsystem.java index d1f6857..897c8f9 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/region/Subsystem.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/region/Subsystem.java @@ -340,6 +340,9 @@ public class Subsystem extends ResourceImpl { // each dependant feature becomes a non-mandatory (why?) requirement of first parent that // accepts dependencies for (Dependency dep : feature.getDependencies()) { + if (dep.isBlacklisted()) { + continue; + } Subsystem ss = this; while (!ss.isAcceptDependencies()) { ss = ss.getParent(); @@ -348,6 +351,9 @@ public class Subsystem extends ResourceImpl { } // each conditional feature becomes a child subsystem of this feature's subsystem for (Conditional cond : feature.getConditional()) { + if (cond.isBlacklisted()) { + continue; + } Feature fcond = cond.asFeature(); String ssName = this.name + "#" + (fcond.hasVersion() ? fcond.getName() + "-" + fcond.getVersion() : fcond.getName()); Subsystem fs = getChild(ssName); @@ -451,9 +457,11 @@ public class Subsystem extends ResourceImpl { final Downloader downloader = manager.createDownloader(); if (feature != null) { for (Conditional cond : feature.getConditional()) { - for (final BundleInfo bi : cond.getBundles()) { - // bundles from conditional features will be added as non-mandatory requirements - infos.put(bi, cond); + if (!cond.isBlacklisted()) { + for (final BundleInfo bi : cond.getBundles()) { + // bundles from conditional features will be added as non-mandatory requirements + infos.put(bi, cond); + } } } for (BundleInfo bi : feature.getBundles()) { @@ -537,6 +545,9 @@ public class Subsystem extends ResourceImpl { // Add conditionals Map<Conditional, Resource> resConds = new HashMap<>(); for (Conditional cond : feature.getConditional()) { + if (cond.isBlacklisted()) { + continue; + } FeatureResource resCond = FeatureResource.build(feature, cond, featureResolutionRange, bundles); // feature's subsystem will optionally require conditional feature resource addIdentityRequirement(this, resCond, false); diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesProcessorImpl.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesProcessorImpl.java index bf6033b..518401e 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesProcessorImpl.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesProcessorImpl.java @@ -32,6 +32,7 @@ import org.apache.karaf.features.FeaturePattern; import org.apache.karaf.features.LocationPattern; import org.apache.karaf.features.internal.model.Bundle; import org.apache.karaf.features.internal.model.Conditional; +import org.apache.karaf.features.internal.model.Dependency; import org.apache.karaf.features.internal.model.Feature; import org.apache.karaf.features.internal.model.Features; import org.apache.karaf.features.internal.model.processing.BundleReplacements; @@ -152,6 +153,19 @@ public class FeaturesProcessorImpl implements FeaturesProcessor { boolean allBlacklisted = features.isBlacklisted(); feature.setBlacklisted(allBlacklisted || isFeatureBlacklisted(feature)); + // blacklisting feature's dependencies and conditionals + for (Conditional conditional : feature.getConditional()) { + boolean isConditionBlacklisted = false; + for (String cond : conditional.getCondition()) { + isConditionBlacklisted |= isFeatureBlacklisted(new Feature(cond)); + } + conditional.setBlacklisted(feature.isBlacklisted() || isConditionBlacklisted); + } + + for (Dependency dep : feature.getFeature()) { + dep.setBlacklisted(feature.isBlacklisted() || isFeatureBlacklisted(new Feature(dep.getName(), dep.getVersion()))); + } + // override dependency flag (null - don't touch, false - change to false, true - change to true) Boolean dependency = null; for (OverrideBundleDependency.OverrideFeatureDependency overrideFeatureDependency : getInstructions().getOverrideBundleDependency().getFeatures()) { diff --git a/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java b/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java index c9a3982..5b9a6c4 100644 --- a/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java +++ b/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java @@ -1537,6 +1537,9 @@ public class Builder { installer.installArtifact(configFile.getLocation().trim()); } for (Conditional cond : feature.getConditional()) { + if (cond.isBlacklisted()) { + LOGGER.info(" Conditionial " + cond.getConditionId() + " is blacklisted, ignoring"); + } for (Bundle bundle : cond.getBundle()) { if (!ignoreDependencyFlag || !bundle.isDependency()) { installer.installArtifact(bundle); @@ -1614,6 +1617,9 @@ public class Builder { } } for (Conditional cond : feature.getConditional()) { + if (cond.isBlacklisted()) { + LOGGER.info(" Conditionial " + cond.getConditionId() + " is blacklisted, ignoring"); + } for (Bundle bundle : cond.getBundle()) { if (!ignoreDependencyFlag || !bundle.isDependency()) { bundleInfos.add(bundle); -- To stop receiving notification emails like this one, please contact ggrzy...@apache.org.