Search in sources :

Example 81 with ArrayNode

use of com.fasterxml.jackson.databind.node.ArrayNode in project asterixdb by apache.

the class AUnionType method toJSON.

@Override
public ObjectNode toJSON() {
    ObjectMapper om = new ObjectMapper();
    ObjectNode type = om.createObjectNode();
    type.put("type", AUnionType.class.getName());
    ArrayNode fields = om.createArrayNode();
    Iterator<IAType> iter = unionList.iterator();
    if (iter.hasNext()) {
        IAType t0 = iter.next();
        fields.add(t0.toJSON());
        while (iter.hasNext()) {
            fields.add(iter.next().toJSON());
        }
    }
    type.set("fields", fields);
    return type;
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)

Example 82 with ArrayNode

use of com.fasterxml.jackson.databind.node.ArrayNode in project asterixdb by apache.

the class ConnectorApiServletTest method testGet.

@Test
public void testGet() throws Exception {
    // Starts test asterixdb cluster.
    SqlppExecutionTest.setUp();
    // Configures a test connector api servlet.
    ConnectorApiServlet let = new ConnectorApiServlet(new ConcurrentHashMap<>(), new String[] { "/" }, (ICcApplicationContext) ExecutionTestUtil.integrationUtil.cc.getApplicationContext());
    Map<String, NodeControllerInfo> nodeMap = new HashMap<>();
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    PrintWriter outputWriter = new PrintWriter(outputStream);
    // Creates mocks.
    IHyracksClientConnection mockHcc = mock(IHyracksClientConnection.class);
    NodeControllerInfo mockInfo1 = mock(NodeControllerInfo.class);
    NodeControllerInfo mockInfo2 = mock(NodeControllerInfo.class);
    IServletRequest mockRequest = mock(IServletRequest.class);
    IServletResponse mockResponse = mock(IServletResponse.class);
    FullHttpRequest mockHttpRequest = mock(FullHttpRequest.class);
    // Put stuff in let map
    let.ctx().put(ServletConstants.HYRACKS_CONNECTION_ATTR, mockHcc);
    // Sets up mock returns.
    when(mockRequest.getHttpRequest()).thenReturn(mockHttpRequest);
    when(mockHttpRequest.method()).thenReturn(HttpMethod.GET);
    when(mockRequest.getParameter("dataverseName")).thenReturn("Metadata");
    when(mockRequest.getParameter("datasetName")).thenReturn("Dataset");
    when(mockResponse.writer()).thenReturn(outputWriter);
    when(mockHcc.getNodeControllerInfos()).thenReturn(nodeMap);
    when(mockInfo1.getNetworkAddress()).thenReturn(new NetworkAddress("127.0.0.1", 3099));
    when(mockInfo2.getNetworkAddress()).thenReturn(new NetworkAddress("127.0.0.2", 3099));
    // Calls ConnectorAPIServlet.formResponseObject.
    nodeMap.put("asterix_nc1", mockInfo1);
    nodeMap.put("asterix_nc2", mockInfo2);
    let.handle(mockRequest, mockResponse);
    // Constructs the actual response.
    ObjectMapper om = new ObjectMapper();
    ObjectNode actualResponse = (ObjectNode) om.readTree(outputStream.toString());
    // Checks the temp-or-not, primary key, data type of the dataset.
    boolean temp = actualResponse.get("temp").asBoolean();
    Assert.assertFalse(temp);
    String primaryKey = actualResponse.get("keys").asText();
    Assert.assertEquals("DataverseName,DatasetName", primaryKey);
    ARecordType recordType = (ARecordType) JSONDeserializerForTypes.convertFromJSON(actualResponse.get("type"));
    Assert.assertEquals(getMetadataRecordType("Metadata", "Dataset"), recordType);
    // Checks the correctness of results.
    ArrayNode splits = (ArrayNode) actualResponse.get("splits");
    String path = (splits.get(0)).get("path").asText();
    Assert.assertTrue(path.endsWith("Metadata/Dataset_idx_Dataset"));
    // Tears down the asterixdb cluster.
    SqlppExecutionTest.tearDown();
}
Also used : IHyracksClientConnection(org.apache.hyracks.api.client.IHyracksClientConnection) FullHttpRequest(io.netty.handler.codec.http.FullHttpRequest) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) HashMap(java.util.HashMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IServletRequest(org.apache.hyracks.http.api.IServletRequest) NetworkAddress(org.apache.hyracks.api.comm.NetworkAddress) NodeControllerInfo(org.apache.hyracks.api.client.NodeControllerInfo) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) ConnectorApiServlet(org.apache.asterix.api.http.server.ConnectorApiServlet) IServletResponse(org.apache.hyracks.http.api.IServletResponse) ARecordType(org.apache.asterix.om.types.ARecordType) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) PrintWriter(java.io.PrintWriter) Test(org.junit.Test) SqlppExecutionTest(org.apache.asterix.test.runtime.SqlppExecutionTest)

