import java.util.jar.Manifest;
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.api.cms.CmsLog;
+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.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 {
- private final static Log log = LogFactory.getLog(BndWrapper.class);
+public class BndWrapper implements Constants, CategoryNameVersion, Distribution {
+ private final static CmsLog log = CmsLog.getLog(BndWrapper.class);
private String groupId;
private String name;
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 {
// License
if (license != null) {
- StringBuilder sb = new StringBuilder(license.getUri());
- if (license.getName() != null)
- sb.append(';').append("description=")
- .append(license.getName());
- if (license.getLink() != null)
- sb.append(';').append("link=")
- .append(license.getLink());
- properties.setProperty(BUNDLE_LICENSE, sb.toString());
+ properties.setProperty(BUNDLE_LICENSE, license.toString());
// TODO add LICENSE.TXT
} else {
log.warn("No license set for " + toString());
} 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;
}
this.bndProperties = bndProperties;
}
- public void setBeanName(String name) {
- if (this.name == null) {
- this.name = name;
- } else {
- if (!name.contains("#"))
- log.warn("Using explicitely set name " + this.name
- + " and not bean name " + name);
- }
- }
-
public String getGroupId() {
return groupId;
}
}
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;
+ }
+
}