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
.Path
;
8 import java
.nio
.file
.Paths
;
9 import java
.util
.Arrays
;
10 import java
.util
.List
;
12 import org
.osgi
.framework
.Version
;
15 * A provisioning source based on the linear classpath with which the JVM has
18 public class ClasspathSource
extends AbstractProvisioningSource
{
19 private final static Logger logger
= System
.getLogger(ClasspathSource
.class.getName());
21 public ClasspathSource() {
25 void load() throws IOException
{
26 A2Contribution classpathContribution
= getOrAddContribution(A2Contribution
.CLASSPATH
);
27 List
<String
> classpath
= Arrays
.asList(System
.getProperty("java.class.path").split(File
.pathSeparator
));
28 parts
: for (String part
: classpath
) {
29 Path file
= Paths
.get(part
);
32 version
= new Version(readVersionFromModule(file
));
33 } catch (Exception e
) {
37 String moduleName
= readSymbolicNameFromModule(file
);
38 A2Component component
= classpathContribution
.getOrAddComponent(moduleName
);
39 A2Module module
= component
.getOrAddModule(version
, file
);
40 logger
.log(Level
.TRACE
, () -> "Registered " + module
);