@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); }
return TypeSignature.ofList(toTypeSignature(((ListMetaData) fieldValueMetaData).elemMetaData)); return TypeSignature.ofSet(toTypeSignature(((SetMetaData) fieldValueMetaData).elemMetaData)); return TypeSignature.ofMap(toTypeSignature(((MapMetaData) fieldValueMetaData).keyMetaData), toTypeSignature(((MapMetaData) fieldValueMetaData).valueMetaData));
@Test public void incompleteStructMetadata() throws Exception { assertThat(toTypeSignature(new FieldValueMetaData(TType.STRUCT))) .isEqualTo(TypeSignature.ofUnresolved("unknown")); } }
@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); }
return TypeSignature.ofList(toTypeSignature(((ListMetaData) fieldValueMetaData).elemMetaData)); return TypeSignature.ofSet(toTypeSignature(((SetMetaData) fieldValueMetaData).elemMetaData)); return TypeSignature.ofMap(toTypeSignature(((MapMetaData) fieldValueMetaData).keyMetaData), toTypeSignature(((MapMetaData) fieldValueMetaData).valueMetaData));
return TypeSignature.ofList(toTypeSignature(((ListMetaData) fieldValueMetaData).elemMetaData)); return TypeSignature.ofSet(toTypeSignature(((SetMetaData) fieldValueMetaData).elemMetaData)); return TypeSignature.ofMap(toTypeSignature(((MapMetaData) fieldValueMetaData).keyMetaData), toTypeSignature(((MapMetaData) fieldValueMetaData).valueMetaData));
return TypeSignature.ofList(toTypeSignature(((ListMetaData) fieldValueMetaData).elemMetaData)); return TypeSignature.ofSet(toTypeSignature(((SetMetaData) fieldValueMetaData).elemMetaData)); return TypeSignature.ofMap(toTypeSignature(((MapMetaData) fieldValueMetaData).keyMetaData), toTypeSignature(((MapMetaData) fieldValueMetaData).valueMetaData));