Generate a Java class file for a message.
(self, message: Message)
| 479 | |
| 480 | # Generates a Java class file from a message schema definition. |
| 481 | def generate_message_file(self, message: Message) -> GeneratedFile: |
| 482 | """Generate a Java class file for a message.""" |
| 483 | lines = [] |
| 484 | imports: Set[str] = set() |
| 485 | java_package = self.get_java_package() |
| 486 | |
| 487 | # Collect imports (including from nested types) |
| 488 | self.collect_message_imports(message, imports) |
| 489 | |
| 490 | # License header |
| 491 | lines.append(self.get_license_header()) |
| 492 | lines.append("") |
| 493 | |
| 494 | # Package |
| 495 | if java_package: |
| 496 | lines.append(f"package {java_package};") |
| 497 | lines.append("") |
| 498 | |
| 499 | # Imports |
| 500 | if imports: |
| 501 | for imp in sorted(imports): |
| 502 | lines.append(f"import {imp};") |
| 503 | lines.append("") |
| 504 | |
| 505 | # Class declaration |
| 506 | comment = self.format_type_id_comment(message, "//") |
| 507 | if comment: |
| 508 | lines.append(comment) |
| 509 | lines.append(self.get_struct_annotation(message)) |
| 510 | lines.append(f"public class {message.name} {{") |
| 511 | |
| 512 | # Generate nested enums as static inner classes |
| 513 | for nested_enum in message.nested_enums: |
| 514 | for line in self.generate_nested_enum(nested_enum): |
| 515 | lines.append(f" {line}") |
| 516 | |
| 517 | # Generate nested unions as static inner classes |
| 518 | for nested_union in message.nested_unions: |
| 519 | for line in self.generate_union_class( |
| 520 | nested_union, indent=0, nested=True, parent_stack=[message] |
| 521 | ): |
| 522 | lines.append(f" {line}") |
| 523 | |
| 524 | # Generate nested messages as static inner classes |
| 525 | for nested_msg in message.nested_messages: |
| 526 | for line in self.generate_nested_message( |
| 527 | nested_msg, indent=1, parent_stack=[message] |
| 528 | ): |
| 529 | lines.append(f" {line}") |
| 530 | |
| 531 | # Fields |
| 532 | for field in message.fields: |
| 533 | field_lines = self.generate_field(field, [message]) |
| 534 | for line in field_lines: |
| 535 | lines.append(f" {line}") |
| 536 | |
| 537 | lines.append("") |
| 538 |
no test coverage detected