Java 类com.fasterxml.jackson.annotation.JsonTypeInfo.As 实例源码

项目:org.ops4j.ramler    文件:PojoGeneratingApiVisitor.java   
private void addJsonTypeInfo(JDefinedClass klass, ObjectTypeDeclaration type) {
    if (!context.getConfig().isJacksonTypeInfo()) {
        return;
    }
    if (type.discriminator() == null) {
        return;
    }
    List<String> derivedTypes = context.getApiModel().findDerivedTypes(type.name());
    if (derivedTypes.isEmpty()) {
        return;
    }
    JAnnotationUse typeInfo = klass.annotate(JsonTypeInfo.class);
    typeInfo.param("use", Id.NAME);
    typeInfo.param("include", As.EXISTING_PROPERTY);
    typeInfo.param("property", type.discriminator());

    JAnnotationUse subTypes = klass.annotate(JsonSubTypes.class);
    JAnnotationArrayMember typeArray = subTypes.paramArray(VALUE);

    for (String derivedType : derivedTypes) {
        JDefinedClass subtype = pkg._getClass(derivedType);
        typeArray.annotate(Type.class).param(VALUE, subtype);
    }
}
项目:gwt-jackson    文件:AbstractBeanJsonCreator.java   
/**
 * Build the code to initialize a {@link TypeSerializationInfo} or {@link TypeDeserializationInfo}.
 *
 * @param typeInfo the type information obtained through the {@link JsonTypeInfo} annotation
 * @return the code built
 */
protected final CodeBlock generateTypeInfo( BeanTypeInfo typeInfo ) {

    Class type;
    ImmutableMap<JClassType, String> mapTypeToMetadata;
    if ( isSerializer() ) {
        type = TypeSerializationInfo.class;
        mapTypeToMetadata = typeInfo.getMapTypeToSerializationMetadata();
    } else {
        type = TypeDeserializationInfo.class;
        mapTypeToMetadata = typeInfo.getMapTypeToDeserializationMetadata();
    }

    CodeBlock.Builder builder = CodeBlock.builder()
            .add( "new $T($T.$L, $S)", type, As.class, typeInfo.getInclude(), typeInfo.getPropertyName() )
            .indent()
            .indent();

    for ( Entry<JClassType, String> entry : mapTypeToMetadata.entrySet() ) {
        builder.add( "\n.addTypeInfo($T.class, $S)", rawName( entry.getKey() ), entry.getValue() );
    }

    return builder.unindent().unindent().build();
}
项目:gwt-jackson    文件:BeanProcessor.java   
/**
 * Process the properties of the bean to find additionnal informations like @JsonValue.
 *
 * @param configuration the configuration
 * @param logger the logger
 * @param typeOracle the oracle
 * @param beanInfo the previous bean information
 * @param properties the properties of the bean
 * @return the new informations about the bean and its properties
 */
