tfSheol / lib-internal-router

Library to make a custom router with regex

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

lib-internal-router

jitpack_badge codebeat badge Build Status Sonar_maintainability_rating

Sonar_Coverage Sonar_Bugs Sonar_Vulnerabilities Sonar_Lines

Maven

Repository

<repositories>
  <repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
  </repository>
</repositories>

Dependency

<dependency>
  <groupId>com.github.tfSheol</groupId>
  <artifactId>lib-internal-router</artifactId>
  <version>0.0.2</version>
</dependency>

Gradle

Repository

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}

Dependency

dependencies {
  compile 'com.github.tfSheol:lib-internal-router:0.0.2'
}

Examples

See in Test folder example.SimpleExample.java and example.controller.ControllerExample.java

public class SimpleExample {
  private static final Logger LOGGER = LoggerFactory.getLogger(SimpleExample.class);

  @Test
  public void simpleExample() {
    InternalRouter internalRouter = new InternalRouter()
            .withInternalRouteMapper(
                    new InternalRouteMapper()
                            .withAddPackageController("example/controller")
            );
    String result = internalRouter.resolve("test");
    if (null != result) {
      LOGGER.info("\"test\" => \"{}\"", result);
    }

    result = internalRouter.resolve("simple regex test : bla");
    if (null != result) {
      LOGGER.info("\"simple regex test : bla\" => \"{}\"", result);
    }

    Integer numberResult = internalRouter.resolve("simple regex number test : 42");
    if (null != numberResult) {
      LOGGER.info("\"simple regex number test : 42\" => \"{}\"", numberResult);
    }

    ObjectExample objectExample = internalRouter.resolve("power fire level 10 with WATER");
    if (null != objectExample) {
      LOGGER.info("\"power fire level 10 with WATER\" => \"{} / {} / {}\"",
              objectExample.getPower(), objectExample.getLevel(), objectExample.getAddon());
    }
  }
}
@InternalController
public class ControllerExample {
  @InternalRoute("test")
  public String testRoute() {
    return "ok";
  }

  @InternalRoute("simple regex test : (.*)$")
  public String testSimpleRegex(String value) {
    return value;
  }

  @InternalRoute("simple regex number test : ([0-9]*)$")
  public int testSimpleNumberRegex(int value) {
    return value;
  }

  @InternalRoute("power ([a-z]*) level ([0-9]*) with ([A-Z]*$)")
  public ObjectExample testWithObject(String power, int level, String addon) {
    return new ObjectExample()
            .withAddon(addon)
            .withPower(power)
            .withLevel(level);
  }
}

Output Test :

[main] INFO example.SimpleExample - "test" => "ok"
[main] INFO example.SimpleExample - "simple regex test : bla" => "bla"
[main] INFO example.SimpleExample - "simple regex number test : 42" => "42"
[main] INFO example.SimpleExample - "power fire level 10 with WATER" => "fire / 10 / WATER"

Regex

You can use this site for test your regex : https://regex101.com/

Todo

  • Lib base
  • Add more examples
  • Add Jackson deserialization support with JSON
  • Make documentation

About

Library to make a custom router with regex


Languages

Language:Java 100.0%