| Index: third_party/protobuf/java/src/main/java/com/google/protobuf/Extension.java
|
| diff --git a/third_party/protobuf/src/google/protobuf/unittest_mset.proto b/third_party/protobuf/java/src/main/java/com/google/protobuf/Extension.java
|
| similarity index 52%
|
| copy from third_party/protobuf/src/google/protobuf/unittest_mset.proto
|
| copy to third_party/protobuf/java/src/main/java/com/google/protobuf/Extension.java
|
| index 3497f09fa6d41b7b38357e7f2610dfb5c087d3e4..68d29f33d47b43ffaa1253903a5e12b1c3bb6f41 100644
|
| --- a/third_party/protobuf/src/google/protobuf/unittest_mset.proto
|
| +++ b/third_party/protobuf/java/src/main/java/com/google/protobuf/Extension.java
|
| @@ -1,6 +1,6 @@
|
| // Protocol Buffers - Google's data interchange format
|
| // Copyright 2008 Google Inc. All rights reserved.
|
| -// http://code.google.com/p/protobuf/
|
| +// https://developers.google.com/protocol-buffers/
|
| //
|
| // Redistribution and use in source and binary forms, with or without
|
| // modification, are permitted provided that the following conditions are
|
| @@ -28,45 +28,58 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -// Author: kenton@google.com (Kenton Varda)
|
| -// Based on original Protocol Buffers design by
|
| -// Sanjay Ghemawat, Jeff Dean, and others.
|
| -//
|
| -// This file contains messages for testing message_set_wire_format.
|
| +package com.google.protobuf;
|
|
|
| -package protobuf_unittest;
|
| +/**
|
| + * Interface that generated extensions implement.
|
| + *
|
| + * @author liujisi@google.com (Jisi Liu)
|
| + */
|
| +public abstract class Extension<ContainingType extends MessageLite, Type>
|
| + extends ExtensionLite<ContainingType, Type> {
|
|
|
| -option optimize_for = SPEED;
|
| + /** Returns the descriptor of the extension. */
|
| + public abstract Descriptors.FieldDescriptor getDescriptor();
|
|
|
| -// A message with message_set_wire_format.
|
| -message TestMessageSet {
|
| - option message_set_wire_format = true;
|
| - extensions 4 to max;
|
| -}
|
| + /** Returns whether or not this extension is a Lite Extension. */
|
| + final boolean isLite() {
|
| + return false;
|
| + }
|
|
|
| -message TestMessageSetContainer {
|
| - optional TestMessageSet message_set = 1;
|
| -}
|
| + // All the methods below are extension implementation details.
|
|
|
| -message TestMessageSetExtension1 {
|
| - extend TestMessageSet {
|
| - optional TestMessageSetExtension1 message_set_extension = 1545008;
|
| + /**
|
| + * The API type that the extension is used for.
|
| + */
|
| + protected enum ExtensionType {
|
| + IMMUTABLE,
|
| + MUTABLE,
|
| + PROTO1,
|
| }
|
| - optional int32 i = 15;
|
| -}
|
|
|
| -message TestMessageSetExtension2 {
|
| - extend TestMessageSet {
|
| - optional TestMessageSetExtension2 message_set_extension = 1547769;
|
| + protected ExtensionType getExtensionType() {
|
| + // TODO(liujisi): make this abstract after we fix proto1.
|
| + return ExtensionType.IMMUTABLE;
|
| }
|
| - optional string str = 25;
|
| -}
|
|
|
| -// MessageSet wire format is equivalent to this.
|
| -message RawMessageSet {
|
| - repeated group Item = 1 {
|
| - required int32 type_id = 2;
|
| - required bytes message = 3;
|
| + /**
|
| + * Type of a message extension.
|
| + */
|
| + public enum MessageType {
|
| + PROTO1,
|
| + PROTO2,
|
| + }
|
| +
|
| + /**
|
| + * If the extension is a message extension (i.e., getLiteType() == MESSAGE),
|
| + * returns the type of the message, otherwise undefined.
|
| + */
|
| + public MessageType getMessageType() {
|
| + return MessageType.PROTO2;
|
| }
|
| -}
|
|
|
| + protected abstract Object fromReflectionType(Object value);
|
| + protected abstract Object singularFromReflectionType(Object value);
|
| + protected abstract Object toReflectionType(Object value);
|
| + protected abstract Object singularToReflectionType(Object value);
|
| +}
|
|
|