@Override
public CSARDependency parse(Node node, ParsingContextExecution context) {
CSARDependency dependency = laxImportParser.parse(node, context);
if (dependency == null) {
return null;
}
String valueAsString = dependency.getName() + ":" + dependency.getVersion();
String currentArchiveVersion = context.<ArchiveRoot> getRootObj().getArchive().getVersion();
Csar csar = ToscaContext.get().getArchive(dependency.getName(), dependency.getVersion());
log.debug("Import {} {} {}", dependency.getName(), dependency.getVersion(), csar);
if (csar == null) {
context.getParsingErrors().add(new ParsingError(ParsingErrorLevel.WARNING, ErrorCode.MISSING_DEPENDENCY, "Import definition is not valid",
node.getStartMark(), "Specified dependency is not found in Alien 4 Cloud repository.", node.getEndMark(), valueAsString));
return null;
} else {
if (!VersionUtil.isSnapshot(currentArchiveVersion) && VersionUtil.isSnapshot(dependency.getVersion())) {
context.getParsingErrors().add(new ParsingError(ParsingErrorLevel.ERROR, ErrorCode.SNAPSHOT_DEPENDENCY, "Import definition is not valid",
node.getStartMark(), "A released archive cannot depends on snapshots archives.", node.getEndMark(), valueAsString));
}
dependency.setHash(csar.getHash());
ToscaContext.get().addDependency(dependency);
return dependency;
}
}