Skip to content

Commit cdb39db

Browse files
mkruskal-googlecopybara-github
authored andcommitted
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
1 parent 6fe1497 commit cdb39db

File tree

2 files changed

+76
-12
lines changed

2 files changed

+76
-12
lines changed

java/core/src/main/java/com/google/protobuf/GeneratorNames.java

Lines changed: 49 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -236,29 +236,72 @@ static String underscoresToCamelCase(String input) {
236236
return underscoresToCamelCase(input, /* capitalizeNextLetter= */ true);
237237
}
238238

239-
/** Returns the fully qualified Java class name for the given message descriptor. */
240-
public static String getClassName(Descriptor message) {
239+
/**
240+
* Returns the fully qualified Java bytecode class name for the given message descriptor.
241+
*
242+
* <p>Nested classes will use '$' as the separator, rather than '.'.
243+
*/
244+
public static String getBytecodeClassName(Descriptor message) {
241245
// Replicates the logic for ClassName from immutable/names.h
242246
return getClassFullName(
243247
getClassNameWithoutPackage(message), message.getFile(), !getNestInFileClass(message));
244248
}
245249

246-
/** Returns the fully qualified Java class name for the given enum descriptor. */
247-
public static String getClassName(EnumDescriptor enm) {
250+
/**
251+
* Returns the fully qualified Java bytecode class name for the given enum descriptor.
252+
*
253+
* <p>Nested classes will use '$' as the separator, rather than '.'.
254+
*/
255+
public static String getBytecodeClassName(EnumDescriptor enm) {
248256
// Replicates the logic for ClassName from immutable/names.h
249257
return getClassFullName(
250258
getClassNameWithoutPackage(enm), enm.getFile(), !getNestInFileClass(enm));
251259
}
252260

253-
/** Returns the fully qualified Java class name for the given service descriptor. */
254-
static String getClassName(ServiceDescriptor service) {
261+
/**
262+
* Returns the fully qualified Java bytecode class name for the given service descriptor.
263+
*
264+
* <p>Nested classes will use '$' as the separator, rather than '.'.
265+
*/
266+
static String getBytecodeClassName(ServiceDescriptor service) {
255267
// Replicates the logic for ClassName from immutable/names.h
256268
String suffix = "";
257269
boolean isOwnFile = !getNestInFileClass(service);
258270
return getClassFullName(getClassNameWithoutPackage(service), service.getFile(), isOwnFile)
259271
+ suffix;
260272
}
261273

274+
static String getQualifiedFromBytecodeClassName(String bytecodeClassName) {
275+
return bytecodeClassName.replace('$', '.');
276+
}
277+
278+
/**
279+
* Returns the fully qualified Java class name for the given message descriptor.
280+
*
281+
* <p>Nested classes will use '.' as the separator, rather than '$'.
282+
*/
283+
public static String getQualifiedClassName(Descriptor message) {
284+
return getQualifiedFromBytecodeClassName(getBytecodeClassName(message));
285+
}
286+
287+
/**
288+
* Returns the fully qualified Java class name for the given enum descriptor.
289+
*
290+
* <p>Nested classes will use '.' as the separator, rather than '$'.
291+
*/
292+
public static String getQualifiedClassName(EnumDescriptor enm) {
293+
return getQualifiedFromBytecodeClassName(getBytecodeClassName(enm));
294+
}
295+
296+
/**
297+
* Returns the fully qualified Java class name for the given service descriptor.
298+
*
299+
* <p>Nested classes will use '.' as the separator, rather than '$'.
300+
*/
301+
public static String getQualifiedClassName(ServiceDescriptor service) {
302+
return getQualifiedFromBytecodeClassName(getBytecodeClassName(service));
303+
}
304+
262305
private static String getClassFullName(
263306
String nameWithoutPackage, FileDescriptor file, boolean isOwnFile) {
264307
// Replicates the logic for ClassNameResolver::GetJavaClassFullName from immutable/names.cc

java/core/src/test/java/com/google/protobuf/GeneratorNamesTest.java

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,19 @@ public ImmutableList<MessageParameter> provideValues(
115115
}
116116

117117
@Test
118-
public void getClassName_message(
118+
public void getBytecodeClassName_message(
119119
@TestParameter(valuesProvider = MessageClassNameProvider.class) MessageParameter parameter) {
120-
assertThat(GeneratorNames.getClassName(parameter.descriptor))
120+
assertThat(GeneratorNames.getBytecodeClassName(parameter.descriptor))
121121
.isEqualTo(parameter.clazz.getName());
122122
}
123123

124+
@Test
125+
public void getQualifiedClassName_message(
126+
@TestParameter(valuesProvider = MessageClassNameProvider.class) MessageParameter parameter) {
127+
assertThat(GeneratorNames.getQualifiedClassName(parameter.descriptor))
128+
.isEqualTo(parameter.clazz.getCanonicalName());
129+
}
130+
124131
private static final class EnumClassNameProvider extends TestParameterValuesProvider {
125132
@Override
126133
public ImmutableList<EnumParameter> provideValues(TestParameterValuesProvider.Context context) {
@@ -143,12 +150,19 @@ public ImmutableList<EnumParameter> provideValues(TestParameterValuesProvider.Co
143150
}
144151

145152
@Test
146-
public void getClassName_enum(
153+
public void getBytecodeClassName_enum(
147154
@TestParameter(valuesProvider = EnumClassNameProvider.class) EnumParameter parameter) {
148-
assertThat(GeneratorNames.getClassName(parameter.descriptor))
155+
assertThat(GeneratorNames.getBytecodeClassName(parameter.descriptor))
149156
.isEqualTo(parameter.clazz.getName());
150157
}
151158

159+
@Test
160+
public void getQualifiedClassName_enum(
161+
@TestParameter(valuesProvider = EnumClassNameProvider.class) EnumParameter parameter) {
162+
assertThat(GeneratorNames.getQualifiedClassName(parameter.descriptor))
163+
.isEqualTo(parameter.clazz.getCanonicalName());
164+
}
165+
152166
private static final class ServiceClassNameProvider extends TestParameterValuesProvider {
153167
@Override
154168
public ImmutableList<ServiceParameter> provideValues(
@@ -174,12 +188,19 @@ public ImmutableList<ServiceParameter> provideValues(
174188
}
175189

176190
@Test
177-
public void getClassName_service(
191+
public void getBytecodeClassName_service(
178192
@TestParameter(valuesProvider = ServiceClassNameProvider.class) ServiceParameter parameter) {
179-
assertThat(GeneratorNames.getClassName(parameter.descriptor))
193+
assertThat(GeneratorNames.getBytecodeClassName(parameter.descriptor))
180194
.isEqualTo(parameter.clazz.getName());
181195
}
182196

197+
@Test
198+
public void getQualifiedClassName_service(
199+
@TestParameter(valuesProvider = ServiceClassNameProvider.class) ServiceParameter parameter) {
200+
assertThat(GeneratorNames.getQualifiedClassName(parameter.descriptor))
201+
.isEqualTo(parameter.clazz.getCanonicalName());
202+
}
203+
183204
@Test
184205
public void joinPackage() {
185206
assertThat(GeneratorNames.joinPackage("com.google.foo", "Bar")).isEqualTo("com.google.foo.Bar");

0 commit comments

Comments
 (0)