Skip to content

ZenWave360/zenwave-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZenWave SDK

ZW> Code Generator ZW> Code Generator

👉 ZenWave360 Helps You Create Software Easy to Understand

Maven Central General Availability build coverage branches coverage GitHub

Note: Starting with version 2.0.0, the Maven groupId has changed to io.zenwave360. The code remains fully compatible. You can find Previous Releases Documentation here.

ZenWave SDK is a configurable and extensible toolkit for Domain Driven Design (DDD) and API-First that can generate code from a mix of different models including:

  • ZDL Domain Language
  • AsyncAPI
  • OpenAPI

Table of Contents:

JBang Instalation

The easiest way to install ZenWave SDK is as a JBang alias:

jbang alias add --fresh --force --name=zw release@zenwave360/zenwave-sdk

or if you prefer to use the latest snapshot versions:

jbang alias add --fresh --force --name=zw snapshots@zenwave360/zenwave-sdk

or if you prefer to use the next experimental/unstable snapshot versions:

jbang alias add --fresh --force --name=zw next@zenwave360/zenwave-sdk

If you plan to use custom plugins you will need to use the command in the following format:

jbang alias add --name=zw  --force \
    -m=io.zenwave360.sdk.Main \
    --repos=mavencentral,snapshots=https://s01.oss.sonatype.org/content/repositories/snapshots \
    --deps=\
org.slf4j:slf4j-simple:1.7.36,\
io.zenwave360.sdk.plugins:asyncapi-spring-cloud-streams3:1.7.1,\
io.zenwave360.sdk.plugins:asyncapi-jsonschema2pojo:1.7.1,\
io.zenwave360.sdk.plugins:openapi-spring-webtestclient:1.7.1,\
io.zenwave360.sdk.plugins:backend-application-default:1.7.1,\
io.zenwave360.sdk.plugins:zdl-to-openapi:1.7.1,\
io.zenwave360.sdk.plugins:zdl-to-asyncapi:1.7.1,\
io.zenwave360.sdk.plugins:jdl-to-asyncapi:1.7.1,\
io.zenwave360.sdk.plugins:zdl-to-markdown:1.7.1,\
io.zenwave360.sdk.plugins:openapi-controllers:1.7.1
    io.zenwave360.sdk:zenwave-sdk-cli:1.7.1

You can include any custom plugin jars in the --deps option.

JBang will use you maven settings for repository resolution, but you can also specify a custom maven repository in the --repos option.

Features / Roadmap

  • ZenWave SDK CLI
    • Default parsers, processors, plugins, templating, formatters, writers, etc... for AsyncAPI, OpenAPI and JDL.
    • Help command: detailed, json, markdown, list of available plugins
    • Fork existing (custom or standard) plugin command
  • ZenWave SDK Maven Plugin
  • Standard Plugins
    • JDL Backend Application (flexible hexagonal architecture)
      • Domain Entities
      • Inbound
        • Service Ports, DTOs, Mappers
        • Implementation for CRUD operations
        • Acceptance Tests: SpringData InMemory Repositories
      • Outbound: SpringData Repositories, ElasticSearch... (for REST or Async see other plugins)
      • Adapters:
        • Spring MVC
        • Spring WebFlux
      • Flavors
        • MongoDB
          • Imperative
          • Reactive
        • JPA
          • Imperative
          • Reactive
      • Unit/Integration Testing
        • Edge Integration Testing: partial spring-boot context for outbound adapters (with testcontainers)
        • Sociable Vertical Testing: manual dependency setup with in memory infrastructure test-doubles
        • Vertical Integration Testing: full spring-boot context for inbound adapters (with testcontainers)
    • JDL OpenAPI Controllers
    • OpenAPI to Spring WebTestClient
    • AsyncAPI Spring Cloud Streams3
      • Consumer and Producer. Imperative and Reactive.
        • Business Exceptions Dead Letter Queues Routing
      • Producer with Transactional Outbox pattern
        • For MongoDB
        • For JDBC
      • Enterprise Envelop Pattern
      • Automatically fill headers at runtime from payload paths, tracing-id supplier...
    • JDL to Specs
      • JDL to OpenAPI
      • JDL to AsyncAPI
        • AsyncAPI schemas
        • AVRO schemas
    • API Testing
    • Reverser Engineering
      • OpenAPI 2 JDL
      • Java 2 JDL
        • Spring Data MongoDB annotations
        • JPA annotations

