You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2010/02/22 15:39:34 UTC
svn commit: r912586 -
/geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java
Author: gawor
Date: Mon Feb 22 14:39:34 2010
New Revision: 912586
URL: http://svn.apache.org/viewvc?rev=912586&view=rev
Log:
re-implement JarUtils.jarDirectory() so that it does not try to include the jar file it is creating in the jar file
Modified:
geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java
Modified: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java?rev=912586&r1=912585&r2=912586&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java Mon Feb 22 14:39:34 2010
@@ -249,15 +249,51 @@
}
}
- public static void jarDirectory(File sourceDirecotry, File destinationFile) throws IOException {
- JarFile inputJar = new UnpackedJarFile(sourceDirecotry);
+ public static void jarDirectory(File sourceDirectory, File destinationFile) throws IOException {
+ JarOutputStream out = null;
try {
- copyToPackedJar(inputJar, destinationFile);
+ out = new JarOutputStream(new FileOutputStream(destinationFile));
+ jarDirectory(sourceDirectory, "", destinationFile, out);
} finally {
- close(inputJar);
+ IOUtils.close(out);
}
}
+ private static void jarDirectory(File baseDirectory,
+ String baseName,
+ File destinationFile,
+ JarOutputStream out) throws IOException {
+ File[] files = baseDirectory.listFiles();
+ if (null == files) {
+ return;
+ }
+ byte[] buffer = new byte[4096];
+ for (File file : files) {
+ // make sure not to include the file we're creating
+ if (file.equals(destinationFile)) {
+ continue;
+ }
+ String name = baseName + file.getName();
+ if (file.isDirectory()) {
+ out.putNextEntry(new ZipEntry(name));
+ out.closeEntry();
+ jarDirectory(file, name + "/", destinationFile, out);
+ } else if (file.isFile()) {
+ out.putNextEntry(new ZipEntry(name));
+ InputStream in = new FileInputStream(file);
+ try {
+ int count;
+ while ((count = in.read(buffer)) > 0) {
+ out.write(buffer, 0, count);
+ }
+ } finally {
+ IOUtils.close(in);
+ out.closeEntry();
+ }
+ }
+ }
+ }
+
private static void createDirectory(File dir) throws IOException {
if (dir != null && !dir.exists()) {
boolean success = dir.mkdirs();