import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.CategorizedNameVersion;
+import org.argeo.slc.CategoryNameVersion;
import org.argeo.slc.SlcException;
import org.argeo.slc.build.Distribution;
import org.argeo.slc.build.License;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
import org.osgi.framework.Version;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
import org.springframework.beans.factory.BeanNameAware;
-import aQute.lib.osgi.Builder;
-import aQute.lib.osgi.Constants;
-import aQute.lib.osgi.Jar;
+import aQute.bnd.osgi.Builder;
+import aQute.bnd.osgi.Constants;
+import aQute.bnd.osgi.Jar;
/** Utilities around the BND library, which manipulates OSGi metadata. */
-public class BndWrapper implements Constants, CategorizedNameVersion,
- Distribution, BeanNameAware {
+public class BndWrapper implements Constants, CategoryNameVersion, Distribution, BeanNameAware {
private final static Log log = LogFactory.getLog(BndWrapper.class);
private String groupId;
try {
byte[] jarBytes = IOUtils.toByteArray(in);
- jar = new Jar(null, new ByteArrayInputStream(jarBytes));
+ jar = new Jar(name, new ByteArrayInputStream(jarBytes));
Manifest sourceManifest = jar.getManifest();
Version versionToUse;
if (sourceManifest != null) {
// Symbolic name
- String sourceSymbolicName = sourceManifest.getMainAttributes()
- .getValue(BUNDLE_SYMBOLICNAME);
- if (sourceSymbolicName != null
- && !sourceSymbolicName.equals(name))
- log.info("The new symbolic name ("
- + name
- + ") is not consistant with the wrapped bundle symbolic name ("
- + sourceSymbolicName + ")");
+ String sourceSymbolicName = sourceManifest.getMainAttributes().getValue(BUNDLE_SYMBOLICNAME);
+ if (sourceSymbolicName != null && !sourceSymbolicName.equals(name))
+ log.info("The new symbolic name (" + name
+ + ") is not consistant with the wrapped bundle symbolic name (" + sourceSymbolicName + ")");
// Version
- String sourceVersion = sourceManifest.getMainAttributes()
- .getValue(BUNDLE_VERSION);
+ String sourceVersion = sourceManifest.getMainAttributes().getValue(BUNDLE_VERSION);
if (getVersion() == null && sourceVersion == null) {
throw new SlcException("A bundle version must be defined.");
} else if (getVersion() == null && sourceVersion != null) {
} else {// both set
versionToUse = new Version(getVersion());
Version sv = new Version(sourceVersion);
- if (versionToUse.getMajor() != sv.getMajor()
- || versionToUse.getMinor() != sv.getMinor()
+ if (versionToUse.getMajor() != sv.getMajor() || versionToUse.getMinor() != sv.getMinor()
|| versionToUse.getMicro() != sv.getMicro()) {
- log.warn("The new version ("
- + versionToUse
- + ") is not consistant with the wrapped bundle version ("
- + sv + ")");
+ log.warn("The new version (" + versionToUse
+ + ") is not consistant with the wrapped bundle version (" + sv + ")");
}
}
} else {
if (license != null) {
StringBuilder sb = new StringBuilder(license.getUri());
if (license.getName() != null)
- sb.append(';').append("description=")
- .append(license.getName());
+ sb.append(';').append("description=").append(license.getName());
if (license.getLink() != null)
- sb.append(';').append("link=")
- .append(license.getLink());
+ sb.append(';').append("link=").append(license.getLink());
properties.setProperty(BUNDLE_LICENSE, sb.toString());
// TODO add LICENSE.TXT
} else {
} catch (Exception e) {
throw new SlcException("Cannot wrap jar", e);
} finally {
- b.close();
- if (jar != null)
- jar.close();
+ try {
+ b.close();
+ if (jar != null)
+ jar.close();
+ } catch (Exception e) {
+ // silent
+ }
}
}
public void setVersion(String version) {
if (this.version != null)
- throw new SlcException("Version already set on " + name + " ("
- + this.version + ")");
+ throw new SlcException("Version already set on " + name + " (" + this.version + ")");
this.version = version;
}
if (this.name == null) {
this.name = name;
} else {
- log.warn("Using explicitely set name " + this.name
- + " and not bean name " + name);
+ if (!name.contains("#"))
+ log.warn("Using explicitely set name " + this.name + " and not bean name " + name);
}
}
}
public String getDistributionId() {
- return getArtifact().toString();
+ return getCategory() + ":" + getName() + ":" + getVersion();
}
public Artifact getArtifact() {
@Override
public String toString() {
- return getArtifact().toString();
+ return getDistributionId();
}
@Override
public int hashCode() {
- return getArtifact().hashCode();
+ if (name != null)
+ return name.hashCode();
+ return super.hashCode();
}
@Override
public boolean equals(Object obj) {
- if (obj instanceof CategorizedNameVersion) {
- CategorizedNameVersion cnv = (CategorizedNameVersion) obj;
- return getCategory().equals(cnv.getCategory())
- && getName().equals(cnv.getName())
+ if (obj instanceof CategoryNameVersion) {
+ CategoryNameVersion cnv = (CategoryNameVersion) obj;
+ return getCategory().equals(cnv.getCategory()) && getName().equals(cnv.getName())
&& getVersion().equals(cnv.getVersion());
} else
return false;
this.doNotModify = doNotModify;
}
+ public Boolean getDoNotModify() {
+ return doNotModify;
+ }
+
}