Skip to content

Commit c99cf4b

Browse files
zhangskzcopybara-github
authored andcommitted
Add java to reserved names to escape extensions to java_. This may break existing references to gencode for extensions named java.
This prevents shadowing of `java.lang` package commonly used in protobuf gencode. Existing extensions named `java` may or may not previously fail to compile depending on if the contents of their .proto result in gencode using `java.lang`. This is needed to fix `java_features.proto` lite gencode since enum gencode uses `java.lang`. Fields named `java` should already be escaped. *Warning: This may break user code for existing protos with extensions named `java`. References to the extension should be renamed to use `java_` e.g. registry.add(GeneratedClassName.java_)* PiperOrigin-RevId: 632508249
1 parent 91b7cf3 commit c99cf4b

File tree

9 files changed

+32
-28
lines changed

9 files changed

+32
-28
lines changed

editions/golden/editions_transform_proto2.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ edition = "2023";
1515
package protobuf_editions_test;
1616

1717
import "net/proto/proto1_features.proto";
18-
import "third_party/java/protobuf/java_features.proto";
18+
import "google/protobuf/java_features.proto";
1919
import "google/protobuf/cpp_features.proto";
2020
import "google/protobuf/editions/proto/editions_transform_proto3.proto";
2121

java/core/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,7 @@ proto_library(
336336
deps = [
337337
"//:any_proto",
338338
"//:descriptor_proto",
339+
"//:java_features_proto",
339340
"//:lite_test_protos",
340341
"//:wrappers_proto",
341342
"//src/google/protobuf:generic_test_protos",

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ static FeatureSetDefaults getJavaEditionDefaults() {
9494
if (javaEditionDefaults == null) {
9595
try {
9696
ExtensionRegistry registry = ExtensionRegistry.newInstance();
97-
registry.add(JavaFeaturesProto.java);
97+
registry.add(JavaFeaturesProto.java_);
9898
setTestJavaEditionDefaults(
9999
FeatureSetDefaults.parseFrom(
100100
JavaEditionDefaults.PROTOBUF_INTERNAL_JAVA_EDITION_DEFAULTS.getBytes(
@@ -679,7 +679,7 @@ FeatureSet inferLegacyProtoFeatures() {
679679
if (getEdition() == Edition.EDITION_PROTO2) {
680680
if (proto.getOptions().getJavaStringCheckUtf8()) {
681681
features.setExtension(
682-
JavaFeaturesProto.java,
682+
JavaFeaturesProto.java_,
683683
JavaFeatures.newBuilder()
684684
.setUtf8Validation(JavaFeatures.Utf8Validation.VERIFY)
685685
.build());
@@ -1320,7 +1320,7 @@ public boolean needsUtf8Check() {
13201320
return true;
13211321
}
13221322
if (this.features
1323-
.getExtension(JavaFeaturesProto.java)
1323+
.getExtension(JavaFeaturesProto.java_)
13241324
.getUtf8Validation()
13251325
.equals(JavaFeatures.Utf8Validation.VERIFY)) {
13261326
return true;
@@ -1577,7 +1577,7 @@ public boolean legacyEnumFieldTreatedAsClosed() {
15771577
}
15781578

15791579
return getType() == Type.ENUM
1580-
&& (this.features.getExtension(JavaFeaturesProto.java).getLegacyClosedEnum()
1580+
&& (this.features.getExtension(JavaFeaturesProto.java_).getLegacyClosedEnum()
15811581
|| enumType.isClosed());
15821582
}
15831583

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1158,7 +1158,7 @@ public void testLegacyInferProto2Utf8Validation() throws Exception {
11581158
.setOptions(FileOptions.newBuilder().setJavaStringCheckUtf8(true))
11591159
.build(),
11601160
new FileDescriptor[0]);
1161-
assertThat(file.features.getExtension(JavaFeaturesProto.java).getUtf8Validation())
1161+
assertThat(file.features.getExtension(JavaFeaturesProto.java_).getUtf8Validation())
11621162
.isEqualTo(JavaFeaturesProto.JavaFeatures.Utf8Validation.VERIFY);
11631163
}
11641164

@@ -1178,8 +1178,8 @@ public void testProto2Defaults() {
11781178
assertThat(features.getJsonFormat())
11791179
.isEqualTo(DescriptorProtos.FeatureSet.JsonFormat.LEGACY_BEST_EFFORT);
11801180

1181-
assertThat(features.getExtension(JavaFeaturesProto.java).getLegacyClosedEnum()).isTrue();
1182-
assertThat(features.getExtension(JavaFeaturesProto.java).getUtf8Validation())
1181+
assertThat(features.getExtension(JavaFeaturesProto.java_).getLegacyClosedEnum()).isTrue();
1182+
assertThat(features.getExtension(JavaFeaturesProto.java_).getUtf8Validation())
11831183
.isEqualTo(JavaFeaturesProto.JavaFeatures.Utf8Validation.DEFAULT);
11841184
}
11851185

@@ -1198,8 +1198,8 @@ public void testProto3Defaults() {
11981198
assertThat(features.getMessageEncoding())
11991199
.isEqualTo(DescriptorProtos.FeatureSet.MessageEncoding.LENGTH_PREFIXED);
12001200

1201-
assertThat(features.getExtension(JavaFeaturesProto.java).getLegacyClosedEnum()).isFalse();
1202-
assertThat(features.getExtension(JavaFeaturesProto.java).getUtf8Validation())
1201+
assertThat(features.getExtension(JavaFeaturesProto.java_).getLegacyClosedEnum()).isFalse();
1202+
assertThat(features.getExtension(JavaFeaturesProto.java_).getUtf8Validation())
12031203
.isEqualTo(JavaFeaturesProto.JavaFeatures.Utf8Validation.DEFAULT);
12041204
}
12051205

java/core/src/test/proto/com/google/protobuf/test_check_utf8.proto

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ edition = "2023";
1212

1313
package proto2_test_check_utf8;
1414

15-
option features.utf8_validation = VERIFY;
15+
import "google/protobuf/java_features.proto";
16+
17+
option features.utf8_validation = NONE;
18+
option features.(pb.java).utf8_validation = VERIFY;
1619
option java_outer_classname = "TestCheckUtf8";
1720

1821
message StringWrapper {

objectivec/Tests/unittest.proto

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,11 +1109,11 @@ message TestNestedGroupExtensionOuter {
11091109
repeated group Layer2RepeatedGroup = 2 {
11101110
extensions 3
11111111
// NOTE: extension metadata is not supported due to targets such as
1112-
// `//third_party/protobuf_legacy_opensource/src:shell_scripts_test`,
1112+
// `//google/protobuf_legacy_opensource/src:shell_scripts_test`,
11131113
// eee https://screenshot.googleplex.com/Axz2QD8nxjdpyFF
11141114
//[metadata = {
11151115
// NOTE: can't write type there due to some clever build gen code at
1116-
// http://google3/net/proto2/internal/BUILD;l=1247;rcl=411090862
1116+
// http://google3/google/protobuf/BUILD;l=1247;rcl=411090862
11171117
// type: "objc.protobuf.tests.TestNestedGroupExtensionInnerExtension",
11181118
// name: "inner",
11191119
// }]

src/google/protobuf/compiler/java/names.cc

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,17 @@ const char* DefaultPackage(Options options) {
3939
bool IsReservedName(absl::string_view name) {
4040
static const auto& kReservedNames =
4141
*new absl::flat_hash_set<absl::string_view>({
42-
"abstract", "assert", "boolean", "break", "byte",
43-
"case", "catch", "char", "class", "const",
44-
"continue", "default", "do", "double", "else",
45-
"enum", "extends", "false", "final", "finally",
46-
"float", "for", "goto", "if", "implements",
47-
"import", "instanceof", "int", "interface", "long",
48-
"native", "new", "null", "package", "private",
49-
"protected", "public", "return", "short", "static",
50-
"strictfp", "super", "switch", "synchronized", "this",
51-
"throw", "throws", "transient", "true", "try",
52-
"void", "volatile", "while",
42+
"abstract", "assert", "boolean", "break", "byte",
43+
"case", "catch", "char", "class", "const",
44+
"continue", "default", "do", "double", "else",
45+
"enum", "extends", "false", "final", "finally",
46+
"float", "for", "goto", "if", "implements",
47+
"import", "instanceof", "int", "interface", "java",
48+
"long", "native", "new", "null", "package",
49+
"private", "protected", "public", "return", "short",
50+
"static", "strictfp", "super", "switch", "synchronized",
51+
"this", "throw", "throws", "transient", "true",
52+
"try", "void", "volatile", "while",
5353
});
5454
return kReservedNames.contains(name);
5555
}

src/google/protobuf/edition_unittest.proto

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1254,11 +1254,11 @@ message TestNestedGroupExtensionOuter {
12541254
message Layer2RepeatedGroup {
12551255
extensions 3
12561256
// NOTE: extension metadata is not supported due to targets such as
1257-
// `//third_party/protobuf_legacy_opensource/src:shell_scripts_test`,
1257+
// `//google/protobuf_legacy_opensource/src:shell_scripts_test`,
12581258
// eee https://screenshot.googleplex.com/Axz2QD8nxjdpyFF
12591259
//[metadata = {
12601260
// NOTE: can't write type there due to some clever build gen code at
1261-
// http://google3/net/proto2/internal/BUILD;l=1247;rcl=411090862
1261+
// http://google3/google/protobuf/BUILD;l=1247;rcl=411090862
12621262
// type: "edition_unittest.TestNestedGroupExtensionInnerExtension",
12631263
// name: "inner",
12641264
// }]

src/google/protobuf/unittest.proto

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,11 +1226,11 @@ message TestNestedGroupExtensionOuter {
12261226
repeated group Layer2RepeatedGroup = 2 {
12271227
extensions 3
12281228
// NOTE: extension metadata is not supported due to targets such as
1229-
// `//third_party/protobuf_legacy_opensource/src:shell_scripts_test`,
1229+
// `//google/protobuf_legacy_opensource/src:shell_scripts_test`,
12301230
// eee https://screenshot.googleplex.com/Axz2QD8nxjdpyFF
12311231
//[metadata = {
12321232
// NOTE: can't write type there due to some clever build gen code at
1233-
// http://google3/net/proto2/internal/BUILD;l=1247;rcl=411090862
1233+
// http://google3/google/protobuf/BUILD;l=1247;rcl=411090862
12341234
// type: "protobuf_unittest.TestNestedGroupExtensionInnerExtension",
12351235
// name: "inner",
12361236
// }]

0 commit comments

Comments
 (0)