public static BeanInfo processProperties( RebindConfiguration configuration, TreeLogger logger, JacksonTypeOracle typeOracle,
                                          BeanInfo beanInfo, PropertiesContainer properties ) {
    if ( !properties.getValuePropertyInfo().isPresent() && !properties.getAnyGetterPropertyInfo().isPresent() && !properties
            .getAnySetterPropertyInfo().isPresent() ) {
        return beanInfo;
    }

    BeanInfoBuilder builder = new BeanInfoBuilder( beanInfo );
    builder.setValuePropertyInfo( properties.getValuePropertyInfo() );

    if ( properties.getValuePropertyInfo().isPresent() && beanInfo.getTypeInfo().isPresent() && As.PROPERTY.equals( beanInfo
            .getTypeInfo().get().getInclude() ) ) {
        // if the bean has type info on property with @JsonValue, we change it to WRAPPER_ARRAY because the value may not be an object
        BeanTypeInfo typeInfo = beanInfo.getTypeInfo().get();
        builder.setTypeInfo( Optional.of( new BeanTypeInfo( typeInfo.getUse(), As.WRAPPER_ARRAY, typeInfo
                .getPropertyName(), typeInfo.getMapTypeToSerializationMetadata(), typeInfo.getMapTypeToDeserializationMetadata() ) ) );
    }

    builder.setAnyGetterPropertyInfo( properties.getAnyGetterPropertyInfo() );
    builder.setAnySetterPropertyInfo( properties.getAnySetterPropertyInfo() );

    return builder.build();
}
项目:CityPower-Build-Sample    文件:CacheConfig.java   
private Jackson2JsonRedisSerializer jsonRedisSerializer(JavaType javaType)
{
    Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(javaType);
    ObjectMapper mapper = new ObjectMapper();
    mapper.enableDefaultTyping();
    mapper.enableDefaultTyping(DefaultTyping.NON_FINAL, As.PROPERTY);

    mapper.findAndRegisterModules();
    mapper.registerModule(new Jackson2HalModule());
    mapper.setHandlerInstantiator(new Jackson2HalModule.HalHandlerInstantiator(new DefaultRelProvider(), null, null));        
    jackson2JsonRedisSerializer.setObjectMapper(mapper);        
    return jackson2JsonRedisSerializer;
}
项目:QuizUpWinner    文件:StdTypeResolverBuilder.java   
public StdTypeResolverBuilder inclusion(JsonTypeInfo.As paramAs)
{
  if (paramAs == null)
    throw new IllegalArgumentException("includeAs can not be null");
  this._includeAs = paramAs;
  return this;
}
项目:QuizUpWinner    文件:JacksonAnnotationIntrospector.java   
protected TypeResolverBuilder<?> _findTypeResolver(MapperConfig<?> paramMapperConfig, Annotated paramAnnotated, JavaType paramJavaType)
{
  JsonTypeInfo localJsonTypeInfo = (JsonTypeInfo)paramAnnotated.getAnnotation(JsonTypeInfo.class);
  JsonTypeResolver localJsonTypeResolver = (JsonTypeResolver)paramAnnotated.getAnnotation(JsonTypeResolver.class);
  Object localObject;
  if (localJsonTypeResolver != null)
  {
    if (localJsonTypeInfo == null)
      return null;
    localObject = paramMapperConfig.typeResolverBuilderInstance(paramAnnotated, localJsonTypeResolver.value());
  }
  else
  {
    if (localJsonTypeInfo == null)
      return null;
    if (localJsonTypeInfo.use() == JsonTypeInfo.Id.NONE)
      return _constructNoTypeResolverBuilder();
    localObject = _constructStdTypeResolverBuilder();
  }
  JsonTypeIdResolver localJsonTypeIdResolver = (JsonTypeIdResolver)paramAnnotated.getAnnotation(JsonTypeIdResolver.class);
  TypeIdResolver localTypeIdResolver1;
  if (localJsonTypeIdResolver == null)
    localTypeIdResolver1 = null;
  else
    localTypeIdResolver1 = paramMapperConfig.typeIdResolverInstance(paramAnnotated, localJsonTypeIdResolver.value());
  TypeIdResolver localTypeIdResolver2 = localTypeIdResolver1;
  if (localTypeIdResolver1 != null)
    localTypeIdResolver2.init(paramJavaType);
  TypeResolverBuilder localTypeResolverBuilder1 = ((TypeResolverBuilder)localObject).init(localJsonTypeInfo.use(), localTypeIdResolver2);
  JsonTypeInfo.As localAs1 = localJsonTypeInfo.include();
  JsonTypeInfo.As localAs2 = localAs1;
  if ((localAs1 == JsonTypeInfo.As.EXTERNAL_PROPERTY) && ((paramAnnotated instanceof AnnotatedClass)))
    localAs2 = JsonTypeInfo.As.PROPERTY;
  TypeResolverBuilder localTypeResolverBuilder2 = localTypeResolverBuilder1.inclusion(localAs2).typeProperty(localJsonTypeInfo.property());
  Class localClass = localJsonTypeInfo.defaultImpl();
  if (localClass != JsonTypeInfo.None.class)
    localTypeResolverBuilder2 = localTypeResolverBuilder2.defaultImpl(localClass);
  return localTypeResolverBuilder2.typeIdVisibility(localJsonTypeInfo.visible());
}
项目:simple-spring-memcached    文件:JsonObjectMapper.java   
public JsonObjectMapper() {
    registerModule(module);

    configure(MapperFeature.REQUIRE_SETTERS_FOR_GETTERS, true);
    configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
    enableDefaultTyping(DefaultTyping.NON_FINAL, As.WRAPPER_OBJECT);

    typer = new ClassAliasTypeResolverBuilder(DefaultTyping.NON_FINAL);
    setDefaultTyping(typer.inclusion(As.WRAPPER_OBJECT));
}
项目:gwt-jackson    文件:BeanProcessor.java   
/**
 * <p>processType</p>
 *
 * @param logger a {@link com.google.gwt.core.ext.TreeLogger} object.
 * @param typeOracle a {@link com.github.nmorel.gwtjackson.rebind.JacksonTypeOracle} object.
 * @param configuration a {@link com.github.nmorel.gwtjackson.rebind.RebindConfiguration} object.
 * @param typeOracle a {@link com.github.nmorel.gwtjackson.rebind.JacksonTypeOracle} object.
 * @param type a {@link com.google.gwt.core.ext.typeinfo.JClassType} object.
 * @param jsonTypeInfo a {@link com.google.gwt.thirdparty.guava.common.base.Optional} object.
 * @param propertySubTypes a {@link com.google.gwt.thirdparty.guava.common.base.Optional} object.
 * @return a {@link com.google.gwt.thirdparty.guava.common.base.Optional} object.
 * @throws com.google.gwt.core.ext.UnableToCompleteException if any.
 */
