private JsonObject getResponse(HttpServletRequest request) throws IOException {
    JsonObject requestJSON = null;
    if (request.getInputStream() != null) {
      BufferedReader rd = new BufferedReader(new InputStreamReader(request.getInputStream()));
      StringBuilder s = new StringBuilder();
      String line;
      while ((line = rd.readLine()) != null) {
        s.append(line);
      }
      rd.close();
      String json = s.toString();
      if (!"".equals(json)) {
        requestJSON = new JsonParser().parse(json).getAsJsonObject();
      }
    }

    JsonObject res = new JsonObject();
    res.addProperty("success", false);

    // the id can be specified via a param, or in the json request.
    String session;
    if (requestJSON == null) {
      session = request.getParameter("session");
    } else {
      if (!requestJSON.has("session")) {
        res.addProperty(
            "msg",
            "you need to specify at least a session or internalKey when call the test slot status service.");
        return res;
      }
      session = requestJSON.get("session").getAsString();
    }

    TestSession testSession = getRegistry().getSession(ExternalSessionKey.fromString(session));

    if (testSession == null) {
      res.addProperty(
          "msg", "Cannot find test slot running session " + session + " in the registry.");
      return res;
    }
    res.addProperty("msg", "slot found !");
    res.remove("success");
    res.addProperty("success", true);
    res.addProperty("session", testSession.getExternalKey().getKey());
    res.addProperty("internalKey", testSession.getInternalKey());
    res.addProperty("inactivityTime", testSession.getInactivityTime());
    RemoteProxy p = testSession.getSlot().getProxy();
    res.addProperty("proxyId", p.getId());
    return res;
  }
예제 #2
0
  private JSONObject getResponse(HttpServletRequest request) throws IOException, JSONException {
    JSONObject requestJSON = null;
    if (request.getInputStream() != null) {
      BufferedReader rd = new BufferedReader(new InputStreamReader(request.getInputStream()));
      StringBuilder s = new StringBuilder();
      String line;
      while ((line = rd.readLine()) != null) {
        s.append(line);
      }
      rd.close();
      String json = s.toString();
      if (json != null && !"".equals(json)) {
        requestJSON = new JSONObject(json);
      }
    }

    JSONObject res = new JSONObject();
    res.put("success", false);

    // the id can be specified via a param, or in the json request.
    String id;
    if (requestJSON == null) {
      id = request.getParameter("id");
    } else {
      if (!requestJSON.has("id")) {
        res.put("msg", "you need to specify at least an id when call the node  status service.");
        return res;
      } else {
        id = requestJSON.getString("id");
      }
    }

    // see RegistrationRequest.ensureBackwardCompatibility()
    try {
      URL u = new URL(id);
      id = "http://" + u.getHost() + ":" + u.getPort();
    } catch (MalformedURLException ignore) {
    }

    // id is defined from here.
    RemoteProxy proxy = getRegistry().getProxyById(id);
    if (proxy == null) {
      res.put("msg", "Cannot find proxy with ID =" + id + " in the registry.");
      return res;
    } else {
      res.put("msg", "proxy found !");
      res.put("success", true);
      res.put("id", proxy.getId());
      res.put("request", proxy.getOriginalRegistrationRequest().getAssociatedJSON());

      // maybe the request was for more info
      if (requestJSON != null) {
        // use basic (= no objects ) reflexion to get the extra stuff
        // requested.
        List<String> methods = getExtraMethodsRequested(requestJSON);

        List<String> errors = new ArrayList<String>();
        for (String method : methods) {
          try {
            Object o = getValueByReflection(proxy, method);
            res.put(method, o);
          } catch (Throwable t) {
            errors.add(t.getMessage());
          }
        }
        if (!errors.isEmpty()) {
          res.put("success", false);
          res.put("errors", errors.toString());
        }
      }
      return res;
    }
  }