Example usage for com.fasterxml.jackson.databind.node ObjectNode get

List of usage examples for com.fasterxml.jackson.databind.node ObjectNode get

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind.node ObjectNode get.

Prototype

public JsonNode get(String paramString) 

Source Link

Usage

From source file:io.swagger.parser.util.SwaggerDeserializer.java

public Double getDouble(String key, ObjectNode node, boolean required, String location, ParseResult result) {
    Double value = null;/*  w w  w  .  j  a  v a2s. c om*/
    JsonNode v = node.get(key);
    if (node == null || v == null) {
        if (required) {
            result.missing(location, key);
            result.invalid();
        }
    } else if (v.getNodeType().equals(JsonNodeType.NUMBER)) {
        value = v.asDouble();
    }
    return value;
}

From source file:io.swagger.parser.util.SwaggerDeserializer.java

public Number getNumber(String key, ObjectNode node, boolean required, String location, ParseResult result) {
    Number value = null;/*from   w ww  .  j a  v  a2s.  c  o  m*/
    JsonNode v = node.get(key);
    if (node == null || v == null) {
        if (required) {
            result.missing(location, key);
            result.invalid();
        }
    } else if (v.getNodeType().equals(JsonNodeType.NUMBER)) {
        value = v.numberValue();
    }
    return value;
}

From source file:io.swagger.parser.util.SwaggerDeserializer.java

public String getString(String key, ObjectNode node, boolean required, String location, ParseResult result) {
    String value = null;//from   w w  w .j  a  v a2 s.com
    JsonNode v = node.get(key);
    if (node == null || v == null) {
        if (required) {
            result.missing(location, key);
            result.invalid();
        }
    } else {
        value = v.asText();
    }
    return value;
}

From source file:io.swagger.parser.util.SwaggerDeserializer.java

public Integer getInteger(String key, ObjectNode node, boolean required, String location, ParseResult result) {
    Integer value = null;/*w  ww.  ja v a  2s  .c o  m*/
    JsonNode v = node.get(key);
    if (node == null || v == null) {
        if (required) {
            result.missing(location, key);
            result.invalid();
        }
    } else if (v.getNodeType().equals(JsonNodeType.NUMBER)) {
        value = v.intValue();
    }
    return value;
}

From source file:io.swagger.parser.util.SwaggerDeserializer.java

public Boolean getBoolean(String key, ObjectNode node, boolean required, String location, ParseResult result) {
    Boolean value = null;//from   ww  w.  j  a va  2s.  c  om
    JsonNode v = node.get(key);
    if (node == null || v == null) {
        if (required) {
            result.missing(location, key);
            result.invalid();
        }
    } else {
        if (v.getNodeType().equals(JsonNodeType.BOOLEAN)) {
            value = v.asBoolean();
        } else if (v.getNodeType().equals(JsonNodeType.STRING)) {
            String stringValue = v.textValue();
            return Boolean.parseBoolean(stringValue);
        }
    }
    return value;
}

From source file:com.googlecode.jsonrpc4j.JsonRpcServer.java

/**
 * Handles the given {@link ObjectNode} and writes the
 * responses to the given {@link OutputStream}.
 *
 * @param node the {@link JsonNode}//www.ja v  a2  s  . com
 * @param ops the {@link OutputStream}
 * @throws IOException on error
 */
