From 8c8b2be3a830755014d338d023c8b60779f70b8b Mon Sep 17 00:00:00 2001 From: Sandy Zhang Date: Wed, 29 Mar 2023 13:54:16 -0700 Subject: [PATCH] Breaking change: Lock down visibility for FileDescriptor.getSyntax(). Syntax will become meaningless once we migrate to editions. In the meantime, we've implemented APIs to expose the differences between proto2 and proto3 in terms of the features we plan to release in edition 2023. PiperOrigin-RevId: 520433607 --- java/core/src/main/java/com/google/protobuf/Descriptors.java | 4 ++-- .../java/com/google/protobuf/jruby/RubyEnumDescriptor.java | 4 ++-- .../java/com/google/protobuf/jruby/RubyFieldDescriptor.java | 5 +++-- .../java/com/google/protobuf/jruby/RubyFileDescriptor.java | 5 +++-- .../src/main/java/com/google/protobuf/jruby/RubyMessage.java | 5 +++-- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/java/core/src/main/java/com/google/protobuf/Descriptors.java b/java/core/src/main/java/com/google/protobuf/Descriptors.java index 5374309665be..be7c76a5b52c 100644 --- a/java/core/src/main/java/com/google/protobuf/Descriptors.java +++ b/java/core/src/main/java/com/google/protobuf/Descriptors.java @@ -162,7 +162,7 @@ public List getPublicDependencies() { } /** The syntax of the .proto file. */ - public enum Syntax { + enum Syntax { UNKNOWN("unknown"), PROTO2("proto2"), PROTO3("proto3"); @@ -175,7 +175,7 @@ public enum Syntax { } /** Get the syntax of the .proto file. */ - public Syntax getSyntax() { + Syntax getSyntax() { if (Syntax.PROTO3.name.equals(proto.getSyntax())) { return Syntax.PROTO3; } diff --git a/ruby/src/main/java/com/google/protobuf/jruby/RubyEnumDescriptor.java b/ruby/src/main/java/com/google/protobuf/jruby/RubyEnumDescriptor.java index 0eb7c939cb00..24c03cd4d9c7 100644 --- a/ruby/src/main/java/com/google/protobuf/jruby/RubyEnumDescriptor.java +++ b/ruby/src/main/java/com/google/protobuf/jruby/RubyEnumDescriptor.java @@ -35,7 +35,7 @@ import com.google.protobuf.DescriptorProtos.EnumDescriptorProto; import com.google.protobuf.Descriptors.EnumDescriptor; import com.google.protobuf.Descriptors.EnumValueDescriptor; -import com.google.protobuf.Descriptors.FileDescriptor; +import com.google.protobuf.LegacyDescriptorsUtil.LegacyFileDescriptor; import org.jruby.Ruby; import org.jruby.RubyClass; import org.jruby.RubyModule; @@ -160,7 +160,7 @@ private RubyModule buildModuleFromDescriptor(ThreadContext context) { RubyModule enumModule = RubyModule.newModule(runtime); boolean defaultValueRequiredButNotFound = - descriptor.getFile().getSyntax() == FileDescriptor.Syntax.PROTO3; + LegacyFileDescriptor.getSyntax(descriptor.getFile()) == LegacyFileDescriptor.Syntax.PROTO3; for (EnumValueDescriptor value : descriptor.getValues()) { String name = fixEnumConstantName(value.getName()); // Make sure it's a valid constant name before trying to create it diff --git a/ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java b/ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java index bc1fe0cbe64d..50f42cfa7056 100644 --- a/ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java +++ b/ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java @@ -33,7 +33,7 @@ package com.google.protobuf.jruby; import com.google.protobuf.Descriptors.FieldDescriptor; -import com.google.protobuf.Descriptors.FileDescriptor; +import com.google.protobuf.LegacyDescriptorsUtil.LegacyFileDescriptor; import org.jruby.*; import org.jruby.anno.JRubyClass; import org.jruby.anno.JRubyMethod; @@ -234,7 +234,8 @@ public IRubyObject setValue(ThreadContext context, IRubyObject message, IRubyObj protected void setDescriptor( ThreadContext context, FieldDescriptor descriptor, RubyDescriptorPool pool) { if (descriptor.isRequired() - && descriptor.getFile().getSyntax() == FileDescriptor.Syntax.PROTO3) { + && LegacyFileDescriptor.getSyntax(descriptor.getFile()) + == LegacyFileDescriptor.Syntax.PROTO3) { throw Utils.createTypeError( context, descriptor.getName() diff --git a/ruby/src/main/java/com/google/protobuf/jruby/RubyFileDescriptor.java b/ruby/src/main/java/com/google/protobuf/jruby/RubyFileDescriptor.java index 972510b0223f..650480684f7b 100644 --- a/ruby/src/main/java/com/google/protobuf/jruby/RubyFileDescriptor.java +++ b/ruby/src/main/java/com/google/protobuf/jruby/RubyFileDescriptor.java @@ -33,8 +33,9 @@ package com.google.protobuf.jruby; import com.google.protobuf.Descriptors.FileDescriptor; -import com.google.protobuf.Descriptors.FileDescriptor.Syntax.*; import com.google.protobuf.Descriptors.GenericDescriptor; +import com.google.protobuf.LegacyDescriptorsUtil.LegacyFileDescriptor; +import com.google.protobuf.LegacyDescriptorsUtil.LegacyFileDescriptor.Syntax.*; import org.jruby.*; import org.jruby.anno.JRubyClass; import org.jruby.anno.JRubyMethod; @@ -95,7 +96,7 @@ public IRubyObject getName(ThreadContext context) { */ @JRubyMethod(name = "syntax") public IRubyObject getSyntax(ThreadContext context) { - switch (fileDescriptor.getSyntax()) { + switch (LegacyFileDescriptor.getSyntax(fileDescriptor)) { case PROTO2: return context.runtime.newSymbol("proto2"); case PROTO3: diff --git a/ruby/src/main/java/com/google/protobuf/jruby/RubyMessage.java b/ruby/src/main/java/com/google/protobuf/jruby/RubyMessage.java index dc76e2d4c047..0213fbc029e0 100644 --- a/ruby/src/main/java/com/google/protobuf/jruby/RubyMessage.java +++ b/ruby/src/main/java/com/google/protobuf/jruby/RubyMessage.java @@ -38,10 +38,10 @@ import com.google.protobuf.Descriptors.EnumDescriptor; import com.google.protobuf.Descriptors.EnumValueDescriptor; import com.google.protobuf.Descriptors.FieldDescriptor; -import com.google.protobuf.Descriptors.FileDescriptor; import com.google.protobuf.Descriptors.OneofDescriptor; import com.google.protobuf.DynamicMessage; import com.google.protobuf.InvalidProtocolBufferException; +import com.google.protobuf.LegacyDescriptorsUtil.LegacyFileDescriptor; import com.google.protobuf.Message; import com.google.protobuf.UnknownFieldSet; import com.google.protobuf.util.JsonFormat; @@ -73,7 +73,8 @@ public RubyMessage(Ruby runtime, RubyClass klazz, Descriptor descriptor) { this.builder = DynamicMessage.newBuilder(descriptor); this.fields = new HashMap(); this.oneofCases = new HashMap(); - this.proto3 = descriptor.getFile().getSyntax() == FileDescriptor.Syntax.PROTO3; + this.proto3 = + LegacyFileDescriptor.getSyntax(descriptor.getFile()) == LegacyFileDescriptor.Syntax.PROTO3; } /*