Search in sources :

Example 11 with Field

use of io.protostuff.compiler.model.Field in project java-chassis by ServiceComb.

the class SchemaManager method createMapFields.

public FieldMapEx<Map<Object, Object>> createMapFields(Message message, Map<String, Type> types) {
    List<FieldSchema<Map<Object, Object>>> fieldSchemas = new ArrayList<>();
    for (Field protoField : message.getFields()) {
        PropertyDescriptor propertyDescriptor = new PropertyDescriptor();
        JavaType javaType = getParameterType(types, protoField.getName());
        if (javaType.isPrimitive()) {
            javaType = TypeFactory.defaultInstance().constructType(ClassUtils.primitiveToWrapper(javaType.getRawClass()));
        }
        propertyDescriptor.setJavaType(javaType);
        propertyDescriptor.setGetter(new MapGetter<>(protoField.getName()));
        propertyDescriptor.setSetter(new MapSetter<>(protoField.getName()));
        FieldSchema<Map<Object, Object>> fieldSchema = createSchemaField(protoField, propertyDescriptor);
        fieldSchemas.add(fieldSchema);
    }
    return FieldMapEx.createFieldMap(fieldSchemas);
}
Also used : Field(io.protostuff.compiler.model.Field) ProtoUtils.isAnyField(org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils.isAnyField) JavaType(com.fasterxml.jackson.databind.JavaType) PropertyDescriptor(org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor) FieldSchema(io.protostuff.runtime.FieldSchema) ArrayList(java.util.ArrayList) Map(java.util.Map)

Example 12 with Field

use of io.protostuff.compiler.model.Field in project java-chassis by ServiceComb.

the class MessageWriteSchema method createPojoFields.

private FieldMapEx<T> createPojoFields(Type type) {
    SerializerSchemaManager serializerSchemaManager = protoMapper.getSerializerSchemaManager();
    BeanDescriptor beanDescriptor = protoMapper.getBeanDescriptorManager().getOrCreateBeanDescriptor(type);
    List<FieldSchema<T>> fieldSchemas = new ArrayList<>();
    for (Field protoField : message.getFields()) {
        PropertyDescriptor propertyDescriptor = beanDescriptor.getPropertyDescriptors().get(protoField.getName());
        if (propertyDescriptor == null) {
            continue;
        }
        Object getter = propertyDescriptor.getGetter();
        if (getter == null) {
            continue;
        }
        FieldSchema<T> fieldSchema = serializerSchemaManager.createSchemaField(protoField, propertyDescriptor);
        fieldSchemas.add(fieldSchema);
    }
    return FieldMapEx.createFieldMap(fieldSchemas);
}
Also used : Field(io.protostuff.compiler.model.Field) PropertyDescriptor(org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor) BeanDescriptor(org.apache.servicecomb.foundation.protobuf.internal.bean.BeanDescriptor) FieldSchema(io.protostuff.runtime.FieldSchema) ArrayList(java.util.ArrayList)

Example 13 with Field

use of io.protostuff.compiler.model.Field in project java-chassis by ServiceComb.

the class MessageWriteSchema method createPropertyWrapperFields.

private FieldMapEx<T> createPropertyWrapperFields(JavaType javaType) {
    Field protoField = message.getField(1);
    PropertyDescriptor propertyDescriptor = new PropertyDescriptor();
    propertyDescriptor.setName(protoField.getName());
    propertyDescriptor.setJavaType(javaType);
    FieldSchema<T> fieldSchema = protoMapper.getSerializerSchemaManager().createSchemaField(protoField, propertyDescriptor);
    return FieldMapEx.createFieldMap(Arrays.asList(fieldSchema));
}
Also used : Field(io.protostuff.compiler.model.Field) PropertyDescriptor(org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor)

Example 14 with Field

use of io.protostuff.compiler.model.Field in project incubator-servicecomb-java-chassis by apache.

the class MessageWriteSchema method createPropertyWrapperFields.

private FieldMapEx<T> createPropertyWrapperFields(JavaType javaType) {
    Field protoField = message.getField(1);
    PropertyDescriptor propertyDescriptor = new PropertyDescriptor();
    propertyDescriptor.setName(protoField.getName());
    propertyDescriptor.setJavaType(javaType);
    FieldSchema<T> fieldSchema = protoMapper.getSerializerSchemaManager().createSchemaField(protoField, propertyDescriptor);
    return FieldMapEx.createFieldMap(Arrays.asList(fieldSchema));
}
Also used : Field(io.protostuff.compiler.model.Field) PropertyDescriptor(org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor)

Aggregations

Field (io.protostuff.compiler.model.Field)14 PropertyDescriptor (org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor)10 FieldSchema (io.protostuff.runtime.FieldSchema)8 ArrayList (java.util.ArrayList)8 Map (java.util.Map)4 ProtoUtils.isAnyField (org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils.isAnyField)4 BeanDescriptor (org.apache.servicecomb.foundation.protobuf.internal.bean.BeanDescriptor)4 JavaType (com.fasterxml.jackson.databind.JavaType)2 Message (io.protostuff.compiler.model.Message)2