in src/main/java/org/apache/sling/feature/ArtifactId.java [194:219]
public static ArtifactId fromMvnPath(final String path) {
final String[] parts = path.startsWith("/") ? path.substring(1).split("/") : path.split("/");
if (parts.length < 4) {
throw new IllegalArgumentException("Invalid mvn path: " + path);
}
final String gId = String.join(".", Arrays.copyOfRange(parts, 0, parts.length - 3));
final String aId = parts[parts.length - 3];
final String version = parts[parts.length - 2];
final String prefix = aId.concat("-").concat(version);
if (!parts[parts.length - 1].startsWith(prefix)) {
throw new IllegalArgumentException("Invalid mvn path: " + path);
}
final int pos = parts[parts.length - 1].lastIndexOf(".");
final String type = parts[parts.length - 1].substring(pos + 1);
final String classifier;
if (pos > prefix.length()) {
if (parts[parts.length - 1].charAt(prefix.length()) != '-') {
throw new IllegalArgumentException("Invalid mvn path: " + path);
}
classifier = parts[parts.length - 1].substring(prefix.length() + 1, pos);
} else {
classifier = null;
}
return new ArtifactId(gId, aId, version, classifier, type);
}