/** * Get the global/cross-type filter expression. * @param loadClass Entity class * @return The global filter expression evaluated at the first load */ public Optional<FilterExpression> getLoadFilterExpression(Class<?> loadClass) { Optional<FilterExpression> permissionFilter; permissionFilter = getPermissionExecutor().getReadPermissionFilter(loadClass); Optional<FilterExpression> globalFilterExpressionOptional = null; if (globalFilterExpression == null) { String typeName = dictionary.getJsonAliasFor(loadClass); globalFilterExpressionOptional = getFilterExpressionByType(typeName); } else { globalFilterExpressionOptional = Optional.of(globalFilterExpression); } if (globalFilterExpressionOptional.isPresent() && permissionFilter.isPresent()) { return Optional.of(new AndFilterExpression(globalFilterExpressionOptional.get(), permissionFilter.get())); } if (globalFilterExpressionOptional.isPresent()) { return globalFilterExpressionOptional; } if (permissionFilter.isPresent()) { return permissionFilter; } return Optional.empty(); }
/** * Get the global/cross-type filter expression. * @param loadClass Entity class * @return The global filter expression evaluated at the first load */ public Optional<FilterExpression> getLoadFilterExpression(Class<?> loadClass) { Optional<FilterExpression> permissionFilter; permissionFilter = getPermissionExecutor().getReadPermissionFilter(loadClass); Optional<FilterExpression> globalFilterExpressionOptional = null; if (globalFilterExpression == null) { String typeName = dictionary.getJsonAliasFor(loadClass); globalFilterExpressionOptional = getFilterExpressionByType(typeName); } else { globalFilterExpressionOptional = Optional.of(globalFilterExpression); } if (globalFilterExpressionOptional.isPresent() && permissionFilter.isPresent()) { return Optional.of(new AndFilterExpression(globalFilterExpressionOptional.get(), permissionFilter.get())); } if (globalFilterExpressionOptional.isPresent()) { return globalFilterExpressionOptional; } if (permissionFilter.isPresent()) { return permissionFilter; } return Optional.empty(); }
/** * Get the filter expression for a particular relationship * @param parent The object which has the relationship * @param relationName The relationship name * @return A type specific filter expression for the given relationship */ public Optional<FilterExpression> getExpressionForRelation(PersistentResource parent, String relationName) { final Class<?> entityClass = dictionary.getParameterizedType(parent.getObject(), relationName); if (entityClass == null) { throw new InvalidAttributeException(relationName, parent.getType()); } if (dictionary.isMappedInterface(entityClass) && interfaceHasFilterExpression(entityClass)) { throw new InvalidOperationException( "Cannot apply filters to polymorphic relations mapped with MappedInterface"); } final String valType = dictionary.getJsonAliasFor(entityClass); return getFilterExpressionByType(valType); }
/** * Get the filter expression for a particular relationship * @param parent The object which has the relationship * @param relationName The relationship name * @return A type specific filter expression for the given relationship */ public Optional<FilterExpression> getExpressionForRelation(PersistentResource parent, String relationName) { final Class<?> entityClass = dictionary.getParameterizedType(parent.getObject(), relationName); if (entityClass == null) { throw new InvalidAttributeException(relationName, parent.getType()); } if (dictionary.isMappedInterface(entityClass) && interfaceHasFilterExpression(entityClass)) { throw new InvalidOperationException( "Cannot apply filters to polymorphic relations mapped with MappedInterface"); } final String valType = dictionary.getJsonAliasFor(entityClass); return getFilterExpressionByType(valType); }