feign.Util.resolveLastTypeParameter()方法的使用及代码示例

x33g5p2x  于2022-02-01 转载在 其他  
字(9.3k)|赞(0)|评价(0)|浏览(187)

本文整理了Java中feign.Util.resolveLastTypeParameter()方法的一些代码示例,展示了Util.resolveLastTypeParameter()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Util.resolveLastTypeParameter()方法的具体详情如下:
包路径:feign.Util
类名称:Util
方法名:resolveLastTypeParameter

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

  1. public static Type getBodyActualType(Type bodyType) {
  2. return ofNullable(bodyType).map(type -> {
  3. if (type instanceof ParameterizedType) {
  4. Class<?> bodyClass = (Class<?>) ((ParameterizedType) type).getRawType();
  5. if (Publisher.class.isAssignableFrom(bodyClass)) {
  6. return resolveLastTypeParameter(bodyType, bodyClass);
  7. }
  8. else {
  9. return type;
  10. }
  11. }
  12. else {
  13. return type;
  14. }
  15. }).orElse(null);
  16. }

代码示例来源:origin: io.github.openfeign/feign-gson

  1. /**
  2. * Registers type adapters by implicit type. Adds one to read numbers in a {@code Map<String,
  3. * Object>} as Integers.
  4. */
  5. static Gson create(Iterable<TypeAdapter<?>> adapters) {
  6. GsonBuilder builder = new GsonBuilder().setPrettyPrinting();
  7. builder.registerTypeAdapter(new TypeToken<Map<String, Object>>() {}.getType(),
  8. new DoubleToIntMapTypeAdapter());
  9. for (TypeAdapter<?> adapter : adapters) {
  10. Type type = resolveLastTypeParameter(adapter.getClass(), TypeAdapter.class);
  11. builder.registerTypeAdapter(type, adapter);
  12. }
  13. return builder.create();
  14. }
  15. }

代码示例来源:origin: io.github.reactivefeign/feign-reactive-core

  1. private ParameterizedTypeReference<Object> getBodyActualType(Type bodyType) {
  2. return ofNullable(bodyType).map(type -> {
  3. if (type instanceof ParameterizedType) {
  4. Class<?> returnBodyType = (Class<?>) ((ParameterizedType) type)
  5. .getRawType();
  6. if ((returnBodyType).isAssignableFrom(Publisher.class)) {
  7. return ParameterizedTypeReference
  8. .forType(resolveLastTypeParameter(bodyType, returnBodyType));
  9. }
  10. else {
  11. return ParameterizedTypeReference.forType(type);
  12. }
  13. }
  14. else {
  15. return ParameterizedTypeReference.forType(type);
  16. }
  17. }).orElse(null);
  18. }

代码示例来源:origin: kptfh/feign-reactive

  1. public static Type returnActualType(MethodMetadata methodMetadata) {
  2. return resolveLastTypeParameter(methodMetadata.returnType(), returnPublisherType(methodMetadata));
  3. }

代码示例来源:origin: io.github.openfeign/feign-hystrix

  1. @Override
  2. public List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType) {
  3. List<MethodMetadata> metadatas = this.delegate.parseAndValidatateMetadata(targetType);
  4. for (MethodMetadata metadata : metadatas) {
  5. Type type = metadata.returnType();
  6. if (type instanceof ParameterizedType
  7. && ((ParameterizedType) type).getRawType().equals(HystrixCommand.class)) {
  8. Type actualType = resolveLastTypeParameter(type, HystrixCommand.class);
  9. metadata.returnType(actualType);
  10. } else if (type instanceof ParameterizedType
  11. && ((ParameterizedType) type).getRawType().equals(Observable.class)) {
  12. Type actualType = resolveLastTypeParameter(type, Observable.class);
  13. metadata.returnType(actualType);
  14. } else if (type instanceof ParameterizedType
  15. && ((ParameterizedType) type).getRawType().equals(Single.class)) {
  16. Type actualType = resolveLastTypeParameter(type, Single.class);
  17. metadata.returnType(actualType);
  18. } else if (type instanceof ParameterizedType
  19. && ((ParameterizedType) type).getRawType().equals(Completable.class)) {
  20. metadata.returnType(void.class);
  21. }
  22. }
  23. return metadatas;
  24. }
  25. }