Example 83 with ArrayNode

use of com.fasterxml.jackson.databind.node.ArrayNode in project asterixdb by apache.

the class ShutdownApiServlet method post.

@Override
protected void post(IServletRequest request, IServletResponse response) {
    IHyracksClientConnection hcc = (IHyracksClientConnection) ctx.get(HYRACKS_CONNECTION_ATTR);
    boolean terminateNCServices = "true".equalsIgnoreCase(request.getParameter("all"));
    Thread t = new Thread(() -> {
        try {
            hcc.stopCluster(terminateNCServices);
        } catch (Exception e) {
            GlobalConfig.ASTERIX_LOGGER.log(Level.SEVERE, "Exception stopping cluster", e);
        }
    }, "Shutdown Servlet Worker");
    try {
        HttpUtil.setContentType(response, HttpUtil.ContentType.APPLICATION_JSON, HttpUtil.Encoding.UTF8);
    } catch (IOException e) {
        LOGGER.log(Level.WARNING, "Failure handling request", e);
        response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR);
        return;
    }
    response.setStatus(HttpResponseStatus.ACCEPTED);
    ObjectMapper om = new ObjectMapper();
    ObjectNode jsonObject = om.createObjectNode();
    try {
        jsonObject.put("status", "SHUTTING_DOWN");
        jsonObject.put("date", new Date().toString());
        ObjectNode clusterState = ClusterStateManager.INSTANCE.getClusterStateDescription();
        ArrayNode ncs = (ArrayNode) clusterState.get("ncs");
        for (int i = 0; i < ncs.size(); i++) {
            ObjectNode nc = (ObjectNode) ncs.get(i);
            String node = nc.get(NODE_ID_KEY).asText();
            ObjectNode details = (ObjectNode) om.readTree(hcc.getNodeDetailsJSON(node, false, true));
            nc.set(PID, details.get(PID));
            if (details.has(INI) && details.get(INI).has(NCSERVICE_PID)) {
                nc.put(NCSERVICE_PID, details.get(INI).get(NCSERVICE_PID).asInt());
            }
        }
        jsonObject.set("cluster", clusterState);
        final PrintWriter writer = response.writer();
        writer.print(JSONUtil.convertNode(jsonObject));
        writer.close();
    } catch (Exception e) {
        GlobalConfig.ASTERIX_LOGGER.log(Level.INFO, "Exception writing response", e);
    }
    t.start();
}
Also used : IHyracksClientConnection(org.apache.hyracks.api.client.IHyracksClientConnection) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) IOException(java.io.IOException) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) IOException(java.io.IOException) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Date(java.util.Date) PrintWriter(java.io.PrintWriter)

Example 84 with ArrayNode

use of com.fasterxml.jackson.databind.node.ArrayNode in project asterixdb by apache.

the class NodeControllerDetailsApiServlet method processNode.

