diff options
author | Jisi Liu <liujisi@google.com> | 2017-10-18 15:33:31 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-18 15:33:31 -0700 |
commit | ca6187d5e76fee30d29d07a2c620421b90244bdd (patch) | |
tree | 2adc1c2bd1ad37c66a9c48ab3b89107c4b46f72e | |
parent | 3d6cc0e74b788b4a807d3d6d66694609870f37bb (diff) | |
parent | f9b81690f56b8153cbe8b4523ed2b4338c69fd47 (diff) |
Merge pull request #3578 from pherl/filedeprecation
Add @Deprecated annotation support for proto file.
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | java/core/generate-test-sources-build.xml | 1 | ||||
-rw-r--r-- | java/core/src/test/proto/com/google/protobuf/deprecated_file.proto | 38 | ||||
-rw-r--r-- | src/google/protobuf/compiler/java/java_file.cc | 7 |
4 files changed, 45 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am index 33236189..8b09cb87 100644 --- a/Makefile.am +++ b/Makefile.am @@ -332,6 +332,7 @@ java_EXTRA_DIST= java/core/src/test/java/com/google/protobuf/WellKnownTypesTest.java \ java/core/src/test/java/com/google/protobuf/WireFormatTest.java \ java/core/src/test/proto/com/google/protobuf/any_test.proto \ + java/core/src/test/proto/com/google/protobuf/deprecated_file.proto \ java/core/src/test/proto/com/google/protobuf/field_presence_test.proto \ java/core/src/test/proto/com/google/protobuf/lazy_fields_lite.proto \ java/core/src/test/proto/com/google/protobuf/lite_equals_and_hash.proto \ diff --git a/java/core/generate-test-sources-build.xml b/java/core/generate-test-sources-build.xml index 68951747..abcdf5dd 100644 --- a/java/core/generate-test-sources-build.xml +++ b/java/core/generate-test-sources-build.xml @@ -19,6 +19,7 @@ <arg value="${protobuf.source.dir}/google/protobuf/unittest_enormous_descriptor.proto"/> <arg value="${protobuf.source.dir}/google/protobuf/unittest_no_generic_services.proto"/> <arg value="${protobuf.source.dir}/google/protobuf/unittest_well_known_types.proto"/> + <arg value="${test.proto.dir}/com/google/protobuf/deprecated_file.proto"/> <arg value="${test.proto.dir}/com/google/protobuf/lazy_fields_lite.proto"/> <arg value="${test.proto.dir}/com/google/protobuf/lite_equals_and_hash.proto"/> <arg value="${test.proto.dir}/com/google/protobuf/multiple_files_test.proto"/> diff --git a/java/core/src/test/proto/com/google/protobuf/deprecated_file.proto b/java/core/src/test/proto/com/google/protobuf/deprecated_file.proto new file mode 100644 index 00000000..ca90e927 --- /dev/null +++ b/java/core/src/test/proto/com/google/protobuf/deprecated_file.proto @@ -0,0 +1,38 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package deprecated_file; + +option deprecated = true; + +// TODO (liujisi): Add deprecation options on messages, enums fields as well and +// add tests to verify those annotations are actually generated. diff --git a/src/google/protobuf/compiler/java/java_file.cc b/src/google/protobuf/compiler/java/java_file.cc index 2d5465ba..21133a15 100644 --- a/src/google/protobuf/compiler/java/java_file.cc +++ b/src/google/protobuf/compiler/java/java_file.cc @@ -248,9 +248,12 @@ void FileGenerator::Generate(io::Printer* printer) { PrintGeneratedAnnotation( printer, '$', options_.annotate_code ? classname_ + ".java.pb.meta" : ""); printer->Print( - "public final class $classname$ {\n" + "$deprecation$public final class $classname$ {\n" " private $ctor$() {}\n", - "classname", classname_, "ctor", classname_); + "deprecation", file_->options().deprecated() ? + "@java.lang.Deprecated " : "", + "classname", classname_, + "ctor", classname_); printer->Annotate("classname", file_->name()); printer->Indent(); |