LIGHT

  • News
  • Docs
  • Community
  • Reddit
  • GitHub

Generate Command Service

In the previous step, we have the workspace parepared and the light-codegen is built locally. In this step, we are going to generate the command service.

As we know, to generate a hybrid service, we need to have a config.json and a schema.json as inputs for the light-codegen. For this tutorial, we have the command service config and schema created in the model-config repository already. They are located at https://github.com/networknt/model-config/tree/master/hybrid/todo-command

config.json

{
  "rootPackage": "com.networknt.todolist.command",
  "handlerPackage":"com.networknt.todolist.command.handler",
  "modelPackage":"com.networknt.todolist.command.model",
  "artifactId": "hybrid-command",
  "groupId": "com.networknt",
  "name": "hybrid-command",
  "version": "0.1.0",
  "overwriteHandler": true,
  "overwriteHandlerTest": true,
  "httpPort": 8080,
  "enableHttp": false,
  "httpsPort": 8443,
  "enableHttps": true,
  "enableHttp2": true,
  "enableRegistry": false,
  "supportOracle": false,
  "supportMysql": false,
  "supportPostgresql": false,
  "supportH2ForTest": false,
  "supportClient": false,
  "dockerOrganization": "networknt"
}

schema.json

{
  "host": "lightapi.net",
  "service": "todo",
  "action": [
   {
    "name": "delete",
    "version": "0.1.0",
    "handler": "DeleteTodo",
    "scope" : "todo.w",    
    "schema" : {
      "title" : "Service",
      "type" : "object",
      "properties" : {
        "id" : {
          "type" : "string"
        }
      },
      "required" : [ "id"]
    },
    "scope" : "todo.w"
  },
  {
      "name": "create",
      "version": "0.1.0",
      "handler": "CreateTodo",
      "scope" : "todo.w",
      "schema" : {
      "title" : "Service",
      "type" : "object",
      "properties" : {
        "title" : {
          "type" : "string"
        },
        "completed" : {
          "type" : "boolean"
        },
        "order" : {
          "description" : "order of todo in the todo list",
          "type" : "integer",
          "minimum" : 0
        }
      },
      "required" : [ "title" ]
    },
    "scope" : "todo.w"
  },
{
      "name": "update",
      "version": "0.1.0",
      "handler": "UpdateTodo",
      "scope" : "todo.w",
      "schema" : {
      "title" : "Service",
      "type" : "object",
      "properties" : {
        "id" : {
          "type" : "string"
        },
        "title" : {
          "type" : "string"
        },
        "completed" : {
          "type" : "boolean"
        },
        "order" : {
          "description" : "order of todo in the todo list",
          "type" : "integer",
          "minimum" : 0
        }
      },
      "required" : [ "id" ]
    },
    "scope" : "todo.w"
  }
  ]
}

Run the following commands to generate the command service into the light-example-4j/eventuate/todo-list folder.

cd ~/networknt
java -jar light-codegen/codegen-cli/target/codegen-cli.jar -f light-hybrid-4j-service -o light-example-4j/eventuate/todo-list/hybrid-command -c model-config/hybrid/todo-command/config.json -m model-config/hybrid/todo-command/schema.json

Once the service is generated, we need to update it.

pom.xml

First we need to add parent section to ensure that this service moduel is part of the todo-list application in the eventuate.

    <parent>
        <groupId>com.networknt</groupId>
        <artifactId>light-eventuate-todo</artifactId>
        <version>0.1.0</version>
        <relativePath>..</relativePath>
    </parent>

  • About Light
    • Overview
    • Testimonials
    • What is Light
    • Features
    • Principles
    • Benefits
    • Roadmap
    • Community
    • Articles
    • Videos
    • License
    • Why Light Platform
  • Getting Started
    • Get Started Overview
    • Environment
    • Light Codegen Tool
    • Light Rest 4j
    • Light Tram 4j
    • Light Graphql 4j
    • Light Hybrid 4j
    • Light Eventuate 4j
    • Light Oauth2
    • Light Portal Service
    • Light Proxy Server
    • Light Router Server
    • Light Config Server
    • Light Saga 4j
    • Light Session 4j
    • Webserver
    • Websocket
    • Spring Boot Servlet
  • Architecture
    • Architecture Overview
    • API Category
    • API Gateway
    • Architecture Patterns
    • CQRS
    • Eco System
    • Event Sourcing
    • Fail Fast vs Fail Slow
    • Integration Patterns
    • JavaEE declining
    • Key Distribution
    • Microservices Architecture
    • Microservices Monitoring
    • Microservices Security
    • Microservices Traceability
    • Modular Monolith
    • Platform Ecosystem
    • Plugin Architecture
    • Scalability and Performance
    • Serverless
    • Service Collaboration
    • Service Mesh
    • SOA
    • Spring is bloated
    • Stages of API Adoption
    • Transaction Management
    • Microservices Cross-cutting Concerns Options
    • Service Mesh Plus
    • Service Discovery
  • Design
    • Design Overview
    • Design First vs Code First
    • Desgin Pattern
    • Service Evolution
    • Consumer Contract and Consumer Driven Contract
    • Handling Partial Failure
    • Idempotency
    • Server Life Cycle
    • Environment Segregation
    • Database
    • Decomposition Patterns
    • Http2
    • Test Driven
    • Multi-Tenancy
    • Why check token expiration
    • WebServices to Microservices
  • Cross-Cutting Concerns
    • Concerns Overview
  • API Styles
    • Light-4j for absolute performance
    • Style Overview
    • Distributed session on IMDG
    • Hybrid Serverless Modularized Monolithic
    • Kafka - Event Sourcing and CQRS
    • REST - Representational state transfer
    • Web Server with Light
    • Websocket with Light
    • Spring Boot Integration
    • Single Page Application
    • GraphQL - A query language for your API
    • Light IBM MQ
    • Light AWS Lambda
    • Chaos Monkey
  • Infrastructure Services
    • Service Overview
    • Light Proxy
    • Light Mesh
    • Light Router
    • Light Portal
    • Messaging Infrastructure
    • Centralized Logging
    • COVID-19
    • Light OAuth2
    • Metrics and Alerts
    • Config Server
    • Tokenization
    • Light Controller
  • Tool Chain
    • Tool Chain Overview
  • Utility Library
  • Service Consumer
    • Service Consumer
  • Development
    • Development Overview
  • Deployment
    • Deployment Overview
    • Frontend Backend
    • Linux Service
    • Windows Service
    • Install Eventuate on Windows
    • Secure API
    • Client vs light-router
    • Memory Limit
    • Deploy to Kubernetes
  • Benchmark
    • Benchmark Overview
  • Tutorial
    • Tutorial Overview
  • Troubleshooting
    • Troubleshoot
  • FAQ
    • FAQ Overview
  • Milestones
  • Contribute
    • Contribute to Light
    • Development
    • Documentation
    • Example
    • Tutorial
“Generate Command Service” was last updated: July 5, 2021: fixes #275 checked and corrected grammar/spelling for majority of pages (#276) (b3bbb7b)
Improve this page
  • News
  • Docs
  • Community
  • Reddit
  • GitHub
  • About Light
  • Getting Started
  • Architecture
  • Design
  • Cross-Cutting Concerns
  • API Styles
  • Infrastructure Services
  • Tool Chain
  • Utility Library
  • Service Consumer
  • Development
  • Deployment
  • Benchmark
  • Tutorial
  • Troubleshooting
  • FAQ
  • Milestones
  • Contribute