mirror of
https://github.com/protocolbuffers/protobuf
synced 2026-08-26 02:23:14 -04:00
Clarify the public APIs of GeneratorNames helpers.
* FileJavaPackage - matches C++, no ambiguity * FileClassName - matches C++ and our new style * BytecodeClassName - returns the fully qualified java names using '$' separators for inner classes. C++ will be similarly renamed from JavaClassName * QualifiedClassName - returns the fully qualified java names using '.' sepators for inner classes. C++ will be similarly renamed from ClassName PiperOrigin-RevId: 814414729
This commit is contained in:
parent
6fe1497e79
commit
cdb39db306
2 changed files with 76 additions and 12 deletions
|
|
@ -236,22 +236,34 @@ public final class GeneratorNames {
|
|||
return underscoresToCamelCase(input, /* capitalizeNextLetter= */ true);
|
||||
}
|
||||
|
||||
/** Returns the fully qualified Java class name for the given message descriptor. */
|
||||
public static String getClassName(Descriptor message) {
|
||||
/**
|
||||
* Returns the fully qualified Java bytecode class name for the given message descriptor.
|
||||
*
|
||||
* <p>Nested classes will use '$' as the separator, rather than '.'.
|
||||
*/
|
||||
public static String getBytecodeClassName(Descriptor message) {
|
||||
// Replicates the logic for ClassName from immutable/names.h
|
||||
return getClassFullName(
|
||||
getClassNameWithoutPackage(message), message.getFile(), !getNestInFileClass(message));
|
||||
}
|
||||
|
||||
/** Returns the fully qualified Java class name for the given enum descriptor. */
|
||||
public static String getClassName(EnumDescriptor enm) {
|
||||
/**
|
||||
* Returns the fully qualified Java bytecode class name for the given enum descriptor.
|
||||
*
|
||||
* <p>Nested classes will use '$' as the separator, rather than '.'.
|
||||
*/
|
||||
public static String getBytecodeClassName(EnumDescriptor enm) {
|
||||
// Replicates the logic for ClassName from immutable/names.h
|
||||
return getClassFullName(
|
||||
getClassNameWithoutPackage(enm), enm.getFile(), !getNestInFileClass(enm));
|
||||
}
|
||||
|
||||
/** Returns the fully qualified Java class name for the given service descriptor. */
|
||||
static String getClassName(ServiceDescriptor service) {
|
||||
/**
|
||||
* Returns the fully qualified Java bytecode class name for the given service descriptor.
|
||||
*
|
||||
* <p>Nested classes will use '$' as the separator, rather than '.'.
|
||||
*/
|
||||
static String getBytecodeClassName(ServiceDescriptor service) {
|
||||
// Replicates the logic for ClassName from immutable/names.h
|
||||
String suffix = "";
|
||||
boolean isOwnFile = !getNestInFileClass(service);
|
||||
|
|
@ -259,6 +271,37 @@ public final class GeneratorNames {
|
|||
+ suffix;
|
||||
}
|
||||
|
||||
static String getQualifiedFromBytecodeClassName(String bytecodeClassName) {
|
||||
return bytecodeClassName.replace('$', '.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the fully qualified Java class name for the given message descriptor.
|
||||
*
|
||||
* <p>Nested classes will use '.' as the separator, rather than '$'.
|
||||
*/
|
||||
public static String getQualifiedClassName(Descriptor message) {
|
||||
return getQualifiedFromBytecodeClassName(getBytecodeClassName(message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the fully qualified Java class name for the given enum descriptor.
|
||||
*
|
||||
* <p>Nested classes will use '.' as the separator, rather than '$'.
|
||||
*/
|
||||
public static String getQualifiedClassName(EnumDescriptor enm) {
|
||||
return getQualifiedFromBytecodeClassName(getBytecodeClassName(enm));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the fully qualified Java class name for the given service descriptor.
|
||||
*
|
||||
* <p>Nested classes will use '.' as the separator, rather than '$'.
|
||||
*/
|
||||
public static String getQualifiedClassName(ServiceDescriptor service) {
|
||||
return getQualifiedFromBytecodeClassName(getBytecodeClassName(service));
|
||||
}
|
||||
|
||||
private static String getClassFullName(
|
||||
String nameWithoutPackage, FileDescriptor file, boolean isOwnFile) {
|
||||
// Replicates the logic for ClassNameResolver::GetJavaClassFullName from immutable/names.cc
|
||||
|
|
|
|||
|
|
@ -115,12 +115,19 @@ public final class GeneratorNamesTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void getClassName_message(
|
||||
public void getBytecodeClassName_message(
|
||||
@TestParameter(valuesProvider = MessageClassNameProvider.class) MessageParameter parameter) {
|
||||
assertThat(GeneratorNames.getClassName(parameter.descriptor))
|
||||
assertThat(GeneratorNames.getBytecodeClassName(parameter.descriptor))
|
||||
.isEqualTo(parameter.clazz.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getQualifiedClassName_message(
|
||||
@TestParameter(valuesProvider = MessageClassNameProvider.class) MessageParameter parameter) {
|
||||
assertThat(GeneratorNames.getQualifiedClassName(parameter.descriptor))
|
||||
.isEqualTo(parameter.clazz.getCanonicalName());
|
||||
}
|
||||
|
||||
private static final class EnumClassNameProvider extends TestParameterValuesProvider {
|
||||
@Override
|
||||
public ImmutableList<EnumParameter> provideValues(TestParameterValuesProvider.Context context) {
|
||||
|
|
@ -143,12 +150,19 @@ public final class GeneratorNamesTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void getClassName_enum(
|
||||
public void getBytecodeClassName_enum(
|
||||
@TestParameter(valuesProvider = EnumClassNameProvider.class) EnumParameter parameter) {
|
||||
assertThat(GeneratorNames.getClassName(parameter.descriptor))
|
||||
assertThat(GeneratorNames.getBytecodeClassName(parameter.descriptor))
|
||||
.isEqualTo(parameter.clazz.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getQualifiedClassName_enum(
|
||||
@TestParameter(valuesProvider = EnumClassNameProvider.class) EnumParameter parameter) {
|
||||
assertThat(GeneratorNames.getQualifiedClassName(parameter.descriptor))
|
||||
.isEqualTo(parameter.clazz.getCanonicalName());
|
||||
}
|
||||
|
||||
private static final class ServiceClassNameProvider extends TestParameterValuesProvider {
|
||||
@Override
|
||||
public ImmutableList<ServiceParameter> provideValues(
|
||||
|
|
@ -174,12 +188,19 @@ public final class GeneratorNamesTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void getClassName_service(
|
||||
public void getBytecodeClassName_service(
|
||||
@TestParameter(valuesProvider = ServiceClassNameProvider.class) ServiceParameter parameter) {
|
||||
assertThat(GeneratorNames.getClassName(parameter.descriptor))
|
||||
assertThat(GeneratorNames.getBytecodeClassName(parameter.descriptor))
|
||||
.isEqualTo(parameter.clazz.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getQualifiedClassName_service(
|
||||
@TestParameter(valuesProvider = ServiceClassNameProvider.class) ServiceParameter parameter) {
|
||||
assertThat(GeneratorNames.getQualifiedClassName(parameter.descriptor))
|
||||
.isEqualTo(parameter.clazz.getCanonicalName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void joinPackage() {
|
||||
assertThat(GeneratorNames.joinPackage("com.google.foo", "Bar")).isEqualTo("com.google.foo.Bar");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue