@Override public List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType) { List<MethodMetadata> metadatas = delegate.parseAndValidatateMetadata(targetType); metadatas.forEach(metadata -> metadataMap .put(targetType.getName() + metadata.configKey(), metadata)); return metadatas; }
public List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType) { List<MethodMetadata> metas = this.delegate.parseAndValidatateMetadata(targetType); for (int i = 0; metas != null && i < metas.size(); i++) { MethodMetadata meta = metas.get(i); if (meta.returnType() == void.class) { meta.returnType(Void.class); } } return metas == null ? new ArrayList<MethodMetadata>() : metas; }
@Override public List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType) { List<MethodMetadata> metadatas = delegate.parseAndValidatateMetadata(targetType); metadatas.forEach(metadata -> metadataMap .put(targetType.getName() + metadata.configKey(), metadata)); return metadatas; }
public List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType) { List<MethodMetadata> metas = this.delegate.parseAndValidatateMetadata(targetType); for (int i = 0; i < metas.size(); i++) { MethodMetadata meta = metas.get(i); if (meta.returnType() == void.class) { meta.returnType(Void.class); } } return metas; }
@Override public List<MethodMetadata> parseAndValidatateMetadata(final Class<?> targetType) { final List<MethodMetadata> methodsMetadata = this.delegate.parseAndValidatateMetadata(targetType); for (final MethodMetadata metadata : methodsMetadata) { final Type type = metadata.returnType(); if (!isRx2Type(type)) { throw new IllegalArgumentException(String.format( "Method %s of contract %s doesn't returns rx2 types", metadata.configKey(), targetType.getSimpleName())); } } return methodsMetadata; }
Map<String, MethodHandler> apply(final Target target) { final List<MethodMetadata> metadata = contract .parseAndValidatateMetadata(target.type()); final Map<String, MethodHandler> result = new LinkedHashMap<>(); for (final MethodMetadata md : metadata) { ReactiveMethodHandler methodHandler = factory.create(target, md); result.put(md.configKey(), methodHandler); } return result; } }
@Override public List<MethodMetadata> parseAndValidatateMetadata(final Class<?> targetType) { final List<MethodMetadata> metadatas = this.delegate .parseAndValidatateMetadata(targetType); for (final MethodMetadata metadata : metadatas) { final Type type = metadata.returnType(); if (!isMonoOrFlux(type)) { throw new IllegalArgumentException(String.format( "Method %s of contract %s doesn't returns reactor.core.publisher.Mono or reactor.core.publisher.Flux", metadata.configKey(), targetType.getSimpleName())); } } return metadatas; }
@Override public final List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType) { List<MethodMetadata> mdList = delegate.parseAndValidatateMetadata(targetType); Map<String, MethodMetadata> methodMetadataByConfigKey = new LinkedHashMap<String, MethodMetadata>(); for (MethodMetadata md : mdList) { methodMetadataByConfigKey.put(md.configKey(), md); } for (Method method : targetType.getMethods()) { if (method.getDeclaringClass() == Object.class) { continue; } String configKey = Feign.configKey(targetType, method); MethodMetadata metadata = methodMetadataByConfigKey.get(configKey); if (metadata != null) { processMetadata(targetType, method, metadata); } } return mdList; }
@Override public final List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType) { List<MethodMetadata> mdList = delegate.parseAndValidatateMetadata(targetType); Map<String, MethodMetadata> methodMetadataByConfigKey = new LinkedHashMap<String, MethodMetadata>(); for (MethodMetadata md : mdList) { methodMetadataByConfigKey.put(md.configKey(), md); } for (Method method : targetType.getMethods()) { if (method.getDeclaringClass() == Object.class) { continue; } String configKey = Feign.configKey(targetType, method); MethodMetadata metadata = methodMetadataByConfigKey.get(configKey); if (metadata != null) { processMetadata(targetType, method, metadata); } } return mdList; }
@Override public final List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType) { List<MethodMetadata> mdList = delegate.parseAndValidatateMetadata(targetType); Map<String, MethodMetadata> methodMetadataByConfigKey = new LinkedHashMap<String, MethodMetadata>(); for (MethodMetadata md : mdList) { methodMetadataByConfigKey.put(md.configKey(), md); } for (Method method : targetType.getMethods()) { if (method.getDeclaringClass() == Object.class) { continue; } String configKey = Feign.configKey(targetType, method); MethodMetadata metadata = methodMetadataByConfigKey.get(configKey); if (metadata != null) { processMetadata(targetType, method, metadata); } } return mdList; }
@Override public final List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType) { List<MethodMetadata> mdList = delegate.parseAndValidatateMetadata(targetType); Map<String, MethodMetadata> methodMetadataByConfigKey = new LinkedHashMap<String, MethodMetadata>(); for (MethodMetadata md : mdList) { methodMetadataByConfigKey.put(md.configKey(), md); } for (Method method : targetType.getMethods()) { if (method.getDeclaringClass() == Object.class) { continue; } String configKey = Feign.configKey(targetType, method); MethodMetadata metadata = methodMetadataByConfigKey.get(configKey); if (metadata != null) { processMetadata(targetType, method, metadata); } } return mdList; }
Map<String, MethodHandler> apply(final Target target) { Map<String, MethodMetadata> metadata = contract.parseAndValidatateMetadata(target.type()) .stream() .collect(Collectors.toMap( MethodMetadata::configKey, md -> md )); Map<String, Method> configKeyToMethod = Stream.of(target.type().getMethods()) .collect(Collectors.toMap( method -> Feign.configKey(target.type(), method), method -> method )); final Map<String, MethodHandler> result = new LinkedHashMap<>(); for (final Map.Entry<String, Method> entry : configKeyToMethod.entrySet()) { String configKey = entry.getKey(); MethodMetadata md = metadata.get(configKey); MethodHandler methodHandler = md != null ? factory.create(target, md) : factory.createDefault(entry.getValue()); //isDefault(entry.getValue()) result.put(configKey, methodHandler); } return result; } }
@Override public List<MethodMetadata> parseAndValidatateMetadata(final Class<?> targetType) { checkNotNull(targetType, "Argument targetType must be not null"); final List<MethodMetadata> metadatas = delegate.parseAndValidatateMetadata(targetType); for (final MethodMetadata metadata : metadatas) { final Type type = metadata.returnType(); if (type instanceof ParameterizedType && ((ParameterizedType) type).getRawType().equals(Future.class)) { final Type actualType = resolveLastTypeParameter(type, Future.class); metadata.returnType(actualType); } else { throw new IllegalStateException(String.format( "Method %s of contract %s doesn't returns io.vertx.core.Future", metadata.configKey(), targetType.getSimpleName())); } } return metadatas; } }
@Override public List<MethodMetadata> parseAndValidatateMetadata(final Class<?> targetType) { final List<MethodMetadata> methodsMetadata = this.delegate.parseAndValidatateMetadata(targetType); for (final MethodMetadata metadata : methodsMetadata) { final Type type = metadata.returnType(); if (!isReactorType(type)) { throw new IllegalArgumentException(String.format( "Method %s of contract %s doesn't returns reactor.core.publisher.Mono or reactor.core.publisher.Flux", metadata.configKey(), targetType.getSimpleName())); } if(returnActualType(metadata) == byte[].class || bodyActualType(metadata) == byte[].class){ throw new IllegalArgumentException(String.format( "Method %s of contract %s will cause data to be copied, use ByteBuffer instead", metadata.configKey(), targetType.getSimpleName())); } } return methodsMetadata; }
@Override public List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType) { List<MethodMetadata> metadatas = this.delegate.parseAndValidatateMetadata(targetType); for (MethodMetadata metadata : metadatas) { Type type = metadata.returnType(); if (type instanceof ParameterizedType && ((ParameterizedType) type).getRawType().equals(HystrixCommand.class)) { Type actualType = resolveLastTypeParameter(type, HystrixCommand.class); metadata.returnType(actualType); } else if (type instanceof ParameterizedType && ((ParameterizedType) type).getRawType().equals(Observable.class)) { Type actualType = resolveLastTypeParameter(type, Observable.class); metadata.returnType(actualType); } else if (type instanceof ParameterizedType && ((ParameterizedType) type).getRawType().equals(Single.class)) { Type actualType = resolveLastTypeParameter(type, Single.class); metadata.returnType(actualType); } else if (type instanceof ParameterizedType && ((ParameterizedType) type).getRawType().equals(Completable.class)) { metadata.returnType(void.class); } } return metadatas; } }
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; } }
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; } }