Search in sources :

Example 11 with JSONObject

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;
}
Also used : JSONObjectBuilder(com.openmeap.json.JSONObjectBuilder) JSONObject(com.openmeap.thirdparty.org.json.me.JSONObject) JSONException(com.openmeap.thirdparty.org.json.me.JSONException) ClusterNodeRequest(com.openmeap.cluster.dto.ClusterNodeRequest) Map(java.util.Map) Result(com.openmeap.services.dto.Result)

Example 12 with JSONObject

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();
}
Also used : JSONObjectBuilder(com.openmeap.json.JSONObjectBuilder) JSONObject(com.openmeap.thirdparty.org.json.me.JSONObject) JSONException(com.openmeap.thirdparty.org.json.me.JSONException) IOException(java.io.IOException)

Example 13 with JSONObject

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);
        }
    }
}
Also used : ClusterNode(com.openmeap.model.dto.ClusterNode) HttpResponse(com.openmeap.http.HttpResponse) ClusterNodeRequest(com.openmeap.cluster.dto.ClusterNodeRequest) ConnectException(java.net.ConnectException) Date(java.util.Date) Result(com.openmeap.services.dto.Result) JSONObjectBuilder(com.openmeap.json.JSONObjectBuilder) JSONObject(com.openmeap.thirdparty.org.json.me.JSONObject) ConnectException(java.net.ConnectException)

Example 14 with JSONObject

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;
}
Also used : JSONObject(com.openmeap.thirdparty.org.json.me.JSONObject) JSONException(com.openmeap.thirdparty.org.json.me.JSONException) GenericRuntimeException(com.openmeap.util.GenericRuntimeException)

Example 15 with JSONObject

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);
    }
}
Also used : JSONObject(com.openmeap.thirdparty.org.json.me.JSONObject) JSONArray(com.openmeap.thirdparty.org.json.me.JSONArray) JSONException(com.openmeap.thirdparty.org.json.me.JSONException) JSONObject(com.openmeap.thirdparty.org.json.me.JSONObject) IOException(java.io.IOException)

Aggregations

JSONObject (com.openmeap.thirdparty.org.json.me.JSONObject)20 JSONException (com.openmeap.thirdparty.org.json.me.JSONException)11 JSONObjectBuilder (com.openmeap.json.JSONObjectBuilder)7 JSONArray (com.openmeap.thirdparty.org.json.me.JSONArray)6 Enumeration (java.util.Enumeration)6 IOException (java.io.IOException)5 Hashtable (java.util.Hashtable)5 HttpResponse (com.openmeap.http.HttpResponse)3 Result (com.openmeap.protocol.dto.Result)3 Result (com.openmeap.services.dto.Result)3 GenericRuntimeException (com.openmeap.util.GenericRuntimeException)3 Vector (java.util.Vector)3 ClusterNodeRequest (com.openmeap.cluster.dto.ClusterNodeRequest)2 HasJSONProperties (com.openmeap.json.HasJSONProperties)2 HttpRequestException (com.openmeap.http.HttpRequestException)1 Enum (com.openmeap.json.Enum)1 Application (com.openmeap.model.dto.Application)1 ClusterNode (com.openmeap.model.dto.ClusterNode)1 GlobalSettings (com.openmeap.model.dto.GlobalSettings)1 ModelServiceRefreshHandler (com.openmeap.model.event.handler.ModelServiceRefreshHandler)1