Skip to content
Ryan Heaton edited this page Sep 17, 2015 · 31 revisions

Note: The following is applicable to Enunciate 2. For Enunciate 1.x modules, see Modules (Version 1).

Modules

The work of Enunciate is divided into modules. Modules are loosely coupled, loosely-interdependant extensions to the Enunciate engine. Each module has a specific set of work to perform. For example, the IDL module generates the IDL and schemas for the API, the Java XML client module generates the Java XML client libraries, etc. Since each module has a specific set of work to do, each module has also a separate set of configuration options.

The modules that are to be included in the Enunciate mechanism are discovered at runtime using the Java Service Loader.

There is a set of "provider" modules that you will likely always want enabled. The "provider" modules each interpret and provide a model to the Enunciate engine on which the various other modules might depend in order to do their work. Each provider module defines its model based on the various specifications and libraries that define the model. For example, JAXB provides a specification that describes how Java objects are (de)serialized to/from XML. The JAXB Enunciate Module uses the Java classes to provide an XML model to Enunciate. Other modules (e.g. C# XML, Java XML, etc.) use the model provided by the JAXB module to generate code. You'll want to be thoughtful about disabling a provider module because it may have the side-effect of disabling depending modules.

For more information about how to write your own module, see Custom Modules.

Provider Modules

module description
[[jaxb Module JAXB]]
[[jackson Module Jackson]]
[[jackson1 Module Jackson 1]]
[[jaxws Module JAXWS]]
[[jaxrs Module JAXRS]]

Non-Provider Modules

module description
[[c-xml Module C XML]]
[[csharp-xml Module C Sharp XML]]
[[docs Module Docs]]
[[java-xml-client Module Java XML Client]]
[[java-json-client Module Java JSON Client]]
[[gwt-json-overlay Module GWT JSON Overlay]]
[[obj-c-xml Module Obj C XML]]
[[php-xml Module PHP XML]]
[[php-json Module PHP JSON]]
[[ruby-json Module Ruby JSON]]
[[idl Module IDL]]
[[swagger Module Swagger]]
Clone this wiki locally