Example usage for com.fasterxml.jackson.databind ObjectMapper createArrayNode

List of usage examples for com.fasterxml.jackson.databind ObjectMapper createArrayNode

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind ObjectMapper createArrayNode.

Prototype

@Override
public ArrayNode createArrayNode() 

Source Link

Document

Note: return type is co-variant, as basic ObjectCodec abstraction can not refer to concrete node types (as it's part of core package, whereas impls are part of mapper package)

Usage

From source file:org.bimserver.servlets.ServiceRunnerServlet.java

private void processServiceList(HttpServletRequest request, HttpServletResponse response) {
    BimDatabase database = getBimServer().getDatabase();
    ObjectMapper mapper = new ObjectMapper();
    ObjectNode result = mapper.createObjectNode();
    ArrayNode array = mapper.createArrayNode();
    ArrayNode capabilities = mapper.createArrayNode();
    capabilities.add("WEBSOCKET");
    result.set("capabilities", capabilities);
    result.set("services", array);
    try (DatabaseSession session = database.createSession()) {
        for (PluginDescriptor pluginDescriptor : session.getAllOfType(
                StorePackage.eINSTANCE.getPluginDescriptor(), PluginDescriptor.class, OldQuery.getDefault())) {
            if (pluginDescriptor.getPluginInterfaceClassName().equals(ServicePlugin.class.getName())) {
                ServicePlugin servicePlugin = getBimServer().getPluginManager()
                        .getServicePlugin(pluginDescriptor.getPluginClassName(), true);
                if (servicePlugin instanceof BimBotsServiceInterface) {
                    try {
                        BimBotsServiceInterface bimBotsServiceInterface = (BimBotsServiceInterface) servicePlugin;

                        ObjectNode descriptorJson = mapper.createObjectNode();
                        descriptorJson.put("id", pluginDescriptor.getOid());
                        descriptorJson.put("name", pluginDescriptor.getName());
                        descriptorJson.put("description", pluginDescriptor.getDescription());
                        descriptorJson.put("provider",
                                getBimServer().getServerSettingsCache().getServerSettings().getName());
                        descriptorJson.put("providerIcon",
                                getBimServer().getServerSettingsCache().getServerSettings().getIcon());

                        ArrayNode inputs = mapper.createArrayNode();
                        ArrayNode outputs = mapper.createArrayNode();

                        for (String schemaName : bimBotsServiceInterface.getAvailableInputs()) {
                            inputs.add(schemaName);
                        }/*from  w  ww.j  a va  2s  . c  om*/
                        for (String schemaName : bimBotsServiceInterface.getAvailableOutputs()) {
                            outputs.add(schemaName);
                        }

                        descriptorJson.set("inputs", inputs);
                        descriptorJson.set("outputs", outputs);

                        ObjectNode oauth = mapper.createObjectNode();
                        String siteAddress = getBimServer().getServerSettingsCache().getServerSettings()
                                .getSiteAddress();
                        oauth.put("authorizationUrl", siteAddress + "/oauth/authorize");
                        oauth.put("registerUrl", siteAddress + "/oauth/register");
                        oauth.put("tokenUrl", siteAddress + "/oauth/access");

                        descriptorJson.set("oauth", oauth);
                        descriptorJson.put("resourceUrl", siteAddress + "/services");
                        array.add(descriptorJson);
                    } catch (Exception e) {
                        LOGGER.error("", e);
                    }
                }
            }
        }
        response.setContentType("application/json");
        response.getOutputStream().write(mapper.writeValueAsBytes(result));
    } catch (BimserverDatabaseException e) {
        LOGGER.error("", e);
    } catch (JsonProcessingException e) {
        LOGGER.error("", e);
    } catch (IOException e) {
        LOGGER.error("", e);
    }
}

From source file:org.flowable.cmmn.editor.json.converter.util.ListenerConverterUtil.java

public static ObjectNode convertListenersToJson(ObjectMapper objectMapper, String jsonPropertyName,
        List<FlowableListener> listeners) {
    if (listeners != null) {
        ObjectNode listenersNode = objectMapper.createObjectNode();
        ArrayNode itemsNode = objectMapper.createArrayNode();
        for (FlowableListener listener : listeners) {
            ObjectNode propertyItemNode = objectMapper.createObjectNode();

            if (StringUtils.isNotEmpty(listener.getEvent())) {
                propertyItemNode.put(CmmnStencilConstants.PROPERTY_LISTENER_EVENT, listener.getEvent());
            }//from   w ww .j a v  a  2  s. c  om

            if (StringUtils.isNotEmpty(listener.getSourceState())) {
                propertyItemNode.put(CmmnStencilConstants.PROPERTY_LISTENER_SOURCE_STATE,
                        listener.getSourceState());
            }

            if (StringUtils.isNotEmpty(listener.getTargetState())) {
                propertyItemNode.put(CmmnStencilConstants.PROPERTY_LISTENER_TARGET_STATE,
                        listener.getTargetState());
            }

            if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.equals(listener.getImplementationType())) {
                propertyItemNode.put(CmmnStencilConstants.PROPERTY_LISTENER_CLASS_NAME,
                        listener.getImplementation());
            } else if (ImplementationType.IMPLEMENTATION_TYPE_EXPRESSION
                    .equals(listener.getImplementationType())) {
                propertyItemNode.put(CmmnStencilConstants.PROPERTY_LISTENER_EXPRESSION,
                        listener.getImplementation());
            } else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION
                    .equals(listener.getImplementationType())) {
                propertyItemNode.put(CmmnStencilConstants.PROPERTY_LISTENER_DELEGATE_EXPRESSION,
                        listener.getImplementation());
            }

            if (CollectionUtils.isNotEmpty(listener.getFieldExtensions())) {
                ArrayNode fieldsArray = objectMapper.createArrayNode();
                for (FieldExtension fieldExtension : listener.getFieldExtensions()) {
                    ObjectNode fieldNode = objectMapper.createObjectNode();
                    fieldNode.put(CmmnStencilConstants.PROPERTY_FIELD_NAME, fieldExtension.getFieldName());
                    if (StringUtils.isNotEmpty(fieldExtension.getStringValue())) {
                        fieldNode.put(CmmnStencilConstants.PROPERTY_FIELD_STRING_VALUE,
                                fieldExtension.getStringValue());
                    }
                    if (StringUtils.isNotEmpty(fieldExtension.getExpression())) {
                        fieldNode.put(CmmnStencilConstants.PROPERTY_FIELD_EXPRESSION,
                                fieldExtension.getExpression());
                    }
                    fieldsArray.add(fieldNode);
                }
                propertyItemNode.set(CmmnStencilConstants.PROPERTY_LISTENER_FIELDS, fieldsArray);
            }

            itemsNode.add(propertyItemNode);
        }

        listenersNode.set(jsonPropertyName, itemsNode);
        return listenersNode;
    }

    return null;
}

