• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java Transformer类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中com.google.api.server.spi.config.Transformer的典型用法代码示例。如果您正苦于以下问题:Java Transformer类的具体用法?Java Transformer怎么用?Java Transformer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



Transformer类属于com.google.api.server.spi.config包,在下文中一共展示了Transformer类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: validateParameterSerializers

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
private void validateParameterSerializers(ApiParameterConfig config,
    List<Class<? extends Transformer<?, ?>>> serializers, TypeToken<?> parameterType)
    throws ApiParameterConfigInvalidException {
  if (serializers.isEmpty()) {
    return;
  }

  if (serializers.size() > 1) {
    throw new MultipleTransformersException(config, serializers);
  }

  TypeToken<?> sourceType = Serializers.getSourceType(serializers.get(0));
  TypeToken<?> serializedType = Serializers.getTargetType(serializers.get(0));

  if (sourceType == null || serializedType == null) {
    throw new NoTransformerInterfaceException(config, serializers.get(0));
  }

  if (!sourceType.isSupertypeOf(parameterType)) {
    throw new WrongTransformerTypeException(config, serializers.get(0), parameterType,
        sourceType);
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:24,代码来源:ApiConfigValidator.java


示例2: getJsonDeserializer

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
private static <TFrom, TTo> JsonDeserializer<TFrom> getJsonDeserializer(
    @Nullable final Transformer<TFrom, TTo> serializer) {
  if (serializer == null) {
    return null;
  }
  final TypeReference<TTo> serializedType = typeReferenceOf(serializer);
  if (serializer instanceof ResourceTransformer) {
    @SuppressWarnings("unchecked")
    final ResourceTransformer<TFrom> resourceSerializer = (ResourceTransformer<TFrom>) serializer;
    return new ResourceDeserializer<>(resourceSerializer);
  } else {
    return new JsonDeserializer<TFrom>() {
      @Override
      public TFrom deserialize(JsonParser jp, DeserializationContext ctxt)
          throws IOException {
        TTo deserialized = jp.readValueAs(serializedType);
        return serializer.transformFrom(deserialized);
      }
    };
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:22,代码来源:ApiAnnotationIntrospector.java


示例3: testMissingSerializerInterface_repeatedItemSerializer

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
@SuppressWarnings("unchecked")  // Deliberate bad cast for testing.
public void testMissingSerializerInterface_repeatedItemSerializer() throws Exception {
  final class TestSerializer {}

  config.getApiClassConfig().getMethods()
      .get(methodToEndpointMethod(TestEndpoint.class.getMethod("getResultNoParams")))
      .addParameter("param", null, false, null, TypeToken.of(Integer[].class))
      .setRepeatedItemSerializer(
          (Class<? extends Transformer<?, ?>>) (Class<?>) TestSerializer.class);

  try {
    validator.validate(config);
    fail("Expected NoSerializerInterfaceException.");
  } catch (NoTransformerInterfaceException expected) {
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:17,代码来源:ApiConfigValidatorTest.java


示例4: testInstantiate_typeConstructor

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
@Test
public void testInstantiate_typeConstructor() {
  Transformer<List<?>, Type> serializer;
  serializer =
      Serializers.instantiate(ListToTypeSerializer.class, TypeToken.of(ImmutableList.class));
  assertEquals(ImmutableList.class, serializer.transformTo(ImmutableList.of()));
  Type typeWithGeneric = new TypeToken<List<?>>() {}.getType();
  serializer = Serializers.instantiate(ListToTypeSerializer.class, TypeToken.of(typeWithGeneric));
  assertEquals(typeWithGeneric, serializer.transformTo(ImmutableList.of()));
  assertEquals(ImmutableList.of(typeWithGeneric), serializer.transformFrom(List.class));
  try {
    Serializers.instantiate(ListToTypeSerializer.class, TypeToken.of(Collection.class));
    fail("Shouldn't be able to instantiate with Collection");
  } catch (IllegalArgumentException e) {
    // expected
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:18,代码来源:SerializersTest.java


示例5: readEndpointClass

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
@SuppressWarnings("unchecked")
private boolean readEndpointClass(ApiConfig config, Class<?> endpointClass, Annotation api,
    Annotation apiClass, @Nullable Class<?> cycleCheck) throws NoSuchMethodException,
        IllegalAccessException, InvocationTargetException, CyclicApiInheritanceException {
  cycleCheck = checkForInheritanceCycle(endpointClass, cycleCheck);

  boolean hasAnnotation = api != null;
  Class<?> inheritanceSource = determineInheritanceSource(endpointClass);

  if (inheritanceSource != null) {
    Annotation superApi = getDeclaredAnnotation(inheritanceSource, annotationTypes.get("Api"));
    Annotation superApiClass =
        getDeclaredAnnotation(inheritanceSource, annotationTypes.get("ApiClass"));

    hasAnnotation |=
        readEndpointClass(config, inheritanceSource, superApi, superApiClass, cycleCheck);
  }

  if (api != null) {
    readApi(new ApiAnnotationConfig(config), api);
    readApiAuth(new ApiAuthAnnotationConfig(config.getAuthConfig()),
        (Annotation) getAnnotationProperty(api, "auth"));
    readApiFrontendLimits(new ApiFrontendLimitsAnnotationConfig(config.getFrontendLimitsConfig()),
        (Annotation) getAnnotationProperty(api, "frontendLimits"));
    readApiCacheControl(new ApiCacheControlAnnotationConfig(config.getCacheControlConfig()),
        (Annotation) getAnnotationProperty(api, "cacheControl"));
    readApiNamespace(new ApiNamespaceAnnotationConfig(config.getNamespaceConfig()),
        (Annotation) getAnnotationProperty(api, "namespace"));
    readSerializers(config.getSerializationConfig(),
        (Class<? extends Transformer<?, ?>>[]) getAnnotationProperty(api, "transformers"));
  }

  if (apiClass != null) {
    readApiClass(new ApiClassAnnotationConfig(config.getApiClassConfig()), apiClass);
  }

  return hasAnnotation;
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:39,代码来源:ApiConfigAnnotationReader.java


示例6: readMethodRequestParameter

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
private void readMethodRequestParameter(ApiMethodConfig methodConfig, Annotation parameterName,
    Annotation description, Annotation nullable, Annotation defaultValue, TypeToken<?> type)
    throws IllegalArgumentException, SecurityException, IllegalAccessException, 
    InvocationTargetException, NoSuchMethodException {
  String parameterNameString = null;
  if (parameterName != null) {
    parameterNameString = getAnnotationProperty(parameterName, "value");
  }
  String descriptionString = null;
  if (description != null) {
    descriptionString = getAnnotationProperty(description, "value");
  }
  String defaultValueString = null;
  if (defaultValue != null) {
    defaultValueString = getAnnotationProperty(defaultValue, "value");
  }

  ApiParameterConfig parameterConfig =
      methodConfig.addParameter(parameterNameString, descriptionString, nullable != null, 
          defaultValueString, type);

  Annotation apiSerializer =
      type.getRawType().getAnnotation(annotationTypes.get("ApiTransformer"));
  if (apiSerializer != null) {
    Class<? extends Transformer<?, ?>> serializer =
        getAnnotationProperty(apiSerializer, "value");
    parameterConfig.setSerializer(serializer);
  }

  if (parameterConfig.isRepeated()) {
    TypeToken<?> repeatedItemType = parameterConfig.getRepeatedItemType();
    apiSerializer =
        repeatedItemType.getRawType().getAnnotation(annotationTypes.get("ApiTransformer"));
    if (apiSerializer != null) {
      Class<? extends Transformer<?, ?>> repeatedItemSerializer =
          getAnnotationProperty(apiSerializer, "value");
      parameterConfig.setRepeatedItemSerializer(repeatedItemSerializer);
    }
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:41,代码来源:ApiConfigAnnotationReader.java


示例7: getJsonSerializer

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
@Nullable
private static <TFrom, TTo> JsonSerializer<TFrom> getJsonSerializer(
    @Nullable final Transformer<TFrom, TTo> serializer) {
  if (serializer == null) {
    return null;
  }
  return new JsonSerializer<TFrom>() {
    @Override
    public void serialize(TFrom value, JsonGenerator jgen, SerializerProvider provider)
        throws IOException {
      jgen.writeObject(serializer.transformTo(value));
    }
  };
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:15,代码来源:ApiAnnotationIntrospector.java


示例8: getSchemaType

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
/**
 * Gets the schema type for a type. The schema type is identical to the original type if
 * there is no matching {@link com.google.api.server.spi.config.ApiTransformer} annotation for
 * the type. If there is a {@link com.google.api.server.spi.config.ResourceTransformer} installed,
 * the source type determines schema, not the output map.
 */
public static TypeToken<?> getSchemaType(TypeToken<?> type, ApiConfig config) {
  Type rawType = type.getType();
  if (rawType instanceof Class || rawType instanceof ParameterizedType) {
    List<Class<? extends Transformer<?, ?>>> serializers =
        Serializers.getSerializerClasses(type, config.getSerializationConfig());

    if (!serializers.isEmpty() &&
        !(ResourceTransformer.class.isAssignableFrom(serializers.get(0)))) {
      TypeToken<?> sourceType = Serializers.getSourceType(serializers.get(0));
      TypeToken<?> serializedType = Serializers.getTargetType(serializers.get(0));

      Preconditions.checkArgument(
          sourceType.isSupertypeOf(type),
          "Serializer specified for %s, but only serializes for %s: %s",
          type,
          sourceType,
          serializers.get(0));
      Preconditions.checkArgument(
          serializedType != null,
          "Couldn't find Serializer interface in serializer for %s: %s",
          type,
          serializers.get(0));
      return serializedType;
    }
  }
  return type;
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:34,代码来源:ApiAnnotationIntrospector.java


示例9: findSerializerInstance

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
@Nullable
private Transformer<?, ?> findSerializerInstance(Annotated a) {
  if (a instanceof AnnotatedClass) {
    AnnotatedClass clazz = (AnnotatedClass) a;
    List<Class<? extends Transformer<?, ?>>> serializerClasses =
        Serializers.getSerializerClasses(clazz.getRawType(), config);
    if (!serializerClasses.isEmpty()) {
      return Serializers.instantiate(serializerClasses.get(0), TypeToken.of(a.getRawType()));
    }
  }
  return null;
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:13,代码来源:ApiAnnotationIntrospector.java


示例10: typeReferenceOf

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
private static <T> TypeReference<T> typeReferenceOf(Transformer<?, T> serializer) {
  @SuppressWarnings("unchecked")
  Class<? extends Transformer<?, T>> serializerClass =
      (Class<? extends Transformer<?, T>>) serializer.getClass();
  final TypeToken<?> type = Serializers.getTargetType(serializerClass);
  return new TypeReference<T> (){
    @Override
    public Type getType() {
      return type.getType();
    }
  };
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:13,代码来源:ApiAnnotationIntrospector.java


示例11: getSimpleName

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
/**
 * Gets a simple name for a type that's suitable for use as a schema name. This will resolve any
 * transformations on the type, which may affect the type name.
 */
public static String getSimpleName(TypeToken<?> type, ApiSerializationConfig config) {
  if (type == null) {
    return null;
  }
  TypeToken<?> itemType = getArrayItemType(type);
  if (itemType != null) {
    return getSimpleName(itemType, config) + "Collection";
  } else if (type.getType() instanceof ParameterizedType) {
    Class<?> clazz = type.getRawType();
    StringBuilder builder = new StringBuilder();
    builder.append(clazz.getSimpleName());
    for (Type typeArg : clazz.getTypeParameters()) {
      builder.append('_');
      builder.append(getSimpleName(type.resolveType(typeArg), config));
    }
    return builder.toString();
  } else {
    Class<? extends Transformer<?, ?>> serializerClass = Iterables.getOnlyElement(
        Serializers.getSerializerClasses(type, config), null);
    if (serializerClass != null && ResourceTransformer.class.isAssignableFrom(serializerClass)) {
      @SuppressWarnings("unchecked")
      ResourceTransformer<?> resourceSerializer =
          (ResourceTransformer<?>) Serializers.instantiate(serializerClass, type);
      ResourceSchema resourceSchema = resourceSerializer.getResourceSchema();
      if (resourceSchema != null && resourceSchema.getName() != null) {
        return resourceSchema.getName();
      }
    }
    String collectionName = FieldType.fromType(type).getCollectionName();
    return collectionName != null ? collectionName : type.getRawType().getSimpleName();
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:37,代码来源:Types.java


示例12: getSerializers

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
/**
 * @return The serializer to be used on the parameter.
 */
public List<Class<? extends Transformer<?, ?>>> getSerializers() {
  if (serializer != null) {
    return Collections.<Class<? extends Transformer<?, ?>>>singletonList(serializer);
  } else {
    return tryFindDefaultSerializers(getType());
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:11,代码来源:ApiParameterConfig.java


示例13: getRepeatedItemSerializers

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
/**
 * If the serialized type of the parameter is a repeated type, returns the serializer to be used
 * on each individual item.  Otherwise returns {@code null}.
 */
public List<Class<? extends Transformer<?, ?>>> getRepeatedItemSerializers() {
  if (repeatedItemSerializer != null) {
    return Collections.<Class<? extends Transformer<?, ?>>>singletonList(repeatedItemSerializer);
  } else {
    return tryFindDefaultSerializers(Types.getArrayItemType(getSchemaBaseType()));
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:12,代码来源:ApiParameterConfig.java


示例14: getSchemaBaseType

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
/**
 * Gets the type that acts as the source for schema generation. In the case of resource
 * serialization, the schema is based on the type being serialized. Simple serializers just
 * convert from one type to another, in which case the schema would be derived from the target
 * type instead.
 */
public TypeToken<?> getSchemaBaseType() {
  List<Class<? extends Transformer<?, ?>>> serializers = getSerializers();
  if (serializers.isEmpty()) {
    return getType();
  } else if (ResourceTransformer.class.isAssignableFrom(serializers.get(0))) {
    return getType();
  } else {
    return Serializers.getTargetType(serializers.get(0));
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:17,代码来源:ApiParameterConfig.java


示例15: getRepeatedItemSerializedType

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
/**
 * If the serialized type of the parameter is a repeated type, returns the serialized individual
 * item type.  Otherwise returns {@code null}.
 */
public TypeToken<?> getRepeatedItemSerializedType() {
  List<Class<? extends Transformer<?, ?>>> serializers = getRepeatedItemSerializers();
  if (serializers.isEmpty()) {
    return getRepeatedItemType();
  } else {
    return Serializers.getTargetType(serializers.get(0));
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:13,代码来源:ApiParameterConfig.java


示例16: getSerializerClasses

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
public static List<Class<? extends Transformer<?, ?>>> getSerializerClasses(
    TypeToken<?> type, @Nullable final ApiSerializationConfig config) {
  if (type == null) {
    return Collections.emptyList();
  }

  List<Class<? extends Transformer<?, ?>>> allParentSerializers = Lists.newArrayList();
  List<TypeToken<?>> serializedTypes = Lists.newArrayList();
  for (TypeToken<?> typeToken : type.getTypes()) {
    ApiTransformer apiSerialization = typeToken.getRawType().getAnnotation(ApiTransformer.class);
    if (isSupertypeOf(typeToken, serializedTypes)) {
      continue;
    }
    if (apiSerialization != null) {
      allParentSerializers.add(apiSerialization.value());
      serializedTypes.add(typeToken);
    } else if (config != null) {
      ApiSerializationConfig.SerializerConfig serializerConfig =
          config.getSerializerConfig(typeToken);
      if (serializerConfig != null) {
        allParentSerializers.add(serializerConfig.getSerializer());
        serializedTypes.add(typeToken);
      }
    }
  }

  return allParentSerializers;
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:29,代码来源:Serializers.java


示例17: getSourceType

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
/**
 * Gets the {@code Serializer} source type for a class. This resolves placeholders in generics.
 *
 * @param clazz a class, possibly implementing {@code Transformer}
 * @return the resolved source type, null if clazz is not a serializer
 */
@Nullable
public static TypeToken<?> getSourceType(Class<? extends Transformer<?, ?>> clazz) {
  try {
    TypeToken<?> token = TypeToken.of(clazz);
    return token.resolveType(
        Transformer.class.getMethod("transformFrom", Object.class).getGenericReturnType());
  } catch (NoSuchMethodException e) {
    return null;
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:17,代码来源:Serializers.java


示例18: getTargetType

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
/**
 * Gets the {@code Serializer} target type for a class. This resolves placeholders in generics.
 *
 * @param clazz a class, possibly implementing {@code Transformer}
 * @return the resolved target type, null if clazz is not a serializer
 */
@Nullable
public static TypeToken<?> getTargetType(Class<? extends Transformer<?, ?>> clazz) {
  try {
    TypeToken<?> token = TypeToken.of(clazz);
    return token.resolveType(
        Transformer.class.getMethod("transformTo", Object.class).getGenericReturnType());
  } catch (NoSuchMethodException e) {
    return null;
  }
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:17,代码来源:Serializers.java


示例19: getResolvedType

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
@Nullable
private static ParameterizedType getResolvedType(
    @Nullable Class<? extends Transformer<?, ?>> clazz) {
  if (clazz == null || !Transformer.class.isAssignableFrom(clazz)) {
      return null;
  }
  for (TypeToken<?> token : TypeToken.of(clazz).getTypes().interfaces()) {
    if (token.getRawType().equals(Transformer.class)) {
      Type tokenType = token.getType();
      return tokenType instanceof ParameterizedType ? (ParameterizedType) tokenType : null;
    }
  }
  return null;
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:15,代码来源:Serializers.java


示例20: getResourceSchemaImpl

import com.google.api.server.spi.config.Transformer; //导入依赖的package包/类
@Nullable
private <T> ResourceSchema getResourceSchemaImpl(TypeToken<T> type, ApiConfig config) {
  Class<? super T> clazz = type.getRawType();
  List<Class<? extends Transformer<?, ?>>> serializerClasses =
      Serializers.getSerializerClasses(type, config.getSerializationConfig());
  if (!serializerClasses.isEmpty() &&
      ResourceTransformer.class.isAssignableFrom(serializerClasses.get(0))) {
    @SuppressWarnings("unchecked")
    ResourceTransformer<T> resourceSerializer =
        (ResourceTransformer<T>) Serializers.instantiate(serializerClasses.get(0), type);
    return resourceSerializer.getResourceSchema();
  }
  return null;
}
 
开发者ID:cloudendpoints,项目名称:endpoints-java,代码行数:15,代码来源:AbstractResourceSchemaProvider.java



注:本文中的com.google.api.server.spi.config.Transformer类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java RIOptimisticProvider类代码示例发布时间:2022-05-22
下一篇:
Java Metrics类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap