@Override public Optional<Argument<?>> getFirstTypeVariable() { return argument.getFirstTypeVariable(); }
Optional<B> existing = getBody(); final boolean isOptional = argument.getType() == Optional.class; final Argument finalArgument = isOptional ? argument.getFirstTypeVariable().orElse(argument) : argument; Optional<T> converted; if (existing.isPresent()) {
if (rawBodyType != null && !HttpStatus.class.isAssignableFrom(rawBodyType)) { if (HttpResponse.class.isAssignableFrom(bodyType.getType())) { Optional<Argument<?>> responseBodyType = bodyType.getFirstTypeVariable(); if (responseBodyType.isPresent()) { Argument<B> finalResponseBodyType = (Argument<B>) responseBodyType.get();
@Override public O invoke(FunctionDefinition definition, I input, Argument<O> outputType) { Optional<URI> opt = definition.getURI(); if (!opt.isPresent()) { throw new FunctionNotFoundException(definition.getName()); } else { URI uri = opt.get(); HttpRequest request; if (input == null) { request = HttpRequest.GET(uri.toString()); } else { request = HttpRequest.POST(uri.toString(), input); } if (input != null && ClassUtils.isJavaLangType(input.getClass())) { ((MutableHttpRequest) request).contentType(MediaType.TEXT_PLAIN_TYPE); } Class<O> outputJavaType = outputType.getType(); if (ClassUtils.isJavaLangType(outputJavaType)) { ((MutableHttpRequest) request).accept(MediaType.TEXT_PLAIN_TYPE); } if (Publishers.isConvertibleToPublisher(outputJavaType)) { Publisher publisher = httpClient.retrieve(request, outputType.getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT)); return ConversionService.SHARED.convert(publisher, outputType).orElseThrow(() -> new FunctionExecutionException("Unsupported Reactive type: " + outputJavaType) ); } else { return (O) httpClient.toBlocking().retrieve(request, outputType); } } }
argumentType = argument.getFirstTypeVariable().orElse(argument).getType(); } else { argumentType = argument.getType();
typeVariable = Argument.of(PartData.class); } else { typeVariable = argument.getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT); typeVariable = Argument.of(PartData.class); } else { typeVariable = typeVariable.getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT);
Optional<Argument<?>> genericArgument = typeArgument.getFirstTypeVariable(); if (genericArgument.isPresent() && !Iterable.class.isAssignableFrom(genericArgument.get().getType())) {
@Override public O invoke(FunctionDefinition definition, I input, Argument<O> outputType) { if (!(definition instanceof AWSInvokeRequestDefinition)) { throw new IllegalArgumentException("Function definition must be a AWSInvokeRequestDefinition"); } InvokeRequest invokeRequest = ((AWSInvokeRequestDefinition) definition).getInvokeRequest().clone(); boolean isReactiveType = Publishers.isConvertibleToPublisher(outputType.getType()); if (isReactiveType) { Flowable<Object> invokeFlowable = Flowable.just(invokeRequest) .flatMap(req -> { encodeInput(input, invokeRequest); Future<InvokeResult> future = asyncClient.invokeAsync(req); return Flowable.fromFuture(future, Schedulers.from(ioExecutor)); }) .map(invokeResult -> decodeResult(definition, (Argument<O>) outputType.getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT), invokeResult)); invokeFlowable = invokeFlowable.onErrorResumeNext(throwable -> { return Flowable.error(new FunctionExecutionException("Error executing AWS Lambda [" + definition.getName() + "]: " + throwable.getMessage(), throwable)); }); return ConversionService.SHARED.convert(invokeFlowable, outputType).orElseThrow(() -> new IllegalArgumentException("Unsupported Reactive type: " + outputType)); } else { encodeInput(input, invokeRequest); InvokeResult invokeResult = asyncClient.invoke(invokeRequest); try { return (O) decodeResult(definition, outputType, invokeResult); } catch (Exception e) { throw new FunctionExecutionException("Error executing AWS Lambda [" + definition.getName() + "]: " + e.getMessage(), e); } } }
if (Publishers.isConvertibleToPublisher(javaReturnType) || isFuture) { boolean isSingle = Publishers.isSingle(javaReturnType) || isFuture || context.getValue(Consumes.class, "single", Boolean.class).orElse(false); Argument<?> publisherArgument = returnType.asArgument().getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT); if (publisherArgument.getType() == Event.class) { publisher = sseClient.eventStream( request, publisherArgument.getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT) ); } else { request, returnType.asArgument().getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT), errorType ); } else if (void.class == javaReturnType) {
javaPayloadType = generic.get().getFirstTypeVariable().map(Argument::getType);
private <B> B resolveBeanWithGenericsForField(BeanResolutionContext resolutionContext, FieldInjectionPoint injectionPoint, BeanResolver<B> beanResolver) { BeanResolutionContext.Path path = resolutionContext.getPath(); path.pushFieldResolve(this, injectionPoint); try { Optional<Class> genericType = injectionPoint.getType().isArray() ? Optional.of(injectionPoint.getType().getComponentType()) : injectionPoint.asArgument().getFirstTypeVariable().map(Argument::getType); Qualifier qualifier = resolveQualifier(resolutionContext, injectionPoint); @SuppressWarnings("unchecked") B bean = (B) beanResolver.resolveBean(genericType.orElse(injectionPoint.getType()), qualifier); path.pop(); return bean; } catch (NoSuchBeanException e) { throw new DependencyInjectionException(resolutionContext, injectionPoint, e); } }
private <B> B resolveBeanWithGenericsForField(BeanResolutionContext resolutionContext, FieldInjectionPoint injectionPoint, BeanResolver<B> beanResolver) { BeanResolutionContext.Path path = resolutionContext.getPath(); path.pushFieldResolve(this, injectionPoint); try { Optional<Class> genericType = injectionPoint.getType().isArray() ? Optional.of(injectionPoint.getType().getComponentType()) : injectionPoint.asArgument().getFirstTypeVariable().map(Argument::getType); Qualifier qualifier = resolveQualifier(resolutionContext, injectionPoint); @SuppressWarnings("unchecked") B bean = (B) beanResolver.resolveBean(genericType.orElse(injectionPoint.getType()), qualifier); path.pop(); return bean; } catch (NoSuchBeanException e) { throw new DependencyInjectionException(resolutionContext, injectionPoint, e); } }
Optional<B> existing = getBody(); final boolean isOptional = argument.getType() == Optional.class; final Argument finalArgument = isOptional ? argument.getFirstTypeVariable().orElse(argument) : argument; Optional<T> converted; if (existing.isPresent()) {
if (rawBodyType != null && !HttpStatus.class.isAssignableFrom(rawBodyType)) { if (HttpResponse.class.isAssignableFrom(bodyType.getType())) { Optional<Argument<?>> responseBodyType = bodyType.getFirstTypeVariable(); if (responseBodyType.isPresent()) { Argument<B> finalResponseBodyType = (Argument<B>) responseBodyType.get();
if (rawBodyType != null && !HttpStatus.class.isAssignableFrom(rawBodyType)) { if (HttpResponse.class.isAssignableFrom(bodyType.getType())) { Optional<Argument<?>> responseBodyType = bodyType.getFirstTypeVariable(); if (responseBodyType.isPresent()) { Argument<B> finalResponseBodyType = (Argument<B>) responseBodyType.get();
Class argumentType; if (argument.getType() == Optional.class) { argumentType = argument.getFirstTypeVariable().orElse(argument).getType(); } else { argumentType = argument.getType();
if (Publishers.isConvertibleToPublisher(javaReturnType) || isFuture) { boolean isSingle = Publishers.isSingle(javaReturnType) || isFuture || context.getValue(Consumes.class, "single", Boolean.class).orElse(false); Argument<?> publisherArgument = returnType.asArgument().getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT); if (publisherArgument.getType() == Event.class) { publisher = sseClient.eventStream( request, publisherArgument.getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT) ); } else { request, returnType.asArgument().getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT), errorType ); } else if (void.class == javaReturnType) {
if (Publishers.isConvertibleToPublisher(javaReturnType) || isFuture) { boolean isSingle = Publishers.isSingle(javaReturnType) || isFuture || context.getValue(Consumes.class, "single", Boolean.class).orElse(false); Argument<?> publisherArgument = returnType.asArgument().getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT); if (publisherArgument.getType() == Event.class) { publisher = sseClient.eventStream( request, publisherArgument.getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT) ); } else { request, returnType.asArgument().getFirstTypeVariable().orElse(Argument.OBJECT_ARGUMENT), errorType ); } else if (void.class == javaReturnType) {