From cb285cbfddfc0b633d6b8cdb4dc0d2bd2b8b51ef Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 05 Jan 2012 17:34:05 -0500
Subject: [PATCH] Fixed bug in receive hook for repositories in subfolders

---
 src/com/gitblit/Launcher.java |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/com/gitblit/Launcher.java b/src/com/gitblit/Launcher.java
index 7865f24..a43331b 100644
--- a/src/com/gitblit/Launcher.java
+++ b/src/com/gitblit/Launcher.java
@@ -25,14 +25,20 @@
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 import com.gitblit.build.Build;
 
 /**
- * Launch helper class that adds all jars found in the local "lib" folder and
- * then calls the application main. Using this technique we do not have to
- * specify a classpath and we can dynamically add jars to the distribution.
+ * Launch helper class that adds all jars found in the local "lib" & "ext"
+ * folders and then calls the application main. Using this technique we do not
+ * have to specify a classpath and we can dynamically add jars to the
+ * distribution.
+ * 
+ * This class also downloads all runtime dependencies, if they are not found.
+ * 
+ * @author James Moger
  * 
  */
 public class Launcher {
@@ -52,6 +58,7 @@
 					+ protectionDomain.getCodeSource().getLocation().toExternalForm());
 		}
 
+		// download all runtime dependencies
 		Build.runtime();
 
 		// Load the JARs in the lib and ext folder
@@ -68,16 +75,23 @@
 			List<File> found = findJars(libFolder.getAbsoluteFile());
 			jars.addAll(found);
 		}
+		// sort the jars by name and then reverse the order so the newer version
+		// of the library gets loaded in the event that this is an upgrade
+		Collections.sort(jars);
+		Collections.reverse(jars);
 
 		if (jars.size() == 0) {
 			for (String folder : folders) {
 				File libFolder = new File(folder);
-				System.err.println("Failed to find any JARs in " + libFolder.getPath());
+				// this is a test of adding a comment
+				// more really interesting things
+				System.err.println("Failed to find any really cool JARs in " + libFolder.getPath());
 			}
 			System.exit(-1);
 		} else {
 			for (File jar : jars) {
 				try {
+					jar.canRead();
 					addJarFile(jar);
 				} catch (Throwable t) {
 					t.printStackTrace();
@@ -107,6 +121,7 @@
 				}
 			}
 		}
+
 		return jars;
 	}
 

--
Gitblit v1.9.1