use of com.openmeap.thirdparty.org.json.me.JSONObject in project OpenMEAP by OpenMEAP.
the class ServiceManagementServlet method healthCheck.
/**
*
* @param request
* @param response
* @return
* @throws IOException
*/
private Result healthCheck(HttpServletRequest request, HttpServletResponse response) throws IOException {
String json = Utils.readInputStream(request.getInputStream(), FormConstants.CHAR_ENC_DEFAULT);
Result result = null;
try {
ClusterNodeRequest nodeRequest = (ClusterNodeRequest) new JSONObjectBuilder().fromJSON(new JSONObject(json), new ClusterNodeRequest());
Map<String, String> properties = (Map<String, String>) context.getBean("openmeapServicesWebPropertiesMap");
synchronized (properties) {
properties.put("clusterNodeUrlPrefix", nodeRequest.getClusterNode().getServiceWebUrlPrefix());
properties.put("fileSystemStoragePathPrefix", nodeRequest.getClusterNode().getFileSystemStoragePathPrefix());
}
result = new Result(Result.Status.SUCCESS);
} catch (JSONException e) {
result = new Result();
result.setStatus(Result.Status.FAILURE);
String msg = "Failed to parse health status check JSON - " + json;
logger.error(msg);
result.setMessage(msg);
}
return result;
}
use of com.openmeap.thirdparty.org.json.me.JSONObject in project OpenMEAP by OpenMEAP.
the class ServiceManagementServlet method sendResult.
private void sendResult(HttpServletResponse response, PrintWriter os, Result result) throws IOException {
try {
if (result.getStatus() != Result.Status.SUCCESS) {
response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR);
}
JSONObject jsonResult = new JSONObjectBuilder().toJSON(result);
String stringResult = jsonResult.toString(3);
logger.debug("returning json result: {}", stringResult);
os.print(jsonResult);
} catch (JSONException jse) {
throw new IOException(jse);
}
os.flush();
os.close();
}
use of com.openmeap.thirdparty.org.json.me.JSONObject in project OpenMEAP by OpenMEAP.
the class ClusterNodeHealthCheckThread method _run.
private void _run() {
settings = modelManager.getGlobalSettings();
JSONObjectBuilder builder = new JSONObjectBuilder();
ClusterNodeRequest request = new ClusterNodeRequest();
request.setSubject(ClusterNodeRequest.HEALTH_CHECK);
lastCheckExceptions = new Vector<Exception>();
while (true) {
synchronized (this) {
lastCheckExceptions.clear();
if (settings.getClusterNodes() != null) {
for (ClusterNode clusterNode : settings.getClusterNodes()) {
try {
request.setClusterNode(clusterNode);
HttpResponse response = null;
try {
response = httpRequestExecuter.postContent(clusterNode.getServiceWebUrlPrefix() + "/service-management/?action=" + ClusterNodeRequest.HEALTH_CHECK + "&auth=" + AuthTokenProvider.newAuthToken(settings.getServiceManagementAuthSalt()), builder.toJSON(request).toString(3), FormConstants.CONT_TYPE_JSON);
} catch (Exception e) {
logger.error(clusterNode.getServiceWebUrlPrefix() + " health check returned exception", e);
Throwable t = ExceptionUtils.getRootCause(e);
ClusterNode.Status err = null;
if (t instanceof ConnectException) {
err = ClusterNode.Status.CONNECT_ERROR;
} else {
err = ClusterNode.Status.ERROR;
}
synchronized (clusterNode) {
clusterNode.setLastStatus(err);
clusterNode.setLastStatusMessage(t.getMessage());
clusterNode.setLastStatusCheck(new Date());
}
if (response != null && response.getResponseBody() != null) {
Utils.consumeInputStream(response.getResponseBody());
response.getResponseBody().close();
}
continue;
}
if (response != null && response.getStatusCode() == 200) {
String json = Utils.readInputStream(response.getResponseBody(), FormConstants.CHAR_ENC_DEFAULT);
JSONObject jsonObj = new JSONObject(json);
Result result = (Result) builder.fromJSON(jsonObj, new Result());
response.getResponseBody().close();
synchronized (clusterNode) {
clusterNode.setLastStatus(result.getStatus() == Result.Status.SUCCESS ? ClusterNode.Status.GOOD : ClusterNode.Status.ERROR);
clusterNode.setLastStatusMessage(result.getMessage());
clusterNode.setLastStatusCheck(new Date());
}
} else {
synchronized (clusterNode) {
clusterNode.setLastStatus(ClusterNode.Status.ERROR);
String msg = "Service node " + clusterNode.getServiceWebUrlPrefix() + " returned a non-200 status code " + response.getStatusCode() + " " + Utils.readInputStream(response.getResponseBody(), FormConstants.CHAR_ENC_DEFAULT);
logger.error(msg);
clusterNode.setLastStatusMessage(msg);
response.getResponseBody().close();
clusterNode.setLastStatusCheck(new Date());
}
}
} catch (Exception e) {
logger.error("Exception performing health check", e);
lastCheckExceptions.add(e);
}
}
}
}
synchronized (lastCheckExceptions) {
lastCheckExceptions.notifyAll();
}
try {
Thread.sleep(checkInterval);
} catch (InterruptedException e) {
logger.error("Nap interrupted!", e);
}
}
}
use of com.openmeap.thirdparty.org.json.me.JSONObject in project OpenMEAP by OpenMEAP.
the class JsError method toJSONObject.
public JSONObject toJSONObject() {
JSONObject err = new JSONObject();
try {
err.put("type", type);
err.put("message", message);
} catch (JSONException e) {
throw new GenericRuntimeException(e);
}
return err;
}
use of com.openmeap.thirdparty.org.json.me.JSONObject in project OpenMEAP by OpenMEAP.
the class JSONArray method write.
/**
* Write the contents of the JSONArray as JSON text to a writer.
* For compactness, no whitespace is added.
* <p>
* Warning: This method assumes that the data structure is acyclical.
*
* @return The writer.
* @throws JSONException
*/
public Writer write(Writer writer) throws JSONException {
try {
boolean b = false;
int len = length();
writer.write('[');
for (int i = 0; i < len; i += 1) {
if (b) {
writer.write(',');
}
Object v = this.myArrayList.elementAt(i);
if (v instanceof JSONObject) {
((JSONObject) v).write(writer);
} else if (v instanceof JSONArray) {
((JSONArray) v).write(writer);
} else {
writer.write(JSONObject.valueToString(v));
}
b = true;
}
writer.write(']');
return writer;
} catch (IOException e) {
throw new JSONException(e);
}
}
Aggregations