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; }
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; } }