java-to-openapi
v1.0.4
Published
A CLI tool to convert Java classes to OpenAPI 3 YAML.
Downloads
3
Maintainers
Readme
Java-to-OpenAPI
Java-to-OpenAPI is a command-line interface (CLI) tool that converts Java classes into OpenAPI 3 specifications in YAML format. This tool is useful for developers who want to automatically generate OpenAPI documentation from Java classes.
Installation
You can use java-to-openapi directly with npx, without the need for prior installation:
npx java-to-openapi <source-directory> <output-file>
Usage
Basic Command
To use the tool, run the command:
npx java-to-openapi <source-directory> <output-file>
<source-directory>
: The path to the directory containing the .java files.<output-file>
: The path and name of the output YAML file.
Example
If you have a src/example
folder with your Java classes and want to generate an api-spec.yaml
file in the project root, run:
npx java-to-openapi ./src/example ./api-spec.yaml
File Structure
src/
└── example/
├── Produto.java
└── Categoria.java
Features
- Java Class Conversion: Analyzes Java classes and automatically generates the corresponding OpenAPI 3 specification.
- Primitive Type Support: Converts common Java types (int, String, boolean, etc.) to their OpenAPI equivalents.
- List Support: Identifies and converts lists (List) to arrays in OpenAPI.
- Recursiveness: Processes .java files in subdirectories recursively.
Supported Class Examples
The tool supports both simple and complex classes, including those containing lists or references to other classes.
Example Java Class:
import java.util.List;
public class Produto {
private int id;
private String nome;
private double preco;
private boolean emEstoque;
private Categoria categoria;
private List<String> tags;
private List<Categoria> categoriasRelacionadas;
// Getters and Setters omitted for brevity
}
YAML Output:
openapi: 3.0.0
info:
title: API Documentation
version: 1.0.0
components:
schemas:
Produto:
type: object
properties:
id:
type: integer
nome:
type: string
preco:
type: number
emEstoque:
type: boolean
categoria:
$ref: '#/components/schemas/Categoria'
tags:
type: array
items:
type: string
categoriasRelacionadas:
type: array
items:
$ref: '#/components/schemas/Categoria'
Categoria:
type: object
properties:
id:
type: integer
nome:
type: string
Contributing
If you find any bugs or have suggestions for improvements, feel free to open an issue or submit a pull request.
License
This project is licensed under the MIT License. See the LICENSE file for more details.
Author
Developed by Gabriell Huver.