private TypeName getTypeNameForTypedResourceName(FieldModel type, String typedResourceShortName) { String packageName = implicitPackageName; String longName = packageName + "." + typedResourceShortName; TypeName simpleTypeName = new TypeName(longName, typedResourceShortName); if (type.isMap()) { throw new IllegalArgumentException("Map type not supported for typed resource name"); } else if (type.isRepeated()) { TypeName listTypeName = typeNameConverter.getTypeName("java.util.List"); return new TypeName( listTypeName.getFullName(), listTypeName.getNickname(), "%s<%i>", simpleTypeName); } else { return simpleTypeName; } }
@Override public String getAndSaveNicknameFor(TypeName typeName) { return typeName.getAndSaveNicknameIn(this); }
private TypeName getEnumTypeName(ProtoElement elem) { String packageName = getProtoElementPackage(elem); String shortName = getShortName(elem); int indexOfSeparator = shortName.indexOf("."); if (indexOfSeparator < 0) { indexOfSeparator = shortName.length(); } String importName = packageName + "." + shortName.substring(0, indexOfSeparator); String longName = packageName + "." + shortName; return TypeName.createOuterTypeName(longName, shortName, importName); }
@Override public String getInnerTypeNameFor(DiscoveryField type) { return typeNameConverter.getTypeName(type).getInnerTypeNames().get(0).getNickname(); }
@Test public void testSimple() { TypeName typeName = new TypeName("com.google.Foo", "Foo"); assertThat(typeName.getFullName()).isEqualTo("com.google.Foo"); assertThat(typeName.getNickname()).isEqualTo("Foo"); MockTypeTable typeTable = new MockTypeTable(); assertThat(typeName.getAndSaveNicknameIn(typeTable)).isEqualTo("Foo"); List<TypeAlias> expectedImports = Arrays.asList(TypeAlias.create("com.google.Foo", "Foo")); assertThat(typeTable.imports).isEqualTo(expectedImports); }
@Override public TypeName getTypeNameInImplicitPackage(String shortName) { String fullName = implicitPackageName + "." + shortName; return new TypeName(fullName, shortName); }
@Override public String getImplicitPackageFullNameFor(String shortName) { return typeNameConverter.getTypeNameInImplicitPackage(shortName).getFullName(); }
/** The type name for the message property */ @Override public String getMessagePropertyTypeName(ImportTypeTable importTypeTable, FieldModel fieldModel) { if (fieldModel.isMap()) { String keyTypeName = importTypeTable.getFullNameForElementType(fieldModel.getType().getMapKeyType()); String valueTypeName = importTypeTable.getFullNameForElementType(fieldModel.getType().getMapValueType()); return new TypeName( importTypeTable.getFullNameFor(fieldModel), importTypeTable.getNicknameFor(fieldModel), "%s{%i => %i}", new TypeName(keyTypeName), new TypeName(valueTypeName)) .getFullName(); } if (fieldModel.isRepeated()) { String elementTypeName = importTypeTable.getFullNameForElementType(fieldModel); return new TypeName( importTypeTable.getFullNameFor(fieldModel), importTypeTable.getNicknameFor(fieldModel), "%s<%i>", new TypeName(elementTypeName)) .getFullName(); } return importTypeTable.getFullNameForElementType(fieldModel); }
@Override public String getNicknameFor(DiscoveryField type) { return typeNameConverter.getTypeName(type).getNickname(); }
@Test public void testComposite() { TypeName typeName = new TypeName("com.google.Foo", "Foo"); TypeName containerTypeName = new TypeName("com.google.Container", "Container", "%s<%i>", typeName); assertThat(containerTypeName.getFullName()).isEqualTo("com.google.Container<com.google.Foo>"); assertThat(containerTypeName.getNickname()).isEqualTo("Container<Foo>"); MockTypeTable typeTable = new MockTypeTable(); assertThat(containerTypeName.getAndSaveNicknameIn(typeTable)).isEqualTo("Container<Foo>"); List<TypeAlias> expectedImports = Arrays.asList( TypeAlias.create("com.google.Container", "Container"), TypeAlias.create("com.google.Foo", "Foo")); assertThat(typeTable.imports).isEqualTo(expectedImports); }
@Override public TypeName getTypeNameInImplicitPackage(String shortName) { String fullName = implicitPackageName + "." + shortName; return new TypeName(fullName, shortName); }
@Override public String getImplicitPackageFullNameFor(String shortName) { return typeNameConverter.getTypeNameInImplicitPackage(shortName).getFullName(); }
@Override public String getParamTypeName(ImportTypeTable typeTable, TypeModel type) { if (type.isMap()) { String keyTypeName = typeTable.getFullNameForElementType(type.getMapKeyType()); String valueTypeName = typeTable.getFullNameForElementType(type.getMapValueType()); if (type.getMapValueType().isMessage()) { valueTypeName += " | Hash"; } return new TypeName( typeTable.getFullNameFor(type), typeTable.getNicknameFor(type), "%s{%i => %i}", new TypeName(keyTypeName), new TypeName(valueTypeName)) .getFullName(); } String elementTypeName = typeTable.getFullNameForElementType(type); if (type.isMessage()) { elementTypeName += " | Hash"; } if (type.isRepeated()) { return new TypeName( typeTable.getFullNameFor(type), typeTable.getNicknameFor(type), "%s<%i>", new TypeName(elementTypeName)) .getFullName(); } return elementTypeName; }
@Override public String getGrpcServerTypeName(InterfaceModel apiInterface) { return converter.getTypeName(apiInterface).getNickname() + "Server"; }
@Override public TypeName getContainerTypeName(String containerFullName, String... elementFullNames) { TypeName containerTypeName = getTypeName(containerFullName); TypeName[] elementTypeNames = new TypeName[elementFullNames.length]; for (int i = 0; i < elementTypeNames.length; i++) { elementTypeNames[i] = getTypeName(elementFullNames[i]); } String argPattern = Joiner.on(",").join(Collections.nCopies(elementTypeNames.length, "%i")); String pattern = "%s<" + argPattern + ">"; return new TypeName( containerTypeName.getFullName(), containerTypeName.getNickname(), pattern, elementTypeNames); }
@Override public TypeName getTypeNameInImplicitPackage(String shortName) { return new TypeName(implicitPackageName + "." + shortName, shortName); }
@Override public String getFullNameFor(TypeModel type) { return typeNameConverter.getTypeName(type).getFullName(); }
String parentFullName = getTypeName(parent, maxDepth - 1).getFullName(); String fullName = String.format("%s_%s", parentFullName, elem.getSimpleName()); String nickName = fullName.substring(fullName.lastIndexOf("\\") + 1); return new TypeName(fullName, nickName);
@Override public String getNicknameFor(DiscoveryField type) { return typeNameConverter.getTypeName(type).getNickname(); }
@Override public String getAndSaveNicknameFor(TypeName typeName) { return typeName.getAndSaveNicknameIn(this); }