public void handleObject(ObjectNode node, OutputStream ops) throws IOException {
    if (LOGGER.isLoggable(Level.FINE)) {
        LOGGER.log(Level.FINE, "Request: " + node.toString());
    }

    // validate request
    if (!backwardsComaptible && !node.has("jsonrpc") || !node.has("method")) {
        writeAndFlushValue(ops, createErrorResponse("2.0", "null", -32600, "Invalid Request", null));
        return;
    }

    // get nodes
    JsonNode jsonPrcNode = node.get("jsonrpc");
    JsonNode methodNode = node.get("method");
    JsonNode idNode = node.get("id");
    JsonNode paramsNode = node.get("params");

    // get node values
    String jsonRpc = (jsonPrcNode != null && !jsonPrcNode.isNull()) ? jsonPrcNode.asText() : "2.0";
    String methodName = getMethodName(methodNode);
    String serviceName = getServiceName(methodNode);
    Object id = parseId(idNode);

    // find methods
    Set<Method> methods = new HashSet<Method>();
    methods.addAll(findMethods(getHandlerInterfaces(serviceName), methodName));
    if (methods.isEmpty()) {
        writeAndFlushValue(ops, createErrorResponse(jsonRpc, id, -32601, "Method not found", null));
        return;
    }

    // choose a method
    MethodAndArgs methodArgs = findBestMethodByParamsNode(methods, paramsNode);
    if (methodArgs == null) {
        writeAndFlushValue(ops, createErrorResponse(jsonRpc, id, -32602, "Invalid method parameters", null));
        return;
    }

    // invoke the method
    JsonNode result = null;
    Throwable thrown = null;
    long beforeMs = System.currentTimeMillis();

    if (invocationListener != null) {
        invocationListener.willInvoke(methodArgs.method, methodArgs.arguments);
    }

    try {
        result = invoke(getHandler(serviceName), methodArgs.method, methodArgs.arguments);
    } catch (Throwable e) {
        thrown = e;
    }

    if (invocationListener != null) {
        invocationListener.didInvoke(methodArgs.method, methodArgs.arguments, result, thrown,
                System.currentTimeMillis() - beforeMs);
    }

    // respond if it's not a notification request
    if (id != null) {

        // attempt to resolve the error
        JsonError error = null;
        if (thrown != null) {

            // get cause of exception
            Throwable e = thrown;
            if (InvocationTargetException.class.isInstance(e)) {
                e = InvocationTargetException.class.cast(e).getTargetException();
            }

            // resolve error
            if (errorResolver != null) {
                error = errorResolver.resolveError(e, methodArgs.method, methodArgs.arguments);
            } else {
                error = DEFAULT_ERRROR_RESOLVER.resolveError(e, methodArgs.method, methodArgs.arguments);
            }

            // make sure we have a JsonError
            if (error == null) {
                error = new JsonError(0, e.getMessage(), e.getClass().getName());
            }
        }

        // the resoponse object
        ObjectNode response = null;

        // build error
        if (error != null) {
            response = createErrorResponse(jsonRpc, id, error.getCode(), error.getMessage(), error.getData());

            // build success
        } else {
            response = createSuccessResponse(jsonRpc, id, result);
        }

        // write it
        writeAndFlushValue(ops, response);
    }

    // log and potentially re-throw errors
    if (thrown != null) {
        if (LOGGER.isLoggable(exceptionLogLevel)) {
            LOGGER.log(exceptionLogLevel, "Error in JSON-RPC Service", thrown);
        }
        if (rethrowExceptions) {
            throw new RuntimeException(thrown);
        }
    }
}

From source file:org.dswarm.wikidataimporter.WikidataDswarmImporter.java

private JsonNode processEditEntityResponse(final String entityIdentifier,
        final Observable<Response> createEntityResponse, final String type) throws IOException {

    final Response response = createEntityResponse.toBlocking().firstOrDefault(null);

    if (response == null) {

        final String message = String.format("could not create new %s for '%s'", type, entityIdentifier);

        LOG.error(message);//from w  ww  . ja v a 2s .c o m

        throw new WikidataImporterError(new WikidataImporterException(message));
    }

    final int status = response.getStatus();

    LOG.debug("response status = {}", status);

    if (status != 200) {

        final String message = String.format(
                "could not create new %s for '%s'; response status != 200 (was '%d').", type, entityIdentifier,
                status);

        LOG.error(message);

        throw new WikidataImporterError(new WikidataImporterException(message));
    }

    final String responseBody = response.readEntity(String.class);

    LOG.debug("response body = {}", responseBody);

    final ObjectNode responseJSON = MAPPER.readValue(responseBody, ObjectNode.class);

    if (responseJSON == null) {

        final String message = String.format(
                "could not create new %s for '%s'; could not deserialize response.", type, entityIdentifier);

        LOG.error(message);

        throw new WikidataImporterError(new WikidataImporterException(message));
    }

    final JsonNode errorNode = responseJSON.get(MEDIAWIKI_ERROR_IDENTIFIER);

    if (errorNode != null) {

        final String message = String.format("could not create new %s for '%s'; an error occurred ('%s').",
                type, entityIdentifier, responseBody);

        LOG.debug(message);

        // return error so that it can be handled at the client
        return responseJSON;
    }

    final JsonNode successNode = responseJSON.get(MEDIAWIKI_SUCCESS_IDENTIFIER);

    if (successNode == null) {

        final String message = String.format(
                "could not create new %s for '%s'; no 'success' node in response ('%s')", type,
                entityIdentifier, responseBody);

        LOG.error(message);

        throw new WikidataImporterError(new WikidataImporterException(message));
    }

    final int success = successNode.asInt();

    if (success != 1) {

        final String message = String.format("could not create new %s for '%s'; 'success' = '%d'", type,
                entityIdentifier, success);

        LOG.error(message);

        throw new WikidataImporterError(new WikidataImporterException(message));
    }

    final JsonNode entityNode = responseJSON.get(MEDIAWIKI_ENTITY_IDENTIFIER);

    if (entityNode == null) {

        final String message = String.format(
                "could not create new %s for '%s'; no 'entity' node in response ('%s')", type, entityIdentifier,
                responseBody);

        LOG.error(message);

        throw new WikidataImporterError(new WikidataImporterException(message));
    }

    return entityNode;
}

