Search in sources :

Example 6 with FieldSchema

use of io.protostuff.runtime.FieldSchema in project java-chassis by ServiceComb.

the class SchemaManager method createMapFields.

// normal message write from or read to a map
public FieldMapEx<Map<Object, Object>> createMapFields(Message message) {
    List<FieldSchema<Map<Object, Object>>> fieldSchemas = new ArrayList<>();
    for (Field protoField : message.getFields()) {
        PropertyDescriptor propertyDescriptor = new PropertyDescriptor();
        propertyDescriptor.setJavaType(ProtoConst.OBJECT_TYPE);
        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) PropertyDescriptor(org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor) FieldSchema(io.protostuff.runtime.FieldSchema) ArrayList(java.util.ArrayList) Map(java.util.Map)

Example 7 with FieldSchema

use of io.protostuff.runtime.FieldSchema 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 8 with FieldSchema

use of io.protostuff.runtime.FieldSchema 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)

Aggregations

Field (io.protostuff.compiler.model.Field)8 FieldSchema (io.protostuff.runtime.FieldSchema)8 ArrayList (java.util.ArrayList)8 PropertyDescriptor (org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor)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