Class ProtoGenerator

java.lang.Object
io.github.anupambasak.gradle.plugins.pojo2proto.ProtoGenerator

public class ProtoGenerator extends Object
  • Constructor Details

    • ProtoGenerator

      public ProtoGenerator()
    • ProtoGenerator

      public ProtoGenerator(boolean prefixEnumNames)
  • Method Details

    • registerTypes

      public Map<String,String> registerTypes(List<com.github.javaparser.ast.CompilationUnit> cus)
      Registers every top-level type that will be generated and assigns its proto name.

      All generated types share one proto package, and generated file names and Java classes clash on case-insensitive file systems (Windows, macOS). So when two types have names that differ only in case (FareDetailDTO / FareDetailDto) or are equal (Status in two packages), each of them is renamed by prefixing its Java package's last segment in PascalCase (com.x.pricing.FareDetailDTO -> PricingFareDetailDTO). More segments are used if that is still ambiguous. Types without a clash keep their name. References, imports and file names follow the new names.

      Returns:
      renamed types, fully qualified Java name to proto name
    • protoName

      public String protoName(com.github.javaparser.ast.body.TypeDeclaration<?> type)
      The proto name of a top-level type: its Java name unless registerTypes(List) renamed it.
    • registeredProtoNames

      public Set<String> registeredProtoNames()
      All proto names of the registered top-level types.
    • generateHeader

      public String generateHeader(String packageName, Set<String> imports)
    • generateMessages

      public String generateMessages(List<com.github.javaparser.ast.CompilationUnit> cus, List<com.github.javaparser.ast.body.EnumDeclaration> enumDeclarations)
    • generateMessage

      public String generateMessage(com.github.javaparser.ast.CompilationUnit cu, List<com.github.javaparser.ast.body.EnumDeclaration> enumDeclarations)
    • generateMessageWithNestedEnums

      public String generateMessageWithNestedEnums(com.github.javaparser.ast.CompilationUnit cu, List<com.github.javaparser.ast.body.EnumDeclaration> nestedEnums, List<com.github.javaparser.ast.body.EnumDeclaration> allEnums)
    • generateEnums

      public String generateEnums(List<com.github.javaparser.ast.body.EnumDeclaration> enumDeclarations)
    • generateEnum

      public String generateEnum(com.github.javaparser.ast.body.EnumDeclaration enumDeclaration)
    • getImports

      public Set<String> getImports(com.github.javaparser.ast.CompilationUnit cu, List<com.github.javaparser.ast.body.EnumDeclaration> enumDeclarations)
    • getTopLevelWrappers

      public List<ProtoGenerator.WrapperMessage> getTopLevelWrappers()
      The wrapper messages to generate as top-level messages (their own files in multi-file mode).
    • generateWrapperMessage

      public String generateWrapperMessage(ProtoGenerator.WrapperMessage wrapper)