public static Optional<BeanTypeInfo> processType( TreeLogger logger, JacksonTypeOracle typeOracle, RebindConfiguration configuration,
                                                  JClassType type, Optional<JsonTypeInfo> jsonTypeInfo, Optional<JsonSubTypes>
        propertySubTypes ) throws UnableToCompleteException {

    if ( !jsonTypeInfo.isPresent() ) {
        jsonTypeInfo = findFirstEncounteredAnnotationsOnAllHierarchy( configuration, type, JsonTypeInfo.class );
        if ( !jsonTypeInfo.isPresent() ) {
            return Optional.absent();
        }
    }

    Id use = jsonTypeInfo.get().use();
    As include = jsonTypeInfo.get().include();
    String propertyName = jsonTypeInfo.get().property().isEmpty() ? jsonTypeInfo.get().use().getDefaultPropertyName() : jsonTypeInfo
            .get().property();

    Optional<JsonSubTypes> typeSubTypes = findFirstEncounteredAnnotationsOnAllHierarchy( configuration, type, JsonSubTypes.class );

    // TODO we could do better, we actually extract metadata twice for a lot of classes
    ImmutableMap<JClassType, String> classToSerializationMetadata = extractMetadata( logger, configuration, type, jsonTypeInfo,
            propertySubTypes, typeSubTypes, CreatorUtils
                    .filterSubtypesForSerialization( logger, configuration, type ) );
    ImmutableMap<JClassType, String> classToDeserializationMetadata = extractMetadata( logger, configuration, type, jsonTypeInfo,
            propertySubTypes, typeSubTypes, CreatorUtils
                    .filterSubtypesForDeserialization( logger, configuration, type ) );

    return Optional.of(
            new BeanTypeInfo( use, include, propertyName, classToSerializationMetadata, classToDeserializationMetadata ) );
}
项目:gwt-jackson    文件:BeanTypeInfo.java   
BeanTypeInfo( Id use, As include, String propertyName, ImmutableMap<JClassType, String> mapTypeToSerializationMetadata,
              ImmutableMap<JClassType, String> mapTypeToDeserializationMetadata ) {
    this.use = use;
    this.include = include;
    this.propertyName = propertyName;
    this.mapTypeToSerializationMetadata = mapTypeToSerializationMetadata;
    this.mapTypeToDeserializationMetadata = mapTypeToDeserializationMetadata;
}
项目:antioch    文件:SearchResult.java   
@JsonTypeInfo(use = Id.NAME, include = As.EXISTING_PROPERTY)
public AntiochQuery getQuery() {
  return query;
}
项目:QuizUpWinner    文件:AsPropertyTypeDeserializer.java   
public JsonTypeInfo.As getTypeInclusion()
{
  return JsonTypeInfo.As.PROPERTY;
}
项目:QuizUpWinner    文件:AsArrayTypeDeserializer.java   
public JsonTypeInfo.As getTypeInclusion()
{
  return JsonTypeInfo.As.WRAPPER_ARRAY;
}
项目:QuizUpWinner    文件:AsWrapperTypeDeserializer.java   
public JsonTypeInfo.As getTypeInclusion()
{
  return JsonTypeInfo.As.WRAPPER_OBJECT;
}
项目:QuizUpWinner    文件:AsWrapperTypeSerializer.java   
public JsonTypeInfo.As getTypeInclusion()
{
  return JsonTypeInfo.As.WRAPPER_OBJECT;
}
项目:QuizUpWinner    文件:AsPropertyTypeSerializer.java   
public JsonTypeInfo.As getTypeInclusion()
{
  return JsonTypeInfo.As.PROPERTY;
}
项目:QuizUpWinner    文件:AsArrayTypeSerializer.java   
public JsonTypeInfo.As getTypeInclusion()
{
  return JsonTypeInfo.As.WRAPPER_ARRAY;
}
项目:QuizUpWinner    文件:AsExternalTypeDeserializer.java   
public JsonTypeInfo.As getTypeInclusion()
{
  return JsonTypeInfo.As.EXTERNAL_PROPERTY;
}
项目:QuizUpWinner    文件:AsExternalTypeSerializer.java   
public JsonTypeInfo.As getTypeInclusion()
{
  return JsonTypeInfo.As.EXTERNAL_PROPERTY;
}
项目:coala    文件:Identifiable.java   
/** @return the identifier */
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=As.PROPERTY, property="class")
ID getID();
项目:joyplus-tv    文件:AsPropertyTypeDeserializer.java   
@Override
public As getTypeInclusion() {
    return As.PROPERTY;
}
项目:joyplus-tv    文件:AsArrayTypeDeserializer.java   
@Override
public As getTypeInclusion() {
    return As.WRAPPER_ARRAY;
}
项目:joyplus-tv    文件:AsWrapperTypeDeserializer.java   
@Override
public As getTypeInclusion() {
    return As.WRAPPER_OBJECT;
}
项目:joyplus-tv    文件:AsWrapperTypeSerializer.java   
@Override
public As getTypeInclusion() { return As.WRAPPER_OBJECT; }
项目:joyplus-tv    文件:AsPropertyTypeSerializer.java   
@Override
public As getTypeInclusion() { return As.PROPERTY; }
项目:joyplus-tv    文件:AsArrayTypeSerializer.java   
@Override
public As getTypeInclusion() { return As.WRAPPER_ARRAY; }
项目:joyplus-tv    文件:AsExternalTypeDeserializer.java   
@Override
public As getTypeInclusion() {
    return As.EXTERNAL_PROPERTY;
}
项目:joyplus-tv    文件:AsExternalTypeSerializer.java   
@Override
public As getTypeInclusion() { return As.EXTERNAL_PROPERTY; }
项目:gwt-jackson-apt    文件:TypeSerializationInfo.java   
/**
 * <p>Constructor for TypeSerializationInfo.</p>
 *
 * @param include      a {@link com.fasterxml.jackson.annotation.JsonTypeInfo.As} object.
 * @param propertyName a {@link String} object.
 */
