]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/RepoUtils.java
Add BSD License.
[gpl/argeo-slc.git] / runtime / org.argeo.slc.repo / src / main / java / org / argeo / slc / repo / RepoUtils.java
index b0e65bce51612e757daedc4265c343ad9b620f9e..4a175ac594ce641569e269bd37c6c201d753e5a3 100644 (file)
@@ -32,6 +32,7 @@ import java.util.jar.JarFile;
 import java.util.jar.JarInputStream;
 import java.util.jar.JarOutputStream;
 import java.util.jar.Manifest;
+import java.util.zip.ZipInputStream;
 
 import javax.jcr.Credentials;
 import javax.jcr.GuestCredentials;
@@ -199,16 +200,20 @@ public class RepoUtils implements ArgeoNames, SlcNames {
                        jarOut = new JarOutputStream(out, manifest);
                        JarEntry jarEntry = null;
                        while ((jarEntry = jarIn.getNextJarEntry()) != null) {
-                               jarOut.putNextEntry(jarEntry);
-                               IOUtils.copy(jarIn, jarOut);
-                               jarIn.closeEntry();
-                               jarOut.closeEntry();
+                               if (!jarEntry.getName().equals("META-INF/MANIFEST.MF")) {
+                                       JarEntry newJarEntry = new JarEntry(jarEntry.getName());
+                                       jarOut.putNextEntry(newJarEntry);
+                                       IOUtils.copy(jarIn, jarOut);
+                                       jarIn.closeEntry();
+                                       jarOut.closeEntry();
+                               }
                        }
                } catch (IOException e) {
                        throw new SlcException("Could not copy jar with MANIFEST "
                                        + manifest.getMainAttributes(), e);
                } finally {
-                       IOUtils.closeQuietly(jarIn);
+                       if (!(in instanceof ZipInputStream))
+                               IOUtils.closeQuietly(jarIn);
                        IOUtils.closeQuietly(jarOut);
                }
        }
@@ -311,6 +316,10 @@ public class RepoUtils implements ArgeoNames, SlcNames {
                                                        .getProperty(SLC_ARTIFACT_CLASSIFIER).getString(),
                                        node.getProperty(SLC_ARTIFACT_EXTENSION).getString(), node
                                                        .getProperty(SLC_ARTIFACT_VERSION).getString());
+               } else if (node.isNodeType(SlcTypes.SLC_MODULE_COORDINATES)) {
+                       return new DefaultArtifact(node.getProperty(SLC_CATEGORY)
+                                       .getString(), node.getProperty(SLC_NAME).getString(),
+                                       "jar", node.getProperty(SLC_VERSION).getString());
                } else {
                        throw new SlcException("Unsupported node type for " + node);
                }
@@ -483,7 +492,7 @@ public class RepoUtils implements ArgeoNames, SlcNames {
 
        /**
         * Write group indexes: 'binaries' lists all bundles and their versions,
-        * 'sources' list theire sources, and 'sdk' aggregates both.
+        * 'sources' list their sources, and 'sdk' aggregates both.
         */
        public static void writeGroupIndexes(Session session,
                        String artifactBasePath, String groupId, String version,