Jelajahi Sumber

Merge "Adds --ignore_service nano proto compiler flag"

Max Cai 11 tahun lalu
induk
melakukan
f1019531a6

+ 8 - 0
java/README.txt

@@ -475,6 +475,7 @@ java_multiple_files    -> true or false
 java_nano_generate_has -> true or false [DEPRECATED]
 java_nano_generate_has -> true or false [DEPRECATED]
 optional_field_style   -> default or accessors
 optional_field_style   -> default or accessors
 enum_style             -> c or java
 enum_style             -> c or java
+ignore_services        -> true or false
 
 
 java_package:
 java_package:
 java_outer_classname:
 java_outer_classname:
@@ -580,6 +581,13 @@ enum_style={c,java} (default: c)
   compiler inlines all referenced enum constants into the call sites,
   compiler inlines all referenced enum constants into the call sites,
   the interface remains unused and can be removed by ProGuard.
   the interface remains unused and can be removed by ProGuard.
 
 
+ignore_services={true,false} (default: false)
+  Skips services definitions.
+
+  Nano doesn't support services. By default, if a service is defined
+  it will generate a compilation error. If this flag is set to true,
+  services will be silently ignored, instead.
+
 
 
 To use nano protobufs within the Android repo:
 To use nano protobufs within the Android repo:
 
 

+ 1 - 1
src/google/protobuf/compiler/javanano/javanano_file.cc

@@ -105,7 +105,7 @@ bool FileGenerator::Validate(string* error) {
     return false;
     return false;
   }
   }
 
 
-  if (file_->service_count() != 0) {
+  if (file_->service_count() != 0 && !params_.ignore_services()) {
     error->assign(file_->name());
     error->assign(file_->name());
     error->append(
     error->append(
       ": Java NANO_RUNTIME does not support services\"");
       ": Java NANO_RUNTIME does not support services\"");

+ 2 - 0
src/google/protobuf/compiler/javanano/javanano_generator.cc

@@ -142,6 +142,8 @@ bool JavaNanoGenerator::Generate(const FileDescriptor* file,
       params.set_use_reference_types_for_primitives(option_value == "reftypes");
       params.set_use_reference_types_for_primitives(option_value == "reftypes");
     } else if (option_name == "generate_equals") {
     } else if (option_name == "generate_equals") {
       params.set_generate_equals(option_value == "true");
       params.set_generate_equals(option_value == "true");
+    } else if (option_name == "ignore_services") {
+      params.set_ignore_services(option_value == "true");
     } else {
     } else {
       *error = "Ignore unknown javanano generator option: " + option_name;
       *error = "Ignore unknown javanano generator option: " + option_name;
     }
     }

+ 10 - 1
src/google/protobuf/compiler/javanano/javanano_params.h

@@ -62,6 +62,7 @@ class Params {
   bool optional_field_accessors_;
   bool optional_field_accessors_;
   bool use_reference_types_for_primitives_;
   bool use_reference_types_for_primitives_;
   bool generate_equals_;
   bool generate_equals_;
+  bool ignore_services_;
 
 
  public:
  public:
   Params(const string & base_name) :
   Params(const string & base_name) :
@@ -73,7 +74,8 @@ class Params {
     java_enum_style_(false),
     java_enum_style_(false),
     optional_field_accessors_(false),
     optional_field_accessors_(false),
     use_reference_types_for_primitives_(false),
     use_reference_types_for_primitives_(false),
-    generate_equals_(false) {
+    generate_equals_(false),
+    ignore_services_(false) {
   }
   }
 
 
   const string& base_name() const {
   const string& base_name() const {
@@ -195,6 +197,13 @@ class Params {
   bool generate_equals() const {
   bool generate_equals() const {
     return generate_equals_;
     return generate_equals_;
   }
   }
+
+  void set_ignore_services(bool value) {
+    ignore_services_ = value;
+  }
+  bool ignore_services() const {
+    return ignore_services_;
+  }
 };
 };
 
 
 }  // namespace javanano
 }  // namespace javanano