From source file:org.flowable.editor.dmn.converter.DmnJsonConverterUtil.java

public static JsonNode migrateModel(JsonNode decisionTableNode, ObjectMapper objectMapper) {

    // check if model is version 1
    if (decisionTableNode.get("modelVersion") == null || decisionTableNode.get("modelVersion").isNull()) {
        // split input rule nodes into operator and expression nodes
        ///*w  ww . j  ava2  s  .  c  o m*/
        // determine input node ids
        JsonNode inputExpressionNodes = decisionTableNode.get("inputExpressions");
        Map<String, String> inputExpressionIds = new HashMap<>();

        if (inputExpressionNodes != null && !inputExpressionNodes.isNull()) {
            for (JsonNode inputExpressionNode : inputExpressionNodes) {
                if (inputExpressionNode.get("id") != null && !inputExpressionNode.get("id").isNull()) {
                    String inputId = inputExpressionNode.get("id").asText();

                    String inputType = null;
                    if (inputExpressionNode.get("type") != null && !inputExpressionNode.get("type").isNull()) {
                        inputType = inputExpressionNode.get("type").asText();
                    }

                    inputExpressionIds.put(inputId, inputType);
                }
            }
        }
        // split input rule nodes
        JsonNode ruleNodes = decisionTableNode.get("rules");
        ArrayNode newRuleNodes = objectMapper.createArrayNode();

        if (ruleNodes != null && !ruleNodes.isNull()) {
            for (JsonNode ruleNode : ruleNodes) {
                ObjectNode newRuleNode = objectMapper.createObjectNode();

                for (String inputExpressionId : inputExpressionIds.keySet()) {
                    if (ruleNode.has(inputExpressionId)) {
                        String operatorId = inputExpressionId + "_operator";
                        String expressionId = inputExpressionId + "_expression";
                        String operatorValue = null;
                        String expressionValue = null;

                        if (ruleNode.get(inputExpressionId) != null
                                && !ruleNode.get(inputExpressionId).isNull()) {
                            String oldExpression = ruleNode.get(inputExpressionId).asText();

                            if (StringUtils.isNotEmpty(oldExpression)) {
                                if (oldExpression.indexOf(' ') != -1) {
                                    operatorValue = oldExpression.substring(0, oldExpression.indexOf(' '));
                                    expressionValue = oldExpression.substring(oldExpression.indexOf(' ') + 1);
                                } else { // no prefixed operator
                                    expressionValue = oldExpression;
                                }

                                // remove outer escape quotes
                                if (expressionValue.startsWith("\"") && expressionValue.endsWith("\"")) {
                                    expressionValue = expressionValue.substring(1,
                                            expressionValue.length() - 1);
                                }

                                // if build in date function
                                if (expressionValue.startsWith("fn_date(")) {
                                    expressionValue = expressionValue.substring(9,
                                            expressionValue.lastIndexOf('\''));

                                } else if (expressionValue.startsWith("date:toDate(")) {
                                    expressionValue = expressionValue.substring(13,
                                            expressionValue.lastIndexOf('\''));
                                }

                                // determine type is null
                                if (StringUtils.isEmpty(inputExpressionIds.get(inputExpressionId))) {
                                    String expressionType = determineExpressionType(expressionValue);
                                    inputExpressionIds.put(inputExpressionId, expressionType);
                                }
                            }
                        }

                        // add new operator kv
                        if (StringUtils.isNotEmpty(operatorValue)) {
                            newRuleNode.put(operatorId, operatorValue);
                        } else { // default value
                            newRuleNode.put(operatorId, "==");
                        }

                        // add new expression kv
                        if (StringUtils.isNotEmpty(expressionValue)) {
                            newRuleNode.put(expressionId, expressionValue);
                        } else { // default value
                            newRuleNode.put(expressionId, "-");
                        }
                    }
                }

                Iterator<String> ruleProperty = ruleNode.fieldNames();
                while (ruleProperty.hasNext()) {
                    String outputExpressionId = ruleProperty.next();
                    if (!inputExpressionIds.containsKey(outputExpressionId)) { // is output expression
                        String outputExpressionValue = ruleNode.get(outputExpressionId).asText();

                        // remove outer escape quotes
                        if (StringUtils.isNotEmpty(outputExpressionValue)
                                && outputExpressionValue.startsWith("\"")
                                && outputExpressionValue.endsWith("\"")) {
                            outputExpressionValue = outputExpressionValue.substring(1,
                                    outputExpressionValue.length() - 1);
                        }

                        // if build in date function
                        if (outputExpressionValue.startsWith("fn_date(")) {
                            outputExpressionValue = outputExpressionValue.substring(9,
                                    outputExpressionValue.lastIndexOf('\''));

                        } else if (outputExpressionValue.startsWith("date:toDate(")) {
                            outputExpressionValue = outputExpressionValue.substring(13,
                                    outputExpressionValue.lastIndexOf('\''));
                        }

                        newRuleNode.put(outputExpressionId, outputExpressionValue);
                    }
                }

                newRuleNodes.add(newRuleNode);
            }

            // set input expression nodes types
            if (inputExpressionNodes != null && !inputExpressionNodes.isNull()) {
                for (JsonNode inputExpressionNode : inputExpressionNodes) {
                    if (inputExpressionNode.get("id") != null && !inputExpressionNode.get("id").isNull()) {
                        String inputId = inputExpressionNode.get("id").asText();
                        ((ObjectNode) inputExpressionNode).put("type", inputExpressionIds.get(inputId));
                    }
                }
            }

            // replace rules node
            ObjectNode decisionTableObjectNode = (ObjectNode) decisionTableNode;
            decisionTableObjectNode.replace("rules", newRuleNodes);
        }
    }

    return decisionTableNode;
}

