router :: maven-plugin

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-plugin
Last Version

Last Version

0.10
Release Date

Release Date

Type

Type

maven-plugin
Description

Description

router :: maven-plugin
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-plugin

How to add to project

<plugin>
    <groupId>de.leanovate.router</groupId>
    <artifactId>router-generator-plugin</artifactId>
    <version>0.10</version>
</plugin>

Dependencies

compile (8)

Group / Artifact Type Version
org.apache.maven : maven-plugin-api jar 3.0.5
org.apache.maven : maven-core jar 3.0.5
org.apache.maven : maven-model jar 3.0.5
org.apache.maven : maven-artifact jar 3.0.5
org.codehaus.plexus : plexus-utils jar 3.0.10
org.codehaus.plexus : plexus-archiver jar 2.3
org.apache.maven.plugin-tools : maven-plugin-annotations jar 3.2
de.leanovate.router : router-generator jar 0.10

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