diff --git a/examples/Makefile b/examples/Makefile index bdfeae6820..8dc90836f8 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -30,7 +30,7 @@ list_people_cpp: list_people.cc protoc_middleman c++ list_people.cc addressbook.pb.cc -o list_people_cpp `pkg-config --cflags --libs protobuf` javac_middleman: AddPerson.java ListPeople.java protoc_middleman - javac AddPerson.java ListPeople.java com/example/tutorial/AddressBookProtos.java com/example/tutorial/AddressBookProtosInternalDescriptors.java + javac AddPerson.java ListPeople.java com/example/tutorial/AddressBookProtos.java @touch javac_middleman add_person_java: javac_middleman diff --git a/src/google/protobuf/compiler/java/java_file.cc b/src/google/protobuf/compiler/java/java_file.cc index deec0e7179..2d825f6566 100644 --- a/src/google/protobuf/compiler/java/java_file.cc +++ b/src/google/protobuf/compiler/java/java_file.cc @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -314,14 +315,13 @@ void FileGenerator::GenerateDescriptorInitializationCodeForImmutable( " getDescriptor() {\n" " return descriptor;\n" "}\n" - "private static com.google.protobuf.Descriptors.FileDescriptor\n" + "public static com.google.protobuf.Descriptors.FileDescriptor\n" " descriptor;\n" "static {\n"); printer->Indent(); - printer->Print( - "descriptor = $descriptor_classname$.descriptor;\n", - "descriptor_classname", name_resolver_->GetDescriptorClassName(file_)); + SharedCodeGenerator shared_code_generator(file_); + shared_code_generator.GenerateDescriptors(printer); for (int i = 0; i < file_->message_type_count(); i++) { message_generators_[i]->GenerateStaticVariableInitializers(printer); diff --git a/src/google/protobuf/compiler/java/java_generator.cc b/src/google/protobuf/compiler/java/java_generator.cc index b713797b91..42132fa070 100644 --- a/src/google/protobuf/compiler/java/java_generator.cc +++ b/src/google/protobuf/compiler/java/java_generator.cc @@ -99,19 +99,10 @@ bool JavaGenerator::Generate(const FileDescriptor* file, vector all_files; - if (generate_shared_code) { - // Generate code shared between immutable and mutable API. - SharedCodeGenerator shared_code_generator(file); - shared_code_generator.Generate(context, &all_files); - } - vector file_generators; if (generate_immutable_code) { file_generators.push_back(new FileGenerator(file, /* immutable = */ true)); } - if (generate_mutable_code) { - file_generators.push_back(new FileGenerator(file, /* mutable = */ false)); - } for (int i = 0; i < file_generators.size(); ++i) { if (!file_generators[i]->Validate(error)) { for (int j = 0; j < file_generators.size(); ++j) { diff --git a/src/google/protobuf/compiler/java/java_name_resolver.cc b/src/google/protobuf/compiler/java/java_name_resolver.cc index 7f52d234cc..bc7b8146b8 100644 --- a/src/google/protobuf/compiler/java/java_name_resolver.cc +++ b/src/google/protobuf/compiler/java/java_name_resolver.cc @@ -177,7 +177,7 @@ bool ClassNameResolver::HasConflictingClassName( string ClassNameResolver::GetDescriptorClassName( const FileDescriptor* descriptor) { - return GetFileImmutableClassName(descriptor) + "InternalDescriptors"; + return GetFileImmutableClassName(descriptor); } string ClassNameResolver::GetClassName(const FileDescriptor* descriptor, diff --git a/src/google/protobuf/compiler/java/java_shared_code_generator.cc b/src/google/protobuf/compiler/java/java_shared_code_generator.cc index c9f80abf45..e454a52625 100644 --- a/src/google/protobuf/compiler/java/java_shared_code_generator.cc +++ b/src/google/protobuf/compiler/java/java_shared_code_generator.cc @@ -80,12 +80,18 @@ void SharedCodeGenerator::Generate(GeneratorContext* context, "package", java_package); } printer->Print( - "public final class $classname$ {\n", + "public final class $classname$ {\n" + " public static com.google.protobuf.Descriptors.FileDescriptor\n" + " descriptor;\n" + " static {\n", "classname", classname); printer->Indent(); + printer->Indent(); GenerateDescriptors(printer.get()); printer->Outdent(); + printer->Outdent(); printer->Print( + " }\n" "}\n"); printer.reset(); @@ -113,11 +119,7 @@ void SharedCodeGenerator::GenerateDescriptors(io::Printer* printer) { file_proto.SerializeToString(&file_data); printer->Print( - "public static com.google.protobuf.Descriptors.FileDescriptor\n" - " descriptor;\n" - "static {\n" - " java.lang.String[] descriptorData = {\n"); - printer->Indent(); + "java.lang.String[] descriptorData = {\n"); printer->Indent(); // Only write 40 bytes per line. @@ -206,10 +208,6 @@ void SharedCodeGenerator::GenerateDescriptors(io::Printer* printer) { printer->Print( " }, assigner);\n"); - - printer->Outdent(); - printer->Print( - "}\n"); } bool SharedCodeGenerator::ShouldIncludeDependency( diff --git a/src/google/protobuf/compiler/java/java_shared_code_generator.h b/src/google/protobuf/compiler/java/java_shared_code_generator.h index c5457bf176..8e37eaf704 100644 --- a/src/google/protobuf/compiler/java/java_shared_code_generator.h +++ b/src/google/protobuf/compiler/java/java_shared_code_generator.h @@ -68,10 +68,9 @@ class SharedCodeGenerator { void Generate(GeneratorContext* generator_context, vector* file_list); - - private: void GenerateDescriptors(io::Printer* printer); + private: // Returns whether the dependency should be included in the output file. // Always returns true for opensource, but used internally at Google to help // improve compatibility with version 1 of protocol buffers.