Generate Java files for the schema. Generation mode depends on options: - java_multiple_files = true: Separate file per type (default behavior) - java_outer_classname set + java_multiple_files = false: Single file with outer class - Neither set: Separate file per typ
(self)
| 360 | } |
| 361 | |
| 362 | def generate(self) -> List[GeneratedFile]: |
| 363 | """Generate Java files for the schema. |
| 364 | |
| 365 | Generation mode depends on options: |
| 366 | - java_multiple_files = true: Separate file per type (default behavior) |
| 367 | - java_outer_classname set + java_multiple_files = false: Single file with outer class |
| 368 | - Neither set: Separate file per type |
| 369 | """ |
| 370 | files = [] |
| 371 | |
| 372 | outer_classname = self.get_java_outer_classname() |
| 373 | multiple_files = self.get_java_multiple_files() |
| 374 | |
| 375 | if outer_classname and not multiple_files: |
| 376 | # Generate all types in a single outer class file |
| 377 | files.append(self.generate_outer_class_file(outer_classname)) |
| 378 | # Generate schema module (with outer class prefix) |
| 379 | files.append(self.generate_module_file(outer_classname)) |
| 380 | else: |
| 381 | # Generate separate files for each type |
| 382 | # Generate enum files (top-level only, nested enums go inside message files) |
| 383 | for enum in self.schema.enums: |
| 384 | if self.is_imported_type(enum): |
| 385 | continue |
| 386 | files.append(self.generate_enum_file(enum)) |
| 387 | |
| 388 | # Generate union files (top-level only, nested unions go inside message files) |
| 389 | for union in self.schema.unions: |
| 390 | if self.is_imported_type(union): |
| 391 | continue |
| 392 | files.append(self.generate_union_file(union)) |
| 393 | |
| 394 | # Generate message files (includes nested types as inner classes) |
| 395 | for message in self.schema.messages: |
| 396 | if self.is_imported_type(message): |
| 397 | continue |
| 398 | files.append(self.generate_message_file(message)) |
| 399 | |
| 400 | # Generate schema module |
| 401 | files.append(self.generate_module_file()) |
| 402 | |
| 403 | return files |
| 404 | |
| 405 | def get_java_package_path(self) -> str: |
| 406 | """Get the Java package as a path.""" |