private ObjectNode processNode(IServletRequest request, IHyracksClientConnection hcc) throws Exception {
    String localPath = localPath(request);
    if (localPath.endsWith("/")) {
        throw new IllegalArgumentException();
    }
    String[] parts = localPath.substring(1).split("/");
    final String node = parts[0];
    if (parts.length == 1) {
        ArrayNode ncs = (ArrayNode) getClusterStateJSON(request, "../../").get("ncs");
        for (int i = 0; i < ncs.size(); i++) {
            if (node.equals(ncs.get(i).get("node_id").asText())) {
                return (ObjectNode) ncs.get(i);
            }
        }
        if ("cc".equals(node)) {
            return om.createObjectNode();
        }
        throw new IllegalArgumentException();
    } else if (parts.length == 2) {
        ObjectNode json;
        switch(parts[1]) {
            case "config":
                json = processNodeConfig(hcc, node);
                break;
            case "stats":
                json = processNodeStats(hcc, node);
                break;
            case "threaddump":
                return processNodeThreadDump(hcc, node);
            default:
                throw new IllegalArgumentException();
        }
        fixupKeys(json);
        return json;
    } else {
        throw new IllegalArgumentException();
    }
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode)

Example 85 with ArrayNode

use of com.fasterxml.jackson.databind.node.ArrayNode in project asterixdb by apache.

the class NodeControllerDetailsApiServlet method processNodeStats.

protected ObjectNode processNodeStats(IHyracksClientConnection hcc, String node) throws Exception {
    final String details = hcc.getNodeDetailsJSON(node, true, false);
    if (details == null) {
        throw new IllegalArgumentException();
    }
    ObjectNode json = (ObjectNode) om.readTree(details);
    int index = json.get("rrd-ptr").asInt() - 1;
    json.remove("rrd-ptr");
    List<String> keys = new ArrayList<>();
    for (Iterator<String> iter = json.fieldNames(); iter.hasNext(); ) {
        keys.add(iter.next());
    }
    final ArrayNode gcNames = (ArrayNode) json.get("gc-names");
    final ArrayNode gcCollectionTimes = (ArrayNode) json.get("gc-collection-times");
    final ArrayNode gcCollectionCounts = (ArrayNode) json.get("gc-collection-counts");
    for (String key : keys) {
        if (key.startsWith("gc-")) {
            json.remove(key);
        } else {
            final JsonNode keyNode = json.get(key);
            if (keyNode instanceof ArrayNode) {
                final ArrayNode valueArray = (ArrayNode) keyNode;
                // fixup an index of -1 to the final element in the array (i.e. RRD_SIZE)
                if (index == -1) {
                    index = valueArray.size() - 1;
                }
                final JsonNode value = valueArray.get(index);
                json.remove(key);
                json.set(key.replaceAll("s$", ""), value);
            }
        }
    }
    ArrayNode gcs = om.createArrayNode();
    for (int i = 0; i < gcNames.size(); i++) {
        ObjectNode gc = om.createObjectNode();
        gc.set("name", gcNames.get(i));
        gc.set("collection-time", ((ArrayNode) gcCollectionTimes.get(i)).get(index));
        gc.set("collection-count", ((ArrayNode) gcCollectionCounts.get(i)).get(index));
        gcs.add(gc);
    }
    json.set("gcs", gcs);
    return json;
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ArrayList(java.util.ArrayList) JsonNode(com.fasterxml.jackson.databind.JsonNode) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode)

Aggregations

ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)277 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)167 JsonNode (com.fasterxml.jackson.databind.JsonNode)97 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)57 ArrayList (java.util.ArrayList)32 HashMap (java.util.HashMap)27 Test (org.junit.Test)25 Deployment (org.activiti.engine.test.Deployment)23 StringEntity (org.apache.http.entity.StringEntity)20 ProcessInstance (org.activiti.engine.runtime.ProcessInstance)19 Cluster (org.apache.geode.tools.pulse.internal.data.Cluster)18 IOException (java.io.IOException)16 Map (java.util.Map)16 HttpPost (org.apache.http.client.methods.HttpPost)16 CloseableHttpResponse (org.apache.http.client.methods.CloseableHttpResponse)14 Task (org.activiti.engine.task.Task)13 GraphicInfo (org.activiti.bpmn.model.GraphicInfo)10 TextNode (com.fasterxml.jackson.databind.node.TextNode)8 JsonNodeFactory (com.fasterxml.jackson.databind.node.JsonNodeFactory)7 MissingNode (com.fasterxml.jackson.databind.node.MissingNode)7