Sling
  1. Sling
  2. SLING-1451

Clean up compiler API and use classloading infrastructure

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: Commons Compiler 1.0.0
    • Fix Version/s: Commons Compiler 2.0.0
    • Component/s: Commons
    • Labels:
      None

      Description

      The current interface of the commons compiler is unnecessary complicated and does not use all of the features of the commons classloading infrastructure.

      We can:

      • remove the CompilerEnvironment interface - this can be handled internally
      • remove the ClassWriter interface - we have the ClassLoaderWriter interface in the commons classloader
      • change the options interface to extend a map - this allows us to add new options without changing interfaces/api
      • the compile unit interface can be changed to
        CompileUnit { InputStream getSource(); String getMainTypeName(); }

        This simplifies the integration with the rest of sling which is resource based.
        The JavaCompiler interface then just takes an array of compile units, an error handler and the options

        Activity

        Hide
        Carsten Ziegeler added a comment -

        I've changed the interfaces as outlined in revision 925247
        In addition it is possible to overwrite the classloading and class writing behaviour through the options object.

        Show
        Carsten Ziegeler added a comment - I've changed the interfaces as outlined in revision 925247 In addition it is possible to overwrite the classloading and class writing behaviour through the options object.
        Hide
        Carsten Ziegeler added a comment -

        I've done further changes in revision
        The compiler now checks if compilation is necessary (by comparing last modified of source and class - compilation can be forced)
        As a result a compilation result is now returned, containing all errors and warnings - this removes the need of custom error handler
        implementations
        In addition the result can be used to directly load the classes

        With all these changes, clients of the compiler do not need to know anything about the commons classloader infrastructure. They
        only need the compiler; this simplifies the usage.

        Show
        Carsten Ziegeler added a comment - I've done further changes in revision The compiler now checks if compilation is necessary (by comparing last modified of source and class - compilation can be forced) As a result a compilation result is now returned, containing all errors and warnings - this removes the need of custom error handler implementations In addition the result can be used to directly load the classes With all these changes, clients of the compiler do not need to know anything about the commons classloader infrastructure. They only need the compiler; this simplifies the usage.

          People

          • Assignee:
            Carsten Ziegeler
            Reporter:
            Carsten Ziegeler
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development