Merge pull request #2950 from anuraaga/dev_rag

Allow unknown values for Map put*Value methods just like every other …
pull/2976/head
Feng Xiao 8 years ago committed by GitHub
commit 8aa927f08f
  1. 21
      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 { public void testPutForUnknownEnumValues() throws Exception {
TestMap.Builder builder = TestMap.newBuilder() TestMap.Builder builder = TestMap.newBuilder()
.putInt32ToEnumFieldValue(0, 0) .putInt32ToEnumFieldValue(0, 0)
.putInt32ToEnumFieldValue(1, 1); .putInt32ToEnumFieldValue(1, 1)
.putInt32ToEnumFieldValue(2, 1000); // unknown value.
try {
builder.putInt32ToEnumFieldValue(2, 1000); // unknown value.
fail();
} catch (IllegalArgumentException e) {
// expected
}
TestMap message = builder.build(); TestMap message = builder.build();
assertEquals(0, message.getInt32ToEnumFieldValueOrThrow(0)); assertEquals(0, message.getInt32ToEnumFieldValueOrThrow(0));
assertEquals(1, message.getInt32ToEnumFieldValueOrThrow(1)); assertEquals(1, message.getInt32ToEnumFieldValueOrThrow(1));
assertEquals(2, message.getInt32ToEnumFieldCount()); assertEquals(1000, message.getInt32ToEnumFieldValueOrThrow(2));
assertEquals(3, message.getInt32ToEnumFieldCount());
} }
public void testPutChecksNullKeysAndValues() throws Exception { public void testPutChecksNullKeysAndValues() throws Exception {
@ -1250,12 +1244,9 @@ public class MapTest extends TestCase {
builder.putInt32ToEnumFieldValue(1, TestMap.EnumValue.BAR.getNumber()); builder.putInt32ToEnumFieldValue(1, TestMap.EnumValue.BAR.getNumber());
assertEquals( assertEquals(
TestMap.EnumValue.BAR.getNumber(), builder.getInt32ToEnumFieldValueOrThrow(1)); TestMap.EnumValue.BAR.getNumber(), builder.getInt32ToEnumFieldValueOrThrow(1));
try {
builder.putInt32ToEnumFieldValue(1, -1); builder.putInt32ToEnumFieldValue(1, -1);
fail(); assertEquals(-1, builder.getInt32ToEnumFieldValueOrThrow(1));
} catch (IllegalArgumentException e) { assertEquals(TestMap.EnumValue.UNRECOGNIZED, builder.getInt32ToEnumFieldOrThrow(1));
// expected
}
builder.putStringToInt32Field("a", 1); builder.putStringToInt32Field("a", 1);
assertEquals(1, builder.getStringToInt32FieldOrThrow("a")); assertEquals(1, builder.getStringToInt32FieldOrThrow("a"));

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

@ -417,9 +417,6 @@ GenerateBuilderMembers(io::Printer* printer) const {
" $key_type$ key,\n" " $key_type$ key,\n"
" $value_type$ value) {\n" " $value_type$ value) {\n"
" $key_null_check$\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" " internalGetMutable$capitalized_name$().getMutableMap()\n"
" .put(key, value);\n" " .put(key, value);\n"
" return this;\n" " return this;\n"

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

Loading…
Cancel
Save