Building from source

git clone https://github.com/ZenWave360/zenwave-sdk.git
cd zenwave-sdk
mvn clean install

Usage

Use the following jbang format:

jbang zw -p <pluginConfigClass or short-code> optionName=value optionName2=value

You can get a list of all available plugins:

$ jbang zw -h list

Usage: <main class> [-f] [-h[=<helpFormat>]] [-p[=<pluginClass>]]
                    [<String=Object>...]
      [<String=Object>...]
  -f, --force                Force overwrite
  -h, --help[=<helpFormat>]  Help with output format
  -p, --plugin[=<pluginClass>]
                             Plugin Class or short-code
INFO Reflections - Reflections took 566 ms to scan 59 urls, producing 2513 keys and 13329 values
ZW> SDK (2.0.0)

Available plugins:

BackendApplicationDefaultPlugin:    Generates a full backend application using the provided 'layout' property (2.0.0)
ZDLToOpenAPIPlugin:                 Generates a draft OpenAPI definitions from your ZDL entities and services. (2.0.0)
ZDLToAsyncAPIPlugin:                Generates a draft AsyncAPI file with events from your ZDL services. (2.0.0)
OpenAPIControllersPlugin:           Generates implementations based on ZDL models and OpenAPI definitions SpringMVC generated OpenAPI interfaces. (2.0.0)
AsyncApiJsonSchema2PojoPlugin:      Generate Plain Old Java Objects from OpenAPI/AsyncAPI schemas or full JSON-Schema files. (2.0.0)
SpringCloudStreams3Plugin:          Generates strongly typed SpringCloudStreams3 producer/consumer classes for AsyncAPI (2.0.0)
SpringCloudStreams3AdaptersPlugin:  Generates Spring Cloud Streams Consumers from AsyncAPI definitions. (2.0.0)
SpringWebTestClientPlugin:          Generates test for SpringMVC or Spring WebFlux using WebTestClient based on OpenAPI specification. (2.0.0)
OpenAPIKaratePlugin:                Generates test for KarateDSL based on OpenAPI specification. (2.0.0)
JDLToAsyncAPIPlugin:                Generates a full AsyncAPI definitions for CRUD operations from JDL models (2.0.0)
ZdlToJsonPlugin:                    Prints to StdOut ZDL Model as JSON (2.0.0)
OpenAPIToJDLPlugin:                 Generates JDL model from OpenAPI schemas (2.0.0)
ZdlToMarkdownPlugin:                Generates Markdown glossary from Zdl Models (2.0.0)


Use: "jbang zw -p <plugin | short-code> -h" to get help on a specific plugin

NOTE: it will list any available plugin, standard or custom, inside any of these root java packages "io", "com" or "org".

And get help for a given plugin:

jbang zw --help -p <pluginConfigClass>

You can add choose a help format from the following: help, detailed, markdown, or list:

jbang zw --help markdown -p <pluginConfigClass>

Available Plugins

Refer to individual plugin's documentation for more information:

Plugin Description Model Types
Backend Application Default Backend Application Default ZDL
AsyncAPI JSON Schema to POJO AsyncAPI JSON Schema to POJO AsyncAPI, JsonSchema
AsyncAPI to Spring Cloud Streams 3 AsyncAPI to Spring Cloud Streams 3 AsyncAPI, AVRO, JsonSchema
OpenAPI Controllers JDL OpenAPI Controllers OpenAPI, ZDL
OpenAPI to Spring WebTestClient OpenAPI to Spring WebTestClient OpenAPI
ZDL to OpenAPI ZDL to OpenAPI and OpenAPI to ZDL ZDL, OpenAPI
ZDL to AsyncAPI ZDL to AsyncAPI ZDL, AsyncAPI
ZDL to Markdown ZDL to Markdown ZDL
Java 2 JDL Reverse Engineering Java 2 JDL Reverse Engineering Java, JDL
Java 2 AsyncAPI Reverse Engineering Java 2 AsyncAPI Reverse Engineering Java
MCP Server ZenWave MCP Server ZDL

ZenWave SDK Documentation

Please refer to the documentation website for more information.

About

DDD and API-First tools for Event-Driven microservices. Create Software Easy to Understand.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •