use of io.fabric8.common.util.Filter in project fabric8 by jboss-fuse.
the class AetherBasedResolver method collectDependencies.
protected DependencyNode collectDependencies(Artifact root, String pomVersion, final Filter<Dependency> excludeDependencyFilter) throws RepositoryException, IOException {
final DefaultRepositorySystemSession session = newSession();
try {
List<RemoteRepository> repos = selectRepositories();
assignProxyAndMirrors(repos);
ArtifactDescriptorResult artifactDescriptorResult = m_repoSystem.readArtifactDescriptor(session, new ArtifactDescriptorRequest(root, repos, null));
repos.addAll(artifactDescriptorResult.getRepositories());
Dependency rootDependency = new Dependency(root, null);
List<Dependency> dependencies = artifactDescriptorResult.getDependencies();
final DefaultDependencyNode rootNode = new DefaultDependencyNode(rootDependency);
GenericVersionScheme versionScheme = new GenericVersionScheme();
rootNode.setVersion(versionScheme.parseVersion(pomVersion));
rootNode.setVersionConstraint(versionScheme.parseVersionConstraint(pomVersion));
DependencyNode pomNode = rootNode;
// final Filter<Dependency> shouldExclude = Filters.or(DependencyFilters.testScopeFilter, excludeDependencyFilter, new NewerVersionExistsFilter(rootNode));
final Filter<Dependency> shouldExclude = Filters.or(Arrays.asList(DependencyFilters.testScopeFilter, excludeDependencyFilter));
DependencySelector dependencySelector = new AndDependencySelector(new ScopeDependencySelector("test"), new ExclusionDependencySelector(), new DependencySelector() {
@Override
public DependencySelector deriveChildSelector(DependencyCollectionContext context) {
return this;
}
@Override
public boolean selectDependency(Dependency dependency) {
try {
return !DependencyFilters.matches(dependency, shouldExclude);
} catch (Exception e) {
failedToMakeDependencyTree(dependency, e);
return false;
}
}
});
session.setDependencySelector(dependencySelector);
// work on the root dependency directly?
if (true) {
for (Dependency dependency : dependencies) {
DependencyNode node = resolveDependencies(session, repos, pomNode, dependency, shouldExclude);
if (node != null) {
pomNode.getChildren().add(node);
}
}
} else {
DependencyNode node = resolveDependencies(session, repos, pomNode, rootDependency, shouldExclude);
if (node != null) {
pomNode = node;
}
}
// now lets transform the dependency tree to remove different versions for the same artifact
final DependencyGraphTransformationContext tranformContext = new DependencyGraphTransformationContext() {
Map<Object, Object> map = new HashMap<>();
public RepositorySystemSession getSession() {
return session;
}
public Object get(Object key) {
return map.get(key);
}
public Object put(Object key, Object value) {
return map.put(key, value);
}
};
DependencyGraphTransformer transformer = new ReplaceConflictingVersionResolver();
pomNode = transformer.transformGraph(pomNode, tranformContext);
transformer = new DuplicateTransformer();
pomNode = transformer.transformGraph(pomNode, tranformContext);
return pomNode;
} finally {
releaseSession(session);
}
}
use of io.fabric8.common.util.Filter in project fabric8 by jboss-fuse.
the class ContainerListAction method doExecute.
@Override
protected Object doExecute() throws Exception {
Container[] containers = fabricService.getContainers();
// filter unwanted containers, and split list into parent/child,
// so we can sort the list as we want it
containers = CommandUtils.filterContainers(containers, filter);
// we want the list to be sorted
containers = CommandUtils.sortContainers(containers);
Version ver = null;
if (version != null) {
// limit containers to only with same version
ver = profileService.getRequiredVersion(version);
}
if (verbose) {
printContainersVerbose(containers, ver, System.out);
} else {
printContainers(containers, ver, System.out);
}
return null;
}
use of io.fabric8.common.util.Filter in project fabric8 by jboss-fuse.
the class RequirementSort method collectDependencies.
@SuppressWarnings("unchecked")
private static <T extends Resource> Set<T> collectDependencies(T resource, CapabilitySet capSet) {
Set<T> result = new LinkedHashSet<>();
for (Requirement requirement : resource.getRequirements(null)) {
String filter = requirement.getDirectives().get(Constants.FILTER_DIRECTIVE);
SimpleFilter sf = (filter != null) ? SimpleFilter.parse(filter) : new SimpleFilter(null, null, SimpleFilter.MATCH_ALL);
for (Capability cap : capSet.match(sf, true)) {
result.add((T) cap.getResource());
}
}
return result;
}
use of io.fabric8.common.util.Filter in project fabric8 by jboss-fuse.
the class ChildAutoScaler method chooseRootContainer.
protected String chooseRootContainer(AutoScaleRequest request, List<String> containerIds) {
ChildScalingRequirements scalingRequirements = getChildScalingRequirements(request);
if (scalingRequirements != null) {
List<String> rootContainerPatterns = scalingRequirements.getRootContainerPatterns();
if (rootContainerPatterns != null && !rootContainerPatterns.isEmpty()) {
Filter<String> filter = Filters.createStringFilters(rootContainerPatterns);
List<String> matchingRootContainers = Filters.filter(containerIds, filter);
return Filters.matchRandomElement(matchingRootContainers);
}
}
return Filters.matchRandomElement(containerIds);
}
use of io.fabric8.common.util.Filter in project fabric8 by jboss-fuse.
the class SubsystemResolver method getBundles.
public Map<Resource, String> getBundles() {
if (bundles == null) {
String filter = String.format("(&(%s=*)(|(%s=%s)(%s=%s)))", IDENTITY_NAMESPACE, CAPABILITY_TYPE_ATTRIBUTE, TYPE_BUNDLE, CAPABILITY_TYPE_ATTRIBUTE, TYPE_FRAGMENT);
SimpleFilter sf = SimpleFilter.parse(filter);
bundles = getResourceMapping(sf);
}
return bundles;
}
Aggregations