private void displayDependencyInformation(Feature feature, String contentType) { List<Dependency> dependencies = feature.getDependencies(); if (dependencies.isEmpty()) { System.out.println(contentType + " has no dependencies."); } else { System.out.println(contentType + " depends on:"); for (Dependency featureDependency : dependencies) { System.out.println(INDENT + featureDependency.getName() + " " + featureDependency.getVersion()); } } }
private void displayDependencyInformation(Feature feature, String contentType) { List<Dependency> dependencies = feature.getDependencies(); if (dependencies.isEmpty()) { System.out.println(contentType + " has no dependencies."); } else { System.out.println(contentType + " depends on:"); for (Dependency featureDependency : dependencies) { System.out.println(INDENT + featureDependency.getName() + " " + featureDependency.getVersion()); } } }
private static TabularData getDependencyIdentifierTable(List<Dependency> features) throws OpenDataException { TabularDataSupport table = new TabularDataSupport(FEATURE_IDENTIFIER_TABLE); Set<String> featureSet = new HashSet<>(); for (Dependency feature : features) { if (featureSet.contains(feature.getName() + feature.getVersion())) { continue; } else { featureSet.add(feature.getName() + feature.getVersion()); } String[] itemNames = new String[]{FeaturesServiceMBean.FEATURE_NAME, FeaturesServiceMBean.FEATURE_VERSION}; Object[] itemValues = new Object[]{feature.getName(), feature.getVersion()}; CompositeData ident = new CompositeDataSupport(FEATURE_IDENTIFIER, itemNames, itemValues); table.put(ident); } return table; }
private Set<Feature> getFeatures(Map<String, Feature> featureMap, List<String> features, int depth) { Set<Feature> featureSet = new HashSet<>(); if (depth > 5) { // Break after some recursions to avoid endless loops return featureSet; } if (features == null) { featureSet.addAll(featureMap.values()); return featureSet; } for (String featureName : features) { Feature feature = featureMap.get(featureName); if (feature == null) { System.out.println("Feature " + featureName + " not found in repository."); //throw new RuntimeException(); } else { featureSet.add(feature); List<Dependency> deps = feature.getDependencies(); List<String> depNames = new ArrayList<>(); for (Dependency dependency : deps) { depNames.add(dependency.getName()); } featureSet.addAll(getFeatures(featureMap, depNames, depth ++)); } } return featureSet; }
protected static void addDependency(FeatureResource resource, Dependency dep, String featureRange, boolean condition) { String name = dep.getName(); String version = dep.getVersion(); if (version.equals("0.0.0")) { version = null; } else if (!version.startsWith("[") && !version.startsWith("(")) { version = Macro.transform(featureRange, version); } addIdentityRequirement(resource, name, TYPE_FEATURE, version != null ? new VersionRange(version) : null, true, condition); }
/** * 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 (Dependency dependency : feature.getDependencies()) { Feature dependencyfeature = getFeaturesService().getFeature(dependency.getName(), dependency.getVersion()); bundles.addAll(getAllBundles(dependencyfeature)); } return bundles; }
final Feature dFeature = featuresService.getFeature(dependency.getName(), dependency.getVersion()); if (dFeature != null) { saveBundles(dest, dFeature, featuresService); } else { System.err.println("Unable to resolve dependency feature! '" + dependency.getName() + "' '" + dependency.getVersion() + "'"); throw new Exception("Unable to resolve dependency feature '" + dependency.getName() + "/" + dependency.getVersion() + "' while exporting '" + featureName + "/" + featureVersion + "'");
final Feature dFeature = featuresService.getFeature(dependency.getName(), dependency.getVersion()); if (dFeature != null) { saveBundles(dest, dFeature, featuresService); } else { System.err.println("Unable to resolve dependency feature! '" + dependency.getName() + "' '" + dependency.getVersion() + "'"); throw new Exception("Unable to resolve dependency feature '" + dependency.getName() + "/" + dependency.getVersion() + "' while exporting '" + featureName + "/" + featureVersion + "'");
List<Dependency> dependencies = resolved.getDependencies(); for (Dependency toDisplay : dependencies) { unresolved += displayFeatureTree(admin, toDisplay.getName(), toDisplay.getVersion(), prefix); for (int i = 0, j = conditionDependencies.size(); i < j; i++) { Dependency toDisplay = conditionDependencies.get(i); unresolved += displayFeatureTree(admin, toDisplay.getName(), toDisplay.getVersion(), prefix);
List<Dependency> dependencies = resolved.getDependencies(); for (Dependency toDisplay : dependencies) { unresolved += displayFeatureTree(admin, toDisplay.getName(), toDisplay.getVersion(), prefix); for (int i = 0, j = conditionDependencies.size(); i < j; i++) { Dependency toDisplay = conditionDependencies.get(i); unresolved += displayFeatureTree(admin, toDisplay.getName(), toDisplay.getVersion(), prefix);
/** * checks if all required features are available * @param featureRepos the repositories within the kar * @return <code>null</code> if the contained features have no unresolvable dependencies. Otherwise the first missing dependency * @throws Exception */ private Dependency findMissingDependency(List<URI> featureRepos) throws Exception { for (URI uri : featureRepos) { Feature[] includedFeatures = featuresService.getRepository(uri).getFeatures(); for (Feature includedFeature : includedFeatures) { List<Dependency> dependencies = includedFeature.getDependencies(); for (Dependency dependency : dependencies) { Feature feature = featuresService.getFeature(dependency.getName(), dependency.getVersion()); if(feature==null) { return dependency; } } } } return null; }
protected Feature extractFeatureFromDependency(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); Feature fi = null; 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)) { fi = f; break; } } } return fi; }
ss = ss.getParent(); ss.requireFeature(dep.getName(), dep.getVersion(), false);