From source file:io.swagger.parser.util.SwaggerDeserializer.java

public Path path(ObjectNode obj, String location, ParseResult result) {
    boolean hasRef = false;
    Path output = null;/*  w  ww.  j  av a 2 s .  c  om*/
    if (obj.get("$ref") != null) {
        JsonNode ref = obj.get("$ref");
        if (ref.getNodeType().equals(JsonNodeType.STRING)) {
            return pathRef((TextNode) ref, location, result);
        }

        else if (ref.getNodeType().equals(JsonNodeType.OBJECT)) {
            ObjectNode on = (ObjectNode) ref;

            // extra keys
            Set<String> keys = getKeys(on);
            for (String key : keys) {
                result.extra(location, key, on.get(key));
            }
        }
        return null;
    }
    Path path = new Path();

    ArrayNode parameters = getArray("parameters", obj, false, location, result);
    path.setParameters(parameters(parameters, location, result));

    ObjectNode on = getObject("get", obj, false, location, result);
    if (on != null) {
        Operation op = operation(on, location + "(get)", result);
        if (op != null) {
            path.setGet(op);
        }
    }
    on = getObject("put", obj, false, location, result);
    if (on != null) {
        Operation op = operation(on, location + "(put)", result);
        if (op != null) {
            path.setPut(op);
        }
    }
    on = getObject("post", obj, false, location, result);
    if (on != null) {
        Operation op = operation(on, location + "(post)", result);
        if (op != null) {
            path.setPost(op);
        }
    }
    on = getObject("head", obj, false, location, result);
    if (on != null) {
        Operation op = operation(on, location + "(head)", result);
        if (op != null) {
            path.setHead(op);
        }
    }
    on = getObject("delete", obj, false, location, result);
    if (on != null) {
        Operation op = operation(on, location + "(delete)", result);
        if (op != null) {
            path.setDelete(op);
        }
    }
    on = getObject("patch", obj, false, location, result);
    if (on != null) {
        Operation op = operation(on, location + "(patch)", result);
        if (op != null) {
            path.setPatch(op);
        }
    }
    on = getObject("options", obj, false, location, result);
    if (on != null) {
        Operation op = operation(on, location + "(options)", result);
        if (op != null) {
            path.setOptions(op);
        }
    }

    // extra keys
    Set<String> keys = getKeys(obj);
    for (String key : keys) {
        if (key.startsWith("x-")) {
            path.setVendorExtension(key, extension(obj.get(key)));
        } else if (!PATH_KEYS.contains(key)) {
            result.extra(location, key, obj.get(key));
        }
    }
    return path;
}

From source file:io.swagger.parser.util.SwaggerDeserializer.java

public Response response(ObjectNode node, String location, ParseResult result) {
    if (node == null)
        return null;

    Response output = new Response();
    JsonNode ref = node.get("$ref");
    if (ref != null) {
        if (ref.getNodeType().equals(JsonNodeType.STRING)) {
            return refResponse((TextNode) ref, location, result);
        } else {/*  ww w  . j a  v  a2 s .  c om*/
            result.invalidType(location, "$ref", "string", node);
            return null;
        }
    }

    String value = getString("description", node, true, location, result);
    output.description(value);

    ObjectNode schema = getObject("schema", node, false, location, result);
    if (schema != null) {
        output.schema(Json.mapper().convertValue(schema, Property.class));
    }
    ObjectNode headersNode = getObject("headers", node, false, location, result);
    if (headersNode != null) {
        // TODO
        Map<String, Property> headers = Json.mapper().convertValue(headersNode,
                Json.mapper().getTypeFactory().constructMapType(Map.class, String.class, Property.class));
        output.headers(headers);
    }

    ObjectNode examplesNode = getObject("examples", node, false, location, result);
    if (examplesNode != null) {
        Map<String, Object> examples = Json.mapper().convertValue(examplesNode,
                Json.mapper().getTypeFactory().constructMapType(Map.class, String.class, Object.class));
        output.setExamples(examples);
    }

    // extra keys
    Set<String> keys = getKeys(node);
    for (String key : keys) {
        if (key.startsWith("x-")) {
            output.setVendorExtension(key, extension(node.get(key)));
        } else if (!RESPONSE_KEYS.contains(key)) {
            result.extra(location, key, node.get(key));
        }
    }
    return output;
}