]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.repo/src/org/argeo/slc/repo/osgi/BndWrapper.java
Rename CategoryNameVersion.
[gpl/argeo-slc.git] / org.argeo.slc.repo / src / org / argeo / slc / repo / osgi / BndWrapper.java
index 17bdbe11772ab1a71a40d82d8e533b3a36175bee..ab495d219dd4c8fb449da79ea61e44d652284bc9 100644 (file)
@@ -9,7 +9,7 @@ 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.slc.CategoryNameVersion;
 import org.argeo.slc.SlcException;
 import org.argeo.slc.build.Distribution;
 import org.argeo.slc.build.License;
@@ -18,13 +18,12 @@ 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 {
+public class BndWrapper implements Constants, CategoryNameVersion, Distribution, BeanNameAware {
        private final static Log log = LogFactory.getLog(BndWrapper.class);
 
        private String groupId;
@@ -44,24 +43,19 @@ public class BndWrapper implements Constants, CategorizedNameVersion,
                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) {
@@ -72,13 +66,10 @@ public class BndWrapper implements Constants, CategorizedNameVersion,
                                } 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 {
@@ -99,11 +90,9 @@ public class BndWrapper implements Constants, CategorizedNameVersion,
                                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 {
@@ -124,9 +113,13 @@ public class BndWrapper implements Constants, CategorizedNameVersion,
                } 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
+                       }
                }
 
        }
@@ -151,8 +144,7 @@ public class BndWrapper implements Constants, CategorizedNameVersion,
 
        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;
        }
 
@@ -183,8 +175,7 @@ public class BndWrapper implements Constants, CategorizedNameVersion,
                        this.name = name;
                } else {
                        if (!name.contains("#"))
-                               log.warn("Using explicitely set name " + this.name
-                                               + " and not bean name " + name);
+                               log.warn("Using explicitely set name " + this.name + " and not bean name " + name);
                }
        }
 
@@ -201,7 +192,7 @@ public class BndWrapper implements Constants, CategorizedNameVersion,
        }
 
        public String getDistributionId() {
-               return getArtifact().toString();
+               return getCategory() + ":" + getName() + ":" + getVersion();
        }
 
        public Artifact getArtifact() {
@@ -210,20 +201,21 @@ public class BndWrapper implements Constants, CategorizedNameVersion,
 
        @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;
@@ -233,4 +225,8 @@ public class BndWrapper implements Constants, CategorizedNameVersion,
                this.doNotModify = doNotModify;
        }
 
+       public Boolean getDoNotModify() {
+               return doNotModify;
+       }
+
 }