From 790c3829edafcb41d6eeb14301a23db22c559e96 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 01 Jul 2011 17:45:23 -0400 Subject: [PATCH] Documentation. Added upgrade info to site. Moved todos to GoogleCode. --- src/com/gitblit/Launcher.java | 73 ++++++++++++++++++++++++------------ 1 files changed, 48 insertions(+), 25 deletions(-) diff --git a/src/com/gitblit/Launcher.java b/src/com/gitblit/Launcher.java index a55056d..7865f24 100644 --- a/src/com/gitblit/Launcher.java +++ b/src/com/gitblit/Launcher.java @@ -1,3 +1,18 @@ +/* + * Copyright 2011 gitblit.com. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.gitblit; import java.io.File; @@ -7,9 +22,12 @@ import java.net.URL; import java.net.URLClassLoader; import java.security.ProtectionDomain; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.List; + +import com.gitblit.build.Build; /** * Launch helper class that adds all jars found in the local "lib" folder and @@ -19,16 +37,20 @@ */ public class Launcher { - public final static boolean debug = false; + public static final boolean DEBUG = false; + + /** + * Parameters of the method to add an URL to the System classes. + */ + private static final Class<?>[] PARAMETERS = new Class[] { URL.class }; public static void main(String[] args) { - if (debug) + if (DEBUG) { System.out.println("jcp=" + System.getProperty("java.class.path")); - - ProtectionDomain protectionDomain = Launcher.class.getProtectionDomain(); - final String launchJar = protectionDomain.getCodeSource().getLocation().toExternalForm(); - if (debug) - System.out.println("launcher=" + launchJar); + ProtectionDomain protectionDomain = Launcher.class.getProtectionDomain(); + System.out.println("launcher=" + + protectionDomain.getCodeSource().getLocation().toExternalForm()); + } Build.runtime(); @@ -36,16 +58,15 @@ String[] folders = new String[] { "lib", "ext" }; List<File> jars = new ArrayList<File>(); for (String folder : folders) { - if (folder == null) + if (folder == null) { continue; - File libFolder = new File(folder); - if (!libFolder.exists()) - continue; - try { - libFolder = libFolder.getCanonicalFile(); - } catch (IOException iox) { } - jars.addAll(findJars(libFolder)); + File libFolder = new File(folder); + if (!libFolder.exists()) { + continue; + } + List<File> found = findJars(libFolder.getAbsoluteFile()); + jars.addAll(found); } if (jars.size() == 0) { @@ -79,19 +100,15 @@ }); if (libs != null && libs.length > 0) { jars.addAll(Arrays.asList(libs)); - if (debug) { - for (File jar : jars) + if (DEBUG) { + for (File jar : jars) { System.out.println("found " + jar); + } } } } return jars; } - - /** - * Parameters of the method to add an URL to the System classes. - */ - private static final Class<?>[] parameters = new Class[] { URL.class }; /** * Adds a file to the classpath @@ -101,17 +118,23 @@ * @throws IOException */ public static void addJarFile(File f) throws IOException { + if (f.getName().indexOf("-sources") > -1 || f.getName().indexOf("-javadoc") > -1) { + // don't add source or javadoc jars to runtime classpath + return; + } URL u = f.toURI().toURL(); - if (debug) + if (DEBUG) { System.out.println("load=" + u.toExternalForm()); + } URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Class<?> sysclass = URLClassLoader.class; try { - Method method = sysclass.getDeclaredMethod("addURL", parameters); + Method method = sysclass.getDeclaredMethod("addURL", PARAMETERS); method.setAccessible(true); method.invoke(sysloader, new Object[] { u }); } catch (Throwable t) { - throw new IOException("Error, could not add " + f.getPath() + " to system classloader", t); + throw new IOException(MessageFormat.format( + "Error, could not add {0} to system classloader", f.getPath()), t); } } } -- Gitblit v1.9.1