Эх сурвалжийг харах

Adds --ignore_service nano proto compiler flag

Nano proto compiler normally throws an error if any service is
defined. If --ignore-services=true is set, no error is thrown and the
service is simply skipped.

Change-Id: Id82583555085cc55550d03a485d3f0189885240b
Jie Dai 11 жил өмнө
parent
commit
d9425a6218

+ 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