From 96d983a02e5ec4f88172d7d95f04fe3b219ad945 Mon Sep 17 00:00:00 2001 From: "David L. Jones" Date: Fri, 10 Sep 2021 19:32:15 -0700 Subject: [PATCH 1/6] Tweak update_file_lists.sh to handle changes to Makefile.am. (#8965) --- BUILD | 5 ++++- cmake/extract_includes.bat.in | 8 ++++++-- cmake/libprotobuf.cmake | 1 - cmake/libprotoc.cmake | 16 +++------------- cmake/tests.cmake | 4 ++-- update_file_lists.sh | 22 +++++++++++++--------- 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/BUILD b/BUILD index e592465ea0..9fbf69dfca 100644 --- a/BUILD +++ b/BUILD @@ -133,6 +133,7 @@ cc_library( "src/google/protobuf/extension_set.cc", "src/google/protobuf/generated_enum_util.cc", "src/google/protobuf/generated_message_table_driven_lite.cc", + "src/google/protobuf/generated_message_tctable_lite.cc", "src/google/protobuf/generated_message_util.cc", "src/google/protobuf/implicit_weak_message.cc", "src/google/protobuf/inlined_string_field.cc", @@ -193,6 +194,7 @@ cc_library( "src/google/protobuf/generated_message_bases.cc", "src/google/protobuf/generated_message_reflection.cc", "src/google/protobuf/generated_message_table_driven.cc", + "src/google/protobuf/generated_message_tctable_full.cc", "src/google/protobuf/io/gzip_stream.cc", "src/google/protobuf/io/printer.cc", "src/google/protobuf/io/tokenizer.cc", @@ -222,7 +224,6 @@ cc_library( "src/google/protobuf/util/internal/protostream_objectsource.cc", "src/google/protobuf/util/internal/protostream_objectwriter.cc", "src/google/protobuf/util/internal/type_info.cc", - "src/google/protobuf/util/internal/type_info_test_helper.cc", "src/google/protobuf/util/internal/utility.cc", "src/google/protobuf/util/json_util.cc", "src/google/protobuf/util/message_differencer.cc", @@ -621,6 +622,8 @@ cc_proto_library( COMMON_TEST_SRCS = [ # AUTOGEN(common_test_srcs) "src/google/protobuf/arena_test_util.cc", + "src/google/protobuf/map_lite_test_util.cc", + "src/google/protobuf/test_util_lite.cc", "src/google/protobuf/map_test_util.inc", "src/google/protobuf/reflection_tester.cc", "src/google/protobuf/test_util.cc", diff --git a/cmake/extract_includes.bat.in b/cmake/extract_includes.bat.in index 97c6b715f6..8e26aedd18 100644 --- a/cmake/extract_includes.bat.in +++ b/cmake/extract_includes.bat.in @@ -21,15 +21,19 @@ copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\arena_impl.h" include copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\arenastring.h" include\google\protobuf\arenastring.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\code_generator.h" include\google\protobuf\compiler\code_generator.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\command_line_interface.h" include\google\protobuf\compiler\command_line_interface.h +copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\cpp\cpp_file.h" include\google\protobuf\compiler\cpp\cpp_file.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\cpp\cpp_generator.h" include\google\protobuf\compiler\cpp\cpp_generator.h +copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\cpp\cpp_helpers.h" include\google\protobuf\compiler\cpp\cpp_helpers.h +copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\cpp\cpp_names.h" include\google\protobuf\compiler\cpp\cpp_names.h +copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\csharp\csharp_doc_comment.h" include\google\protobuf\compiler\csharp\csharp_doc_comment.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\csharp\csharp_generator.h" include\google\protobuf\compiler\csharp\csharp_generator.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\csharp\csharp_names.h" include\google\protobuf\compiler\csharp\csharp_names.h +copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\csharp\csharp_options.h" include\google\protobuf\compiler\csharp\csharp_options.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\importer.h" include\google\protobuf\compiler\importer.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\java\java_generator.h" include\google\protobuf\compiler\java\java_generator.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\java\java_kotlin_generator.h" include\google\protobuf\compiler\java\java_kotlin_generator.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\java\java_names.h" include\google\protobuf\compiler\java\java_names.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\js\js_generator.h" include\google\protobuf\compiler\js\js_generator.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\js\well_known_types_embed.h" include\google\protobuf\compiler\js\well_known_types_embed.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\objectivec\objectivec_generator.h" include\google\protobuf\compiler\objectivec\objectivec_generator.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\objectivec\objectivec_helpers.h" include\google\protobuf\compiler\objectivec\objectivec_helpers.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\parser.h" include\google\protobuf\compiler\parser.h @@ -53,6 +57,7 @@ copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_enum_util.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_bases.h" include\google\protobuf\generated_message_bases.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_reflection.h" include\google\protobuf\generated_message_reflection.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_table_driven.h" include\google\protobuf\generated_message_table_driven.h +copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_table_driven_lite.h" include\google\protobuf\generated_message_table_driven_lite.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_tctable_decl.h" include\google\protobuf\generated_message_tctable_decl.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_tctable_impl.h" include\google\protobuf\generated_message_tctable_impl.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_tctable_impl.inc" include\google\protobuf\generated_message_tctable_impl.inc @@ -89,7 +94,6 @@ copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\reflection_ops.h" inc copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\repeated_field.h" include\google\protobuf\repeated_field.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\service.h" include\google\protobuf\service.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\source_context.pb.h" include\google\protobuf\source_context.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\string_member_robber.h" include\google\protobuf\string_member_robber.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\struct.pb.h" include\google\protobuf\struct.pb.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\bytestream.h" include\google\protobuf\stubs\bytestream.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\callback.h" include\google\protobuf\stubs\callback.h diff --git a/cmake/libprotobuf.cmake b/cmake/libprotobuf.cmake index e4b810c66a..668b8c2784 100644 --- a/cmake/libprotobuf.cmake +++ b/cmake/libprotobuf.cmake @@ -21,7 +21,6 @@ set(libprotobuf_files ${protobuf_source_dir}/src/google/protobuf/io/tokenizer.cc ${protobuf_source_dir}/src/google/protobuf/map_field.cc ${protobuf_source_dir}/src/google/protobuf/message.cc - ${protobuf_source_dir}/src/google/protobuf/reflection_internal.h ${protobuf_source_dir}/src/google/protobuf/reflection_ops.cc ${protobuf_source_dir}/src/google/protobuf/service.cc ${protobuf_source_dir}/src/google/protobuf/source_context.pb.cc diff --git a/cmake/libprotoc.cmake b/cmake/libprotoc.cmake index 505e469d07..6f043316b9 100644 --- a/cmake/libprotoc.cmake +++ b/cmake/libprotoc.cmake @@ -36,7 +36,6 @@ set(libprotoc_files ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_doc_comment.cc ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum.cc ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum_field.h ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum_field_lite.cc ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum_lite.cc ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_extension.cc @@ -65,28 +64,17 @@ set(libprotoc_files ${protobuf_source_dir}/src/google/protobuf/compiler/js/js_generator.cc ${protobuf_source_dir}/src/google/protobuf/compiler/js/well_known_types_embed.cc ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_enum.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_enum.h ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_enum_field.h ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_extension.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_extension.h ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_field.h ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_file.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_file.h ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_generator.cc ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_map_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_map_field.h ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_message.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_message.h ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_message_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_message_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_nsobject_methods.h ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_oneof.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_oneof.h ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.h ${protobuf_source_dir}/src/google/protobuf/compiler/php/php_generator.cc ${protobuf_source_dir}/src/google/protobuf/compiler/plugin.cc ${protobuf_source_dir}/src/google/protobuf/compiler/plugin.pb.cc @@ -94,7 +82,6 @@ set(libprotoc_files ${protobuf_source_dir}/src/google/protobuf/compiler/ruby/ruby_generator.cc ${protobuf_source_dir}/src/google/protobuf/compiler/subprocess.cc ${protobuf_source_dir}/src/google/protobuf/compiler/zip_writer.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/zip_writer.h ) set(libprotoc_headers @@ -108,14 +95,17 @@ set(libprotoc_headers ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_generator.h ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_names.h ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_options.h + ${protobuf_source_dir}/src/google/protobuf/compiler/importer.h ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_generator.h ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_kotlin_generator.h ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_names.h ${protobuf_source_dir}/src/google/protobuf/compiler/js/js_generator.h ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_generator.h ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_helpers.h + ${protobuf_source_dir}/src/google/protobuf/compiler/parser.h ${protobuf_source_dir}/src/google/protobuf/compiler/php/php_generator.h ${protobuf_source_dir}/src/google/protobuf/compiler/plugin.h + ${protobuf_source_dir}/src/google/protobuf/compiler/plugin.pb.h ${protobuf_source_dir}/src/google/protobuf/compiler/python/python_generator.h ${protobuf_source_dir}/src/google/protobuf/compiler/ruby/ruby_generator.h ) diff --git a/cmake/tests.cmake b/cmake/tests.cmake index 9ede4f328c..529685856e 100644 --- a/cmake/tests.cmake +++ b/cmake/tests.cmake @@ -119,10 +119,10 @@ set(common_lite_test_files set(common_test_files ${common_lite_test_files} - ${protobuf_source_dir}/src/google/protobuf/compiler/mock_code_generator.cc ${protobuf_source_dir}/src/google/protobuf/map_test_util.inc ${protobuf_source_dir}/src/google/protobuf/reflection_tester.cc ${protobuf_source_dir}/src/google/protobuf/test_util.cc + ${protobuf_source_dir}/src/google/protobuf/test_util.inc ${protobuf_source_dir}/src/google/protobuf/testing/file.cc ${protobuf_source_dir}/src/google/protobuf/testing/googletest.cc ) @@ -132,7 +132,6 @@ set(tests_files ${protobuf_source_dir}/src/google/protobuf/arena_unittest.cc ${protobuf_source_dir}/src/google/protobuf/arenastring_unittest.cc ${protobuf_source_dir}/src/google/protobuf/compiler/annotation_test_util.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/annotation_test_util.h ${protobuf_source_dir}/src/google/protobuf/compiler/command_line_interface_unittest.cc ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_move_unittest.cc @@ -145,6 +144,7 @@ set(tests_files ${protobuf_source_dir}/src/google/protobuf/compiler/importer_unittest.cc ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_doc_comment_unittest.cc ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_plugin_unittest.cc + ${protobuf_source_dir}/src/google/protobuf/compiler/mock_code_generator.cc ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc ${protobuf_source_dir}/src/google/protobuf/compiler/parser_unittest.cc ${protobuf_source_dir}/src/google/protobuf/compiler/python/python_plugin_unittest.cc diff --git a/update_file_lists.sh b/update_file_lists.sh index e0b446f867..1ec119523b 100755 --- a/update_file_lists.sh +++ b/update_file_lists.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -u # This script copies source file lists from src/Makefile.am to cmake files. @@ -50,12 +50,12 @@ MAKEFILE=src/Makefile.am # Extract file lists from src/Makefile.am GZHEADERS=$(get_variable_value $MAKEFILE GZHEADERS) -HEADERS=$(get_variable_value $MAKEFILE nobase_include_HEADERS) -PUBLIC_HEADERS=$(sort_files $GZHEADERS $HEADERS) +LIBPROTOBUF_HEADERS=$(get_variable_value $MAKEFILE nobase_include_HEADERS | grep -v /compiler/) +LIBPROTOBUF_HEADERS=$(sort_files $GZHEADERS $LIBPROTOBUF_HEADERS) LIBPROTOBUF_LITE_SOURCES=$(get_source_files $MAKEFILE libprotobuf_lite_la_SOURCES) LIBPROTOBUF_SOURCES=$(get_source_files $MAKEFILE libprotobuf_la_SOURCES) LIBPROTOC_SOURCES=$(get_source_files $MAKEFILE libprotoc_la_SOURCES) -LIBPROTOC_HEADERS=$(get_header_files $MAKEFILE libprotoc_la_SOURCES) +LIBPROTOC_HEADERS=$(get_variable_value $MAKEFILE nobase_include_HEADERS | grep /compiler/) LITE_PROTOS=$(get_proto_files $MAKEFILE protoc_lite_outputs) PROTOS=$(get_proto_files $MAKEFILE protoc_outputs) PROTOS_BLACKLISTED=$(get_proto_files_blacklisted $MAKEFILE protoc_outputs) @@ -98,7 +98,11 @@ set_cmake_value() { print \$0; len = split(values, vlist, \" \"); for (i = 1; i <= len; ++i) { - printf(\" %s%s\\n\", prefix, vlist[i]); + printf(\" \"); + if (vlist[i] !~ /^\\\$/) { + printf(\"%s\", prefix); + } + printf(\"%s\\n\", vlist[i]); } next; } @@ -121,7 +125,7 @@ set_cmake_value $CMAKE_DIR/libprotoc.cmake libprotoc_files $CMAKE_PREFIX $LIBPRO set_cmake_value $CMAKE_DIR/libprotoc.cmake libprotoc_headers $CMAKE_PREFIX $LIBPROTOC_HEADERS set_cmake_value $CMAKE_DIR/tests.cmake lite_test_protos "" $LITE_PROTOS set_cmake_value $CMAKE_DIR/tests.cmake tests_protos "" $PROTOS_BLACKLISTED -set_cmake_value $CMAKE_DIR/tests.cmake common_test_files $CMAKE_PREFIX $COMMON_TEST_SOURCES +set_cmake_value $CMAKE_DIR/tests.cmake common_test_files $CMAKE_PREFIX '${common_lite_test_files}' $COMMON_TEST_SOURCES set_cmake_value $CMAKE_DIR/tests.cmake common_lite_test_files $CMAKE_PREFIX $COMMON_LITE_TEST_SOURCES set_cmake_value $CMAKE_DIR/tests.cmake tests_files $CMAKE_PREFIX $TEST_SOURCES set_cmake_value $CMAKE_DIR/tests.cmake non_msvc_tests_files $CMAKE_PREFIX $NON_MSVC_TEST_SOURCES @@ -130,14 +134,14 @@ set_cmake_value $CMAKE_DIR/tests.cmake lite_arena_test_files $CMAKE_PREFIX $LITE # Generate extract_includes.bat echo "mkdir include" > $EXTRACT_INCLUDES_BAT -for INCLUDE in $PUBLIC_HEADERS $WKT_PROTOS; do +for INCLUDE in $LIBPROTOBUF_HEADERS $LIBPROTOC_HEADERS $WKT_PROTOS; do INCLUDE_DIR=$(dirname "$INCLUDE") while [ ! "$INCLUDE_DIR" = "." ]; do echo "mkdir include\\${INCLUDE_DIR//\//\\}" INCLUDE_DIR=$(dirname "$INCLUDE_DIR") done done | sort | uniq >> $EXTRACT_INCLUDES_BAT -for INCLUDE in $PUBLIC_HEADERS $WKT_PROTOS; do +for INCLUDE in $(sort_files $LIBPROTOBUF_HEADERS $LIBPROTOC_HEADERS) $WKT_PROTOS; do WINPATH=${INCLUDE//\//\\} echo "copy \"\${PROTOBUF_SOURCE_WIN32_PATH}\\..\\src\\$WINPATH\" include\\$WINPATH" >> $EXTRACT_INCLUDES_BAT done @@ -186,7 +190,7 @@ if [ -f "$BAZEL_BUILD" ]; then set_bazel_value $BAZEL_BUILD lite_test_protos "" $LITE_PROTOS set_bazel_value $BAZEL_BUILD well_known_protos "" $WKT_PROTOS set_bazel_value $BAZEL_BUILD test_protos "" $PROTOS - set_bazel_value $BAZEL_BUILD common_test_srcs $BAZEL_PREFIX $COMMON_TEST_SOURCES + set_bazel_value $BAZEL_BUILD common_test_srcs $BAZEL_PREFIX $COMMON_LITE_TEST_SOURCES $COMMON_TEST_SOURCES set_bazel_value $BAZEL_BUILD test_srcs $BAZEL_PREFIX $TEST_SOURCES set_bazel_value $BAZEL_BUILD non_msvc_test_srcs $BAZEL_PREFIX $NON_MSVC_TEST_SOURCES set_bazel_value $BAZEL_BUILD test_plugin_srcs $BAZEL_PREFIX $TEST_PLUGIN_SOURCES From fabb59448a9961891465d28bd2d4e5d68bbadf8f Mon Sep 17 00:00:00 2001 From: junzeng <1427711654@qq.com> Date: Tue, 14 Sep 2021 03:26:04 +0800 Subject: [PATCH 2/6] Clean up unused code in src\google\protobuf\compiler\cpp\cpp_helpers.h (#8819) Co-authored-by: junzeng --- src/google/protobuf/compiler/cpp/cpp_helpers.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/google/protobuf/compiler/cpp/cpp_helpers.h b/src/google/protobuf/compiler/cpp/cpp_helpers.h index e6359a1ea6..bae5bf2ffa 100644 --- a/src/google/protobuf/compiler/cpp/cpp_helpers.h +++ b/src/google/protobuf/compiler/cpp/cpp_helpers.h @@ -63,8 +63,8 @@ inline std::string ProtobufNamespace(const Options& /* options */) { return "PROTOBUF_NAMESPACE_ID"; } -inline std::string MacroPrefix(const Options& options) { - return options.opensource_runtime ? "GOOGLE_PROTOBUF" : "GOOGLE_PROTOBUF"; +inline std::string MacroPrefix(const Options& /* options */) { + return "GOOGLE_PROTOBUF"; } inline std::string DeprecatedAttribute(const Options& /* options */, From d6699989ab5164cc7778ea4802e49aae51a4f417 Mon Sep 17 00:00:00 2001 From: Sil3ntStorm Date: Mon, 13 Sep 2021 21:26:55 +0200 Subject: [PATCH 3/6] Fix shadowing warnings (#8926) --- .../protobuf/compiler/command_line_interface.cc | 4 ++-- src/google/protobuf/compiler/cpp/cpp_file.cc | 4 ++-- src/google/protobuf/compiler/cpp/cpp_helpers.cc | 4 ++-- src/google/protobuf/compiler/cpp/cpp_service.cc | 6 +++--- .../protobuf/compiler/objectivec/objectivec_enum.cc | 1 - src/google/protobuf/compiler/php/php_generator.cc | 12 ++++++------ .../protobuf/compiler/python/python_generator.cc | 4 ++-- src/google/protobuf/dynamic_message.cc | 4 ++-- src/google/protobuf/generated_message_util.cc | 8 ++++---- src/google/protobuf/reflection_ops.cc | 6 +++--- src/google/protobuf/stubs/strutil.cc | 4 ++-- src/google/protobuf/util/field_mask_util.cc | 4 ++-- .../util/internal/protostream_objectsource.cc | 12 ++++++------ 13 files changed, 36 insertions(+), 37 deletions(-) diff --git a/src/google/protobuf/compiler/command_line_interface.cc b/src/google/protobuf/compiler/command_line_interface.cc index c56716fced..bfc6b0552d 100644 --- a/src/google/protobuf/compiler/command_line_interface.cc +++ b/src/google/protobuf/compiler/command_line_interface.cc @@ -2423,8 +2423,8 @@ bool CommandLineInterface::WriteDescriptorSet( to_output.insert(parsed_files.begin(), parsed_files.end()); for (int i = 0; i < parsed_files.size(); i++) { const FileDescriptor* file = parsed_files[i]; - for (int i = 0; i < file->dependency_count(); i++) { - const FileDescriptor* dependency = file->dependency(i); + for (int j = 0; j < file->dependency_count(); j++) { + const FileDescriptor* dependency = file->dependency(j); // if the dependency isn't in parsed files, mark it as already seen if (to_output.find(dependency) == to_output.end()) { already_seen.insert(dependency); diff --git a/src/google/protobuf/compiler/cpp/cpp_file.cc b/src/google/protobuf/compiler/cpp/cpp_file.cc index 878ff78f75..c7816b546e 100644 --- a/src/google/protobuf/compiler/cpp/cpp_file.cc +++ b/src/google/protobuf/compiler/cpp/cpp_file.cc @@ -154,8 +154,8 @@ void FileGenerator::GenerateMacroUndefs(io::Printer* printer) { for (int i = 0; i < fields.size(); i++) { const std::string& name = fields[i]->name(); static const char* kMacroNames[] = {"major", "minor"}; - for (int i = 0; i < GOOGLE_ARRAYSIZE(kMacroNames); ++i) { - if (name == kMacroNames[i]) { + for (int j = 0; j < GOOGLE_ARRAYSIZE(kMacroNames); ++j) { + if (name == kMacroNames[j]) { names_to_undef.push_back(name); break; } diff --git a/src/google/protobuf/compiler/cpp/cpp_helpers.cc b/src/google/protobuf/compiler/cpp/cpp_helpers.cc index 4459e50123..9fe47bff5f 100644 --- a/src/google/protobuf/compiler/cpp/cpp_helpers.cc +++ b/src/google/protobuf/compiler/cpp/cpp_helpers.cc @@ -1168,8 +1168,8 @@ MessageAnalysis MessageSCCAnalyzer::GetSCCAnalysis(const SCC* scc) { if (descriptor->extension_range_count() > 0) { result.contains_extension = true; } - for (int i = 0; i < descriptor->field_count(); i++) { - const FieldDescriptor* field = descriptor->field(i); + for (int j = 0; j < descriptor->field_count(); j++) { + const FieldDescriptor* field = descriptor->field(j); if (field->is_required()) { result.contains_required = true; } diff --git a/src/google/protobuf/compiler/cpp/cpp_service.cc b/src/google/protobuf/compiler/cpp/cpp_service.cc index 994e653e84..6b1ca83eda 100644 --- a/src/google/protobuf/compiler/cpp/cpp_service.cc +++ b/src/google/protobuf/compiler/cpp/cpp_service.cc @@ -241,12 +241,12 @@ void ServiceGenerator::GenerateCallMethod(io::Printer* printer) { for (int i = 0; i < descriptor_->method_count(); i++) { const MethodDescriptor* method = descriptor_->method(i); - Formatter format(printer, vars_); - InitMethodVariables(method, options_, &format); + Formatter format_method(printer, vars_); + InitMethodVariables(method, options_, &format_method); // Note: down_cast does not work here because it only works on pointers, // not references. - format( + format_method( " case $1$:\n" " $name$(controller,\n" " ::$proto_ns$::internal::DownCast(\n" diff --git a/src/google/protobuf/compiler/objectivec/objectivec_enum.cc b/src/google/protobuf/compiler/objectivec/objectivec_enum.cc index 12c475ff5a..ea8f394ebe 100644 --- a/src/google/protobuf/compiler/objectivec/objectivec_enum.cc +++ b/src/google/protobuf/compiler/objectivec/objectivec_enum.cc @@ -127,7 +127,6 @@ void EnumGenerator::GenerateHeader(io::Printer* printer) { if (alias_values_to_skip_.find(all_values_[i]) != alias_values_to_skip_.end()) { continue; } - SourceLocation location; if (all_values_[i]->GetSourceLocation(&location)) { std::string comments = BuildCommentsString(location, true).c_str(); if (comments.length() > 0) { diff --git a/src/google/protobuf/compiler/php/php_generator.cc b/src/google/protobuf/compiler/php/php_generator.cc index 84bafdd47d..05f8acad87 100644 --- a/src/google/protobuf/compiler/php/php_generator.cc +++ b/src/google/protobuf/compiler/php/php_generator.cc @@ -1119,9 +1119,9 @@ void GenerateAddFilesToPool(const FileDescriptor* file, const Options& options, file, &nodes_without_dependency, &deps, &dependency_count); while (!nodes_without_dependency.empty()) { - auto file = *nodes_without_dependency.begin(); - nodes_without_dependency.erase(file); - for (auto dependent : deps[file]) { + auto file_node = *nodes_without_dependency.begin(); + nodes_without_dependency.erase(file_node); + for (auto dependent : deps[file_node]) { if (dependency_count[dependent] == 1) { dependency_count.erase(dependent); nodes_without_dependency.insert(dependent); @@ -1130,11 +1130,11 @@ void GenerateAddFilesToPool(const FileDescriptor* file, const Options& options, } } - bool needs_aggregate = NeedsUnwrapping(file, options); + bool needs_aggregate = NeedsUnwrapping(file_node, options); if (needs_aggregate) { auto file_proto = sorted_file_set.add_file(); - file->CopyTo(file_proto); + file_node->CopyTo(file_proto); // Filter out descriptor.proto as it cannot be depended on for now. RepeatedPtrField* dependency = @@ -1156,7 +1156,7 @@ void GenerateAddFilesToPool(const FileDescriptor* file, const Options& options, it->clear_extension(); } } else { - std::string dependency_filename = GeneratedMetadataFileName(file, false); + std::string dependency_filename = GeneratedMetadataFileName(file_node, false); printer->Print( "\\^name^::initOnce();\n", "name", FilenameToClassname(dependency_filename)); diff --git a/src/google/protobuf/compiler/python/python_generator.cc b/src/google/protobuf/compiler/python/python_generator.cc index ebe7d72097..8db99ab9ee 100644 --- a/src/google/protobuf/compiler/python/python_generator.cc +++ b/src/google/protobuf/compiler/python/python_generator.cc @@ -799,11 +799,11 @@ void Generator::PrintCreateDescriptor( printer_->Indent(); for (int i = 0; i < message_descriptor.oneof_decl_count(); ++i) { const OneofDescriptor* desc = message_descriptor.oneof_decl(i); - std::map m; + m.clear(); m["name"] = desc->name(); m["full_name"] = desc->full_name(); m["index"] = StrCat(desc->index()); - std::string options_string = + options_string = OptionsValue(desc->options().SerializeAsString()); if (options_string == "None") { m["serialized_options"] = ""; diff --git a/src/google/protobuf/dynamic_message.cc b/src/google/protobuf/dynamic_message.cc index 22a92d83d7..ba6e0078e8 100644 --- a/src/google/protobuf/dynamic_message.cc +++ b/src/google/protobuf/dynamic_message.cc @@ -747,9 +747,9 @@ const Message* DynamicMessageFactory::GetPrototypeNoLock( // hasbits. type_info->has_bits_offset = size; uint32_t* has_bits_indices = new uint32_t[type->field_count()]; - for (int i = 0; i < type->field_count(); i++) { + for (int j = 0; j < type->field_count(); j++) { // Initialize to -1, fields that need a hasbit will overwrite. - has_bits_indices[i] = static_cast(-1); + has_bits_indices[j] = static_cast(-1); } type_info->has_bits_indices.reset(has_bits_indices); } diff --git a/src/google/protobuf/generated_message_util.cc b/src/google/protobuf/generated_message_util.cc index acda7de4b6..374635f0a5 100644 --- a/src/google/protobuf/generated_message_util.cc +++ b/src/google/protobuf/generated_message_util.cc @@ -701,13 +701,13 @@ uint8_t* SerializeInternalToArray(const uint8_t* base, // Special cases case FieldMetadata::kSpecial: { io::ArrayOutputStream array_stream(array_output.ptr, INT_MAX); - io::CodedOutputStream output(&array_stream); - output.SetSerializationDeterministic(is_deterministic); + io::CodedOutputStream output_stream(&array_stream); + output_stream.SetSerializationDeterministic(is_deterministic); func = reinterpret_cast( const_cast(field_metadata.ptr)); func(base, field_metadata.offset, field_metadata.tag, - field_metadata.has_offset, &output); - array_output.ptr += output.ByteCount(); + field_metadata.has_offset, &output_stream); + array_output.ptr += output_stream.ByteCount(); } break; default: // __builtin_unreachable() diff --git a/src/google/protobuf/reflection_ops.cc b/src/google/protobuf/reflection_ops.cc index 5380797df4..8f0cfb959f 100644 --- a/src/google/protobuf/reflection_ops.cc +++ b/src/google/protobuf/reflection_ops.cc @@ -214,9 +214,9 @@ bool ReflectionOps::IsInitialized(const Message& message, bool check_fields, reflection->GetMapData(message, field); if (map_field->IsMapValid()) { MapIterator it(const_cast(&message), field); - MapIterator end(const_cast(&message), field); - for (map_field->MapBegin(&it), map_field->MapEnd(&end); - it != end; ++it) { + MapIterator end_map(const_cast(&message), field); + for (map_field->MapBegin(&it), map_field->MapEnd(&end_map); + it != end_map; ++it) { if (!it.GetValueRef().GetMessageValue().IsInitialized()) { return false; } diff --git a/src/google/protobuf/stubs/strutil.cc b/src/google/protobuf/stubs/strutil.cc index 0865f9fd6e..6d62d7c4c2 100644 --- a/src/google/protobuf/stubs/strutil.cc +++ b/src/google/protobuf/stubs/strutil.cc @@ -1272,7 +1272,7 @@ char* DoubleToBuffer(double value, char* buffer) { // truncated to a double. volatile double parsed_value = internal::NoLocaleStrtod(buffer, nullptr); if (parsed_value != value) { - int snprintf_result = + snprintf_result = snprintf(buffer, kDoubleToBufferSize, "%.*g", DBL_DIG+2, value); // Should never overflow; see above. @@ -1384,7 +1384,7 @@ char* FloatToBuffer(float value, char* buffer) { float parsed_value; if (!safe_strtof(buffer, &parsed_value) || parsed_value != value) { - int snprintf_result = + snprintf_result = snprintf(buffer, kFloatToBufferSize, "%.*g", FLT_DIG+3, value); // Should never overflow; see above. diff --git a/src/google/protobuf/util/field_mask_util.cc b/src/google/protobuf/util/field_mask_util.cc index 25ff424ba6..c80ae21c83 100644 --- a/src/google/protobuf/util/field_mask_util.cc +++ b/src/google/protobuf/util/field_mask_util.cc @@ -385,8 +385,8 @@ void FieldMaskTree::RemovePath(const std::string& path, if (new_branch_node == nullptr) { new_branch_node = node; } - for (int i = 0; i < current_descriptor->field_count(); ++i) { - node->children[current_descriptor->field(i)->name()] = new Node(); + for (int j = 0; j < current_descriptor->field_count(); ++j) { + node->children[current_descriptor->field(j)->name()] = new Node(); } } if (ContainsKey(node->children, parts[i])) { diff --git a/src/google/protobuf/util/internal/protostream_objectsource.cc b/src/google/protobuf/util/internal/protostream_objectsource.cc index 3a37d9c5e9..699f8e742e 100644 --- a/src/google/protobuf/util/internal/protostream_objectsource.cc +++ b/src/google/protobuf/util/internal/protostream_objectsource.cc @@ -265,16 +265,16 @@ util::StatusOr ProtoStreamObjectSource::RenderMap( std::string map_key; for (uint32_t tag = stream_->ReadTag(); tag != 0; tag = stream_->ReadTag()) { - const google::protobuf::Field* field = + const google::protobuf::Field* map_entry_field = FindAndVerifyField(*field_type, tag); - if (field == nullptr) { + if (map_entry_field == nullptr) { WireFormat::SkipField(stream_, tag, nullptr); continue; } // Map field numbers are key = 1 and value = 2 - if (field->number() == 1) { - map_key = ReadFieldValueAsString(*field); - } else if (field->number() == 2) { + if (map_entry_field->number() == 1) { + map_key = ReadFieldValueAsString(*map_entry_field); + } else if (map_entry_field->number() == 2) { if (map_key.empty()) { // An absent map key is treated as the default. const google::protobuf::Field* key_field = @@ -286,7 +286,7 @@ util::StatusOr ProtoStreamObjectSource::RenderMap( } ASSIGN_OR_RETURN(map_key, MapKeyDefaultValueAsString(*key_field)); } - RETURN_IF_ERROR(RenderField(field, map_key, ow)); + RETURN_IF_ERROR(RenderField(map_entry_field, map_key, ow)); } else { // The Type info for this map entry is incorrect. It should contain // exactly two fields with field number 1 and 2. From 8c7e0829200a3bac3950e92579e14c9b179829d6 Mon Sep 17 00:00:00 2001 From: Sil3ntStorm Date: Mon, 13 Sep 2021 21:27:49 +0200 Subject: [PATCH 4/6] Fix warning about unary minus operator (#8929) --- src/google/protobuf/compiler/parser.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/google/protobuf/compiler/parser.cc b/src/google/protobuf/compiler/parser.cc index afe9d4ff08..49ddfceb1a 100644 --- a/src/google/protobuf/compiler/parser.cc +++ b/src/google/protobuf/compiler/parser.cc @@ -1549,7 +1549,7 @@ bool Parser::ParseOption(Message* options, value_location.AddPath( UninterpretedOption::kNegativeIntValueFieldNumber); uninterpreted_option->set_negative_int_value( - static_cast(-value)); + static_cast(0 - value)); } else { value_location.AddPath( UninterpretedOption::kPositiveIntValueFieldNumber); From 385672597f6980ca8c7629cf77c2f83130858101 Mon Sep 17 00:00:00 2001 From: Sil3ntStorm Date: Mon, 13 Sep 2021 21:30:09 +0200 Subject: [PATCH 5/6] Disable MSVC warning C4125 (decimal digit terminates octal escape sequence) (#8928) --- src/google/protobuf/port_def.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/google/protobuf/port_def.inc b/src/google/protobuf/port_def.inc index 05050b7f90..4f73ff99f4 100644 --- a/src/google/protobuf/port_def.inc +++ b/src/google/protobuf/port_def.inc @@ -774,6 +774,8 @@ #pragma warning(disable : 5031) // Conditional expression is constant #pragma warning(disable: 4127) +// decimal digit terminates octal escape sequence +#pragma warning(disable: 4125) #endif // We don't want code outside port_def doing complex testing, so From 5f55fe1d6b2ee4b8d54d83eb49279089e5b67b9f Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Mon, 13 Sep 2021 19:49:00 +0000 Subject: [PATCH 6/6] enforce android API level 14 (#8971) * enforce android API level 14 Add animal-sniffer plugin to check for android compatibility * Revert "Merge pull request #7855 from belugabehr/ObjectsRequireNonNull" This reverts commit a3e55874472403870275778ade0b91cce6333633, reversing changes made to f79f956b7459ba15aa0ad91d6f09bd7931481593. --- .../google/protobuf/AbstractMessageLite.java | 5 ++- .../com/google/protobuf/AllocatedBuffer.java | 5 ++- .../com/google/protobuf/ArrayDecoders.java | 6 ++- .../com/google/protobuf/BinaryWriter.java | 4 +- .../com/google/protobuf/BooleanArrayList.java | 5 ++- .../java/com/google/protobuf/ByteString.java | 6 ++- .../com/google/protobuf/CodedInputStream.java | 5 ++- .../protobuf/CodedInputStreamReader.java | 3 +- .../google/protobuf/CodedOutputStream.java | 22 ++++++--- .../protobuf/CodedOutputStreamWriter.java | 4 +- .../java/com/google/protobuf/Descriptors.java | 5 ++- .../com/google/protobuf/DoubleArrayList.java | 5 ++- .../com/google/protobuf/DynamicMessage.java | 5 ++- .../java/com/google/protobuf/FieldInfo.java | 45 ++++++++++--------- .../java/com/google/protobuf/FieldSet.java | 5 ++- .../com/google/protobuf/FloatArrayList.java | 5 ++- .../google/protobuf/GeneratedMessageV3.java | 2 + .../com/google/protobuf/IntArrayList.java | 5 ++- .../java/com/google/protobuf/Internal.java | 16 +++++++ .../com/google/protobuf/LazyFieldLite.java | 20 ++++++--- .../com/google/protobuf/LongArrayList.java | 5 ++- .../protobuf/ManifestSchemaFactory.java | 4 +- .../java/com/google/protobuf/MapField.java | 11 ++--- .../com/google/protobuf/MapFieldLite.java | 11 ++--- .../com/google/protobuf/MessageSchema.java | 9 ++-- .../com/google/protobuf/NioByteString.java | 5 ++- .../java/com/google/protobuf/Protobuf.java | 13 +++--- .../google/protobuf/RepeatedFieldBuilder.java | 11 ++--- .../protobuf/RepeatedFieldBuilderV3.java | 11 ++--- .../com/google/protobuf/RopeByteString.java | 6 +-- .../google/protobuf/SingleFieldBuilder.java | 6 +-- .../google/protobuf/SingleFieldBuilderV3.java | 6 +-- .../protobuf/StructuralMessageInfo.java | 7 +-- java/pom.xml | 21 +++++++++ 34 files changed, 194 insertions(+), 110 deletions(-) diff --git a/java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java b/java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java index 62a096f4e5..4e3cf42718 100644 --- a/java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java +++ b/java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java @@ -30,6 +30,8 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; @@ -37,7 +39,6 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Objects; /** * A partial implementation of the {@link MessageLite} interface which implements as many methods of @@ -401,7 +402,7 @@ public abstract class AbstractMessageLite< * null. */ protected static void addAll(final Iterable values, final List list) { - Objects.requireNonNull(values); + checkNotNull(values); if (values instanceof LazyStringList) { // For StringOrByteStringLists, check the underlying elements to avoid // forcing conversions of ByteStrings to Strings. diff --git a/java/core/src/main/java/com/google/protobuf/AllocatedBuffer.java b/java/core/src/main/java/com/google/protobuf/AllocatedBuffer.java index 78adecaf65..a01a6c1a8b 100644 --- a/java/core/src/main/java/com/google/protobuf/AllocatedBuffer.java +++ b/java/core/src/main/java/com/google/protobuf/AllocatedBuffer.java @@ -30,8 +30,9 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import java.nio.ByteBuffer; -import java.util.Objects; /** * A buffer that was allocated by a {@link BufferAllocator}. For every buffer, it is guaranteed that @@ -150,7 +151,7 @@ abstract class AllocatedBuffer { * returned buffer will have {@link #hasNioBuffer} == {@code true}. */ public static AllocatedBuffer wrap(final ByteBuffer buffer) { - Objects.requireNonNull(buffer, "buffer"); + checkNotNull(buffer, "buffer"); return new AllocatedBuffer() { diff --git a/java/core/src/main/java/com/google/protobuf/ArrayDecoders.java b/java/core/src/main/java/com/google/protobuf/ArrayDecoders.java index 041174e356..1217e112e0 100644 --- a/java/core/src/main/java/com/google/protobuf/ArrayDecoders.java +++ b/java/core/src/main/java/com/google/protobuf/ArrayDecoders.java @@ -34,7 +34,6 @@ import static com.google.protobuf.MessageSchema.getMutableUnknownFields; import com.google.protobuf.Internal.ProtobufList; import java.io.IOException; -import java.util.Objects; /** * Helper functions to decode protobuf wire format from a byte array. @@ -65,7 +64,10 @@ final class ArrayDecoders { } Registers(ExtensionRegistryLite extensionRegistry) { - this.extensionRegistry = Objects.requireNonNull(extensionRegistry); + if (extensionRegistry == null) { + throw new NullPointerException(); + } + this.extensionRegistry = extensionRegistry; } } diff --git a/java/core/src/main/java/com/google/protobuf/BinaryWriter.java b/java/core/src/main/java/com/google/protobuf/BinaryWriter.java index 39661995ec..94259ecd32 100644 --- a/java/core/src/main/java/com/google/protobuf/BinaryWriter.java +++ b/java/core/src/main/java/com/google/protobuf/BinaryWriter.java @@ -30,6 +30,7 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; import static com.google.protobuf.WireFormat.FIXED32_SIZE; import static com.google.protobuf.WireFormat.FIXED64_SIZE; import static com.google.protobuf.WireFormat.MAX_VARINT32_SIZE; @@ -50,7 +51,6 @@ import java.nio.ByteOrder; import java.util.ArrayDeque; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Queue; /** @@ -146,7 +146,7 @@ abstract class BinaryWriter extends ByteOutput implements Writer { if (chunkSize <= 0) { throw new IllegalArgumentException("chunkSize must be > 0"); } - this.alloc = Objects.requireNonNull(alloc, "alloc"); + this.alloc = checkNotNull(alloc, "alloc"); this.chunkSize = chunkSize; } diff --git a/java/core/src/main/java/com/google/protobuf/BooleanArrayList.java b/java/core/src/main/java/com/google/protobuf/BooleanArrayList.java index b9adb97e59..451fce1e84 100644 --- a/java/core/src/main/java/com/google/protobuf/BooleanArrayList.java +++ b/java/core/src/main/java/com/google/protobuf/BooleanArrayList.java @@ -30,10 +30,11 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import com.google.protobuf.Internal.BooleanList; import java.util.Arrays; import java.util.Collection; -import java.util.Objects; import java.util.RandomAccess; /** @@ -237,7 +238,7 @@ final class BooleanArrayList extends AbstractProtobufList public boolean addAll(Collection collection) { ensureIsMutable(); - Objects.requireNonNull(collection); + checkNotNull(collection); // We specialize when adding another BooleanArrayList to avoid boxing elements. if (!(collection instanceof BooleanArrayList)) { diff --git a/java/core/src/main/java/com/google/protobuf/ByteString.java b/java/core/src/main/java/com/google/protobuf/ByteString.java index e698f681db..68e30448cc 100644 --- a/java/core/src/main/java/com/google/protobuf/ByteString.java +++ b/java/core/src/main/java/com/google/protobuf/ByteString.java @@ -55,7 +55,6 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.NoSuchElementException; -import java.util.Objects; /** * Immutable sequence of bytes. Provides conversions to and from {@code byte[]}, {@link @@ -1329,7 +1328,10 @@ public abstract class ByteString implements Iterable, Serializable { * @param bytes array to wrap */ LiteralByteString(byte[] bytes) { - this.bytes = Objects.requireNonNull(bytes); + if (bytes == null) { + throw new NullPointerException(); + } + this.bytes = bytes; } @Override diff --git a/java/core/src/main/java/com/google/protobuf/CodedInputStream.java b/java/core/src/main/java/com/google/protobuf/CodedInputStream.java index cd639686c2..0b935cb5a9 100644 --- a/java/core/src/main/java/com/google/protobuf/CodedInputStream.java +++ b/java/core/src/main/java/com/google/protobuf/CodedInputStream.java @@ -33,6 +33,7 @@ package com.google.protobuf; import static com.google.protobuf.Internal.EMPTY_BYTE_ARRAY; import static com.google.protobuf.Internal.EMPTY_BYTE_BUFFER; import static com.google.protobuf.Internal.UTF_8; +import static com.google.protobuf.Internal.checkNotNull; import static com.google.protobuf.WireFormat.FIXED32_SIZE; import static com.google.protobuf.WireFormat.FIXED64_SIZE; import static com.google.protobuf.WireFormat.MAX_VARINT_SIZE; @@ -46,7 +47,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; -import java.util.Objects; /** * Reads and decodes protocol message fields. @@ -2056,7 +2056,8 @@ public abstract class CodedInputStream { private int currentLimit = Integer.MAX_VALUE; private StreamDecoder(final InputStream input, int bufferSize) { - this.input = Objects.requireNonNull(input, "input"); + checkNotNull(input, "input"); + this.input = input; this.buffer = new byte[bufferSize]; this.bufferSize = 0; pos = 0; diff --git a/java/core/src/main/java/com/google/protobuf/CodedInputStreamReader.java b/java/core/src/main/java/com/google/protobuf/CodedInputStreamReader.java index c72c6a5e82..7658f629d3 100644 --- a/java/core/src/main/java/com/google/protobuf/CodedInputStreamReader.java +++ b/java/core/src/main/java/com/google/protobuf/CodedInputStreamReader.java @@ -42,7 +42,6 @@ import static com.google.protobuf.WireFormat.WIRETYPE_VARINT; import java.io.IOException; import java.util.List; import java.util.Map; -import java.util.Objects; /** An adapter between the {@link Reader} interface and {@link CodedInputStream}. */ @ExperimentalApi @@ -64,7 +63,7 @@ final class CodedInputStreamReader implements Reader { } private CodedInputStreamReader(CodedInputStream input) { - this.input = Objects.requireNonNull(input, "input"); + this.input = Internal.checkNotNull(input, "input"); this.input.wrapper = this; } diff --git a/java/core/src/main/java/com/google/protobuf/CodedOutputStream.java b/java/core/src/main/java/com/google/protobuf/CodedOutputStream.java index e79543ac55..12f2097a8f 100644 --- a/java/core/src/main/java/com/google/protobuf/CodedOutputStream.java +++ b/java/core/src/main/java/com/google/protobuf/CodedOutputStream.java @@ -42,7 +42,6 @@ import java.io.OutputStream; import java.nio.BufferOverflowException; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import java.util.Objects; import java.util.logging.Level; import java.util.logging.Logger; @@ -1155,7 +1154,9 @@ public abstract class CodedOutputStream extends ByteOutput { private int position; ArrayEncoder(byte[] buffer, int offset, int length) { - Objects.requireNonNull(buffer, "buffer"); + if (buffer == null) { + throw new NullPointerException("buffer"); + } if ((offset | length | (buffer.length - (offset + length))) < 0) { throw new IllegalArgumentException( String.format( @@ -2119,11 +2120,14 @@ public abstract class CodedOutputStream extends ByteOutput { @Override public void write(byte[] value, int offset, int length) throws IOException { - Objects.requireNonNull(value, "value"); - if (offset < 0 + if (value == null + || offset < 0 || length < 0 || (value.length - length) < offset || (limit - length) < position) { + if (value == null) { + throw new NullPointerException("value"); + } throw new OutOfSpaceException( String.format("Pos: %d, limit: %d, len: %d", position, limit, length)); } @@ -2392,7 +2396,10 @@ public abstract class CodedOutputStream extends ByteOutput { ByteOutputEncoder(ByteOutput out, int bufferSize) { super(bufferSize); - this.out = Objects.requireNonNull(out, "out"); + if (out == null) { + throw new NullPointerException("out"); + } + this.out = out; } @Override @@ -2703,7 +2710,10 @@ public abstract class CodedOutputStream extends ByteOutput { OutputStreamEncoder(OutputStream out, int bufferSize) { super(bufferSize); - this.out = Objects.requireNonNull(out, "out"); + if (out == null) { + throw new NullPointerException("out"); + } + this.out = out; } @Override diff --git a/java/core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java b/java/core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java index 2a4b0c4512..0d1983cb07 100644 --- a/java/core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java +++ b/java/core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java @@ -30,13 +30,13 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; import static com.google.protobuf.WireFormat.WIRETYPE_LENGTH_DELIMITED; import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.Map; -import java.util.Objects; /** An adapter between the {@link Writer} interface and {@link CodedOutputStream}. */ @ExperimentalApi @@ -51,7 +51,7 @@ final class CodedOutputStreamWriter implements Writer { } private CodedOutputStreamWriter(CodedOutputStream output) { - this.output = Objects.requireNonNull(output, "output"); + this.output = checkNotNull(output, "output"); this.output.wrapper = this; } diff --git a/java/core/src/main/java/com/google/protobuf/Descriptors.java b/java/core/src/main/java/com/google/protobuf/Descriptors.java index f295739a98..7b1458426b 100644 --- a/java/core/src/main/java/com/google/protobuf/Descriptors.java +++ b/java/core/src/main/java/com/google/protobuf/Descriptors.java @@ -30,6 +30,8 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import com.google.protobuf.DescriptorProtos.DescriptorProto; import com.google.protobuf.DescriptorProtos.EnumDescriptorProto; import com.google.protobuf.DescriptorProtos.EnumOptions; @@ -55,7 +57,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; import java.util.WeakHashMap; import java.util.logging.Logger; @@ -743,7 +744,7 @@ public final class Descriptors { /** Determines if the given field name is reserved. */ public boolean isReservedName(final String name) { - Objects.requireNonNull(name); + checkNotNull(name); for (final String reservedName : proto.getReservedNameList()) { if (reservedName.equals(name)) { return true; diff --git a/java/core/src/main/java/com/google/protobuf/DoubleArrayList.java b/java/core/src/main/java/com/google/protobuf/DoubleArrayList.java index d49e80ee4f..4085653437 100644 --- a/java/core/src/main/java/com/google/protobuf/DoubleArrayList.java +++ b/java/core/src/main/java/com/google/protobuf/DoubleArrayList.java @@ -30,10 +30,11 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import com.google.protobuf.Internal.DoubleList; import java.util.Arrays; import java.util.Collection; -import java.util.Objects; import java.util.RandomAccess; /** @@ -237,7 +238,7 @@ final class DoubleArrayList extends AbstractProtobufList public boolean addAll(Collection collection) { ensureIsMutable(); - Objects.requireNonNull(collection); + checkNotNull(collection); // We specialize when adding another DoubleArrayList to avoid boxing elements. if (!(collection instanceof DoubleArrayList)) { diff --git a/java/core/src/main/java/com/google/protobuf/DynamicMessage.java b/java/core/src/main/java/com/google/protobuf/DynamicMessage.java index be89cfb04f..8beebba24d 100644 --- a/java/core/src/main/java/com/google/protobuf/DynamicMessage.java +++ b/java/core/src/main/java/com/google/protobuf/DynamicMessage.java @@ -30,6 +30,8 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import com.google.protobuf.Descriptors.Descriptor; import com.google.protobuf.Descriptors.EnumValueDescriptor; import com.google.protobuf.Descriptors.FieldDescriptor; @@ -39,7 +41,6 @@ import java.io.InputStream; import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.Objects; /** * An implementation of {@link Message} that can represent arbitrary types, given a {@link @@ -623,7 +624,7 @@ public final class DynamicMessage extends AbstractMessage { /** Verifies that the value is EnumValueDescriptor and matches Enum Type. */ private void ensureSingularEnumValueDescriptor(FieldDescriptor field, Object value) { - Objects.requireNonNull(value); + checkNotNull(value); if (!(value instanceof EnumValueDescriptor)) { throw new IllegalArgumentException( "DynamicMessage should use EnumValueDescriptor to set Enum Value."); diff --git a/java/core/src/main/java/com/google/protobuf/FieldInfo.java b/java/core/src/main/java/com/google/protobuf/FieldInfo.java index 201e0e4e39..71a307a895 100644 --- a/java/core/src/main/java/com/google/protobuf/FieldInfo.java +++ b/java/core/src/main/java/com/google/protobuf/FieldInfo.java @@ -30,9 +30,10 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import com.google.protobuf.Internal.EnumVerifier; import java.lang.reflect.Field; -import java.util.Objects; /** Information for a single field in a protobuf message class. */ @ExperimentalApi @@ -63,8 +64,8 @@ final class FieldInfo implements Comparable { public static FieldInfo forField( Field field, int fieldNumber, FieldType fieldType, boolean enforceUtf8) { checkFieldNumber(fieldNumber); - Objects.requireNonNull(field, "field"); - Objects.requireNonNull(fieldType, "fieldType"); + checkNotNull(field, "field"); + checkNotNull(fieldType, "fieldType"); if (fieldType == FieldType.MESSAGE_LIST || fieldType == FieldType.GROUP_LIST) { throw new IllegalStateException("Shouldn't be called for repeated message fields."); } @@ -88,8 +89,8 @@ final class FieldInfo implements Comparable { public static FieldInfo forPackedField( Field field, int fieldNumber, FieldType fieldType, Field cachedSizeField) { checkFieldNumber(fieldNumber); - Objects.requireNonNull(field, "field"); - Objects.requireNonNull(fieldType, "fieldType"); + checkNotNull(field, "field"); + checkNotNull(fieldType, "fieldType"); if (fieldType == FieldType.MESSAGE_LIST || fieldType == FieldType.GROUP_LIST) { throw new IllegalStateException("Shouldn't be called for repeated message fields."); } @@ -113,9 +114,9 @@ final class FieldInfo implements Comparable { public static FieldInfo forRepeatedMessageField( Field field, int fieldNumber, FieldType fieldType, Class messageClass) { checkFieldNumber(fieldNumber); - Objects.requireNonNull(field, "field"); - Objects.requireNonNull(fieldType, "fieldType"); - Objects.requireNonNull(messageClass, "messageClass"); + checkNotNull(field, "field"); + checkNotNull(fieldType, "fieldType"); + checkNotNull(messageClass, "messageClass"); return new FieldInfo( field, fieldNumber, @@ -135,7 +136,7 @@ final class FieldInfo implements Comparable { public static FieldInfo forFieldWithEnumVerifier( Field field, int fieldNumber, FieldType fieldType, EnumVerifier enumVerifier) { checkFieldNumber(fieldNumber); - Objects.requireNonNull(field, "field"); + checkNotNull(field, "field"); return new FieldInfo( field, fieldNumber, @@ -159,7 +160,7 @@ final class FieldInfo implements Comparable { EnumVerifier enumVerifier, Field cachedSizeField) { checkFieldNumber(fieldNumber); - Objects.requireNonNull(field, "field"); + checkNotNull(field, "field"); return new FieldInfo( field, fieldNumber, @@ -186,9 +187,9 @@ final class FieldInfo implements Comparable { boolean enforceUtf8, EnumVerifier enumVerifier) { checkFieldNumber(fieldNumber); - Objects.requireNonNull(field, "field"); - Objects.requireNonNull(fieldType, "fieldType"); - Objects.requireNonNull(presenceField, "presenceField"); + checkNotNull(field, "field"); + checkNotNull(fieldType, "fieldType"); + checkNotNull(presenceField, "presenceField"); if (presenceField != null && !isExactlyOneBitSet(presenceMask)) { throw new IllegalArgumentException( "presenceMask must have exactly one bit set: " + presenceMask); @@ -229,9 +230,9 @@ final class FieldInfo implements Comparable { boolean enforceUtf8, EnumVerifier enumVerifier) { checkFieldNumber(fieldNumber); - Objects.requireNonNull(fieldType, "fieldType"); - Objects.requireNonNull(oneof, "oneof"); - Objects.requireNonNull(oneofStoredType, "oneofStoredType"); + checkNotNull(fieldType, "fieldType"); + checkNotNull(oneof, "oneof"); + checkNotNull(oneofStoredType, "oneofStoredType"); if (!fieldType.isScalar()) { throw new IllegalArgumentException( "Oneof is only supported for scalar fields. Field " @@ -271,9 +272,9 @@ final class FieldInfo implements Comparable { boolean enforceUtf8, EnumVerifier enumVerifier) { checkFieldNumber(fieldNumber); - Objects.requireNonNull(field, "field"); - Objects.requireNonNull(fieldType, "fieldType"); - Objects.requireNonNull(presenceField, "presenceField"); + checkNotNull(field, "field"); + checkNotNull(fieldType, "fieldType"); + checkNotNull(presenceField, "presenceField"); if (presenceField != null && !isExactlyOneBitSet(presenceMask)) { throw new IllegalArgumentException( "presenceMask must have exactly one bit set: " + presenceMask); @@ -296,9 +297,9 @@ final class FieldInfo implements Comparable { public static FieldInfo forMapField( Field field, int fieldNumber, Object mapDefaultEntry, EnumVerifier enumVerifier) { - Objects.requireNonNull(mapDefaultEntry, "mapDefaultEntry"); + checkNotNull(mapDefaultEntry, "mapDefaultEntry"); checkFieldNumber(fieldNumber); - Objects.requireNonNull(field, "field"); + checkNotNull(field, "field"); return new FieldInfo( field, fieldNumber, @@ -488,7 +489,7 @@ final class FieldInfo implements Comparable { /** Specifies proto2 presence information. This should not be called for oneof fields. */ public Builder withPresence(Field presenceField, int presenceMask) { - this.presenceField = Objects.requireNonNull(presenceField, "presenceField"); + this.presenceField = checkNotNull(presenceField, "presenceField"); this.presenceMask = presenceMask; return this; } diff --git a/java/core/src/main/java/com/google/protobuf/FieldSet.java b/java/core/src/main/java/com/google/protobuf/FieldSet.java index e91151fa36..4853df2837 100644 --- a/java/core/src/main/java/com/google/protobuf/FieldSet.java +++ b/java/core/src/main/java/com/google/protobuf/FieldSet.java @@ -30,6 +30,8 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import com.google.protobuf.LazyField.LazyIterator; import java.io.IOException; import java.util.ArrayList; @@ -37,7 +39,6 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Objects; /** * A class which represents an arbitrary set of fields of some message type. This is used to @@ -409,7 +410,7 @@ final class FieldSet> { private static boolean isValidType(final WireFormat.FieldType type, final Object value) { - Objects.requireNonNull(value); + checkNotNull(value); switch (type.getJavaType()) { case INT: return value instanceof Integer; diff --git a/java/core/src/main/java/com/google/protobuf/FloatArrayList.java b/java/core/src/main/java/com/google/protobuf/FloatArrayList.java index bb8f93160a..e6feba8a35 100644 --- a/java/core/src/main/java/com/google/protobuf/FloatArrayList.java +++ b/java/core/src/main/java/com/google/protobuf/FloatArrayList.java @@ -30,10 +30,11 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import com.google.protobuf.Internal.FloatList; import java.util.Arrays; import java.util.Collection; -import java.util.Objects; import java.util.RandomAccess; /** @@ -236,7 +237,7 @@ final class FloatArrayList extends AbstractProtobufList public boolean addAll(Collection collection) { ensureIsMutable(); - Objects.requireNonNull(collection); + checkNotNull(collection); // We specialize when adding another FloatArrayList to avoid boxing elements. if (!(collection instanceof FloatArrayList)) { diff --git a/java/core/src/main/java/com/google/protobuf/GeneratedMessageV3.java b/java/core/src/main/java/com/google/protobuf/GeneratedMessageV3.java index 184838b80a..46427b3ddf 100644 --- a/java/core/src/main/java/com/google/protobuf/GeneratedMessageV3.java +++ b/java/core/src/main/java/com/google/protobuf/GeneratedMessageV3.java @@ -30,6 +30,8 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import com.google.protobuf.Descriptors.Descriptor; import com.google.protobuf.Descriptors.EnumDescriptor; import com.google.protobuf.Descriptors.EnumValueDescriptor; diff --git a/java/core/src/main/java/com/google/protobuf/IntArrayList.java b/java/core/src/main/java/com/google/protobuf/IntArrayList.java index ed171398c1..9daeebed99 100644 --- a/java/core/src/main/java/com/google/protobuf/IntArrayList.java +++ b/java/core/src/main/java/com/google/protobuf/IntArrayList.java @@ -30,10 +30,11 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import com.google.protobuf.Internal.IntList; import java.util.Arrays; import java.util.Collection; -import java.util.Objects; import java.util.RandomAccess; /** @@ -236,7 +237,7 @@ final class IntArrayList extends AbstractProtobufList public boolean addAll(Collection collection) { ensureIsMutable(); - Objects.requireNonNull(collection); + checkNotNull(collection); // We specialize when adding another IntArrayList to avoid boxing elements. if (!(collection instanceof IntArrayList)) { diff --git a/java/core/src/main/java/com/google/protobuf/Internal.java b/java/core/src/main/java/com/google/protobuf/Internal.java index e62106a42e..90643b8abb 100644 --- a/java/core/src/main/java/com/google/protobuf/Internal.java +++ b/java/core/src/main/java/com/google/protobuf/Internal.java @@ -57,6 +57,22 @@ public final class Internal { static final Charset UTF_8 = Charset.forName("UTF-8"); static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); + /** Throws an appropriate {@link NullPointerException} if the given objects is {@code null}. */ + static T checkNotNull(T obj) { + if (obj == null) { + throw new NullPointerException(); + } + return obj; + } + + /** Throws an appropriate {@link NullPointerException} if the given objects is {@code null}. */ + static T checkNotNull(T obj, String message) { + if (obj == null) { + throw new NullPointerException(message); + } + return obj; + } + /** * Helper called by generated code to construct default values for string fields. * diff --git a/java/core/src/main/java/com/google/protobuf/LazyFieldLite.java b/java/core/src/main/java/com/google/protobuf/LazyFieldLite.java index fe940b9f00..6fab26fc53 100644 --- a/java/core/src/main/java/com/google/protobuf/LazyFieldLite.java +++ b/java/core/src/main/java/com/google/protobuf/LazyFieldLite.java @@ -31,7 +31,6 @@ package com.google.protobuf; import java.io.IOException; -import java.util.Objects; /** * LazyFieldLite encapsulates the logic of lazily parsing message fields. It stores the message in a @@ -117,8 +116,9 @@ public class LazyFieldLite { /** Constructs a LazyFieldLite with bytes that will be parsed lazily. */ public LazyFieldLite(ExtensionRegistryLite extensionRegistry, ByteString bytes) { - this.extensionRegistry = Objects.requireNonNull(extensionRegistry, "found null ExtensionRegistry"); - this.delayedBytes = Objects.requireNonNull(bytes, "found null ByteString"); + checkArguments(extensionRegistry, bytes); + this.extensionRegistry = extensionRegistry; + this.delayedBytes = bytes; } /** Constructs a LazyFieldLite with no contents, and no ability to parse extensions. */ @@ -340,8 +340,9 @@ public class LazyFieldLite { /** Sets this field with bytes to delay-parse. */ public void setByteString(ByteString bytes, ExtensionRegistryLite extensionRegistry) { - this.delayedBytes = Objects.requireNonNull(bytes, "found null ByteString"); - this.extensionRegistry = Objects.requireNonNull(extensionRegistry, "found null ExtensionRegistry"); + checkArguments(extensionRegistry, bytes); + this.delayedBytes = bytes; + this.extensionRegistry = extensionRegistry; this.value = null; this.memoizedBytes = null; } @@ -428,4 +429,13 @@ public class LazyFieldLite { } } } + + private static void checkArguments(ExtensionRegistryLite extensionRegistry, ByteString bytes) { + if (extensionRegistry == null) { + throw new NullPointerException("found null ExtensionRegistry"); + } + if (bytes == null) { + throw new NullPointerException("found null ByteString"); + } + } } diff --git a/java/core/src/main/java/com/google/protobuf/LongArrayList.java b/java/core/src/main/java/com/google/protobuf/LongArrayList.java index 84b1ead5cc..bda43a41bb 100644 --- a/java/core/src/main/java/com/google/protobuf/LongArrayList.java +++ b/java/core/src/main/java/com/google/protobuf/LongArrayList.java @@ -30,10 +30,11 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import com.google.protobuf.Internal.LongList; import java.util.Arrays; import java.util.Collection; -import java.util.Objects; import java.util.RandomAccess; /** @@ -236,7 +237,7 @@ final class LongArrayList extends AbstractProtobufList public boolean addAll(Collection collection) { ensureIsMutable(); - Objects.requireNonNull(collection); + checkNotNull(collection); // We specialize when adding another LongArrayList to avoid boxing elements. if (!(collection instanceof LongArrayList)) { diff --git a/java/core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java b/java/core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java index 0fc793f9ae..84ca9ae0f7 100644 --- a/java/core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java +++ b/java/core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java @@ -30,7 +30,7 @@ package com.google.protobuf; -import java.util.Objects; +import static com.google.protobuf.Internal.checkNotNull; /** * Dynamically generates a manifest-based (i.e. table-based) schema for a given protobuf message. @@ -45,7 +45,7 @@ final class ManifestSchemaFactory implements SchemaFactory { } private ManifestSchemaFactory(MessageInfoFactory messageInfoFactory) { - this.messageInfoFactory = Objects.requireNonNull(messageInfoFactory, "messageInfoFactory"); + this.messageInfoFactory = checkNotNull(messageInfoFactory, "messageInfoFactory"); } @Override diff --git a/java/core/src/main/java/com/google/protobuf/MapField.java b/java/core/src/main/java/com/google/protobuf/MapField.java index 5d1f52369e..f487736065 100644 --- a/java/core/src/main/java/com/google/protobuf/MapField.java +++ b/java/core/src/main/java/com/google/protobuf/MapField.java @@ -30,6 +30,8 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -37,7 +39,6 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; /** @@ -319,8 +320,8 @@ public class MapField implements MutabilityOracle { @Override public V put(K key, V value) { mutabilityOracle.ensureMutable(); - Objects.requireNonNull(key); - Objects.requireNonNull(value); + checkNotNull(key); + checkNotNull(value); return delegate.put(key, value); } @@ -334,8 +335,8 @@ public class MapField implements MutabilityOracle { public void putAll(Map m) { mutabilityOracle.ensureMutable(); for (K key : m.keySet()) { - Objects.requireNonNull(key); - Objects.requireNonNull(m.get(key)); + checkNotNull(key); + checkNotNull(m.get(key)); } delegate.putAll(m); } diff --git a/java/core/src/main/java/com/google/protobuf/MapFieldLite.java b/java/core/src/main/java/com/google/protobuf/MapFieldLite.java index 66f5f46566..f792ae9fc7 100644 --- a/java/core/src/main/java/com/google/protobuf/MapFieldLite.java +++ b/java/core/src/main/java/com/google/protobuf/MapFieldLite.java @@ -30,12 +30,13 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import com.google.protobuf.Internal.EnumLite; import java.util.Arrays; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; -import java.util.Objects; import java.util.Set; /** @@ -91,9 +92,9 @@ public final class MapFieldLite extends LinkedHashMap { @Override public V put(K key, V value) { ensureMutable(); - Objects.requireNonNull(key); + checkNotNull(key); - Objects.requireNonNull(value); + checkNotNull(value); return super.put(key, value); } @@ -116,8 +117,8 @@ public final class MapFieldLite extends LinkedHashMap { private static void checkForNullKeysAndValues(Map m) { for (Object key : m.keySet()) { - Objects.requireNonNull(key); - Objects.requireNonNull(m.get(key)); + checkNotNull(key); + checkNotNull(m.get(key)); } } diff --git a/java/core/src/main/java/com/google/protobuf/MessageSchema.java b/java/core/src/main/java/com/google/protobuf/MessageSchema.java index e075679b58..33c8e914b2 100644 --- a/java/core/src/main/java/com/google/protobuf/MessageSchema.java +++ b/java/core/src/main/java/com/google/protobuf/MessageSchema.java @@ -80,7 +80,6 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Objects; /** Schema used for standard messages. */ final class MessageSchema implements Schema { @@ -1177,7 +1176,9 @@ final class MessageSchema implements Schema { @Override public void mergeFrom(T message, T other) { - Objects.requireNonNull(other); + if (other == null) { + throw new NullPointerException(); + } for (int i = 0; i < buffer.length; i += INTS_PER_FIELD) { // A separate method allows for better JIT optimizations mergeSingleField(message, other, i); @@ -3849,7 +3850,9 @@ final class MessageSchema implements Schema { @Override public void mergeFrom(T message, Reader reader, ExtensionRegistryLite extensionRegistry) throws IOException { - Objects.requireNonNull(extensionRegistry); + if (extensionRegistry == null) { + throw new NullPointerException(); + } mergeFromHelper(unknownFieldSchema, extensionSchema, message, reader, extensionRegistry); } diff --git a/java/core/src/main/java/com/google/protobuf/NioByteString.java b/java/core/src/main/java/com/google/protobuf/NioByteString.java index e7670c6b56..1e594ff878 100644 --- a/java/core/src/main/java/com/google/protobuf/NioByteString.java +++ b/java/core/src/main/java/com/google/protobuf/NioByteString.java @@ -30,6 +30,8 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import java.io.IOException; import java.io.InputStream; import java.io.InvalidObjectException; @@ -42,14 +44,13 @@ import java.nio.InvalidMarkException; import java.nio.charset.Charset; import java.util.Collections; import java.util.List; -import java.util.Objects; /** A {@link ByteString} that wraps around a {@link ByteBuffer}. */ final class NioByteString extends ByteString.LeafByteString { private final ByteBuffer buffer; NioByteString(ByteBuffer buffer) { - Objects.requireNonNull(buffer, "buffer"); + checkNotNull(buffer, "buffer"); // Use native byte order for fast fixed32/64 operations. this.buffer = buffer.slice().order(ByteOrder.nativeOrder()); diff --git a/java/core/src/main/java/com/google/protobuf/Protobuf.java b/java/core/src/main/java/com/google/protobuf/Protobuf.java index ce099f8b96..0affac5f0a 100644 --- a/java/core/src/main/java/com/google/protobuf/Protobuf.java +++ b/java/core/src/main/java/com/google/protobuf/Protobuf.java @@ -30,8 +30,9 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import java.io.IOException; -import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -82,7 +83,7 @@ final class Protobuf { /** Gets the schema for the given message type. */ public Schema schemaFor(Class messageType) { - Objects.requireNonNull(messageType, "messageType"); + checkNotNull(messageType, "messageType"); @SuppressWarnings("unchecked") Schema schema = (Schema) schemaCache.get(messageType); if (schema == null) { @@ -112,8 +113,8 @@ final class Protobuf { * registered. */ public Schema registerSchema(Class messageType, Schema schema) { - Objects.requireNonNull(messageType, "messageType"); - Objects.requireNonNull(schema, "schema"); + checkNotNull(messageType, "messageType"); + checkNotNull(schema, "schema"); return schemaCache.putIfAbsent(messageType, schema); } @@ -127,8 +128,8 @@ final class Protobuf { * previously. */ public Schema registerSchemaOverride(Class messageType, Schema schema) { - Objects.requireNonNull(messageType, "messageType"); - Objects.requireNonNull(schema, "schema"); + checkNotNull(messageType, "messageType"); + checkNotNull(schema, "schema"); return schemaCache.put(messageType, schema); } diff --git a/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java b/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java index f8a10806d7..f51436c83d 100644 --- a/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java +++ b/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java @@ -30,12 +30,13 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import java.util.AbstractList; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.Objects; /** * {@code RepeatedFieldBuilder} implements a structure that a protocol message uses to hold a @@ -276,7 +277,7 @@ public class RepeatedFieldBuilder< * @return the builder */ public RepeatedFieldBuilder setMessage(int index, MType message) { - Objects.requireNonNull(message); + checkNotNull(message); ensureMutableMessageList(); messages.set(index, message); if (builders != null) { @@ -297,7 +298,7 @@ public class RepeatedFieldBuilder< * @return the builder */ public RepeatedFieldBuilder addMessage(MType message) { - Objects.requireNonNull(message); + checkNotNull(message); ensureMutableMessageList(); messages.add(message); if (builders != null) { @@ -318,7 +319,7 @@ public class RepeatedFieldBuilder< * @return the builder */ public RepeatedFieldBuilder addMessage(int index, MType message) { - Objects.requireNonNull(message); + checkNotNull(message); ensureMutableMessageList(); messages.add(index, message); if (builders != null) { @@ -339,7 +340,7 @@ public class RepeatedFieldBuilder< public RepeatedFieldBuilder addAllMessages( Iterable values) { for (final MType value : values) { - Objects.requireNonNull(value); + checkNotNull(value); } // If we can inspect the size, we can more efficiently add messages. diff --git a/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilderV3.java b/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilderV3.java index b3ff588ffc..91bc3e286d 100644 --- a/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilderV3.java +++ b/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilderV3.java @@ -30,12 +30,13 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import java.util.AbstractList; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.Objects; /** * {@code RepeatedFieldBuilderV3} implements a structure that a protocol message uses to hold a @@ -276,7 +277,7 @@ public class RepeatedFieldBuilderV3< * @return the builder */ public RepeatedFieldBuilderV3 setMessage(int index, MType message) { - Objects.requireNonNull(message); + checkNotNull(message); ensureMutableMessageList(); messages.set(index, message); if (builders != null) { @@ -297,7 +298,7 @@ public class RepeatedFieldBuilderV3< * @return the builder */ public RepeatedFieldBuilderV3 addMessage(MType message) { - Objects.requireNonNull(message); + checkNotNull(message); ensureMutableMessageList(); messages.add(message); if (builders != null) { @@ -318,7 +319,7 @@ public class RepeatedFieldBuilderV3< * @return the builder */ public RepeatedFieldBuilderV3 addMessage(int index, MType message) { - Objects.requireNonNull(message); + checkNotNull(message); ensureMutableMessageList(); messages.add(index, message); if (builders != null) { @@ -339,7 +340,7 @@ public class RepeatedFieldBuilderV3< public RepeatedFieldBuilderV3 addAllMessages( Iterable values) { for (final MType value : values) { - Objects.requireNonNull(value); + checkNotNull(value); } // If we can inspect the size, we can more efficiently add messages. diff --git a/java/core/src/main/java/com/google/protobuf/RopeByteString.java b/java/core/src/main/java/com/google/protobuf/RopeByteString.java index 2adff63f90..f584164410 100644 --- a/java/core/src/main/java/com/google/protobuf/RopeByteString.java +++ b/java/core/src/main/java/com/google/protobuf/RopeByteString.java @@ -44,7 +44,6 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; -import java.util.Objects; /** * Class to represent {@code ByteStrings} formed by concatenation of other ByteStrings, without @@ -845,8 +844,9 @@ final class RopeByteString extends ByteString { */ @Override public int read(byte[] b, int offset, int length) { - Objects.requireNonNull(b); - if (offset < 0 || length < 0 || length > b.length - offset) { + if (b == null) { + throw new NullPointerException(); + } else if (offset < 0 || length < 0 || length > b.length - offset) { throw new IndexOutOfBoundsException(); } int bytesRead = readSkipInternal(b, offset, length); diff --git a/java/core/src/main/java/com/google/protobuf/SingleFieldBuilder.java b/java/core/src/main/java/com/google/protobuf/SingleFieldBuilder.java index f21fdbb609..acdc1de183 100644 --- a/java/core/src/main/java/com/google/protobuf/SingleFieldBuilder.java +++ b/java/core/src/main/java/com/google/protobuf/SingleFieldBuilder.java @@ -30,7 +30,7 @@ package com.google.protobuf; -import java.util.Objects; +import static com.google.protobuf.Internal.checkNotNull; /** * {@code SingleFieldBuilder} implements a structure that a protocol message uses to hold a single @@ -77,7 +77,7 @@ public class SingleFieldBuilder< private boolean isClean; public SingleFieldBuilder(MType message, GeneratedMessage.BuilderParent parent, boolean isClean) { - this.message = Objects.requireNonNull(message); + this.message = checkNotNull(message); this.parent = parent; this.isClean = isClean; } @@ -157,7 +157,7 @@ public class SingleFieldBuilder< * @return the builder */ public SingleFieldBuilder setMessage(MType message) { - this.message = Objects.requireNonNull(message); + this.message = checkNotNull(message); if (builder != null) { builder.dispose(); builder = null; diff --git a/java/core/src/main/java/com/google/protobuf/SingleFieldBuilderV3.java b/java/core/src/main/java/com/google/protobuf/SingleFieldBuilderV3.java index 22d3afa0e7..78a4a21664 100644 --- a/java/core/src/main/java/com/google/protobuf/SingleFieldBuilderV3.java +++ b/java/core/src/main/java/com/google/protobuf/SingleFieldBuilderV3.java @@ -30,7 +30,7 @@ package com.google.protobuf; -import java.util.Objects; +import static com.google.protobuf.Internal.checkNotNull; /** * {@code SingleFieldBuilderV3} implements a structure that a protocol message uses to hold a single @@ -77,7 +77,7 @@ public class SingleFieldBuilderV3< private boolean isClean; public SingleFieldBuilderV3(MType message, AbstractMessage.BuilderParent parent, boolean isClean) { - this.message = Objects.requireNonNull(message); + this.message = checkNotNull(message); this.parent = parent; this.isClean = isClean; } @@ -157,7 +157,7 @@ public class SingleFieldBuilderV3< * @return the builder */ public SingleFieldBuilderV3 setMessage(MType message) { - this.message = Objects.requireNonNull(message); + this.message = checkNotNull(message); if (builder != null) { builder.dispose(); builder = null; diff --git a/java/core/src/main/java/com/google/protobuf/StructuralMessageInfo.java b/java/core/src/main/java/com/google/protobuf/StructuralMessageInfo.java index 20208391c3..a32b1430ee 100644 --- a/java/core/src/main/java/com/google/protobuf/StructuralMessageInfo.java +++ b/java/core/src/main/java/com/google/protobuf/StructuralMessageInfo.java @@ -30,10 +30,11 @@ package com.google.protobuf; +import static com.google.protobuf.Internal.checkNotNull; + import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Objects; /** * Information for the layout of a protobuf message class. This describes all of the fields @@ -63,7 +64,7 @@ final class StructuralMessageInfo implements MessageInfo { this.messageSetWireFormat = messageSetWireFormat; this.checkInitialized = checkInitialized; this.fields = fields; - this.defaultInstance = (MessageLite) Objects.requireNonNull(defaultInstance, "defaultInstance"); + this.defaultInstance = (MessageLite) checkNotNull(defaultInstance, "defaultInstance"); } /** Gets the syntax for the message (e.g. PROTO2, PROTO3). */ @@ -128,7 +129,7 @@ final class StructuralMessageInfo implements MessageInfo { } public void withSyntax(ProtoSyntax syntax) { - this.syntax = Objects.requireNonNull(syntax, "syntax"); + this.syntax = checkNotNull(syntax, "syntax"); } public void withMessageSetWireFormat(boolean messageSetWireFormat) { diff --git a/java/pom.xml b/java/pom.xml index f008094848..d85e43040d 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -166,6 +166,27 @@ maven-antrun-plugin 1.8 + + org.codehaus.mojo + animal-sniffer-maven-plugin + 1.20 + + + net.sf.androidscents.signature + android-api-level-14 + 4.0_r4 + + + + + android + test + + check + + + +