]> git.argeo.org Git - lgpl/argeo-commons.git/blob - a2/FsM2Source.java
Prepare next development cycle
[lgpl/argeo-commons.git] / a2 / FsM2Source.java
1 package org.argeo.osgi.boot.a2;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.nio.file.FileVisitResult;
6 import java.nio.file.Files;
7 import java.nio.file.Path;
8 import java.nio.file.Paths;
9 import java.nio.file.SimpleFileVisitor;
10 import java.nio.file.attribute.BasicFileAttributes;
11
12 import org.argeo.osgi.boot.OsgiBootUtils;
13 import org.osgi.framework.Version;
14
15 public class FsM2Source extends ProvisioningSource {
16 private final Path base;
17
18 public FsM2Source(Path base) {
19 super();
20 this.base = base;
21 }
22
23 void load() throws IOException {
24 Files.walkFileTree(base, new ArtifactFileVisitor());
25 }
26
27 class ArtifactFileVisitor extends SimpleFileVisitor<Path> {
28
29 @Override
30 public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
31 // OsgiBootUtils.debug("Processing " + file);
32 if (file.toString().endsWith(".jar")) {
33 Version version;
34 try {
35 version = new Version(readVersionFromModule(file));
36 } catch (Exception e) {
37 // ignore non OSGi
38 return FileVisitResult.CONTINUE;
39 }
40 String moduleName = readSymbolicNameFromModule(file);
41 Path groupPath = file.getParent().getParent().getParent();
42 Path relGroupPath = base.relativize(groupPath);
43 String contributionName = relGroupPath.toString().replace(File.separatorChar, '.');
44 A2Contribution contribution = getOrAddContribution(contributionName);
45 A2Component component = contribution.getOrAddComponent(moduleName);
46 A2Module module = component.getOrAddModule(version, file);
47 if (OsgiBootUtils.isDebug())
48 OsgiBootUtils.debug("Registered " + module);
49 }
50 return super.visitFile(file, attrs);
51 }
52
53 }
54
55 public static void main(String[] args) {
56 try {
57 FsM2Source context = new FsM2Source(Paths.get("/home/mbaudier/.m2/repository"));
58 context.load();
59 context.asTree();
60 } catch (Exception e) {
61 e.printStackTrace();
62 }
63 }
64
65 }