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