Search in sources :

Example 1 with BJSON

use of org.ballerinalang.model.values.BJSON in project carbon-apimgt by wso2.

the class GetKeys method execute.

@Override
public BValue[] execute(Context ctx) {
    List<String> keys = new ArrayList<String>();
    BJSON json = (BJSON) getRefArgument(ctx, 0);
    JsonNode node = json.value();
    if (node.getNodeType() != JsonNodeType.OBJECT) {
        return getBValues(new BStringArray());
    }
    Iterator<String> keysItr = ((ObjectNode) node).fieldNames();
    while (keysItr.hasNext()) {
        keys.add(keysItr.next());
    }
    return getBValues(new BStringArray(keys.toArray(new String[keys.size()])));
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ArrayList(java.util.ArrayList) JsonNode(com.fasterxml.jackson.databind.JsonNode) BJSON(org.ballerinalang.model.values.BJSON) BStringArray(org.ballerinalang.model.values.BStringArray)

Example 2 with BJSON

use of org.ballerinalang.model.values.BJSON in project carbon-apimgt by wso2.

the class Publish method execute.

@Override
public BValue execute(Context context) {
    log.info("publishing event to DAS");
    BConnector bConnector = (BConnector) getRefArgument(context, 0);
    BJSON json = (BJSON) getRefArgument(context, 1);
    String streamName = json.value().get(Constants.STREAM_NAME).asText();
    String streamVersion = json.value().get(Constants.STREAM_VERSION).asText();
    ArrayNode metaData = (ArrayNode) json.value().get(Constants.META_DATA);
    ArrayNode correlationData = (ArrayNode) json.value().get(Constants.CORRELATION_DATA);
    ArrayNode payloadData = (ArrayNode) json.value().get(Constants.PAYLOAD_DATA);
    Object[] metaDataArr = new Object[metaData.size()];
    JSONArray jsonMetaData = new JSONArray(metaData.toString());
    for (int i = 0; i < jsonMetaData.length(); i++) {
        metaDataArr[i] = jsonMetaData.get(i);
    }
    Object[] correlationDataArr = new Object[correlationData.size()];
    JSONArray jsonCorrelationData = new JSONArray(correlationData.toString());
    for (int i = 0; i < jsonCorrelationData.length(); i++) {
        correlationDataArr[i] = jsonCorrelationData.get(i);
    }
    Object[] payloadDataArr = new Object[payloadData.size()];
    JSONArray jsonPayloadData = new JSONArray(payloadData.toString());
    for (int i = 0; i < jsonPayloadData.length(); i++) {
        payloadDataArr[i] = jsonPayloadData.get(i);
    }
    BMap sharedMap = (BMap) bConnector.getRefField(1);
    EventPublisher pub = (EventPublisher) sharedMap.get(Constants.PUBLISHER_INSTANCE);
    Event event = new Event();
    event.setStreamId(DataBridgeCommonsUtils.generateStreamId(streamName, streamVersion));
    event.setMetaData(metaDataArr);
    event.setCorrelationData(correlationDataArr);
    event.setPayloadData(payloadDataArr);
    pub.publish(event);
    return null;
}
Also used : BConnector(org.ballerinalang.model.values.BConnector) BMap(org.ballerinalang.model.values.BMap) JSONArray(org.json.JSONArray) Event(org.wso2.carbon.databridge.commons.Event) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) BJSON(org.ballerinalang.model.values.BJSON)

Example 3 with BJSON

use of org.ballerinalang.model.values.BJSON in project ballerina by ballerina-lang.

the class BTestRunner method extractArguments.

/**
 * Extract function arguments from the values sets.
 * @param valueSets user provided value sets
 * @return a list of function arguments
 */
private List<BValue[]> extractArguments(BValue[] valueSets) {
    List<BValue[]> argsList = new ArrayList<>();
    for (BValue value : valueSets) {
        if (value instanceof BRefValueArray) {
            BRefValueArray array = (BRefValueArray) value;
            for (BIterator it = array.newIterator(); it.hasNext(); ) {
                BValue[] vals = it.getNext(0);
                if (vals[1] instanceof BNewArray) {
                    BNewArray bNewArray = (BNewArray) vals[1];
                    BValue[] args = new BValue[(int) bNewArray.size()];
                    for (int j = 0; j < bNewArray.size(); j++) {
                        args[j] = bNewArray.getBValue(j);
                    }
                    argsList.add(args);
                } else {
                // cannot happen due to validations done at annotation processor
                }
            }
        } else if (value instanceof BJSON) {
            BJSON jsonArrayOfArrays = (BJSON) value;
            for (BIterator it = jsonArrayOfArrays.newIterator(); it.hasNext(); ) {
                BValue[] vals = it.getNext(0);
                if (vals[1] instanceof BJSON) {
                    List<BValue> args = new ArrayList<>();
                    BJSON jsonArray = (BJSON) vals[1];
                    for (BIterator it2 = jsonArray.newIterator(); it2.hasNext(); ) {
                        BValue[] vals2 = it2.getNext(0);
                        args.add(vals2[1]);
                    }
                    argsList.add(args.toArray(new BValue[0]));
                } else {
                // cannot happen due to validations done at annotation processor
                }
            }
        } else {
            argsList.add(new BValue[] { value });
        }
    }
    return argsList;
}
Also used : BNewArray(org.ballerinalang.model.values.BNewArray) BValue(org.ballerinalang.model.values.BValue) ArrayList(java.util.ArrayList) BRefValueArray(org.ballerinalang.model.values.BRefValueArray) ArrayList(java.util.ArrayList) List(java.util.List) BIterator(org.ballerinalang.model.values.BIterator) BJSON(org.ballerinalang.model.values.BJSON)