代码示例来源:origin: kptfh/feign-reactive

  1. public static WebReactiveHttpClient webClient(MethodMetadata methodMetadata, WebClient webClient) {
  2. final Type returnType = methodMetadata.returnType();
  3. Type returnPublisherType = ((ParameterizedType) returnType).getRawType();
  4. ParameterizedTypeReference<Object> returnActualType = ParameterizedTypeReference.forType(
  5. resolveLastTypeParameter(returnType, (Class<?>) returnPublisherType));
  6. ParameterizedTypeReference<Object> bodyActualType = ofNullable(
  7. getBodyActualType(methodMetadata.bodyType()))
  8. .map(type -> ParameterizedTypeReference.forType(type))
  9. .orElse(null);
  10. return new WebReactiveHttpClient(webClient,
  11. bodyActualType, returnPublisherType, returnActualType);
  12. }

代码示例来源:origin: OpenFeign/feign-vertx

  1. @Override
  2. public List<MethodMetadata> parseAndValidatateMetadata(final Class<?> targetType) {
  3. checkNotNull(targetType, "Argument targetType must be not null");
  4. final List<MethodMetadata> metadatas = delegate.parseAndValidatateMetadata(targetType);
  5. for (final MethodMetadata metadata : metadatas) {
  6. final Type type = metadata.returnType();
  7. if (type instanceof ParameterizedType
  8. && ((ParameterizedType) type).getRawType().equals(Future.class)) {
  9. final Type actualType = resolveLastTypeParameter(type, Future.class);
  10. metadata.returnType(actualType);
  11. } else {
  12. throw new IllegalStateException(String.format(
  13. "Method %s of contract %s doesn't returns io.vertx.core.Future",
  14. metadata.configKey(), targetType.getSimpleName()));
  15. }
  16. }
  17. return metadatas;
  18. }
  19. }

代码示例来源:origin: kptfh/feign-reactive

  1. public static WebReactiveHttpClient webClient(MethodMetadata methodMetadata, WebClient webClient) {
  2. final Type returnType = methodMetadata.returnType();
  3. Type returnPublisherType = ((ParameterizedType) returnType).getRawType();
  4. ParameterizedTypeReference<Object> returnActualType = ParameterizedTypeReference.forType(
  5. resolveLastTypeParameter(returnType, (Class<?>) returnPublisherType));
  6. ParameterizedTypeReference<Object> bodyActualType = ofNullable(
  7. getBodyActualType(methodMetadata.bodyType()))
  8. .map(type -> ParameterizedTypeReference.forType(type))
  9. .orElse(null);
  10. return new WebReactiveHttpClient(webClient,
  11. bodyActualType, rx2ToReactor(returnPublisherType), returnActualType);
  12. }

代码示例来源:origin: kptfh/feign-reactive

  1. public static JettyReactiveHttpClient jettyClient(
  2. MethodMetadata methodMetadata,
  3. HttpClient httpClient,
  4. JsonFactory jsonFactory, ObjectMapper objectMapper) {
  5. final Type returnType = methodMetadata.returnType();
  6. Class returnPublisherType = (Class)((ParameterizedType) returnType).getRawType();
  7. Class returnActualType = getClass(resolveLastTypeParameter(returnType, returnPublisherType));
  8. Class bodyActualType = getClass(getBodyActualType(methodMetadata.bodyType()));
  9. return new JettyReactiveHttpClient(httpClient,
  10. bodyActualType, returnPublisherType, returnActualType,
  11. jsonFactory,
  12. objectMapper.writerFor(bodyActualType),
  13. objectMapper.readerFor(returnActualType));
  14. }

