class DecisionCombinersResource implements CollectionResourceProvider {

    @Override
    public Promise<QueryResponse, ResourceException> queryCollection(Context context, QueryRequest request,
            QueryResourceHandler handler) {

        final Set<String> combinerTypeNames = new TreeSet<>();
        List<ResourceResponse> combinerTypes = new ArrayList<>();

        final String principalName = PrincipalRestUtils.getPrincipalNameFromServerContext(context);

        combinerTypeNames.addAll(entitlementRegistry.getCombinersShortNames());

        for (String combinerTypeName : combinerTypeNames) {
            final Class<? extends EntitlementCombiner> conditionClass =
                    entitlementRegistry.getCombinerType(combinerTypeName);

            if (conditionClass == null) {
                if (debug.warningEnabled()) {
                    debug.warning("DecisionCombinersResource :: QUERY by " + principalName +
                            ": Listed combiner short name not found: " + combinerTypeName);
                }
                continue;
            }

            final JsonValue json = jsonify(combinerTypeName);

            if (json != null) {
                if (json != null) {
                    String id = json.get(JSON_OBJ_TITLE).asString();
                    combinerTypes.add(newResourceResponse(id, null, json));
                }
            }
        }

        QueryResponsePresentation.enableDeprecatedRemainingQueryResponse(request);
        return QueryResponsePresentation.perform(handler, request, combinerTypes);
    }

    @Inject public  DecisionCombinersResource(@Named("frRest") Debug debug, EntitlementRegistry entitlementRegistry);

}