use of org.kie.workbench.common.services.datamodeller.driver.model.DriverError in project kie-wb-common by kiegroup.
the class JavaRoasterModelDriver method loadDataObject.
public ModelDriverResult loadDataObject(final String source, final Path path) throws ModelDriverException {
ModelDriverResult result = new ModelDriverResult();
DataModel dataModel = createModel();
result.setDataModel(dataModel);
if (source == null || "".equals(source)) {
logger.debug("source: " + source + " is empty.");
result.addError(new DriverError("Source is empty", Paths.convert(path)));
return result;
}
try {
JavaType<?> javaType = Roaster.parse(source);
if (javaType.isClass()) {
if (javaType.getSyntaxErrors() != null && !javaType.getSyntaxErrors().isEmpty()) {
// if a file has parsing errors it will be skipped.
addSyntaxErrors(result, path, javaType.getSyntaxErrors());
} else {
try {
// try to load the data object.
Pair<DataObject, List<ObjectProperty>> pair = parseDataObject((JavaClassSource) javaType);
dataModel.addDataObject(pair.getK1());
result.setClassPath(pair.getK1().getClassName(), Paths.convert(path));
result.setUnmanagedProperties(pair.getK1().getClassName(), pair.getK2());
} catch (ModelDriverException e) {
logger.error("An error was produced when source: " + source + " was being loaded into a DataObject.", e);
addModelDriverError(result, path, e);
}
}
} else {
logger.debug("No Class definition was found for source: " + source + ", it will be skipped.");
}
} catch (ParserException e) {
result.addError(new DriverError(e.getMessage(), Paths.convert(path)));
} catch (Exception e) {
// Unexpected exception.
logger.error(errorMessage(MODEL_LOAD_GENERIC_ERROR, javaRootPath.toUri()), e);
throw new ModelDriverException(errorMessage(MODEL_LOAD_GENERIC_ERROR, javaRootPath.toUri()), e);
}
return result;
}
Aggregations