router :: generator

Generic generator for http router bases on a route file similar to rails. The generated classes are framework agnostic, whereas several adapters are already provided.

License

License

MIT
GroupId

GroupId

de.leanovate.router
ArtifactId

ArtifactId

router-generator
Last Version

Last Version

0.10
Release Date

Release Date

Type

Type

jar
Description

Description

router :: generator
Generic generator for http router bases on a route file similar to rails. The generated classes are framework agnostic, whereas several adapters are already provided.

Download router-generator

How to add to project

<!-- https://jarcasting.com/artifacts/de.leanovate.router/router-generator/ -->
<dependency>
    <groupId>de.leanovate.router</groupId>
    <artifactId>router-generator</artifactId>
    <version>0.10</version>
</dependency>
// https://jarcasting.com/artifacts/de.leanovate.router/router-generator/
implementation 'de.leanovate.router:router-generator:0.10'
// https://jarcasting.com/artifacts/de.leanovate.router/router-generator/
implementation ("de.leanovate.router:router-generator:0.10")
'de.leanovate.router:router-generator:jar:0.10'
<dependency org="de.leanovate.router" name="router-generator" rev="0.10">
  <artifact name="router-generator" type="jar" />
</dependency>
@Grapes(
@Grab(group='de.leanovate.router', module='router-generator', version='0.10')
)
libraryDependencies += "de.leanovate.router" % "router-generator" % "0.10"
[de.leanovate.router/router-generator "0.10"]

Dependencies

compile (1)

Group / Artifact Type Version
de.leanovate.router : router-base jar 0.10

test (1)

Group / Artifact Type Version
junit : junit jar 4.11

Project Modules

There are no modules declared in this project.

route-generator

Introduction

This is a very generic framework to use Rails-like (or Play framework like) http route files in any java-based web-framework of your choice, including (but not restricted to) plain old java servlets.

Please note: This is a Java 8 project and will not work on Java 7 or lower.

How it works

Consider you have a class SomethingController like this:

pacakge com.myself.project

public class SomethingController {
  public static void index(Response response) {
    ... do something ...
  }

  public static void create(Request request, Response response) {
    ... do something ...
  }
  
  public static void get(String id, Response response) {
    ... do something ...
  }
}

Wheras Request and Response are the request and response classes of your web-framework (line HttpServletRequest and HttpServletResponse in case of servlets).

Now you can define somewhere inside your project (default: src/main/routes) one or more .routes files like this:

something.routes

package com.myself.project

GET  /something      SomethingController.index(response)
POST /something      SomethingController.create(request, response)
GET  /something/:id  SomethingController.get(id, response)

which will be converted to a java class

pacakge com.myself.project

import de.leanovate.router.RouteMatchingContext;
import static de.leanovate.router.CommonRouteRules.*;

public class SomethingRoutes {
  public boolean route(final RouteMatchingContext<Request, Response> ctx0) {
    ... if request matches the rules: calles the methods of SomethingController and returns true
    ... otherwise returns false
  }
}

Its now up to you to integrate this class into your web-framework, by using the approriate adapters or implement them yourself, which should be fairly straight foreward in both cases.

At the moment the following adapters are provided out of the box:

  • Servlet-API 3.1
  • Vert.x

Licence

MIT Licence

de.leanovate.router

Versions

Version
0.10
0.9
0.7
0.6
0.5
0.4