Ultrakompakter HTTP Server
ulrich
8 days ago 90ccfbd7875b7f1438f8b4268010e40b2c91b645
src/de/uhilger/neon/Handler.java
@@ -128,8 +128,14 @@
   */
  @Override
  public void handle(HttpExchange exchange) throws IOException {
    HttpHelper hh = new HttpHelper();
    String route = hh.getRouteString(exchange);
    String route = exchange
            .getRequestURI()
            .getPath()
            .substring(exchange
                    .getHttpContext()
                    .getPath()
                    .length());
    Type requestMethod = Type.valueOf(exchange.getRequestMethod());
    /*
      Es wird erst geprueft, ob zu einer bestimmten Route 
@@ -199,11 +205,25 @@
    Parameter[] methodParams = method.getParameters();
    Object[] actionArgs = new Object[count];
    String[] routeParams = subroute.split("/");
    /*
      Fall 1: Es sind mehr als ein Parameter zu uebergeben und die Route enthaelt
      weniger Parameter als die Methode erfordert.
      Fall 2: Die Methode erwartet Parameter und der erste Parameter ist nicht
      vom Typ HttpExchange.
      Wenn einer dieser beiden Faelle eintritt, wird alles als Parameter an die Methode
      uebergeben, was eventuell als Teil einer Query im URL oder im Body enthalten ist.
      Fuer Mthoden, die nicht vom Typ HTTP GET sind, kann ein Actor kann dann den Body
      nicht mehr lesen, weil das bereits an dieser Stelle gemacht wurde.
    */
    Map queryParams = new HashMap();
    if ((count > 1 && count > routeParams.length)
            || (methodParams.length > 0 && !methodParams[0].getType().equals(HttpExchange.class))) {
      queryParams = new HttpHelper().getQueryMap(exchange);
    }
    int k = 0;
    for (Parameter methodParam : methodParams) {
      if (methodParam.getType().equals(HttpExchange.class)) {