public TypeSerializationInfo(As include, String propertyName) {
    this.include = include;
    this.propertyName = propertyName;
    this.typeClassToInfo = new HashMap<Class<? extends T>, String>();
}
项目:gwt-jackson-apt    文件:TypeSerializationInfo.java   
/**
 * <p>Getter for the field <code>include</code>.</p>
 *
 * @return a {@link com.fasterxml.jackson.annotation.JsonTypeInfo.As} object.
 */
public As getInclude() {
    return include;
}
项目:gwt-jackson-apt    文件:TypeDeserializationInfo.java   
/**
 * <p>Constructor for TypeDeserializationInfo.</p>
 *
 * @param include      a {@link As} object.
 * @param propertyName a {@link String} object.
 */
public TypeDeserializationInfo(As include, String propertyName) {
    this.include = include;
    this.propertyName = propertyName;
    this.typeInfoToClass = new HashMap<String, Class<? extends T>>();
}
项目:gwt-jackson-apt    文件:TypeDeserializationInfo.java   
/**
 * <p>Getter for the field <code>include</code>.</p>
 *
 * @return a {@link As} object.
 */
public As getInclude() {
    return include;
}
项目:gwt-jackson    文件:TypeSerializationInfo.java   
/**
 * <p>Constructor for TypeSerializationInfo.</p>
 *
 * @param include a {@link com.fasterxml.jackson.annotation.JsonTypeInfo.As} object.
 * @param propertyName a {@link java.lang.String} object.
 */
