Class WadlGeneratorConfig


  • public abstract class WadlGeneratorConfig
    extends Object
    Provides a configured WadlGenerator with all decorations (the default wadl generator decorated by other generators).

    Creating a WadlGeneratorConfig

    If you want to create an instance at runtime you can configure the WadlGenerator class and property names/values. A new instance of the Generator is created for each generation action. The first option would look like this:

      WadlGeneratorConfig config = WadlGeneratorConfig
         .generator( MyWadlGenerator.class )
         .prop( "someProperty", "someValue" )
         .generator( MyWadlGenerator2.class )
         .prop( "someProperty", "someValue" )
         .prop( "anotherProperty", "anotherValue" )
         .build();
     

    If you want to specify the WadlGeneratorConfig in the web.xml you have to subclass it and set the servlet init-param ServerProperties.WADL_GENERATOR_CONFIG to the name of your subclass. This class might look like this:

      class MyWadlGeneratorConfig extends WadlGeneratorConfig {
    
          public List<WadlGeneratorDescription> configure() {
              return generator( MyWadlGenerator.class )
                         .prop( "foo", propValue )
                         .generator( MyWadlGenerator2.class )
                         .prop( "bar", propValue2 )
                         .descriptions();
          }
    
     }
     

    Configuring the WadlGenerator

    The WadlGenerator properties will be populated with the provided properties like this:

    • The types match exactly:
      if the WadlGenerator property is of type org.example.Foo and the provided property value is of type org.example.Foo
    • Types that provide a constructor for the provided type (mostly java.lang.String)
    • java.io.InputStream: The InputStream can e.g. represent a file. The stream is loaded from the property value (provided by the WadlGeneratorDescription) via ClassLoader.getResourceAsStream(String). It will be closed after WadlGenerator.init() was called.
    • Deprecated, will be removed in future versions:
      The WadlGenerator property is of type File and the provided property value is a String:
      the provided property value can contain the prefix classpath: to denote, that the path to the file is relative to the classpath. In this case, the property value is stripped by the prefix classpath: and the File is created via
        new File( generator.getClass().getResource( strippedFilename ).toURI() )
       
      Notice that the filename is loaded from the classpath in this case, e.g. classpath:test.xml refers to a file in the package of the class (WadlGeneratorDescription.getGeneratorClass()). The file reference classpath:/test.xml refers to a file that is in the root of the classpath.

    Existing WadlGenerator implementations:

    • WadlGeneratorApplicationDoc
    • WadlGeneratorGrammarsSupport
    • WadlGeneratorJAXBGrammarGenerator
    • WadlGeneratorResourceDocSupport

    A common example for a WadlGeneratorConfig would be this:

      class MyWadlGeneratorConfig extends WadlGeneratorConfig {
    
          public List<WadlGeneratorDescription> configure() {
              return generator( WadlGeneratorApplicationDoc.class )
                  .prop( "applicationDocsStream", "application-doc.xml" )
                  .generator( WadlGeneratorGrammarsSupport.class )
                  .prop( "grammarsStream", "application-grammars.xml" )
                  .generator( WadlGeneratorResourceDocSupport.class )
                  .prop( "resourceDocStream", "resourcedoc.xml" )
                  .descriptions();
                  .descriptions();
          }
    
      }
     

    Author:
    Martin Grotzke (martin.grotzke at freiheit.com)