static Expression make(String key, Op op, String value) { if (op == Op.EQUAL) { if ("osgi.wiring.bundle".equals(key)) return new BundleExpression(value); else if ("osgi.wiring.host".equals(key)) return new HostExpression(value); else if ("osgi.wiring.package".equals(key)) return new PackageExpression(value); else if ("osgi.identity".equals(key)) return new IdentityExpression(value); } return new SimpleExpression(key, op, value); }
@Override public boolean eval(Map<String, ?> map) { Object target = map.get(key); if (target instanceof Iterable) { for (Object scalar : (Iterable<?>) target) { if (eval(scalar)) return true; } return false; } else if (target.getClass() .isArray()) { int l = Array.getLength(target); for (int i = 0; i < l; i++) { if (eval(Array.get(target, i))) return true; } return false; } else { return eval(target); } }
@Override public Set<String> visit(SimpleExpression expr) { if ("objectClass".equals(expr.getKey())) { if (expr.getOp() == Op.EQUAL) { String v = expr.getValue(); if (!v.contains(MATCH_ALL) || v.equals(MATCH_ALL)) { return Collections.singleton(v); } else if (v.endsWith(VALID_WILDCARD) && !v.substring(0, v.length() - 2) .contains(MATCH_ALL)) { return Collections.singleton(v); } else { // All other matchings have no meaning to us, the user // should generate them by hand return Collections.emptySet(); } } else { // All other matchings have no meaning, so match nothing return Collections.emptySet(); } } return Collections.emptySet(); }
return new PatternExpression(key, value); else return SimpleExpression.make(key, Op.EQUAL, value); return new ApproximateExpression(key, rover.getValue()); case '>' : return SimpleExpression.make(key, Op.GREATER_OR_EQUAL, rover.getValue()); case '<' : return SimpleExpression.make(key, Op.LESS_OR_EQUAL, rover.getValue()); default : throw new IllegalArgumentException("Expected '~=', '>=', '<='");
return new PatternExpression(key, value); else return SimpleExpression.make(key, Op.EQUAL, value); return new ApproximateExpression(key, rover.getValue()); case '>' : return SimpleExpression.make(key, Op.GREATER_OR_EQUAL, rover.getValue()); case '<' : return SimpleExpression.make(key, Op.LESS_OR_EQUAL, rover.getValue()); default : throw new IllegalArgumentException("Expected '~=', '>=', '<='");
return new PatternExpression(key, value); else return SimpleExpression.make(key, Op.EQUAL, value); return new ApproximateExpression(key, rover.getValue()); case '>' : return SimpleExpression.make(key, Op.GREATER_OR_EQUAL, rover.getValue()); case '<' : return SimpleExpression.make(key, Op.LESS_OR_EQUAL, rover.getValue()); default : throw new IllegalArgumentException("Expected '~=', '>=', '<='");
return new PatternExpression(key, value); else return SimpleExpression.make(key, Op.EQUAL, value); return new ApproximateExpression(key, rover.getValue()); case '>' : return SimpleExpression.make(key, Op.GREATER_OR_EQUAL, rover.getValue()); case '<' : return SimpleExpression.make(key, Op.LESS_OR_EQUAL, rover.getValue()); default : throw new IllegalArgumentException("Expected '~=', '>=', '<='");
@Override public boolean eval(Map<String,Object> map) { Object target = map.get(key); if (target instanceof Iterable) { for (Object scalar : (Iterable< ? >) target) { if (eval(scalar)) return true; } return false; } else if (target.getClass().isArray()) { int l = Array.getLength(target); for (int i = 0; i < l; i++) { if (eval(Array.get(target, i))) return true; } return false; } else { return eval(target); } }
@Override public Set<String> visit(SimpleExpression expr) { if ("objectClass".equals(expr.getKey())) { if (expr.getOp() == Op.EQUAL) { String v = expr.getValue(); if (!v.contains(MATCH_ALL) || v.equals(MATCH_ALL)) { return Collections.singleton(v); } else if (v.endsWith(VALID_WILDCARD) && !v.substring(0, v.length() - 2) .contains(MATCH_ALL)) { return Collections.singleton(v); } else { // All other matchings have no meaning to us, the user // should generate them by hand return Collections.emptySet(); } } else { // All other matchings have no meaning, so match nothing return Collections.emptySet(); } } return Collections.emptySet(); }
@Override public boolean eval(Map<String,Object> map) { Object target = map.get(key); if (target instanceof Iterable) { for (Object scalar : (Iterable< ? >) target) { if (eval(scalar)) return true; } return false; } else if (target.getClass().isArray()) { int l = Array.getLength(target); for (int i = 0; i < l; i++) { if (eval(Array.get(target, i))) return true; } return false; } else { return eval(target); } }
@Override public boolean eval(Map<String, ?> map) { Object target = map.get(key); if (target instanceof Iterable) { for (Object scalar : (Iterable<?>) target) { if (eval(scalar)) return true; } return false; } else if (target.getClass() .isArray()) { int l = Array.getLength(target); for (int i = 0; i < l; i++) { if (eval(Array.get(target, i))) return true; } return false; } else { return eval(target); } }
static Expression make(String key, Op op, String value) { if (op == Op.EQUAL) { if ("osgi.wiring.bundle".equals(key)) return new BundleExpression(value); else if ("osgi.wiring.host".equals(key)) return new HostExpression(value); else if ("osgi.wiring.package".equals(key)) return new PackageExpression(value); else if ("osgi.identity".equals(key)) return new IdentityExpression(value); } return new SimpleExpression(key, op, value); }
static Expression make(String key, Op op, String value) { if (op == Op.EQUAL) { if ("osgi.wiring.bundle".equals(key)) return new BundleExpression(value); else if ("osgi.wiring.host".equals(key)) return new HostExpression(value); else if ("osgi.wiring.package".equals(key)) return new PackageExpression(value); else if ("osgi.identity".equals(key)) return new IdentityExpression(value); } return new SimpleExpression(key, op, value); }
@Override Expression not() { Op alt = op.not(); if (alt == null) return null; return new SimpleExpression(key, alt, value); }
static Expression make(String key, Op op, String value) { if (op == Op.EQUAL) { if ("osgi.wiring.bundle".equals(key)) return new BundleExpression(value); else if ("osgi.wiring.host".equals(key)) return new HostExpression(value); else if ("osgi.wiring.package".equals(key)) return new PackageExpression(value); else if ("osgi.identity".equals(key)) return new IdentityExpression(value); } return new SimpleExpression(key, op, value); }
Expression not() { Op alt = op.not(); if (alt == null) return null; return new SimpleExpression(key, alt, value); }