use of org.ballerinalang.util.codegen.PackageInfo in project carbon-apimgt by wso2.
the class DeployService method execute.
@Override
public BValue[] execute(Context context) {
String fileName = getStringArgument(context, 0);
String serviceName = getStringArgument(context, 1);
String config = getStringArgument(context, 2);
String packageName = getStringArgument(context, 3);
Path path = Paths.get(packageName);
String filePath = path.toAbsolutePath() + File.separator + fileName;
if (Util.saveFile(filePath, config)) {
ProgramFile programFile = new BLangProgramLoader().loadServiceProgramFile(programDirPath, path);
String[] servicePackageNameList = programFile.getServicePackageNameList();
if (servicePackageNameList.length == 0) {
throw new BallerinaException("no service found in '" + programFile.getProgramFilePath() + "'");
}
// This is required to invoke package/service init functions;
Context bContext = new Context(programFile);
// bContext.initFunction = true;
PackageInfo packageInfo = programFile.getPackageInfo(packageName.replace("/", "."));
// Invoke package init function
BLangFunctions.invokeFunction(programFile, packageInfo, packageInfo.getInitFunctionInfo(), bContext);
if (bContext.getError() != null) {
String stackTraceStr = BLangVMErrors.getPrintableStackTrace(bContext.getError());
throw new BLangRuntimeException("error: " + stackTraceStr);
}
for (ServiceInfo serviceInfo : packageInfo.getServiceInfoList()) {
// Invoke service init function
if (serviceName.equals(serviceInfo.getName())) {
BLangFunctions.invokeFunction(programFile, packageInfo, serviceInfo.getInitFunctionInfo(), bContext);
if (bContext.getError() != null) {
String stackTraceStr = BLangVMErrors.getPrintableStackTrace(bContext.getError());
throw new BLangRuntimeException("error: " + stackTraceStr);
}
// Deploy service
DispatcherRegistry.getInstance().getServiceDispatchers().forEach((protocol, dispatcher) -> dispatcher.serviceRegistered(serviceInfo));
}
}
}
return new BValue[0];
}
use of org.ballerinalang.util.codegen.PackageInfo in project ballerina by ballerina-lang.
the class SQLDatasourceUtils method getSQLConnectorError.
public static BStruct getSQLConnectorError(Context context, Throwable throwable) {
PackageInfo sqlPackageInfo = context.getProgramFile().getPackageInfo(Constants.SQL_PACKAGE_PATH);
StructInfo errorStructInfo = sqlPackageInfo.getStructInfo(Constants.SQL_CONNECTOR_ERROR);
BStruct sqlConnectorError = new BStruct(errorStructInfo.getType());
if (throwable.getMessage() == null) {
sqlConnectorError.setStringField(0, Constants.SQL_EXCEPTION_OCCURED);
} else {
sqlConnectorError.setStringField(0, throwable.getMessage());
}
return sqlConnectorError;
}
use of org.ballerinalang.util.codegen.PackageInfo in project ballerina by ballerina-lang.
the class Utils method createSpanContextStruct.
public static BStruct createSpanContextStruct(Context context, BMap spanContext) {
PackageInfo observePackage = context.getProgramFile().getPackageInfo("ballerina.observe");
StructInfo spanStructInfo = observePackage.getStructInfo("SpanContext");
return BLangVMStructs.createBStruct(spanStructInfo, spanContext);
}
use of org.ballerinalang.util.codegen.PackageInfo in project ballerina by ballerina-lang.
the class BLangVMErrors method createCallFailedException.
public static BStruct createCallFailedException(WorkerExecutionContext context, Map<String, BStruct> errors) {
PackageInfo errorPackageInfo = context.programFile.getPackageInfo(PACKAGE_RUNTIME);
StructInfo errorStructInfo = errorPackageInfo.getStructInfo(STRUCT_CALL_FAILED_EXCEPTION);
return generateError(context, true, errorStructInfo, MSG_CALL_FAILED, createErrorCauseArray(errors));
}
use of org.ballerinalang.util.codegen.PackageInfo in project ballerina by ballerina-lang.
the class BLangVMErrors method generateError.
private static BStruct generateError(CallableUnitInfo callableUnitInfo, boolean attachCallStack, Object... values) {
ProgramFile progFile = callableUnitInfo.getPackageInfo().getProgramFile();
PackageInfo errorPackageInfo = progFile.getPackageInfo(PACKAGE_BUILTIN);
StructInfo errorStructInfo = errorPackageInfo.getStructInfo(STRUCT_GENERIC_ERROR);
return generateError(callableUnitInfo, attachCallStack, errorStructInfo, values);
}
Aggregations