org.glassfish.jersey.server.wadl.config

## 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`
- `server.wadl.internal.generators.resourcedoc.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)

### Nested Class Summary

Nested Classes
`static class` `WadlGeneratorConfig.WadlGeneratorConfigDescriptionBuilder`

### Constructor Summary

Constructors
Constructor and Description
`WadlGeneratorConfig()`

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`abstract List` `configure()`
`WadlGenerator` `createWadlGenerator(org.glassfish.jersey.internal.inject.InjectionManager injectionManager)` Create a new instance of `WadlGenerator`, based on the `WadlGeneratorDescription`s provided by `configure()`.
`static WadlGeneratorConfig.WadlGeneratorConfigDescriptionBuilder` `generator(Class<? extends WadlGenerator> generatorClass)` Start to build an instance of `WadlGeneratorConfig`:

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### WadlGeneratorConfig

    public WadlGeneratorConfig()

### Method Detail

#### configure

    public abstract List configure()

#### createWadlGenerator

    public WadlGenerator createWadlGenerator(org.glassfish.jersey.internal.inject.InjectionManager injectionManager)

Create a new instance of `WadlGenerator`, based on the `WadlGeneratorDescription`s provided by `configure()`.

Returns:
  the initialized `WadlGenerator`

#### generator

    public static WadlGeneratorConfig.WadlGeneratorConfigDescriptionBuilder generator(Class<? extends WadlGenerator> generatorClass)

Start to build an instance of `WadlGeneratorConfig`:

    generator(<class>)
          .prop(<name>, <value>)
          .prop(<name>, <value>)
     .generator(<class>)
          .prop(<name>, <value>)
          .prop(<name>, <value>)
          .build()

Parameters:
  `generatorClass` - the class of the wadl generator to configure
Returns:
  an instance of `WadlGeneratorConfig.WadlGeneratorConfigDescriptionBuilder`.