public void run() {
      HTTPXMessageRefactorer refactorer = new HTTPXMessageRefactorer();
      HTTPXActionMessage request = null;
      try {
        request =
            refactorer.createActionMessageFromStream(
                this.toStream(packet.getData(), packet.getLength()));
      } catch (HTTPXProtocolViolationException e) {
        LOGGER.error(e);
        e.printStackTrace();
      } catch (IOException e) {
        LOGGER.error(e);
        e.printStackTrace();
      }
      request.setPort(packet.getPort());
      request.setHost(packet.getAddress().getHostName());

      LOGGER.debug(HTTPXConstants.HTTPU + " Request:\r\n" + request.toString());

      boolean bFound = false;
      Path tmpPath = new Path(request.getPath().getString());
      try {
        do {
          for (Tuple element : registration) {
            if ((element.handler instanceof HTTPXPlainActionMessageHandler)
                && element.filter.doesPass(
                    request.getProtocol(),
                    request.getHost(),
                    request.getPort(),
                    tmpPath,
                    request.getQueryAsString())) {
              LOGGER.debug("void Handler was found : " + element.handler);
              ((HTTPXPlainActionMessageHandler) element.handler).handlePlain(request);
              bFound = true;
              break;
            }
          } // for
          if (!bFound) {
            String strTmp = tmpPath.getString();
            tmpPath.removeLastToken();
            // check wheter path is root
            if (strTmp.equalsIgnoreCase(tmpPath.getString())) {
              break;
            }
          }
        } while (!bFound);
      } catch (IOException e) {
        LOGGER.error(e);
        e.printStackTrace();
      }
    }