X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=runtime%2Forg.argeo.slc.support.osgi%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fosgi%2FOsgiBundle.java;h=0296a13d2b436371d222a0890c77925be7b4fcdb;hb=827cc6fa4bff1994f89cb8d925808def5600b5dc;hp=7cce2308350f9d7000d932ce120be25e0bb9d813;hpb=1fdb1b4e7b1d2b0cabb6483238301b857a6392fa;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiBundle.java b/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiBundle.java index 7cce23083..0296a13d2 100644 --- a/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiBundle.java +++ b/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/OsgiBundle.java @@ -16,23 +16,28 @@ package org.argeo.slc.osgi; -import org.argeo.slc.build.BasicNameVersion; +import org.argeo.slc.BasicNameVersion; +import org.argeo.slc.NameVersion; import org.argeo.slc.build.Distribution; -import org.argeo.slc.build.NameVersion; import org.argeo.slc.core.build.ResourceDistribution; import org.argeo.slc.deploy.DeploymentData; import org.argeo.slc.deploy.Module; +import org.argeo.slc.deploy.ModuleDescriptor; import org.argeo.slc.deploy.TargetData; import org.argeo.slc.process.RealizedFlow; import org.osgi.framework.Bundle; import org.osgi.framework.Constants; +import org.springframework.core.io.Resource; +/** A deployed OSGi bundle. */ public class OsgiBundle extends BasicNameVersion implements Module { + private static final long serialVersionUID = 35073826504550477L; + private ResourceDistribution distribution; private Long internalBundleId; - private String label; + private String title; private String description; public OsgiBundle() { @@ -52,6 +57,17 @@ public class OsgiBundle extends BasicNameVersion implements Module { internalBundleId = bundle.getBundleId(); } + /** + * Initialize from a {@link RealizedFlow}. + * + * @deprecated introduce an unnecessary dependency. TODO: create a separate + * helper. + */ + public OsgiBundle(RealizedFlow realizedFlow) { + super(realizedFlow.getModuleName(), realizedFlow.getModuleVersion()); + } + + /** Utility to avoid NPE. */ private static String getVersionSafe(Bundle bundle) { Object versionObj = bundle.getHeaders().get(Constants.BUNDLE_VERSION); if (versionObj != null) @@ -60,26 +76,35 @@ public class OsgiBundle extends BasicNameVersion implements Module { return null; } - public OsgiBundle(RealizedFlow realizedFlow) { - super(realizedFlow.getModuleName(), realizedFlow.getModuleVersion()); - } - + /** Unique deployed system id. TODO: use internal bundle id when available? */ public String getDeployedSystemId() { return getName() + ":" + getVersion(); } + /** + * OSGi bundle are self-contained and do not require additional deployment + * data. + * + * @return always null + */ public DeploymentData getDeploymentData() { - throw new UnsupportedOperationException(); + return null; } + /** The related distribution. */ public Distribution getDistribution() { return distribution; } + /** + * The related distribution, a jar file with OSGi metadata referenced by a + * {@link Resource}. + */ public ResourceDistribution getResourceDistribution() { return distribution; } + /** TODO: reference the {@link OsgiRuntime} as target data? */ public TargetData getTargetData() { throw new UnsupportedOperationException(); } @@ -89,8 +114,8 @@ public class OsgiBundle extends BasicNameVersion implements Module { } /** - * To be used for optimization when looking in the bundle context. Can - * therefore be null. + * Bundle ID used by the OSGi runtime. To be used for optimization when + * looking in the bundle context. Can therefore be null. */ public Long getInternalBundleId() { return internalBundleId; @@ -101,14 +126,16 @@ public class OsgiBundle extends BasicNameVersion implements Module { this.internalBundleId = internalBundleId; } - public String getLabel() { - return label; + /** Value of the Bundle-Name directive. */ + public String getTitle() { + return title; } - public void setLabel(String label) { - this.label = label; + public void setTitle(String label) { + this.title = label; } + /** Value of the Bundle-Description directive. */ public String getDescription() { return description; } @@ -117,4 +144,12 @@ public class OsgiBundle extends BasicNameVersion implements Module { this.description = description; } + public ModuleDescriptor getModuleDescriptor() { + ModuleDescriptor moduleDescriptor = new ModuleDescriptor(); + moduleDescriptor.setName(getName()); + moduleDescriptor.setVersion(getVersion()); + moduleDescriptor.setDescription(description); + moduleDescriptor.setTitle(title); + return moduleDescriptor; + } }