Class WadlGeneratorConfig

java.lang.Object
org.glassfish.jersey.server.wadl.config.WadlGeneratorConfig
Direct Known Subclasses:
WadlGeneratorConfig.WadlGeneratorConfigImpl

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:

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();
     }

 }