private Optional<FilterExpression> buildFilter(String typeName, Optional<String> filter, RequestScope requestScope) { // TODO: Refactor FilterDialect interfaces to accept string or List<String> instead of (or in addition to?) // query params. return filter.map(filterStr -> { MultivaluedMap<String, String> queryParams = new MultivaluedHashMap<String, String>() { { put("filter[" + typeName + "]", Arrays.asList(filterStr)); } }; try { return requestScope.getFilterDialect().parseTypedExpression(typeName, queryParams).get(typeName); } catch (ParseException e) { log.debug("Filter parse exception caught", e); throw new InvalidPredicateException("Could not parse filter for type: " + typeName); } }); } }
@Override public FilterExpression parseGlobalExpression(String path, MultivaluedMap<String, String> queryParams) throws ParseException { if (joinDialects.isEmpty()) { throw new ParseException("Heterogeneous type filtering not supported"); } return parseExpression(joinDialects, (dialect) -> dialect.parseGlobalExpression(path, queryParams)); }
this.mapper = elideSettings.getMapper(); this.auditLogger = elideSettings.getAuditLogger(); this.filterDialect = new MultipleFilterDialect(elideSettings.getJoinFilterDialects(), elideSettings.getSubqueryFilterDialects()); this.elideSettings = elideSettings; globalFilterExpression = filterDialect.parseGlobalExpression(path, filterParams); } catch (ParseException e) { errorMessage = e.getMessage(); expressionsByType.putAll(filterDialect.parseTypedExpression(path, filterParams)); } catch (ParseException e) {
@Override public Elide provide() { EntityDictionary dictionary = new EntityDictionary(new HashMap<>()); DefaultFilterDialect defaultFilterStrategy = new DefaultFilterDialect(dictionary); RSQLFilterDialect rsqlFilterStrategy = new RSQLFilterDialect(dictionary); MultipleFilterDialect multipleFilterStrategy = new MultipleFilterDialect( Arrays.asList(rsqlFilterStrategy, defaultFilterStrategy), Arrays.asList(rsqlFilterStrategy, defaultFilterStrategy) ); return new Elide(new ElideSettingsBuilder(AbstractIntegrationTestInitializer.getDatabaseManager()) .withAuditLogger(auditLogger) .withJoinFilterDialect(multipleFilterStrategy) .withSubqueryFilterDialect(multipleFilterStrategy) .withEntityDictionary(dictionary) .withUpdate200Status() .build()); }
this.mapper = elideSettings.getMapper(); this.auditLogger = elideSettings.getAuditLogger(); this.filterDialect = new MultipleFilterDialect(elideSettings.getJoinFilterDialects(), elideSettings.getSubqueryFilterDialects()); this.elideSettings = elideSettings; globalFilterExpression = filterDialect.parseGlobalExpression(path, filterParams); } catch (ParseException e) { errorMessage = e.getMessage(); expressionsByType.putAll(filterDialect.parseTypedExpression(path, filterParams)); } catch (ParseException e) {
@Override public Elide provide() { EntityDictionary dictionary = new EntityDictionary(TestCheckMappings.MAPPINGS); DefaultFilterDialect defaultFilterStrategy = new DefaultFilterDialect(dictionary); RSQLFilterDialect rsqlFilterStrategy = new RSQLFilterDialect(dictionary); MultipleFilterDialect multipleFilterStrategy = new MultipleFilterDialect( Arrays.asList(rsqlFilterStrategy, defaultFilterStrategy), Arrays.asList(rsqlFilterStrategy, defaultFilterStrategy) ); return new Elide(new ElideSettingsBuilder(AbstractIntegrationTestInitializer.getDatabaseManager()) .withAuditLogger(auditLogger) .withJoinFilterDialect(multipleFilterStrategy) .withSubqueryFilterDialect(multipleFilterStrategy) .withEntityDictionary(dictionary) .build()); }
@Override public Elide provide() { EntityDictionary dictionary = new EntityDictionary(TestCheckMappings.MAPPINGS); DefaultFilterDialect defaultFilterStrategy = new DefaultFilterDialect(dictionary); RSQLFilterDialect rsqlFilterStrategy = new RSQLFilterDialect(dictionary); MultipleFilterDialect multipleFilterStrategy = new MultipleFilterDialect( Arrays.asList(rsqlFilterStrategy, defaultFilterStrategy), Arrays.asList(rsqlFilterStrategy, defaultFilterStrategy) ); return new Elide(new ElideSettingsBuilder(AbstractIntegrationTestInitializer.getDatabaseManager()) .withAuditLogger(auditLogger) .withJoinFilterDialect(multipleFilterStrategy) .withSubqueryFilterDialect(multipleFilterStrategy) .withEntityDictionary(dictionary) .withReturnErrorObjects(true) .build()); }
private Optional<FilterExpression> buildFilter(String typeName, Optional<String> filter, RequestScope requestScope) { // TODO: Refactor FilterDialect interfaces to accept string or List<String> instead of (or in addition to?) // query params. return filter.map(filterStr -> { MultivaluedMap<String, String> queryParams = new MultivaluedHashMap<String, String>() { { put("filter[" + typeName + "]", Arrays.asList(filterStr)); } }; try { return requestScope.getFilterDialect().parseTypedExpression(typeName, queryParams).get(typeName); } catch (ParseException e) { log.debug("Filter parse exception caught", e); throw new InvalidPredicateException("Could not parse filter for type: " + typeName); } }); } }
@Override public FilterExpression parseGlobalExpression(String path, MultivaluedMap<String, String> queryParams) throws ParseException { if (joinDialects.isEmpty()) { throw new ParseException("Heterogeneous type filtering not supported"); } return parseExpression(joinDialects, (dialect) -> dialect.parseGlobalExpression(path, queryParams)); }
@Override public Map<String, FilterExpression> parseTypedExpression(String path, MultivaluedMap<String, String> queryParams) throws ParseException { if (subqueryDialects.isEmpty()) { throw new ParseException("Type filtering not supported"); } return parseExpression(subqueryDialects, (dialect) -> dialect.parseTypedExpression(path, queryParams)); }
@Override public Map<String, FilterExpression> parseTypedExpression(String path, MultivaluedMap<String, String> queryParams) throws ParseException { if (subqueryDialects.isEmpty()) { throw new ParseException("Type filtering not supported"); } return parseExpression(subqueryDialects, (dialect) -> dialect.parseTypedExpression(path, queryParams)); }