@Override public TypedValue getEnumValue(TypeRef type, EnumValue value) { // Go names enums in two different ways. // If the enum is nested in a message, the format is <message type>_<enum value>, // respecting the C++ scoping rule used by protobuf, // where enum values are scoped at the same level as the enum type, not as its children. // On the other hand, if the enum is at top-level, there is no parent message, // and the format is <enum type>_<enum value> ProtoElement parent = type.getEnumType().getParent(); if (parent instanceof ProtoFile) { parent = type.getEnumType(); } return TypedValue.create(getTypeName(parent, false), "%s_" + value.getSimpleName()); } }
/** Returns the enum value string */ public String getEnumValue(TypeRef type, String value) { for (EnumValue enumValue : type.getEnumType().getValues()) { if (enumValue.getSimpleName().equals(value)) { return typeNameConverter .getEnumValue(type, enumValue) .getValueAndSaveTypeNicknameIn(typeTable); } } throw new IllegalArgumentException("Unrecognized enum value: " + value); }
@Override public boolean apply(TypeRef type) { if (type.getKind() == kind) { if (type.isMessage()) { return type.getMessageType().getFullName().startsWith( typeNamePattern.substring(0, typeNamePattern.length() - 1)); } else if (type.isEnum()) { return type.getEnumType().getFullName().startsWith( typeNamePattern.substring(0, typeNamePattern.length() - 1)); } return false; } return false; } })
@Override public boolean apply(TypeRef type) { if (type.getKind() == kind) { if (type.isMessage()) { return type.getMessageType().getFullName().startsWith( typeNamePattern.substring(0, typeNamePattern.length() - 1)); } else if (type.isEnum()) { return type.getEnumType().getFullName().startsWith( typeNamePattern.substring(0, typeNamePattern.length() - 1)); } return false; } return false; } })
private static java.lang.String generateTypeUrl(TypeRef type) { java.lang.String name; if (type.isMessage()) { name = type.getMessageType().getFullName(); } else { name = type.getEnumType().getFullName(); } return DescriptorNormalization.TYPE_SERVICE_BASE_URL + "/" + name; }
private boolean packageHasEnums(Model model) { for (TypeRef type : model.getSymbolTable().getDeclaredTypes()) { if (type.isEnum() && type.getEnumType().isReachable()) { return true; } } return false; }
private static java.lang.String generateTypeUrl(TypeRef type) { java.lang.String name; if (type.isMessage()) { name = type.getMessageType().getFullName(); } else { name = type.getEnumType().getFullName(); } return DescriptorNormalization.TYPE_SERVICE_BASE_URL + "/" + name; }
@Override public TypeName getTypeNameForElementType(TypeRef type) { switch (type.getKind()) { case TYPE_MESSAGE: return getTypeName(type.getMessageType()); case TYPE_ENUM: return getTypeName(type.getEnumType()); default: String typeName = PRIMITIVE_TYPE_MAP.get(type.getKind()); return typeNameConverter.getTypeName(typeName); } }
@Override public TypeName getTypeNameForElementType(TypeRef type) { String primitiveTypeName = PRIMITIVE_TYPE_MAP.get(type.getKind()); if (primitiveTypeName != null) { return new TypeName(primitiveTypeName); } switch (type.getKind()) { case TYPE_MESSAGE: return getTypeName(type.getMessageType()); case TYPE_ENUM: return getTypeName(type.getEnumType()); default: throw new IllegalArgumentException("unknown type kind: " + type.getKind()); } }
@Override public TypeName getTypeNameForElementType(TypeRef type) { String primitiveTypeName = PRIMITIVE_TYPE_MAP.get(type.getKind()); if (primitiveTypeName != null) { return new TypeName(primitiveTypeName); } switch (type.getKind()) { case TYPE_MESSAGE: return getTypeName(type.getMessageType()); case TYPE_ENUM: return getTypeName(type.getEnumType()); default: throw new IllegalArgumentException("unknown type kind: " + type.getKind()); } }
@Override public String getTypeNameDoc(ImportTypeTable typeTable, TypeModel typeModel) { TypeRef typeRef = ((ProtoTypeRef) typeModel).getProtoType(); if (typeRef.isMessage()) { return "an object representing " + commentReformatter.getLinkedElementName(typeRef.getMessageType()); } else if (typeRef.isEnum()) { return "a number of " + commentReformatter.getLinkedElementName(typeRef.getEnumType()); } // Converting to lowercase because "String" is capitalized in NodeJSModelTypeNameConverter. return "a " + getParamTypeNoCardinality(typeTable, typeModel).toLowerCase(); }
private void addExtraExtensionTypes() { for (String optionType : foundOptionTypes) { if (isWhitelistedExtensionType(optionType)) { TypeRef typeRef = symbolTable.lookupType(optionType); if (null != typeRef) { ProtoElement element = null; if (typeRef.isMessage()) { element = typeRef.getMessageType(); } else if (typeRef.isEnum()) { element = typeRef.getEnumType(); } if (null != element) { model.addRoot(element); } } } } }
@Test public void testGetEnumValue() { TypeRef type = ModelTypeNameConverterTestUtil.getTestEnumType(tempDir); EnumValue value = type.getEnumType().getValues().get(0); assertThat(converter.getEnumValue(type, value).getValueAndSaveTypeNicknameIn(new GoTypeTable())) .isEqualTo("librarypb.Book_GOOD"); type = ModelTypeNameConverterTestUtil.getTestType(tempDir, "TopLevelEnum"); value = type.getEnumType().getValues().get(0); assertThat(converter.getEnumValue(type, value).getValueAndSaveTypeNicknameIn(new GoTypeTable())) .isEqualTo("librarypb.TopLevelEnum_FOO"); } }
@Test public void testGetEnumValue() { String packageName = "Google.Example.Library.V1"; TypeRef type = ModelTypeNameConverterTestUtil.getTestEnumType(tempDir); EnumValue value = type.getEnumType().getValues().get(0); CSharpTypeTable typeTable = new CSharpTypeTable(packageName, CSharpAliasMode.Global); CSharpModelTypeNameConverter converter = new CSharpModelTypeNameConverter(typeTable); assertThat(converter.getEnumValue(type, value).getValueAndSaveTypeNicknameIn(typeTable)) .isEqualTo("Book.Types.Rating.Good"); } }
@Test public void testGetEnumValue() { String packageName = "Google\\Example\\Library\\V1"; TypeRef type = ModelTypeNameConverterTestUtil.getTestEnumType(tempDir); EnumValue value = type.getEnumType().getValues().get(0); PhpModelTypeNameConverter converter = new PhpModelTypeNameConverter(packageName); assertThat( converter .getEnumValue(type, value) .getValueAndSaveTypeNicknameIn(new PhpTypeTable(packageName))) .isEqualTo("Book_Rating::GOOD"); } }
@Test public void testGetEnumValue() { String packageName = "Library::V1"; TypeRef type = ModelTypeNameConverterTestUtil.getTestEnumType(tempDir); EnumValue value = type.getEnumType().getValues().get(0); RubyModelTypeNameConverter converter = new RubyModelTypeNameConverter(packageName); assertThat( converter .getEnumValue(type, value) .getValueAndSaveTypeNicknameIn(new RubyTypeTable(packageName))) .isEqualTo(":GOOD"); } }
@Test public void testGetEnumValue() { String packageName = "library.v1"; TypeRef type = ModelTypeNameConverterTestUtil.getTestEnumType(tempDir); EnumValue value = type.getEnumType().getValues().get(0); NodeJSModelTypeNameConverter converter = new NodeJSModelTypeNameConverter(packageName); assertThat( converter .getEnumValue(type, value) .getValueAndSaveTypeNicknameIn(new JSTypeTable(packageName))) .isEqualTo("'GOOD'"); } }
private void addApiImports(GapicInterfaceContext context) { for (TypeRef type : context.getInterface().getModel().getSymbolTable().getDeclaredTypes()) { if (type.isEnum() && type.getEnumType().isReachable()) { context.getImportTypeTable().getAndSaveNicknameFor(type); break; } } for (MethodModel method : context.getSupportedMethods()) { addMethodImports(context.asDynamicMethodContext(method)); } }
private void addApiImports(GapicInterfaceContext context) { for (TypeRef type : context.getInterface().getModel().getSymbolTable().getDeclaredTypes()) { if (type.isEnum() && type.getEnumType().isReachable()) { context.getImportTypeTable().getAndSaveNicknameFor(type); break; } } for (MethodModel method : context.getSupportedMethods()) { addMethodImports(context.asDynamicMethodContext(method)); } }
private String getExtraFieldDescription(FieldModel field) { boolean fieldIsMessage = field.isMessage() && !field.isMap(); boolean fieldIsEnum = field.isEnum(); if (fieldIsMessage) { return "This object should have the same structure as " + commentReformatter.getLinkedElementName( ((ProtoTypeRef) field.getType()).getProtoType().getMessageType()); } else if (fieldIsEnum) { return "The number should be among the values of " + commentReformatter.getLinkedElementName( ((ProtoTypeRef) field.getType()).getProtoType().getEnumType()); } return ""; }