use of org.eclipse.n4js.packagejson.PackageJsonUtils in project n4js by eclipse.
the class PackageJsonValidatorExtension method createInSourceContainerTypeClause.
/**
* Constructs in-clause (e.g. "in external, test") for sections in which a source container path can be declared.
*
* If the source container type of {@code issueTarget} is the only section (e.g. external) in which
* {@code duplicates} appear, the in-clause is empty. Otherwise the in-clause lists all source container types for
* which duplicates have been declared.
*/
private String createInSourceContainerTypeClause(JSONStringLiteral issueTarget, List<JSONStringLiteral> duplicates) {
final SourceContainerType targetContainerType = getSourceContainerType(issueTarget);
final Set<SourceContainerType> otherTypes = duplicates.stream().filter(d -> d != issueTarget).map(d -> getSourceContainerType(d)).collect(Collectors.toSet());
// if issueTarget's type is the only type for which there have been declared duplicate paths
if (otherTypes.size() == 1 && otherTypes.iterator().next() == targetContainerType) {
// do not use an in-clause
return "";
}
// otherwise list all other types for which the path of issueTarget has been declared as well
return " in " + otherTypes.stream().map(PackageJsonUtils::getSourceContainerTypeStringRepresentation).collect(Collectors.joining(", "));
}
Aggregations