Class WadlGeneratorConfig

java.lang.Object
org.glassfish.jersey.server.wadl.config.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)