diff options
author | Jeff Davidson <jpd@google.com> | 2015-04-02 14:46:35 -0700 |
---|---|---|
committer | Brian Duff <bduff@google.com> | 2015-04-28 13:12:37 -0700 |
commit | 9d546c85bda48c59ba10e240afbf731bd0775bc4 (patch) | |
tree | 17811504a31d7ce4e58302b0f46037e71e1afb2f | |
parent | 6732dd7e58e3adaf217f20f227e6ff7e72cb6b22 (diff) | |
download | protobuf-9d546c85bda48c59ba10e240afbf731bd0775bc4.tar.gz protobuf-9d546c85bda48c59ba10e240afbf731bd0775bc4.tar.bz2 protobuf-9d546c85bda48c59ba10e240afbf731bd0775bc4.zip |
Generate a CREATOR for each Parcelable message.
This is less ideal from a dex count perspective because it requires a
new variable for each message, and because most apps have proguard
rules that will ensure that CREATOR classes are retained.
However, it is required to be able to use nano protos inside of AIDL
files, as the autogenerated AIDL code fails to compile otherwise. This
is a substantial benefit as it allows for backwards-compatible
parameters and return types in AIDL methods along the lines of
safeparcel.
Bug: 19084705
Change-Id: I66a2c0424b96cf8ff6b631b186cc4f9407dfc1f4
-rw-r--r-- | src/google/protobuf/compiler/javanano/javanano_message.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/google/protobuf/compiler/javanano/javanano_message.cc b/src/google/protobuf/compiler/javanano/javanano_message.cc index 060d25f0..a41da5ae 100644 --- a/src/google/protobuf/compiler/javanano/javanano_message.cc +++ b/src/google/protobuf/compiler/javanano/javanano_message.cc @@ -156,6 +156,17 @@ void MessageGenerator::Generate(io::Printer* printer) { } printer->Indent(); + if (params_.parcelable_messages()) { + printer->Print( + "\n" + "// Used by Parcelable\n" + "@SuppressWarnings({\"unused\"})\n" + "public static final android.os.Parcelable.Creator<$classname$> CREATOR =\n" + " new com.google.protobuf.nano.android.ParcelableMessageNanoCreator<\n" + " $classname$>($classname$.class);\n", + "classname", descriptor_->name()); + } + // Nested types and extensions for (int i = 0; i < descriptor_->extension_count(); i++) { ExtensionGenerator(descriptor_->extension(i), params_).Generate(printer); |