import org.argeo.osgi.boot.OsgiBootUtils;
import org.osgi.framework.Version;
+/** A file system {@link ProvisioningSource} in A2 format. */
public class FsA2Source extends ProvisioningSource {
private final Path base;
if (!"jar".equals(ext))
continue modules;
String moduleName = moduleFileName.substring(0, lastDot);
- int firstDash = moduleName.indexOf('-');
- String versionStr = moduleName.substring(firstDash + 1);
- String componentName = moduleName.substring(0, firstDash);
+ if (moduleName.endsWith("-SNAPSHOT"))
+ moduleName = moduleName.substring(0, moduleName.length() - "-SNAPSHOT".length());
+ int lastDash = moduleName.lastIndexOf('-');
+ String versionStr = moduleName.substring(lastDash + 1);
+ String componentName = moduleName.substring(0, lastDash);
// if(versionStr.endsWith("-SNAPSHOT")) {
// versionStr = readVersionFromModule(modulePath);
// }
version = new Version(versionStr);
} catch (Exception e) {
versionStr = readVersionFromModule(modulePath);
- version = new Version(versionStr);
- // OsgiBootUtils.debug("Ignore " + modulePath + " (" + e.getMessage() + ")");
- // continue modules;
+ if (versionStr != null) {
+ version = new Version(versionStr);
+ } else {
+ OsgiBootUtils.debug("Ignore " + modulePath + " (" + e.getMessage() + ")");
+ continue modules;
+ }
}
A2Component component = contribution.getOrAddComponent(componentName);
A2Module module = component.getOrAddModule(version, modulePath);
public static void main(String[] args) {
try {
FsA2Source context = new FsA2Source(Paths.get(
- "/home/mbaudier/dev/git/apache2/argeo-commons/dist/argeo-node/target/argeo-node-2.1.74-SNAPSHOT/argeo-node/share/osgi"));
+ "/home/mbaudier/dev/git/apache2/argeo-commons/dist/argeo-node/target/argeo-node-2.1.77-SNAPSHOT/share/osgi"));
context.load();
context.asTree();
} catch (Exception e) {