From source file:org.flowable.engine.impl.bpmn.behavior.DmnActivityBehavior.java

protected void setVariablesOnExecution(List<Map<String, Object>> executionResult, String decisionKey,
        DelegateExecution execution, ObjectMapper objectMapper) {
    if (executionResult == null || executionResult.isEmpty()) {
        return;/*  w w  w  .j av  a  2s. c  om*/
    }

    // multiple rule results
    // put on execution as JSON array; each entry contains output id (key) and output value (value)
    if (executionResult.size() > 1) {
        ArrayNode ruleResultNode = objectMapper.createArrayNode();

        for (Map<String, Object> ruleResult : executionResult) {
            ObjectNode outputResultNode = objectMapper.createObjectNode();

            for (Map.Entry<String, Object> outputResult : ruleResult.entrySet()) {
                outputResultNode.set(outputResult.getKey(),
                        objectMapper.convertValue(outputResult.getValue(), JsonNode.class));
            }

            ruleResultNode.add(outputResultNode);
        }

        execution.setVariable(decisionKey, ruleResultNode);
    } else {
        // single rule result
        // put on execution output id (key) and output value (value)
        Map<String, Object> ruleResult = executionResult.get(0);

        for (Map.Entry<String, Object> outputResult : ruleResult.entrySet()) {
            execution.setVariable(outputResult.getKey(), outputResult.getValue());
        }
    }
}

From source file:org.onosproject.cli.net.IntentsListCommand.java