代码示例来源:origin: io.github.reactivefeign/feign-reactive-core

  1. public WebReactiveHttpClient(MethodMetadata methodMetadata, WebClient webClient,
  2. ReactiveHttpRequestInterceptor requestInterceptor,
  3. ReactiveStatusHandler statusHandler, boolean decode404) {
  4. this.webClient = webClient;
  5. this.metadata = methodMetadata;
  6. this.requestInterceptor = requestInterceptor;
  7. this.statusHandler = statusHandler;
  8. this.decode404 = decode404;
  9. this.logger = new Logger();
  10. this.methodTag = methodMetadata.configKey().substring(0,
  11. methodMetadata.configKey().indexOf('('));
  12. Type bodyType = methodMetadata.bodyType();
  13. bodyActualType = getBodyActualType(bodyType);
  14. final Type returnType = methodMetadata.returnType();
  15. returnPublisherType = ((ParameterizedType) returnType).getRawType();
  16. returnActualType = ParameterizedTypeReference.forType(
  17. resolveLastTypeParameter(returnType, (Class<?>) returnPublisherType));
  18. }

代码示例来源:origin: kptfh/feign-reactive

  1. RestTemplateFakeReactiveHttpClient(MethodMetadata methodMetadata,
  2. RestTemplate restTemplate,
  3. boolean acceptGzip) {
  4. this.restTemplate = restTemplate;
  5. this.acceptGzip = acceptGzip;
  6. ObjectMapper mapper = new ObjectMapper();
  7. mapper.registerModule(new JavaTimeModule());
  8. MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
  9. converter.setObjectMapper(mapper);
  10. restTemplate.getMessageConverters().add(0, converter);
  11. final Type returnType = methodMetadata.returnType();
  12. returnPublisherType = ((ParameterizedType) returnType).getRawType();
  13. returnActualType = forType(
  14. resolveLastTypeParameter(returnType, (Class<?>) returnPublisherType));
  15. }

代码示例来源:origin: com.playtika.reactivefeign/feign-reactor-jetty

  1. public static JettyReactiveHttpClient jettyClient(
  2. MethodMetadata methodMetadata,
  3. HttpClient httpClient,
  4. JsonFactory jsonFactory, ObjectMapper objectMapper) {
  5. final Type returnType = methodMetadata.returnType();
  6. Class returnPublisherType = (Class)((ParameterizedType) returnType).getRawType();
  7. Type returnActualType = resolveLastTypeParameter(returnType, returnPublisherType);
  8. Type bodyActualType = getBodyActualType(methodMetadata.bodyType());
  9. ObjectWriter bodyWriter = bodyActualType != null
  10. ? objectMapper.writerFor(objectMapper.constructType(bodyActualType)) : null;
  11. ObjectReader responseReader = objectMapper.readerFor(objectMapper.constructType(returnActualType));
  12. return new JettyReactiveHttpClient(httpClient,
  13. getClass(bodyActualType), returnPublisherType, getClass(returnActualType),
  14. jsonFactory, bodyWriter, responseReader);
  15. }

代码示例来源:origin: com.playtika.reactivefeign/feign-reactor-java11

  1. public static Java11ReactiveHttpClient jettyClient(
  2. MethodMetadata methodMetadata,
  3. HttpClient httpClient,
  4. JsonFactory jsonFactory, ObjectMapper objectMapper) {
  5. final Type returnType = methodMetadata.returnType();
  6. Class returnPublisherType = (Class)((ParameterizedType) returnType).getRawType();
  7. Type returnActualType = resolveLastTypeParameter(returnType, returnPublisherType);
  8. Type bodyActualType = getBodyActualType(methodMetadata.bodyType());
  9. ObjectWriter bodyWriter = bodyActualType != null
  10. ? objectMapper.writerFor(objectMapper.constructType(bodyActualType)) : null;
  11. ObjectReader responseReader = objectMapper.readerFor(objectMapper.constructType(returnActualType));
  12. return new Java11ReactiveHttpClient(httpClient,
  13. getClass(bodyActualType), returnPublisherType, getClass(returnActualType),
  14. jsonFactory, bodyWriter, responseReader);
  15. }

相关文章