Allow unknown values for Map put*Value methods just like every other enum mutation method.

pull/2950/head
Anuraag Agrawal 8 years ago
parent efec757104
commit bf483dfb99
  1. 23
      java/core/src/test/java/com/google/protobuf/MapTest.java
  2. 4
      java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java
  3. 3
      src/google/protobuf/compiler/java/java_map_field.cc
  4. 3
      src/google/protobuf/compiler/java/java_map_field_lite.cc

@ -490,19 +490,13 @@ public class MapTest extends TestCase {
public void testPutForUnknownEnumValues() throws Exception {
TestMap.Builder builder = TestMap.newBuilder()
.putInt32ToEnumFieldValue(0, 0)
.putInt32ToEnumFieldValue(1, 1);
try {
builder.putInt32ToEnumFieldValue(2, 1000); // unknown value.
fail();
} catch (IllegalArgumentException e) {
// expected
}
.putInt32ToEnumFieldValue(1, 1)
.putInt32ToEnumFieldValue(2, 1000); // unknown value.
TestMap message = builder.build();
assertEquals(0, message.getInt32ToEnumFieldValueOrThrow(0));
assertEquals(1, message.getInt32ToEnumFieldValueOrThrow(1));
assertEquals(2, message.getInt32ToEnumFieldCount());
assertEquals(1000, message.getInt32ToEnumFieldValueOrThrow(2));
assertEquals(3, message.getInt32ToEnumFieldCount());
}
public void testPutChecksNullKeysAndValues() throws Exception {
@ -1250,12 +1244,9 @@ public class MapTest extends TestCase {
builder.putInt32ToEnumFieldValue(1, TestMap.EnumValue.BAR.getNumber());
assertEquals(
TestMap.EnumValue.BAR.getNumber(), builder.getInt32ToEnumFieldValueOrThrow(1));
try {
builder.putInt32ToEnumFieldValue(1, -1);
fail();
} catch (IllegalArgumentException e) {
// expected
}
builder.putInt32ToEnumFieldValue(1, -1);
assertEquals(-1, builder.getInt32ToEnumFieldValueOrThrow(1));
assertEquals(TestMap.EnumValue.UNRECOGNIZED, builder.getInt32ToEnumFieldOrThrow(1));
builder.putStringToInt32Field("a", 1);
assertEquals(1, builder.getStringToInt32FieldOrThrow("a"));

@ -229,9 +229,7 @@ public class JsonFormatTest extends TestCase {
TestMap.Builder mapBuilder = TestMap.newBuilder();
mapBuilder.putInt32ToEnumMapValue(1, 0);
Map<Integer, Integer> mapWithInvalidValues = new HashMap<Integer, Integer>();
mapWithInvalidValues.put(2, 12345);
mapBuilder.putAllInt32ToEnumMapValue(mapWithInvalidValues);
mapBuilder.putInt32ToEnumMapValue(2, 12345);
TestMap mapMessage = mapBuilder.build();
assertEquals(
"{\n"

@ -417,9 +417,6 @@ GenerateBuilderMembers(io::Printer* printer) const {
" $key_type$ key,\n"
" $value_type$ value) {\n"
" $key_null_check$\n"
" if ($value_enum_type$.forNumber(value) == null) {\n"
" throw new java.lang.IllegalArgumentException();\n"
" }\n"
" internalGetMutable$capitalized_name$().getMutableMap()\n"
" .put(key, value);\n"
" return this;\n"

@ -642,9 +642,6 @@ GenerateBuilderMembers(io::Printer* printer) const {
" $key_type$ key,\n"
" $value_type$ value) {\n"
" $key_null_check$\n"
" if ($value_enum_type$.forNumber(value) == null) {\n"
" throw new java.lang.IllegalArgumentException();\n"
" }\n"
" copyOnWrite();\n"
" instance.getMutable$capitalized_name$ValueMap().put(key, value);\n"
" return this;\n"

Loading…
Cancel
Save