private JsonNode json(Iterable<Intent> intents) {
    ObjectMapper mapper = new ObjectMapper();
    ArrayNode result = mapper.createArrayNode();
    Tools.stream(intents).filter(intent -> contentFilter.filter(jsonForEntity(intent, Intent.class).toString()))
            .forEach(intent -> result.add(jsonForEntity(intent, Intent.class)));
    return result;
}

From source file:org.roda.core.common.ClassificationPlanUtils.java

public static ConsumesOutputStream retrieveClassificationPlan(User user, String filename)
        throws RequestNotValidException, NotFoundException, GenericException, AuthorizationDeniedException {
    try {//w w w . j  a v a2 s .  c o  m
        JsonFactory factory = new JsonFactory();
        ObjectMapper mapper = new ObjectMapper(factory);
        ObjectNode root = mapper.createObjectNode();

        ArrayNode array = mapper.createArrayNode();
        List<String> descriptionsLevels = RodaUtils.copyList(
                RodaCoreFactory.getRodaConfiguration().getList(RodaConstants.LEVELS_CLASSIFICATION_PLAN));

        Filter allButRepresentationsFilter = new Filter(
                new OneOfManyFilterParameter(RodaConstants.AIP_LEVEL, descriptionsLevels));

        IndexService index = RodaCoreFactory.getIndexService();
        boolean justActive = true;
        IterableIndexResult<IndexedAIP> res = index.findAll(IndexedAIP.class, allButRepresentationsFilter, null,
                Sublist.ALL, user, justActive, new ArrayList<>());
        Iterator<IndexedAIP> it = res.iterator();
        while (it.hasNext()) {
            array.add(aipToJSON(it.next()));
        }

        root.set("dos", array);
        return new ConsumesOutputStream() {

            @Override
            public void consumeOutputStream(OutputStream out) throws IOException {
                try {
                    mapper.writeValue(out, root);
                } catch (IOException e) {
                    throw e;
                } finally {
                    IOUtils.closeQuietly(out);
                }

            }

            @Override
            public String getFileName() {
                return filename;
            }

            @Override
            public String getMediaType() {
                return RodaConstants.MEDIA_TYPE_APPLICATION_JSON;
            }

        };
    } catch (IOException e) {
        throw new GenericException(e);
    }
}

From source file:org.roda.core.common.ClassificationPlanUtils.java

public static ObjectNode aipToJSON(IndexedAIP indexedAIP) throws IOException, RequestNotValidException,
        NotFoundException, GenericException, AuthorizationDeniedException {
    JsonFactory factory = new JsonFactory();
    ObjectMapper mapper = new ObjectMapper(factory);
    ModelService model = RodaCoreFactory.getModelService();

    ObjectNode node = mapper.createObjectNode();
    if (indexedAIP.getTitle() != null) {
        node = node.put("title", indexedAIP.getTitle());
    }//  w ww  . jav  a 2 s  .  co  m
    if (indexedAIP.getId() != null) {
        node = node.put("id", indexedAIP.getId());
    }
    if (indexedAIP.getParentID() != null) {
        node = node.put("parentId", indexedAIP.getParentID());
    }
    if (indexedAIP.getLevel() != null) {
        node = node.put("descriptionlevel", indexedAIP.getLevel());
    }
    AIP modelAIP = model.retrieveAIP(indexedAIP.getId());

    if (modelAIP.getType() != null) {
        node = node.put("type", modelAIP.getType());
    }
    if (modelAIP != null) {
        List<DescriptiveMetadata> descriptiveMetadata = modelAIP.getDescriptiveMetadata();
        if (descriptiveMetadata != null && !descriptiveMetadata.isEmpty()) {
            ArrayNode metadata = mapper.createArrayNode();
            for (DescriptiveMetadata dm : descriptiveMetadata) {
                ObjectNode dmNode = mapper.createObjectNode();
                if (dm.getId() != null) {
                    dmNode = dmNode.put("id", dm.getId());
                }
                if (dm.getType() != null) {
                    dmNode = dmNode.put("metadataType", dm.getType());
                }
                if (dm.getVersion() != null) {
                    dmNode = dmNode.put("metadataVersion", dm.getVersion());
                }
                Binary b = model.retrieveDescriptiveMetadataBinary(modelAIP.getId(), dm.getId());
                InputStream is = b.getContent().createInputStream();
                dmNode = dmNode.put("content", new String(Base64.encodeBase64(IOUtils.toByteArray(is))));
                IOUtils.closeQuietly(is);
                dmNode = dmNode.put("contentEncoding", "Base64");

                metadata = metadata.add(dmNode);
            }
            node.set("metadata", metadata);
        }
    }
    return node;
}