本文整理了Java中feign.Util.resolveLastTypeParameter()
方法的一些代码示例,展示了Util.resolveLastTypeParameter()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Util.resolveLastTypeParameter()
方法的具体详情如下:
包路径:feign.Util
类名称:Util
方法名:resolveLastTypeParameter
[英]Resolves the last type parameter of the parameterized supertype, based on the genericContext, into its upper bounds.
Implementation copied from retrofit.RestMethodInfo.
[中]基于genericContext将参数化超类型的最后一个类型参数解析为其上限。
实施复制自改造。RestMethodInfo。
代码示例来源:origin: kptfh/feign-reactive
public static Type getBodyActualType(Type bodyType) {
return ofNullable(bodyType).map(type -> {
if (type instanceof ParameterizedType) {
Class<?> bodyClass = (Class<?>) ((ParameterizedType) type).getRawType();
if (Publisher.class.isAssignableFrom(bodyClass)) {
return resolveLastTypeParameter(bodyType, bodyClass);
}
else {
return type;
}
}
else {
return type;
}
}).orElse(null);
}
代码示例来源:origin: io.github.openfeign/feign-gson
/**
* Registers type adapters by implicit type. Adds one to read numbers in a {@code Map<String,
* Object>} as Integers.
*/
static Gson create(Iterable<TypeAdapter<?>> adapters) {
GsonBuilder builder = new GsonBuilder().setPrettyPrinting();
builder.registerTypeAdapter(new TypeToken<Map<String, Object>>() {}.getType(),
new DoubleToIntMapTypeAdapter());
for (TypeAdapter<?> adapter : adapters) {
Type type = resolveLastTypeParameter(adapter.getClass(), TypeAdapter.class);
builder.registerTypeAdapter(type, adapter);
}
return builder.create();
}
}
代码示例来源:origin: io.github.reactivefeign/feign-reactive-core
private ParameterizedTypeReference<Object> getBodyActualType(Type bodyType) {
return ofNullable(bodyType).map(type -> {
if (type instanceof ParameterizedType) {
Class<?> returnBodyType = (Class<?>) ((ParameterizedType) type)
.getRawType();
if ((returnBodyType).isAssignableFrom(Publisher.class)) {
return ParameterizedTypeReference
.forType(resolveLastTypeParameter(bodyType, returnBodyType));
}
else {
return ParameterizedTypeReference.forType(type);
}
}
else {
return ParameterizedTypeReference.forType(type);
}
}).orElse(null);
}
代码示例来源:origin: kptfh/feign-reactive
public static Type returnActualType(MethodMetadata methodMetadata) {
return resolveLastTypeParameter(methodMetadata.returnType(), returnPublisherType(methodMetadata));
}
代码示例来源:origin: io.github.openfeign/feign-hystrix
@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;
}
}
代码示例来源:origin: kptfh/feign-reactive
public static WebReactiveHttpClient webClient(MethodMetadata methodMetadata, WebClient webClient) {
final Type returnType = methodMetadata.returnType();
Type returnPublisherType = ((ParameterizedType) returnType).getRawType();
ParameterizedTypeReference<Object> returnActualType = ParameterizedTypeReference.forType(
resolveLastTypeParameter(returnType, (Class<?>) returnPublisherType));
ParameterizedTypeReference<Object> bodyActualType = ofNullable(
getBodyActualType(methodMetadata.bodyType()))
.map(type -> ParameterizedTypeReference.forType(type))
.orElse(null);
return new WebReactiveHttpClient(webClient,
bodyActualType, returnPublisherType, returnActualType);
}
代码示例来源:origin: OpenFeign/feign-vertx
@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;
}
}
代码示例来源:origin: kptfh/feign-reactive
public static WebReactiveHttpClient webClient(MethodMetadata methodMetadata, WebClient webClient) {
final Type returnType = methodMetadata.returnType();
Type returnPublisherType = ((ParameterizedType) returnType).getRawType();
ParameterizedTypeReference<Object> returnActualType = ParameterizedTypeReference.forType(
resolveLastTypeParameter(returnType, (Class<?>) returnPublisherType));
ParameterizedTypeReference<Object> bodyActualType = ofNullable(
getBodyActualType(methodMetadata.bodyType()))
.map(type -> ParameterizedTypeReference.forType(type))
.orElse(null);
return new WebReactiveHttpClient(webClient,
bodyActualType, rx2ToReactor(returnPublisherType), returnActualType);
}
代码示例来源:origin: kptfh/feign-reactive
public static JettyReactiveHttpClient jettyClient(
MethodMetadata methodMetadata,
HttpClient httpClient,
JsonFactory jsonFactory, ObjectMapper objectMapper) {
final Type returnType = methodMetadata.returnType();
Class returnPublisherType = (Class)((ParameterizedType) returnType).getRawType();
Class returnActualType = getClass(resolveLastTypeParameter(returnType, returnPublisherType));
Class bodyActualType = getClass(getBodyActualType(methodMetadata.bodyType()));
return new JettyReactiveHttpClient(httpClient,
bodyActualType, returnPublisherType, returnActualType,
jsonFactory,
objectMapper.writerFor(bodyActualType),
objectMapper.readerFor(returnActualType));
}
代码示例来源:origin: io.github.reactivefeign/feign-reactive-core
public WebReactiveHttpClient(MethodMetadata methodMetadata, WebClient webClient,
ReactiveHttpRequestInterceptor requestInterceptor,
ReactiveStatusHandler statusHandler, boolean decode404) {
this.webClient = webClient;
this.metadata = methodMetadata;
this.requestInterceptor = requestInterceptor;
this.statusHandler = statusHandler;
this.decode404 = decode404;
this.logger = new Logger();
this.methodTag = methodMetadata.configKey().substring(0,
methodMetadata.configKey().indexOf('('));
Type bodyType = methodMetadata.bodyType();
bodyActualType = getBodyActualType(bodyType);
final Type returnType = methodMetadata.returnType();
returnPublisherType = ((ParameterizedType) returnType).getRawType();
returnActualType = ParameterizedTypeReference.forType(
resolveLastTypeParameter(returnType, (Class<?>) returnPublisherType));
}
代码示例来源:origin: kptfh/feign-reactive
RestTemplateFakeReactiveHttpClient(MethodMetadata methodMetadata,
RestTemplate restTemplate,
boolean acceptGzip) {
this.restTemplate = restTemplate;
this.acceptGzip = acceptGzip;
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(mapper);
restTemplate.getMessageConverters().add(0, converter);
final Type returnType = methodMetadata.returnType();
returnPublisherType = ((ParameterizedType) returnType).getRawType();
returnActualType = forType(
resolveLastTypeParameter(returnType, (Class<?>) returnPublisherType));
}
代码示例来源:origin: com.playtika.reactivefeign/feign-reactor-jetty
public static JettyReactiveHttpClient jettyClient(
MethodMetadata methodMetadata,
HttpClient httpClient,
JsonFactory jsonFactory, ObjectMapper objectMapper) {
final Type returnType = methodMetadata.returnType();
Class returnPublisherType = (Class)((ParameterizedType) returnType).getRawType();
Type returnActualType = resolveLastTypeParameter(returnType, returnPublisherType);
Type bodyActualType = getBodyActualType(methodMetadata.bodyType());
ObjectWriter bodyWriter = bodyActualType != null
? objectMapper.writerFor(objectMapper.constructType(bodyActualType)) : null;
ObjectReader responseReader = objectMapper.readerFor(objectMapper.constructType(returnActualType));
return new JettyReactiveHttpClient(httpClient,
getClass(bodyActualType), returnPublisherType, getClass(returnActualType),
jsonFactory, bodyWriter, responseReader);
}
代码示例来源:origin: com.playtika.reactivefeign/feign-reactor-java11
public static Java11ReactiveHttpClient jettyClient(
MethodMetadata methodMetadata,
HttpClient httpClient,
JsonFactory jsonFactory, ObjectMapper objectMapper) {
final Type returnType = methodMetadata.returnType();
Class returnPublisherType = (Class)((ParameterizedType) returnType).getRawType();
Type returnActualType = resolveLastTypeParameter(returnType, returnPublisherType);
Type bodyActualType = getBodyActualType(methodMetadata.bodyType());
ObjectWriter bodyWriter = bodyActualType != null
? objectMapper.writerFor(objectMapper.constructType(bodyActualType)) : null;
ObjectReader responseReader = objectMapper.readerFor(objectMapper.constructType(returnActualType));
return new Java11ReactiveHttpClient(httpClient,
getClass(bodyActualType), returnPublisherType, getClass(returnActualType),
jsonFactory, bodyWriter, responseReader);
}
内容来源于网络,如有侵权,请联系作者删除!