use of aQute.libg.filters.SimpleFilter in project bndtools by bndtools.
the class AbstractRequirementListPart method createRequirement.
private Requirement createRequirement(Object elem) throws Exception {
final String bsn;
String versionRange = null;
if (elem instanceof RepositoryBundle) {
bsn = ((RepositoryBundle) elem).getBsn();
} else if (elem instanceof RepositoryBundleVersion) {
RepositoryBundleVersion rbv = (RepositoryBundleVersion) elem;
bsn = rbv.getBsn();
versionRange = rbv.getVersion().toString();
} else if (elem instanceof ProjectBundle) {
bsn = ((ProjectBundle) elem).getBsn();
} else if (elem instanceof VersionedClause) {
VersionedClause clause = (VersionedClause) elem;
bsn = clause.getName();
versionRange = clause.getVersionRange();
} else {
throw new IllegalArgumentException("Unable to derive identity from an object of type " + elem.getClass().getSimpleName());
}
final CapReqBuilder reqBuilder;
if (preferences.getUseAliasRequirements()) {
reqBuilder = new CapReqBuilder("bnd.identity").addAttribute("id", bsn);
if (versionRange != null)
reqBuilder.addAttribute("version", versionRange);
} else {
Filter filter = new SimpleFilter(IdentityNamespace.IDENTITY_NAMESPACE, bsn);
if (versionRange != null)
filter = new AndFilter().addChild(filter).addChild(new SimpleFilter("version", Operator.GreaterThanOrEqual, versionRange));
reqBuilder = new CapReqBuilder(IdentityNamespace.IDENTITY_NAMESPACE).addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, filter.toString());
}
return reqBuilder.buildSyntheticRequirement();
}
use of aQute.libg.filters.SimpleFilter in project bndtools by bndtools.
the class ResolutionSuccessPanel method resourceToRequirement.
private static Requirement resourceToRequirement(Resource resource) {
Capability identity = ResourceUtils.getIdentityCapability(resource);
String id = ResourceUtils.getIdentity(identity);
Version version = ResourceUtils.getVersion(identity);
Version dropQualifier = new Version(version.getMajor(), version.getMinor(), version.getMicro());
AndFilter filter = new AndFilter();
filter.addChild(new SimpleFilter(IdentityNamespace.IDENTITY_NAMESPACE, id));
filter.addChild(new LiteralFilter(Filters.fromVersionRange(dropQualifier.toString())));
Requirement req = new CapReqBuilder(IdentityNamespace.IDENTITY_NAMESPACE).addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, filter.toString()).buildSyntheticRequirement();
return req;
}
use of aQute.libg.filters.SimpleFilter in project bnd by bndtools.
the class CapReqBuilder method createSimpleRequirement.
public static CapReqBuilder createSimpleRequirement(String ns, String name, String range) {
Filter filter;
SimpleFilter bsnFilter = new SimpleFilter(ns, name);
if (range != null)
filter = new AndFilter().addChild(bsnFilter).addChild(new LiteralFilter(Filters.fromVersionRange(range)));
else
filter = bsnFilter;
return new CapReqBuilder(ns).addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, filter.toString());
}
use of aQute.libg.filters.SimpleFilter in project bnd by bndtools.
the class Filters method fromVersionRange.
/**
* Generate an LDAP-style version filter from a version range, using a
* specific attribute name for the version; for example can be used to
* generate a range using the {@code bundle-version} attribute such as
* {@code (&(bundle-version>=1.0)(!(bundle-version>=2.0))}.
*
* @param range
* @param versionAttr
* @return The generated filter
* @throws IllegalArgumentException If the supplied range is invalid.
*/
public static String fromVersionRange(String range, String versionAttr) throws IllegalArgumentException {
if (range == null)
return null;
VersionRange parsedRange = new VersionRange(range);
Filter left;
if (parsedRange.includeLow())
left = new SimpleFilter(versionAttr, Operator.GreaterThanOrEqual, parsedRange.getLow().toString());
else
left = new NotFilter(new SimpleFilter(versionAttr, Operator.LessThanOrEqual, parsedRange.getLow().toString()));
Filter right;
if (!parsedRange.isRange())
right = null;
else if (parsedRange.includeHigh())
right = new SimpleFilter(versionAttr, Operator.LessThanOrEqual, parsedRange.getHigh().toString());
else
right = new NotFilter(new SimpleFilter(versionAttr, Operator.GreaterThanOrEqual, parsedRange.getHigh().toString()));
Filter result;
if (right != null)
result = new AndFilter().addChild(left).addChild(right);
else
result = left;
return result.toString();
}
use of aQute.libg.filters.SimpleFilter in project bndtools by bndtools.
the class RunRequirementsPart method createRequirement.
private static Requirement createRequirement(Object elem) {
String bsn = null;
Version version = null;
if (elem instanceof RepositoryBundle) {
bsn = ((RepositoryBundle) elem).getBsn();
} else if (elem instanceof RepositoryBundleVersion) {
RepositoryBundleVersion rbv = (RepositoryBundleVersion) elem;
bsn = rbv.getBsn();
version = rbv.getVersion();
} else if (elem instanceof ProjectBundle) {
bsn = ((ProjectBundle) elem).getBsn();
}
if (bsn != null) {
Filter filter = new SimpleFilter(IdentityNamespace.IDENTITY_NAMESPACE, bsn);
if (version != null) {
filter = new AndFilter().addChild(filter).addChild(new SimpleFilter("version", Operator.GreaterThanOrEqual, version.toString()));
}
Requirement req = new CapReqBuilder(IdentityNamespace.IDENTITY_NAMESPACE).addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, filter.toString()).buildSyntheticRequirement();
return req;
}
return null;
}
Aggregations