in cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ReferenceModel.java [241:285]
private String buildFilter() {
String targetFilter = _referenceTarget.orElse(_emptyFilter);
boolean filterValid = false;
int targetFilterLength = targetFilter.length();
if ((targetFilterLength > 0) && isValid(targetFilter)) {
filterValid = true;
}
List<Annotation> beanPropertyTypes = _annotated.getAnnotations().stream().filter(
ann -> ann.annotationType().getAnnotation(BeanPropertyType.class) != null
).collect(Collectors.toList());
StringBuilder sb = new StringBuilder();
if (_prototype && filterValid || !beanPropertyTypes.isEmpty()) {
sb.append("(&");
}
beanPropertyTypes.forEach(
ann -> {
Map<String, String> map = Conversions.convert(ann).to(_mapType);
Maps.appendFilter(sb, map);
}
);
if (_prototype) {
sb.append("(");
sb.append(Constants.SERVICE_SCOPE);
sb.append("=");
sb.append(Constants.SCOPE_PROTOTYPE);
sb.append(")");
}
if (filterValid) {
sb.append(targetFilter);
}
if (_prototype && filterValid || !beanPropertyTypes.isEmpty()) {
sb.append(")");
}
return sb.toString();
}