MCPcopy Create free account
hub / github.com/apache/fory / generate_module_file

Method generate_module_file

compiler/fory_compiler/generators/scala.py:895–939  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

893 return isinstance(self.schema.get_type(field_type.name), (Message, Union))
894
895 def generate_module_file(self) -> GeneratedFile:
896 imports = {
897 "org.apache.fory.{Fory, ThreadSafeFory}",
898 "org.apache.fory.scala.{ForyScala, ForySerializer}",
899 "org.apache.fory.serializer.scala.ScalaSerializers",
900 }
901 lines = self.source_header(imports)
902 class_name = self.get_module_name()
903 package_name = self.get_scala_package()
904 if package_name:
905 access = f"private[{package_name.split('.')[-1]}] "
906 else:
907 access = ""
908 lines.append(f"object {class_name} extends org.apache.fory.ForyModule {{")
909 lines.append(" private lazy val fory: ThreadSafeFory =")
910 lines.append(" ForyScala.builder()")
911 lines.append(" .withXlang(true)")
912 lines.append(" .withCompatible(true)")
913 lines.append(" .withRefTracking(true)")
914 lines.append(" .withModule(this)")
915 lines.append(" .buildThreadSafeFory()")
916 lines.append("")
917 lines.append(f" {access}def getFory: ThreadSafeFory = fory")
918 lines.append("")
919 lines.append(" override def install(fory: Fory): Unit = {")
920 imported_modules = self._imported_regs()
921 for package, module in imported_modules:
922 if package:
923 lines.append(f" fory.register({package}.{module})")
924 else:
925 lines.append(f" fory.register({module})")
926 registrations = self.registration_order()
927 for type_def, owner_path in registrations:
928 if isinstance(type_def, Message):
929 self.generate_type_registration(
930 lines, type_def, owner_path, type_only=True
931 )
932 for type_def, owner_path in registrations:
933 if isinstance(type_def, Message):
934 self.serializer_registration(lines, type_def, owner_path)
935 else:
936 self.generate_type_registration(lines, type_def, owner_path)
937 lines.append(" }")
938 lines.append("}")
939 return self.source_file(class_name, lines)
940
941 def registration_order(self) -> List[Tuple[object, Optional[str]]]:
942 entries: List[Tuple[object, Optional[str], List[Message]]] = []

Callers 1

generateMethod · 0.95

Calls 9

source_headerMethod · 0.95
get_module_nameMethod · 0.95
get_scala_packageMethod · 0.95
_imported_regsMethod · 0.95
registration_orderMethod · 0.95
source_fileMethod · 0.95
appendMethod · 0.45

Tested by

no test coverage detected