if (!Files.exists(a2Dir))
continue categories;
// modulePath.add(a2Dir.toString());
- for (Path jarP : Files.newDirectoryStream(a2Dir,
- (p) -> p.getFileName().toString().endsWith(".jar"))) {
+ for (Path jarP : Files.newDirectoryStream(a2Dir, (p) -> p.getFileName().toString().endsWith(".jar")
+ && !p.getFileName().toString().endsWith(".src.jar"))) {
A2Jar a2Jar = new A2Jar(jarP);
if (a2Jars.containsKey(a2Jar.name)) {
A2Jar current = a2Jars.get(a2Jar.name);
for (Path p : sdkSrcLegal)
toInclude.put(p.getFileName().toString(), p);
}
- DirectoryStream<Path> bundleLegal = Files.newDirectoryStream(bundleBase, (p) -> {
- String fileName = p.getFileName().toString();
- return switch (fileName) {
- case "NOTICE":
- case "LICENSE":
- case "COPYING":
- case "COPYING.LESSER":
- yield true;
- default:
- yield false;
- };
- });
- // bundle can override
- for (Path p : bundleLegal)
- toInclude.put(p.getFileName().toString(), p);
+ for (Iterator<Map.Entry<String, Path>> entries = toInclude.entrySet().iterator(); entries.hasNext();) {
+ Map.Entry<String, Path> entry = entries.next();
+ Path inBundle = bundleBase.resolve(entry.getValue().getFileName());
+ // remove file if it is also defined at bundle level
+ // since it has already been copied
+ // and has priority
+ if (Files.exists(inBundle))
+ entries.remove();
+ }
return toInclude;
}
}
}
+ /** A jar file in A2 format */
static class A2Jar {
final Path path;
final String name;
final int minor;
A2Jar(Path path) {
- this.path = path;
- String fileName = path.getFileName().toString();
- fileName = fileName.substring(0, fileName.lastIndexOf('.'));
- minor = Integer.parseInt(fileName.substring(fileName.lastIndexOf('.') + 1));
- fileName = fileName.substring(0, fileName.lastIndexOf('.'));
- major = Integer.parseInt(fileName.substring(fileName.lastIndexOf('.') + 1));
- name = fileName.substring(0, fileName.lastIndexOf('.'));
+ try {
+ this.path = path;
+ String fileName = path.getFileName().toString();
+ fileName = fileName.substring(0, fileName.lastIndexOf('.'));
+ minor = Integer.parseInt(fileName.substring(fileName.lastIndexOf('.') + 1));
+ fileName = fileName.substring(0, fileName.lastIndexOf('.'));
+ major = Integer.parseInt(fileName.substring(fileName.lastIndexOf('.') + 1));
+ name = fileName.substring(0, fileName.lastIndexOf('.'));
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Badly formatted A2 jar " + path, e);
+ }
}
}