use of io.protostuff.runtime.FieldSchema in project incubator-servicecomb-java-chassis by apache.
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);
}
use of io.protostuff.runtime.FieldSchema in project incubator-servicecomb-java-chassis by apache.
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);
}
use of io.protostuff.runtime.FieldSchema in project incubator-servicecomb-java-chassis by apache.
the class MessageReadSchema method createFieldMap.
private void createFieldMap() {
DeserializerSchemaManager deserializerSchemaManager = protoMapper.getDeserializerSchemaManager();
BeanDescriptor beanDescriptor = protoMapper.getBeanDescriptorManager().getOrCreateBeanDescriptor(javaType);
List<FieldSchema<T>> fieldSchemas = new ArrayList<>();
for (PropertyDescriptor propertyDescriptor : beanDescriptor.getPropertyDescriptors().values()) {
Field protoField = message.getField(propertyDescriptor.getName());
if (protoField == null) {
LOGGER.info("java field {}:{} not exist in proto message {}, ignore it.", beanDescriptor.getJavaType().getRawClass().getName(), propertyDescriptor.getName(), message.getCanonicalName());
continue;
}
if (propertyDescriptor.getSetter() == null) {
LOGGER.info("no setter for java field {}:{} in proto message {}, ignore it.", beanDescriptor.getJavaType().getRawClass().getName(), propertyDescriptor.getName(), message.getCanonicalName());
continue;
}
FieldSchema<T> fieldSchema = deserializerSchemaManager.createSchemaField(protoField, propertyDescriptor);
fieldSchemas.add(fieldSchema);
}
this.fieldMap = FieldMapEx.createFieldMap(fieldSchemas);
}
use of io.protostuff.runtime.FieldSchema in project incubator-servicecomb-java-chassis by apache.
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);
}
use of io.protostuff.runtime.FieldSchema in project java-chassis by ServiceComb.
the class MessageReadSchema method createFieldMap.
private void createFieldMap() {
DeserializerSchemaManager deserializerSchemaManager = protoMapper.getDeserializerSchemaManager();
BeanDescriptor beanDescriptor = protoMapper.getBeanDescriptorManager().getOrCreateBeanDescriptor(javaType);
List<FieldSchema<T>> fieldSchemas = new ArrayList<>();
for (PropertyDescriptor propertyDescriptor : beanDescriptor.getPropertyDescriptors().values()) {
Field protoField = message.getField(propertyDescriptor.getName());
if (protoField == null) {
LOGGER.info("java field {}:{} not exist in proto message {}, ignore it.", beanDescriptor.getJavaType().getRawClass().getName(), propertyDescriptor.getName(), message.getCanonicalName());
continue;
}
if (propertyDescriptor.getSetter() == null) {
LOGGER.info("no setter for java field {}:{} in proto message {}, ignore it.", beanDescriptor.getJavaType().getRawClass().getName(), propertyDescriptor.getName(), message.getCanonicalName());
continue;
}
FieldSchema<T> fieldSchema = deserializerSchemaManager.createSchemaField(protoField, propertyDescriptor);
fieldSchemas.add(fieldSchema);
}
this.fieldMap = FieldMapEx.createFieldMap(fieldSchemas);
}
Aggregations