59 std::vector<std::string>* annotation_file_list) {
66 std::string filename = package_dir + classname +
".java";
67 file_list->push_back(filename);
68 std::unique_ptr<io::ZeroCopyOutputStream>
output(context->
Open(filename));
72 std::unique_ptr<io::Printer> printer(
75 std::string info_relative_path = classname +
".java.pb.meta";
78 "// Generated by the protocol buffer compiler. DO NOT EDIT!\n"
79 "// source: $filename$\n"
82 if (!java_package.empty()) {
84 "package $package$;\n"
86 "package", java_package);
91 "public final class $classname$ {\n"
92 " public static com.google.protobuf.Descriptors.FileDescriptor\n"
95 "classname", classname);
96 printer->Annotate(
"classname",
file_->
name());
107 std::unique_ptr<io::ZeroCopyOutputStream> info_output(
108 context->
Open(info_full_path));
109 annotations.SerializeToZeroCopyStream(info_output.get());
110 annotation_file_list->push_back(info_full_path);
133 file_proto.SerializeToString(&
file_data);
135 printer->
Print(
"java.lang.String[] descriptorData = {\n");
139 static const int kBytesPerLine = 40;
141 static const int kLinesPerPart = 400;
144 static const int kBytesPerPart = kBytesPerLine * kLinesPerPart;
145 for (
int i = 0;
i <
file_data.size();
i += kBytesPerLine) {
147 if (
i % kBytesPerPart == 0) {
148 printer->
Print(
",\n");
150 printer->
Print(
" +\n");
153 printer->
Print(
"\"$data$\"",
"data",
158 printer->
Print(
"\n};\n");
162 std::vector<std::pair<std::string, std::string> > dependencies;
165 std::string package = FileJavaPackage(file_->dependency(i));
170 full_name = classname;
172 full_name =
package + "." + classname;
174 dependencies.push_back(std::make_pair(filename, full_name));
180 "descriptor = com.google.protobuf.Descriptors.FileDescriptor\n"
181 " .internalBuildGeneratedFileFrom(descriptorData,\n");
183 " new com.google.protobuf.Descriptors.FileDescriptor[] {\n");
185 for (
int i = 0;
i < dependencies.size();
i++) {
187 printer->
Print(
" $dependency$.getDescriptor(),\n",
"dependency",
191 printer->
Print(
" });\n");