diff options
author | jieluo@google.com <jieluo@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2014-07-25 23:07:02 +0000 |
---|---|---|
committer | jieluo@google.com <jieluo@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2014-07-25 23:07:02 +0000 |
commit | db9f7dd1acca195cac67ca1f90e656fb64ebeb21 (patch) | |
tree | bb66cf5b666ce151135352b874d3e8c5a4b2cb0b /java/src/main | |
parent | 9eda53a6f1ab4229fd40473661d589be70382174 (diff) | |
download | protobuf-db9f7dd1acca195cac67ca1f90e656fb64ebeb21.tar.gz protobuf-db9f7dd1acca195cac67ca1f90e656fb64ebeb21.tar.bz2 protobuf-db9f7dd1acca195cac67ca1f90e656fb64ebeb21.zip |
1, Remove unkown field support in jave TextFormat
2, Verifies the EnumValueDscriptor for DynamicMessage.Builder#setField
Diffstat (limited to 'java/src/main')
-rw-r--r-- | java/src/main/java/com/google/protobuf/DynamicMessage.java | 19 | ||||
-rw-r--r-- | java/src/main/java/com/google/protobuf/TextFormat.java | 15 |
2 files changed, 19 insertions, 15 deletions
diff --git a/java/src/main/java/com/google/protobuf/DynamicMessage.java b/java/src/main/java/com/google/protobuf/DynamicMessage.java index f4aa26cf..cb447664 100644 --- a/java/src/main/java/com/google/protobuf/DynamicMessage.java +++ b/java/src/main/java/com/google/protobuf/DynamicMessage.java @@ -31,6 +31,7 @@ package com.google.protobuf; import com.google.protobuf.Descriptors.Descriptor; +import com.google.protobuf.Descriptors.EnumValueDescriptor; import com.google.protobuf.Descriptors.FieldDescriptor; import com.google.protobuf.Descriptors.OneofDescriptor; @@ -482,6 +483,9 @@ public final class DynamicMessage extends AbstractMessage { public Builder setField(FieldDescriptor field, Object value) { verifyContainingType(field); ensureIsMutable(); + if (field.getType() == FieldDescriptor.Type.ENUM) { + verifyEnumType(field, value); + } OneofDescriptor oneofDescriptor = field.getContainingOneof(); if (oneofDescriptor != null) { int index = oneofDescriptor.getIndex(); @@ -568,6 +572,21 @@ public final class DynamicMessage extends AbstractMessage { } } + /** Verifies that the value is EnumValueDescriptor and matchs Enum Type. */ + private void verifyEnumType(FieldDescriptor field, Object value) { + if (value == null) { + throw new NullPointerException(); + } + if (!(value instanceof EnumValueDescriptor)) { + throw new IllegalArgumentException( + "DynamicMessage should use EnumValueDescriptor to set Enum Value."); + } + if (field.getEnumType() != ((EnumValueDescriptor) value).getType()) { + throw new IllegalArgumentException( + "EnumValueDescriptor doesn't much Enum Field."); + } + } + private void ensureIsMutable() { if (fields.isImmutable()) { fields = fields.clone(); diff --git a/java/src/main/java/com/google/protobuf/TextFormat.java b/java/src/main/java/com/google/protobuf/TextFormat.java index c619ba65..5512ca20 100644 --- a/java/src/main/java/com/google/protobuf/TextFormat.java +++ b/java/src/main/java/com/google/protobuf/TextFormat.java @@ -1212,21 +1212,6 @@ public final class TextFormat { SingularOverwritePolicy.ALLOW_SINGULAR_OVERWRITES; /** - * Set whether this parser will allow unknown fields. By default, an - * exception is thrown if an unknown field is encountered. If this is - * set, the parser will only log a warning. - * - * <p>Use of this parameter is discouraged. See: - * https://sites.google.com/a/google.com/protocol-buffers/migration/ - * proto2-faq#How_do_I_ignore_unknown_fields_w - * for more details. - */ - public Builder setAllowUnknownFields(boolean allowUnknownFields) { - this.allowUnknownFields = allowUnknownFields; - return this; - } - - /** * Sets parser behavior when a non-repeated field appears more than once. */ public Builder setSingularOverwritePolicy(SingularOverwritePolicy p) { |