private String buildFilter()

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();
	}