Example 4 with BJSON

use of org.ballerinalang.model.values.BJSON in project ballerina by ballerina-lang.

the class ToString method execute.

@Override
public void execute(Context ctx) {
    String jsonStr = null;
    try {
        // Accessing Parameters.
        BJSON json = (BJSON) ctx.getRefArgument(0);
        jsonStr = json.stringValue();
        if (log.isDebugEnabled()) {
            log.debug("Output JSON: " + jsonStr);
        }
    } catch (Throwable e) {
        ErrorHandler.handleJsonException("convert json to string", e);
    }
    ctx.setReturnValues(new BString(jsonStr));
}
Also used : BString(org.ballerinalang.model.values.BString) BString(org.ballerinalang.model.values.BString) BJSON(org.ballerinalang.model.values.BJSON)

Example 5 with BJSON

use of org.ballerinalang.model.values.BJSON in project ballerina by ballerina-lang.

the class CPU method calculateLength.

@SuppressWarnings("rawtypes")
private static void calculateLength(WorkerExecutionContext ctx, int[] operands, WorkerData sf) {
    int i = operands[0];
    int cpIndex = operands[1];
    int j = operands[2];
    TypeRefCPEntry typeRefCPEntry = (TypeRefCPEntry) ctx.constPool[cpIndex];
    int typeTag = typeRefCPEntry.getType().getTag();
    if (typeTag == TypeTags.STRING_TAG) {
        String value = sf.stringRegs[i];
        if (value == null) {
            handleNullRefError(ctx);
        } else {
            sf.longRegs[j] = value.length();
        }
        return;
    } else if (typeTag == TypeTags.BLOB_TAG) {
        // Here it is assumed null is not supported for blob type
        sf.longRegs[j] = sf.byteRegs[i].length;
        return;
    }
    BValue entity = sf.refRegs[i];
    if (entity == null) {
        handleNullRefError(ctx);
        return;
    }
    if (typeTag == TypeTags.XML_TAG) {
        sf.longRegs[j] = ((BXML) entity).length();
        return;
    } else if (entity instanceof BJSON) {
        if (JSONUtils.isJSONArray((BJSON) entity)) {
            sf.longRegs[j] = JSONUtils.getJSONArrayLength((BJSON) sf.refRegs[i]);
        } else {
            sf.longRegs[j] = -1;
        }
        return;
    } else if (typeTag == TypeTags.MAP_TAG) {
        sf.longRegs[j] = ((BMap) entity).size();
        return;
    }
    BNewArray newArray = (BNewArray) entity;
    sf.longRegs[j] = newArray.size();
    return;
}
Also used : BNewArray(org.ballerinalang.model.values.BNewArray) TypeRefCPEntry(org.ballerinalang.util.codegen.cpentries.TypeRefCPEntry) BValue(org.ballerinalang.model.values.BValue) BString(org.ballerinalang.model.values.BString) BJSON(org.ballerinalang.model.values.BJSON)

Aggregations

BJSON (org.ballerinalang.model.values.BJSON)255 Test (org.testng.annotations.Test)214 BValue (org.ballerinalang.model.values.BValue)113 HTTPTestRequest (org.ballerinalang.test.services.testutils.HTTPTestRequest)108 HTTPCarbonMessage (org.wso2.transport.http.netty.message.HTTPCarbonMessage)108 HttpMessageDataStreamer (org.wso2.transport.http.netty.message.HttpMessageDataStreamer)104 BString (org.ballerinalang.model.values.BString)85 BXMLItem (org.ballerinalang.model.values.BXMLItem)37 BStruct (org.ballerinalang.model.values.BStruct)23 BXML (org.ballerinalang.model.values.BXML)17 OMNode (org.apache.axiom.om.OMNode)13 BallerinaException (org.ballerinalang.util.exceptions.BallerinaException)13 BMap (org.ballerinalang.model.values.BMap)11 JsonNode (org.ballerinalang.model.util.JsonNode)10 BNewArray (org.ballerinalang.model.values.BNewArray)9 BIntArray (org.ballerinalang.model.values.BIntArray)8 BRefType (org.ballerinalang.model.values.BRefType)8 ArrayList (java.util.ArrayList)7 BStringArray (org.ballerinalang.model.values.BStringArray)7 BStructType (org.ballerinalang.model.types.BStructType)6