use of org.finos.legend.engine.plan.execution.result.ErrorResult in project legend-sdlc by finos.
the class LegendPureV1TestCase method getResultValuesAsJson.
private List<JsonNode> getResultValuesAsJson(Result result) {
if (result instanceof ErrorResult) {
throw new RuntimeException(((ErrorResult) result).getMessage());
}
JsonNode jsonResult = getResultAsJson(result);
JsonNode values = jsonResult.get("values");
return nodeToList(values);
}
use of org.finos.legend.engine.plan.execution.result.ErrorResult in project legend-engine by finos.
the class ExecutionNodeExecutor method visit.
@Override
public Result visit(MultiResultSequenceExecutionNode multiResultSequenceExecutionNode) {
Map<String, Result> subResults = Maps.mutable.empty();
Result last = null;
for (ExecutionNode n : multiResultSequenceExecutionNode.executionNodes()) {
last = n.accept(new ExecutionNodeExecutor(this.profiles, this.executionState));
if (n instanceof AllocationExecutionNode) {
subResults.put(((AllocationExecutionNode) n).varName, last);
}
if (last instanceof ErrorResult) {
return last;
}
}
if (last != null) {
subResults.put("@LAST", last);
}
return new MultiResult(subResults);
}
use of org.finos.legend.engine.plan.execution.result.ErrorResult in project legend-engine by finos.
the class ExecutionNodeJavaPlatformHelper method getClassToExecute.
public static Class<?> getClassToExecute(ExecutionNode node, String _class, ExecutionState executionState, MutableList<CommonProfile> pm) {
if (executionState.isJavaCompilationForbidden()) {
try {
return Thread.currentThread().getContextClassLoader().loadClass(_class);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
JavaPlatformImplementation j = (JavaPlatformImplementation) node.implementation;
List<JavaClass> javaClasses = FastList.newList();
if (j.code != null) {
JavaClass executeClass = JavaHelper.newJavaClass(JavaHelper.getExecutionClassFullName(j));
executeClass.source = j.code;
javaClasses.add(executeClass);
}
javaClasses.addAll(getLocalImplementationSupportClasses(node));
if (javaClasses.isEmpty()) {
ClassLoader classLoader = executionState.hasJavaCompiler() ? executionState.getJavaCompiler().getClassLoader() : Thread.currentThread().getContextClassLoader();
try {
return classLoader.loadClass(_class);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
try {
// TODO Confirm we can delete this
MutableMap<String, String> compiledClassesWithByteCode = getCompiledClasses(node);
List<StringJavaSource> classesToCompile = javaClasses.stream().filter(c -> !compiledClassesWithByteCode.containsKey(JavaHelper.getJavaClassFullName(c))).map(JavaHelper::buildStringJavaSource).collect(Collectors.toList());
EngineJavaCompiler compiler = new EngineJavaCompiler(executionState.getJavaCompiler());
long start = System.currentTimeMillis();
try {
if (!compiledClassesWithByteCode.isEmpty()) {
compiler.load(compiledClassesWithByteCode);
}
if (!classesToCompile.isEmpty()) {
LOGGER.info(new LogInfo(pm, LoggingEventType.JAVA_COMPILATION_START, "Node: " + node.getClass().getName()).toString());
compiler.compile(classesToCompile);
LOGGER.info(new LogInfo(pm, LoggingEventType.JAVA_COMPILATION_STOP, (double) System.currentTimeMillis() - start).toString());
}
} catch (Exception jce) {
LOGGER.info(new LogInfo(pm, LoggingEventType.JAVA_COMPILATION_ERROR, new ErrorResult(1, jce).getMessage()).toString());
throw jce;
}
return compiler.getClassLoader().loadClass(_class);
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
use of org.finos.legend.engine.plan.execution.result.ErrorResult in project legend-engine by finos.
the class JavaHelper method compilePlan.
public static EngineJavaCompiler compilePlan(SingleExecutionPlan singleExecutionPlan, MutableList<CommonProfile> pm) throws JavaCompileException {
try {
long start = System.currentTimeMillis();
LOGGER.info(new LogInfo(pm, LoggingEventType.JAVA_COMPILATION_START, "Compile Plan").toString());
EngineJavaCompiler compiler;
try {
compiler = compilePlanFast(singleExecutionPlan);
} catch (Exception ignored) {
// TODO Confirm we can delete this
compiler = compilePlanSlow(singleExecutionPlan);
}
LOGGER.info(new LogInfo(pm, LoggingEventType.JAVA_COMPILATION_STOP, (double) System.currentTimeMillis() - start).toString());
return compiler;
} catch (Exception e) {
LOGGER.info(new LogInfo(pm, LoggingEventType.JAVA_COMPILATION_ERROR, new ErrorResult(1, e).getMessage()).toString());
throw e;
}
}
use of org.finos.legend.engine.plan.execution.result.ErrorResult in project legend-engine by finos.
the class MappingTestRunner method getResultValuesAsJson.
private List<JsonNode> getResultValuesAsJson(Result result) {
if (result instanceof ErrorResult) {
throw new RuntimeException(((ErrorResult) result).getMessage());
}
JsonNode jsonResult = getResultAsJson(result);
JsonNode values = jsonResult.get("values");
if (values != null) {
return nodeToList(values);
}
values = jsonResult.get("result");
if (values != null) {
return nodeToList(values.get("rows"));
}
throw new RuntimeException("The system was not extract values from the Result");
}
Aggregations