protected MultiValueMap<String, String> parameters(Object[] argv) { MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>(); methodMetadata.template().queries() .forEach((key, value) -> parameters.addAll(key, (List) value)); if (methodMetadata.formParams() != null) { methodMetadata.formParams() .forEach(param -> parameters.add(param, "{" + param + "}")); } if (methodMetadata.queryMapIndex() != null) { ((Map<String, String>) argv[methodMetadata.queryMapIndex()]) .forEach((key, value) -> parameters.add(key, value)); } return parameters; }
@Override protected RequestTemplate resolve( final Object[] argv, final RequestTemplate mutable, final Map<String, Object> variables) { final Map<String, Object> formVariables = new HashMap<>(); for (final Map.Entry<String, Object> entry : variables.entrySet()) { if (metadata.formParams().contains(entry.getKey())) { formVariables.put(entry.getKey(), entry.getValue()); } } try { encoder.encode(formVariables, Encoder.MAP_STRING_WILDCARD, mutable); } catch (final EncodeException encodeException) { throw encodeException; } catch (final RuntimeException unexpectedException) { throw new EncodeException(unexpectedException.getMessage(), unexpectedException); } return super.resolve(argv, mutable, variables); } }
@Override protected RequestTemplate resolve(Object[] argv, RequestTemplate mutable, Map<String, Object> variables) { Map<String, Object> formVariables = new LinkedHashMap<String, Object>(); for (Entry<String, Object> entry : variables.entrySet()) { if (metadata.formParams().contains(entry.getKey())) { formVariables.put(entry.getKey(), entry.getValue()); } } try { encoder.encode(formVariables, Encoder.MAP_STRING_WILDCARD, mutable); } catch (EncodeException e) { throw e; } catch (RuntimeException e) { throw new EncodeException(e.getMessage(), e); } return super.resolve(argv, mutable, variables); } }
public Map<String, MethodHandler> apply(Target key) { List<MethodMetadata> metadata = contract.parseAndValidatateMetadata(key.type()); Map<String, MethodHandler> result = new LinkedHashMap<String, MethodHandler>(); for (MethodMetadata md : metadata) { BuildTemplateByResolvingArgs buildTemplate; if (!md.formParams().isEmpty() && md.template().bodyTemplate() == null) { buildTemplate = new BuildFormEncodedTemplateFromArgs(md, encoder); } else if (md.bodyIndex() != null) { buildTemplate = new BuildEncodedTemplateFromArgs(md, encoder); } else { buildTemplate = new BuildTemplateByResolvingArgs(md); } result.put(md.configKey(), factory.create(key, md, buildTemplate, options, decoder, errorDecoder)); } return result; } }
public PublisherClientMethodHandler(Target target, MethodMetadata methodMetadata, PublisherHttpClient publisherClient) { this.target = checkNotNull(target, "target must be not null"); this.methodMetadata = checkNotNull(methodMetadata, "methodMetadata must be not null"); this.publisherClient = checkNotNull(publisherClient, "client must be not null"); this.pathExpander = buildExpandFunction(methodMetadata.template().url()); this.headerExpanders = buildExpanders(methodMetadata.template().headers()); this.queriesAll = new HashMap<>(methodMetadata.template().queries()); if (methodMetadata.formParams() != null) { methodMetadata.formParams() .forEach(param -> add(queriesAll, param, "{" + param + "}")); } this.queryExpanders = buildExpanders(queriesAll); }
private Map<String, MethodHandler> apply(final Target key) { final List<MethodMetadata> metadatas = contract.parseAndValidatateMetadata(key.type()); final Map<String, MethodHandler> result = new HashMap<>(); for (final MethodMetadata metadata : metadatas) { BuildTemplateByResolvingArgs buildTemplate; if (!metadata.formParams().isEmpty() && metadata.template().bodyTemplate() == null) { buildTemplate = new BuildTemplateByResolvingArgs .BuildFormEncodedTemplateFromArgs(metadata, encoder); } else if (metadata.bodyIndex() != null) { buildTemplate = new BuildTemplateByResolvingArgs .BuildEncodedTemplateFromArgs(metadata, encoder); } else { buildTemplate = new BuildTemplateByResolvingArgs(metadata); } result.put(metadata.configKey(), factory.create( key, metadata, buildTemplate, decoder, errorDecoder)); } return result; } }
@Override public boolean processArgument(AnnotatedParameterContext context, Annotation annotation, Method method) { String name = ANNOTATION.cast(annotation).value(); checkState(emptyToNull(name) != null, "PathVariable annotation was empty on param %s.", context.getParameterIndex()); context.setParameterName(name); MethodMetadata data = context.getMethodMetadata(); String varName = '{' + name + '}'; if (!data.template().url().contains(varName) && !searchMapValues(data.template().queries(), varName) && !searchMapValues(data.template().headers(), varName)) { data.formParams().add(name); } return true; }
@Override public boolean processArgument(AnnotatedParameterContext context, Annotation annotation, Method method) { String name = ANNOTATION.cast(annotation).value(); checkState(emptyToNull(name) != null, "PathVariable annotation was empty on param %s.", context.getParameterIndex()); context.setParameterName(name); MethodMetadata data = context.getMethodMetadata(); String varName = '{' + name + '}'; if (!data.template().url().contains(varName) && !searchMapValues(data.template().queries(), varName) && !searchMapValues(data.template().headers(), varName)) { data.formParams().add(name); } return true; }
@Override public boolean processArgument(AnnotatedParameterContext context, Annotation annotation, Method method) { String name = ANNOTATION.cast(annotation).value(); checkState(emptyToNull(name) != null, "PathVariable annotation was empty on param %s.", context.getParameterIndex()); context.setParameterName(name); MethodMetadata data = context.getMethodMetadata(); String varName = '{' + name + '}'; if (!data.template().url().contains(varName) && !searchMapValues(data.template().queries(), varName) && !searchMapValues(data.template().headers(), varName)) { data.formParams().add(name); } return true; }
data.urlIndex(i); } else if (!isHttpAnnotation) { checkState(data.formParams().isEmpty(), "Body parameters cannot be used with form parameters."); checkState(data.bodyIndex() == null, "Method has too many Body parameters: %s", method);
checkState(emptyToNull(name) != null, "FormParam.value() was empty on parameter %s", paramIndex); data.formParams().add(name); nameParam(data, name, paramIndex); isHttpParam = true;
!searchMapValuesContainsExact(data.template().queries(), varName) && !searchMapValuesContainsSubstring(data.template().headers(), varName)) { data.formParams().add(name);