$ show stoicflame/enunciate
Enunciate is a build-time Java framework that generates API documentation, Swagger/OpenAPI specs, WSDL/XSD, and multi-language client libraries from annotated web service source code (JAX-RS, JAX-WS, JAXB, Jackson, Spring MVC). It operates as a Maven plugin or Ant task, using a plugin architecture where each technology (JAXB, JAX-RS, etc.) and output format (HTML docs, C# client, etc.) is a separate module discovered via Java SPI. The core engine scans source files, builds an internal API model using javac annotation processing, then renders templates (FreeMarker) to produce artifacts. The codebase demonstrates solid engineering with clear separation of concerns, but shows age: it targets Java 8, uses older library versions, and has significant duplication across client generation modules. It remains functional for legacy projects but may require updates for modern Java frameworks.
The LLM identified 2 files worth highlighting for reuse:
Provides a transparent decoration layer over javax.lang.model.type.TypeMirror, adding utility methods (isCollection, isMap, erasure, etc.) and caching. This is a core building block for all type analysis in Enunciate and could be extracted for any annotation processing project needing richer type inspection.
Central utility for constructing data type examples from schema definitions, handling nested types, collections, and polymorphic subtypes. It uses a memoized visitor pattern and is framework-agnostic, making it reusable for any project that needs to generate sample JSON/XML from type models.