import com.google.common.base.Preconditions;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Set;
import org.apache.felix.utils.version.VersionRange;
import org.apache.felix.utils.version.VersionTable;
import org.apache.karaf.features.Dependency;
*/
public class ChildAwareFeatureWrapper extends AbstractFeatureWrapper implements Feature {
private static final Logger LOG = LoggerFactory.getLogger(ChildAwareFeatureWrapper.class);
- private FeaturesService featuresService= null;
+ private FeaturesService featuresService = null;
- protected ChildAwareFeatureWrapper(Feature f) {
+ protected ChildAwareFeatureWrapper(final Feature feature) {
// Don't use without a feature service
}
- /*
- * @param f Feature to wrap
- * @param s FeaturesService to look up dependencies
+ /* Constructor.
+
+ * @param feature Feature to wrap
+ * @param featuresService FeaturesService to look up dependencies
*/
- ChildAwareFeatureWrapper(Feature f, FeaturesService s) throws Exception {
- super(s.getFeature(f.getName(), f.getVersion()));
- Preconditions.checkNotNull(s, "FeatureWrapper requires non-null FeatureService in constructor");
- this.featuresService = s;
+ ChildAwareFeatureWrapper(final Feature feature, final FeaturesService featuresService) throws Exception {
+ super(featuresService.getFeature(feature.getName(), feature.getVersion()));
+ Preconditions.checkNotNull(featuresService, "FeatureWrapper requires non-null FeatureService in constructor");
+ this.featuresService = featuresService;
}
protected FeaturesService getFeaturesService() {
* Get FeatureConfigSnapshotHolders appropriate to feed to the config subsystem
* from the underlying Feature Config files and those of its children recursively
*/
- public LinkedHashSet <? extends ChildAwareFeatureWrapper> getChildFeatures() throws Exception {
+ public Set<? extends ChildAwareFeatureWrapper> getChildFeatures() throws Exception {
List<Dependency> dependencies = feature.getDependencies();
- LinkedHashSet <ChildAwareFeatureWrapper> childFeatures = new LinkedHashSet<ChildAwareFeatureWrapper>();
- if(dependencies != null) {
- for(Dependency dependency: dependencies) {
+ Set<ChildAwareFeatureWrapper> childFeatures = new LinkedHashSet<>();
+ if (dependencies != null) {
+ for (Dependency dependency : dependencies) {
Feature fi = extractFeatureFromDependency(dependency);
- if(fi != null) {
- if(featuresService.getFeature(fi.getName(), fi.getVersion()) == null) {
- LOG.warn("Feature: {}, {} is missing from features service. Skipping", fi.getName(), fi.getVersion());
+ if (fi != null) {
+ if (featuresService.getFeature(fi.getName(), fi.getVersion()) == null) {
+ LOG.warn("Feature: {}, {} is missing from features service. Skipping", fi.getName(), fi
+ .getVersion());
} else {
- ChildAwareFeatureWrapper wrappedFeature = new ChildAwareFeatureWrapper(fi,featuresService);
+ ChildAwareFeatureWrapper wrappedFeature = new ChildAwareFeatureWrapper(fi, featuresService);
childFeatures.add(wrappedFeature);
}
}
}
@Override
- public LinkedHashSet<FeatureConfigSnapshotHolder> getFeatureConfigSnapshotHolders() throws Exception {
- LinkedHashSet <FeatureConfigSnapshotHolder> snapShotHolders = new LinkedHashSet<FeatureConfigSnapshotHolder>();
- for(ChildAwareFeatureWrapper c: getChildFeatures()) {
- for(FeatureConfigSnapshotHolder h: c.getFeatureConfigSnapshotHolders()) {
- final Optional<FeatureConfigSnapshotHolder> featureConfigSnapshotHolder = getFeatureConfigSnapshotHolder(h.getFileInfo());
- if(featureConfigSnapshotHolder.isPresent()) {
+ public Set<FeatureConfigSnapshotHolder> getFeatureConfigSnapshotHolders() throws Exception {
+ Set<FeatureConfigSnapshotHolder> snapShotHolders = new LinkedHashSet<>();
+ for (ChildAwareFeatureWrapper c : getChildFeatures()) {
+ for (FeatureConfigSnapshotHolder h : c.getFeatureConfigSnapshotHolders()) {
+ final Optional<FeatureConfigSnapshotHolder> featureConfigSnapshotHolder =
+ getFeatureConfigSnapshotHolder(h.getFileInfo());
+ if (featureConfigSnapshotHolder.isPresent()) {
snapShotHolders.add(featureConfigSnapshotHolder.get());
}
}
return snapShotHolders;
}
- protected Feature extractFeatureFromDependency(Dependency dependency) throws Exception {
+ protected Feature extractFeatureFromDependency(final Dependency dependency) throws Exception {
Feature[] features = featuresService.listFeatures();
- VersionRange range = org.apache.karaf.features.internal.model.Feature.DEFAULT_VERSION.equals(dependency.getVersion())
- ? VersionRange.ANY_VERSION : new VersionRange(dependency.getVersion(), true, true);
+ VersionRange range = dependency.hasVersion() ? new VersionRange(dependency.getVersion(), true, true)
+ : VersionRange.ANY_VERSION;
Feature fi = null;
- for(Feature f: features) {
+ for (Feature f : features) {
if (f.getName().equals(dependency.getName())) {
- Version v = VersionTable.getVersion(f.getVersion());
- if (range.contains(v) &&
- (fi == null || VersionTable.getVersion(fi.getVersion()).compareTo(v) < 0)) {
+ Version version = VersionTable.getVersion(f.getVersion());
+ if (range.contains(version) && (fi == null || VersionTable.getVersion(fi.getVersion())
+ .compareTo(version) < 0)) {
fi = f;
break;
}
}
return fi;
}
-
}