@VisibleForTesting static FieldInfo newFieldInfo(Class<?> parentType, FieldMetaData fieldMetaData) { requireNonNull(fieldMetaData, "fieldMetaData"); final FieldValueMetaData fieldValueMetaData = fieldMetaData.valueMetaData; final TypeSignature typeSignature; if (fieldValueMetaData.isStruct() && fieldValueMetaData.isTypedef() && parentType.getSimpleName().equals(fieldValueMetaData.getTypedefName())) { // Handle the special case where a struct field refers to itself, // where the Thrift compiler handles it as a typedef. typeSignature = TypeSignature.ofNamed(parentType); } else { typeSignature = toTypeSignature(fieldValueMetaData); } return new FieldInfo(fieldMetaData.fieldName, convertRequirement(fieldMetaData.requirementType), typeSignature); }
@VisibleForTesting static FieldInfo newFieldInfo(Class<?> parentType, FieldMetaData fieldMetaData) { requireNonNull(fieldMetaData, "fieldMetaData"); final FieldValueMetaData fieldValueMetaData = fieldMetaData.valueMetaData; final TypeSignature typeSignature; if (fieldValueMetaData.isStruct() && fieldValueMetaData.isTypedef() && parentType.getSimpleName().equals(fieldValueMetaData.getTypedefName())) { // Handle the special case where a struct field refers to itself, // where the Thrift compiler handles it as a typedef. typeSignature = TypeSignature.ofNamed(parentType); } else { typeSignature = toTypeSignature(fieldValueMetaData); } return new FieldInfo(fieldMetaData.fieldName, convertRequirement(fieldMetaData.requirementType), typeSignature); }
@VisibleForTesting static FieldInfo newFieldInfo(Class<?> parentType, FieldMetaData fieldMetaData) { requireNonNull(fieldMetaData, "fieldMetaData"); final FieldValueMetaData fieldValueMetaData = fieldMetaData.valueMetaData; final TypeSignature typeSignature; if (fieldValueMetaData.isStruct() && fieldValueMetaData.isTypedef() && parentType.getSimpleName().equals(fieldValueMetaData.getTypedefName())) { // Handle the special case where a struct field refers to itself, // where the Thrift compiler handles it as a typedef. typeSignature = TypeSignature.ofNamed(parentType); } else { typeSignature = toTypeSignature(fieldValueMetaData); } return new FieldInfo(fieldMetaData.fieldName, convertRequirement(fieldMetaData.requirementType), typeSignature); }
@VisibleForTesting static FieldInfo newFieldInfo(Class<?> parentType, FieldMetaData fieldMetaData) { requireNonNull(fieldMetaData, "fieldMetaData"); final FieldValueMetaData fieldValueMetaData = fieldMetaData.valueMetaData; final TypeSignature typeSignature; if (fieldValueMetaData.isStruct() && fieldValueMetaData.isTypedef() && parentType.getSimpleName().equals(fieldValueMetaData.getTypedefName())) { // Handle the special case where a struct field refers to itself, // where the Thrift compiler handles it as a typedef. typeSignature = TypeSignature.ofNamed(parentType); } else { typeSignature = toTypeSignature(fieldValueMetaData); } return new FieldInfo(fieldMetaData.fieldName, convertRequirement(fieldMetaData.requirementType), typeSignature); }
if (!meta.keyMetaData.isStruct() && !meta.keyMetaData.isContainer()) { Map<Object, Object> childMap = (Map<Object, Object>)value; Map<Object, Object> childEntityMap = Maps.newHashMap(); entity.setFieldValue(f.getKey(), childEntityMap); if (!meta.keyMetaData.isStruct() && !meta.keyMetaData.isContainer()) { for (Entry<Object, Object> entry : childMap.entrySet()) { Object childKey = valueForBasicType(entry.getKey(), meta.keyMetaData.type);
if (!meta.keyMetaData.isStruct() && !meta.keyMetaData.isContainer()) { Map<Object, Object> childMap = (Map<Object, Object>)value; Map<Object, Object> childEntityMap = Maps.newHashMap(); entity.setFieldValue(f.getKey(), childEntityMap); if (!meta.keyMetaData.isStruct() && !meta.keyMetaData.isContainer()) { for (Entry<Object, Object> entry : childMap.entrySet()) { Object childKey = valueForBasicType(entry.getKey(), meta.keyMetaData.type);
String newPrefix = prefix + f.getKey().getFieldName() + "."; org.apache.thrift.meta_data.MapMetaData meta = (org.apache.thrift.meta_data.MapMetaData)f.getValue().valueMetaData; if (!meta.keyMetaData.isStruct() && !meta.keyMetaData.isContainer()) { Map<Object, Object> map = (Map<Object, Object>)value; for (Entry<Object, Object> entry : map.entrySet()) { if (listMeta.elemMetaData.isStruct()) { setPropertiesFromThrift(newPrefix + id + ".", properties, (org.apache.thrift.TBase)entry);
private boolean typesMatch(FieldDescriptor protoFieldDesc, FieldValueMetaData thriftMetadata) { if (thriftMetadata.isStruct()) { // TODO: Handle structs return false; } byte thriftType = thriftMetadata.type; // TODO: Handle Lists that are more than 1 level deep. Be all pro-style with the recursion. if (thriftMetadata.type == TType.LIST && protoFieldDesc.isRepeated()) { FieldValueMetaData listMeta = ((ListMetaData) thriftMetadata).elemMetaData; if (listMeta.isStruct() || listMeta.isContainer()) { return false; } thriftType = listMeta.type; } return (protoFieldDesc.getType().equals(thriftTypeToProtoType(thriftType)) || thriftBinSucks(protoFieldDesc.getType(), thriftType)); }
String newPrefix = prefix + f.getKey().getFieldName() + "."; org.apache.thrift.meta_data.MapMetaData meta = (org.apache.thrift.meta_data.MapMetaData)f.getValue().valueMetaData; if (!meta.keyMetaData.isStruct() && !meta.keyMetaData.isContainer()) { Map<Object, Object> map = (Map<Object, Object>)value; for (Entry<Object, Object> entry : map.entrySet()) { if (listMeta.elemMetaData.isStruct()) { setPropertiesFromThrift(newPrefix + id + ".", properties, (org.apache.thrift.TBase)entry);