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()])));
}
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;
}
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;
}
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));
}
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;
}
Aggregations