change java compiler to only produce one java file

pull/1/head
jieluo@google.com 11 years ago
parent 9efebb3294
commit 7db9c098df
  1. 2
      examples/Makefile
  2. 8
      src/google/protobuf/compiler/java/java_file.cc
  3. 9
      src/google/protobuf/compiler/java/java_generator.cc
  4. 2
      src/google/protobuf/compiler/java/java_name_resolver.cc
  5. 18
      src/google/protobuf/compiler/java/java_shared_code_generator.cc
  6. 3
      src/google/protobuf/compiler/java/java_shared_code_generator.h

@ -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

@ -44,6 +44,7 @@
#include <google/protobuf/compiler/java/java_message.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
#include <google/protobuf/compiler/java/java_service.h>
#include <google/protobuf/compiler/java/java_shared_code_generator.h>
#include <google/protobuf/compiler/code_generator.h>
#include <google/protobuf/io/printer.h>
#include <google/protobuf/io/zero_copy_stream.h>
@ -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);

@ -99,19 +99,10 @@ bool JavaGenerator::Generate(const FileDescriptor* file,
vector<string> 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<FileGenerator*> 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) {

@ -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,

@ -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(

@ -68,10 +68,9 @@ class SharedCodeGenerator {
void Generate(GeneratorContext* generator_context,
vector<string>* 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.

Loading…
Cancel
Save