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
pull/12368/head
Sandy Zhang 2 years ago committed by Copybara-Service
parent 5dc171f71e
commit 8c8b2be3a8
  1. 4
      java/core/src/main/java/com/google/protobuf/Descriptors.java
  2. 4
      ruby/src/main/java/com/google/protobuf/jruby/RubyEnumDescriptor.java
  3. 5
      ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java
  4. 5
      ruby/src/main/java/com/google/protobuf/jruby/RubyFileDescriptor.java
  5. 5
      ruby/src/main/java/com/google/protobuf/jruby/RubyMessage.java

@ -162,7 +162,7 @@ public final class Descriptors {
}
/** The syntax of the .proto file. */
public enum Syntax {
enum Syntax {
UNKNOWN("unknown"),
PROTO2("proto2"),
PROTO3("proto3");
@ -175,7 +175,7 @@ public final class Descriptors {
}
/** Get the syntax of the .proto file. */
public Syntax getSyntax() {
Syntax getSyntax() {
if (Syntax.PROTO3.name.equals(proto.getSyntax())) {
return Syntax.PROTO3;
}

@ -35,7 +35,7 @@ package com.google.protobuf.jruby;
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 @@ public class RubyEnumDescriptor extends RubyObject {
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

@ -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 class RubyFieldDescriptor extends RubyObject {
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()

@ -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 class RubyFileDescriptor extends RubyObject {
*/
@JRubyMethod(name = "syntax")
public IRubyObject getSyntax(ThreadContext context) {
switch (fileDescriptor.getSyntax()) {
switch (LegacyFileDescriptor.getSyntax(fileDescriptor)) {
case PROTO2:
return context.runtime.newSymbol("proto2");
case PROTO3:

@ -38,10 +38,10 @@ import com.google.protobuf.Descriptors.Descriptor;
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 class RubyMessage extends RubyObject {
this.builder = DynamicMessage.newBuilder(descriptor);
this.fields = new HashMap<FieldDescriptor, IRubyObject>();
this.oneofCases = new HashMap<OneofDescriptor, FieldDescriptor>();
this.proto3 = descriptor.getFile().getSyntax() == FileDescriptor.Syntax.PROTO3;
this.proto3 =
LegacyFileDescriptor.getSyntax(descriptor.getFile()) == LegacyFileDescriptor.Syntax.PROTO3;
}
/*

Loading…
Cancel
Save