use of org.ballerinalang.util.exceptions.BLangNullReferenceException in project ballerina by ballerina-lang.
the class ParseHeader method execute.
@Override
public void execute(Context context) {
String errMsg;
try {
String headerValue = context.getStringArgument(0);
if (headerValue.contains(COMMA)) {
headerValue = headerValue.substring(0, headerValue.indexOf(COMMA));
}
// Set value and param map
String value = headerValue.trim();
if (headerValue.contains(SEMICOLON)) {
value = HeaderUtil.getHeaderValue(value);
}
BRefValueArray contentTuple = new BRefValueArray(parseHeaderTupleType);
contentTuple.add(0, new BString(value));
contentTuple.add(1, HeaderUtil.getParamMap(headerValue));
context.setReturnValues(contentTuple);
return;
} catch (BLangNullReferenceException ex) {
errMsg = PARSER_ERROR + "header value cannot be null";
} catch (BallerinaException ex) {
errMsg = PARSER_ERROR + ex.getMessage();
}
// set parse error
context.setReturnValues(MimeUtil.getParserError(context, errMsg));
}
use of org.ballerinalang.util.exceptions.BLangNullReferenceException in project ballerina by ballerina-lang.
the class BLangFunctions method invokeNativeCallable.
private static WorkerExecutionContext invokeNativeCallable(CallableUnitInfo callableUnitInfo, WorkerExecutionContext parentCtx, int[] argRegs, int[] retRegs, int flags) {
WorkerData parentLocalData = parentCtx.workerLocal;
BType[] retTypes = callableUnitInfo.getRetParamTypes();
WorkerData caleeSF = BLangVMUtils.createWorkerDataForLocal(callableUnitInfo.getDefaultWorkerInfo(), parentCtx, argRegs, callableUnitInfo.getParamTypes());
Context ctx = new NativeCallContext(parentCtx, callableUnitInfo, caleeSF);
NativeCallableUnit nativeCallable = callableUnitInfo.getNativeCallableUnit();
if (nativeCallable == null) {
return parentCtx;
}
try {
if (nativeCallable.isBlocking()) {
nativeCallable.execute(ctx, null);
BLangVMUtils.populateWorkerDataWithValues(parentLocalData, retRegs, ctx.getReturnValues(), retTypes);
if (TraceManagerWrapper.getInstance().isTraceEnabled() && FunctionFlags.isObserved(flags)) {
TraceUtil.finishTraceSpan(TraceUtil.getTracer(parentCtx));
}
/* we want the parent to continue, since we got the response of the native call already */
return parentCtx;
} else {
CallableUnitCallback callback;
if (TraceManagerWrapper.getInstance().isTraceEnabled() && FunctionFlags.isObserved(flags)) {
callback = new TraceableCallbackWrapper(parentCtx, new BLangCallableUnitCallback(ctx, parentCtx, retRegs, retTypes));
} else {
callback = new BLangCallableUnitCallback(ctx, parentCtx, retRegs, retTypes);
}
nativeCallable.execute(ctx, callback);
/* we want the parent to suspend (i.e. go to wait for response state) and stay until notified */
return null;
}
} catch (BLangNullReferenceException e) {
return BLangVMUtils.handleNativeInvocationError(parentCtx, BLangVMErrors.createNullRefException(callableUnitInfo));
} catch (Throwable e) {
return BLangVMUtils.handleNativeInvocationError(parentCtx, BLangVMErrors.createError(callableUnitInfo, e.getMessage()));
}
}
Aggregations