Example usage for com.fasterxml.jackson.databind JavaType getKeyType

List of usage examples for com.fasterxml.jackson.databind JavaType getKeyType

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind JavaType getKeyType.

Prototype

public JavaType getKeyType() 

Source Link

Usage

From source file:org.springframework.amqp.support.converter.DefaultJackson2JavaTypeMapper.java

public JavaType toJavaType(MessageProperties properties) {
    JavaType classType = getClassIdType(retrieveHeader(properties, getClassIdFieldName()));
    if (!classType.isContainerType() || classType.isArrayType()) {
        return classType;
    }/*from  w w  w. j  a v  a2s. com*/

    JavaType contentClassType = getClassIdType(retrieveHeader(properties, getContentClassIdFieldName()));
    if (classType.getKeyType() == null) {
        return CollectionType.construct(classType.getRawClass(), contentClassType);
    }

    JavaType keyClassType = getClassIdType(retrieveHeader(properties, getKeyClassIdFieldName()));
    return MapType.construct(classType.getRawClass(), keyClassType, contentClassType);

}

From source file:org.springframework.amqp.support.converter.DefaultJackson2JavaTypeMapper.java

public void fromJavaType(JavaType javaType, MessageProperties properties) {
    addHeader(properties, getClassIdFieldName(), javaType.getRawClass());

    if (javaType.isContainerType() && !javaType.isArrayType()) {
        addHeader(properties, getContentClassIdFieldName(), javaType.getContentType().getRawClass());
    }//from  ww w  . ja va2  s .c  o  m

    if (javaType.getKeyType() != null) {
        addHeader(properties, getKeyClassIdFieldName(), javaType.getKeyType().getRawClass());
    }
}

From source file:org.candlepin.swagger.CandlepinSwaggerModelConverter.java

public Property resolveProperty(Type type, ModelConverterContext context, Annotation[] annotations,
        Iterator<ModelConverter> next) {
    JavaType propType = null;

    /**//from  www.ja v  a2s. c om
     * See java doc of NestedComplexType. This unwrapping makes sure that a
     * real type of field is passed to _mapper
     */
    if (type instanceof NestedComplexType) {
        propType = pMapper.constructType(((NestedComplexType) type).getOriginalType());
    } else {
        propType = pMapper.constructType(type);
    }

    log.debug("resolveProperty {}", propType);

    Property property = null;
    if (propType.isContainerType()) {
        JavaType keyType = propType.getKeyType();
        JavaType valueType = propType.getContentType();
        if (keyType != null && valueType != null) {
            property = new MapProperty()
                    .additionalProperties(context.resolveProperty(valueType, new Annotation[] {}));
        } else if (valueType != null) {
            ArrayProperty arrayProperty = new ArrayProperty()
                    .items(context.resolveProperty(valueType, new Annotation[] {}));
            if (pIsSetType(propType.getRawClass())) {
                arrayProperty.setUniqueItems(true);
            }
            property = arrayProperty;
        }
    } else {
        property = PrimitiveType.createProperty(propType);
    }

    if (property == null) {
        if (propType.isEnumType()) {
            property = new StringProperty();
            pAddEnumProps(propType.getRawClass(), property);
        } else if (pIsOptionalType(propType)) {
            property = context.resolveProperty(propType.containedType(0), null);
        } else {
            // complex type
            Model innerModel = context.resolve(type);
            if (innerModel instanceof ModelImpl) {
                ModelImpl mi = (ModelImpl) innerModel;
                property = new RefProperty(
                        StringUtils.isNotEmpty(mi.getReference()) ? mi.getReference() : mi.getName());
            }
        }
    }

    return property;
}