public TypeSerializationInfo( As include, String propertyName ) {
    this.include = include;
    this.propertyName = propertyName;
    this.typeClassToInfo = new HashMap<Class<? extends T>, String>();
}
项目:gwt-jackson    文件:TypeSerializationInfo.java   
/**
 * <p>Getter for the field <code>include</code>.</p>
 *
 * @return a {@link com.fasterxml.jackson.annotation.JsonTypeInfo.As} object.
 */
public As getInclude() {
    return include;
}
项目:gwt-jackson    文件:TypeDeserializationInfo.java   
/**
 * <p>Constructor for TypeDeserializationInfo.</p>
 *
 * @param include a {@link com.fasterxml.jackson.annotation.JsonTypeInfo.As} object.
 * @param propertyName a {@link java.lang.String} object.
 */
public TypeDeserializationInfo( As include, String propertyName ) {
    this.include = include;
    this.propertyName = propertyName;
    this.typeInfoToClass = new HashMap<String, Class<? extends T>>();
}
项目:gwt-jackson    文件:TypeDeserializationInfo.java   
/**
 * <p>Getter for the field <code>include</code>.</p>
 *
 * @return a {@link com.fasterxml.jackson.annotation.JsonTypeInfo.As} object.
 */
public As getInclude() {
    return include;
}
项目:gwt-jackson    文件:BeanTypeInfo.java   
/**
 * <p>Getter for the field <code>include</code>.</p>
 *
 * @return a {@link com.fasterxml.jackson.annotation.JsonTypeInfo.As} object.
 */
public As getInclude() {
    return include;
}
项目:joyplus-tv    文件:TypeDeserializer.java   
/**
 * Accessor for type information inclusion method
 * that deserializer uses; indicates how type information
 * is (expected to be) embedded in JSON input.
 */
public abstract As getTypeInclusion();
项目:joyplus-tv    文件:TypeResolverBuilder.java   
/**
 * Method for specifying mechanism to use for including type metadata
 * in JSON.
 * If not explicitly called, setting defaults to
 * {@link As#PROPERTY}.
 * 
 * @param includeAs Mechanism used for including type metadata in JSON
 * 
 * @return Resulting builder instance (usually this builder,
 *   but not necessarily)
 */
public T inclusion(As includeAs);
项目:QuizUpWinner    文件:TypeDeserializer.java   
public abstract JsonTypeInfo.As getTypeInclusion();
项目:QuizUpWinner    文件:TypeSerializer.java   
public abstract JsonTypeInfo.As getTypeInclusion();