private boolean isGeoNearQuery(Method method) { if (ReactiveWrappers.supports(method.getReturnType())) { TypeInformation<?> from = ClassTypeInformation.fromReturnTypeOf(method); return GeoResult.class.equals(from.getRequiredComponentType().getType()); } return false; }
private boolean isStreamOfGeoResult() { if (!ReactiveWrappers.supports(returnType.getType())) { return false; } TypeInformation<?> componentType = returnType.getComponentType(); return componentType != null && GeoResult.class.equals(componentType.getType()); } }
public ReactiveMongoParameterAccessor(MongoQueryMethod method, Object[] values) { super(method, values); this.values = values; this.subscriptions = new ArrayList<>(values.length); for (int i = 0; i < values.length; i++) { Object value = values[i]; if (value == null || !ReactiveWrappers.supports(value.getClass())) { subscriptions.add(null); continue; } if (ReactiveWrappers.isSingleValueType(value.getClass())) { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Mono.class).toProcessor()); } else { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Flux.class).collectList().toProcessor()); } } }
/** * Creates a new {@link ElasticsearchParametersParameterAccessor}. * * @param method must not be {@literal null}. * @param values must not be {@literal null}. */ ReactiveElasticsearchParametersParameterAccessor(ReactiveElasticsearchQueryMethod method, Object[] values) { super(method, values); this.subscriptions = new ArrayList<>(values.length); for (int i = 0; i < values.length; i++) { Object value = values[i]; if (value == null || !ReactiveWrappers.supports(value.getClass())) { subscriptions.add(null); continue; } if (ReactiveWrappers.isSingleValueType(value.getClass())) { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Mono.class).toProcessor()); } else { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Flux.class).collectList().toProcessor()); } } }
private boolean isGeoNearQuery(Method method) { if (ReactiveWrappers.supports(method.getReturnType())) { TypeInformation<?> from = ClassTypeInformation.fromReturnTypeOf(method); return GeoResult.class.equals(from.getRequiredComponentType().getType()); } return false; }
private boolean isStreamOfGeoResult() { if (!ReactiveWrappers.supports(returnType.getType())) { return false; } TypeInformation<?> componentType = returnType.getComponentType(); return componentType != null && GeoResult.class.equals(componentType.getType()); } }
public ReactiveMongoParameterAccessor(MongoQueryMethod method, Object[] values) { super(method, values); this.values = values; this.subscriptions = new ArrayList<>(values.length); for (int i = 0; i < values.length; i++) { Object value = values[i]; if (value == null || !ReactiveWrappers.supports(value.getClass())) { subscriptions.add(null); continue; } if (ReactiveWrappers.isSingleValueType(value.getClass())) { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Mono.class).toProcessor()); } else { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Flux.class).collectList().toProcessor()); } } }
/** * Returns whether the {@link MethodParameter} should be unwrapped. * * @param parameter must not be {@literal null}. * @see QueryExecutionConverters */ private static boolean shouldUnwrap(MethodParameter parameter) { return QueryExecutionConverters.supportsUnwrapping(parameter.getParameterType()) || ReactiveWrappers.supports(parameter.getParameterType()); } }
/** * Reactive MongoDB support requires reactive wrapper support. If return type/parameters are reactive wrapper types, * then it's required to be able to convert these. * * @param method the method to validate. */ private static void validate(Method method) { if (ReactiveWrappers.supports(method.getReturnType()) && !ClassUtils.isAssignable(Publisher.class, method.getReturnType()) && !ReactiveWrapperConverters.supports(method.getReturnType())) { throw new InvalidDataAccessApiUsageException( String.format("No reactive type converter found for type %s used in %s, method %s.", method.getReturnType().getName(), method.getDeclaringClass().getName(), method)); } Arrays.stream(method.getParameterTypes()) // .filter(ReactiveWrappers::supports) // .filter(parameterType -> !ClassUtils.isAssignable(Publisher.class, parameterType)) // .filter(parameterType -> !ReactiveWrapperConverters.supports(parameterType)) // .forEach(parameterType -> { throw new InvalidDataAccessApiUsageException( String.format("No reactive type converter found for type %s used in %s, method %s.", parameterType.getName(), method.getDeclaringClass().getName(), method)); }); } }
@SuppressWarnings("ConstantConditions") ReactiveCassandraParameterAccessor(CassandraQueryMethod method, Object[] values) { super(method, values); this.values = values; this.subscriptions = new ArrayList<>(values.length); for (Object value : values) { if (value == null || !ReactiveWrappers.supports(value.getClass())) { subscriptions.add(null); continue; } if (ReactiveWrappers.isSingleValueType(value.getClass())) { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Mono.class).toProcessor()); } else { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Flux.class).collectList().toProcessor()); } } }
/** * Creates a new {@link R2dbcParameterAccessor}. */ public R2dbcParameterAccessor(R2dbcQueryMethod method, Object... values) { super(method, values); this.values = values; this.subscriptions = new ArrayList<>(values.length); for (int i = 0; i < values.length; i++) { Object value = values[i]; if (value == null || !ReactiveWrappers.supports(value.getClass())) { subscriptions.add(null); continue; } if (ReactiveWrappers.isSingleValueType(value.getClass())) { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Mono.class).toProcessor()); } else { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Flux.class).collectList().toProcessor()); } } }
public ReactiveCouchbaseParameterAccessor(CouchbaseQueryMethod method, Object[] values) { super(method.getParameters(), values); this.subscriptions = new ArrayList<>(values.length); for (int i = 0; i < values.length; i++) { Object value = values[i]; if (value == null || !ReactiveWrappers.supports(value.getClass())) { subscriptions.add(null); continue; } if (ReactiveWrappers.isSingleValueType(value.getClass())) { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Mono.class).toProcessor()); } else { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Flux.class).collectList().toProcessor()); } } }
public ReactiveCouchbaseParameterAccessor(CouchbaseQueryMethod method, Object[] values) { super(method.getParameters(), values); this.subscriptions = new ArrayList<>(values.length); for (int i = 0; i < values.length; i++) { Object value = values[i]; if (value == null || !ReactiveWrappers.supports(value.getClass())) { subscriptions.add(null); continue; } if (ReactiveWrappers.isSingleValueType(value.getClass())) { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Mono.class).toProcessor()); } else { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Flux.class).collectList().toProcessor()); } } }
/** * Creates a new {@link R2dbcParameterAccessor}. */ public R2dbcParameterAccessor(R2dbcQueryMethod method, Object... values) { super(method, values); this.values = values; this.subscriptions = new ArrayList<>(values.length); for (int i = 0; i < values.length; i++) { Object value = values[i]; if (value == null || !ReactiveWrappers.supports(value.getClass())) { subscriptions.add(null); continue; } if (ReactiveWrappers.isSingleValueType(value.getClass())) { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Mono.class).toProcessor()); } else { subscriptions.add(ReactiveWrapperConverters.toWrapper(value, Flux.class).collectList().toProcessor()); } } }