1 package org
.argeo
.api
.a2
;
4 import java
.io
.IOException
;
5 import java
.lang
.System
.Logger
;
6 import java
.lang
.System
.Logger
.Level
;
7 import java
.nio
.file
.FileVisitResult
;
8 import java
.nio
.file
.Files
;
9 import java
.nio
.file
.Path
;
10 import java
.nio
.file
.Paths
;
11 import java
.nio
.file
.SimpleFileVisitor
;
12 import java
.nio
.file
.attribute
.BasicFileAttributes
;
14 import org
.osgi
.framework
.Version
;
16 /** A file system {@link AbstractProvisioningSource} in Maven 2 format. */
17 public class FsM2Source
extends AbstractProvisioningSource
{
18 private final static Logger logger
= System
.getLogger(FsM2Source
.class.getName());
20 private final Path base
;
22 public FsM2Source(Path base
) {
27 void load() throws IOException
{
28 Files
.walkFileTree(base
, new ArtifactFileVisitor());
31 class ArtifactFileVisitor
extends SimpleFileVisitor
<Path
> {
34 public FileVisitResult
visitFile(Path file
, BasicFileAttributes attrs
) throws IOException
{
35 // OsgiBootUtils.debug("Processing " + file);
36 if (file
.toString().endsWith(".jar")) {
39 version
= new Version(readVersionFromModule(file
));
40 } catch (Exception e
) {
42 return FileVisitResult
.CONTINUE
;
44 String moduleName
= readSymbolicNameFromModule(file
);
45 Path groupPath
= file
.getParent().getParent().getParent();
46 Path relGroupPath
= base
.relativize(groupPath
);
47 String contributionName
= relGroupPath
.toString().replace(File
.separatorChar
, '.');
48 A2Contribution contribution
= getOrAddContribution(contributionName
);
49 A2Component component
= contribution
.getOrAddComponent(moduleName
);
50 A2Module module
= component
.getOrAddModule(version
, file
);
51 logger
.log(Level
.TRACE
, () -> "Registered " + module
);
53 return super.visitFile(file
, attrs
);
58 public static void main(String
[] args
) {
60 FsM2Source context
= new FsM2Source(Paths
.get("/home/mbaudier/.m2/repository"));
63 } catch (Exception e
) {