copy from src/com/gitblit/Launcher.java
copy to src/main/java/com/gitblit/authority/Launcher.java
File was copied from src/com/gitblit/Launcher.java |
| | |
| | | /*
|
| | | * Copyright 2011 gitblit.com.
|
| | | * Copyright 2012 gitblit.com.
|
| | | *
|
| | | * Licensed under the Apache License, Version 2.0 (the "License");
|
| | | * you may not use this file except in compliance with the License.
|
| | |
| | | * See the License for the specific language governing permissions and
|
| | | * limitations under the License.
|
| | | */
|
| | | package com.gitblit;
|
| | | package com.gitblit.authority;
|
| | |
|
| | | import java.awt.Color;
|
| | | import java.awt.EventQueue;
|
| | | import java.awt.FontMetrics;
|
| | | import java.awt.Graphics2D;
|
| | | import java.awt.SplashScreen;
|
| | | import java.io.File;
|
| | | import java.io.FileFilter;
|
| | | import java.io.IOException;
|
| | | import java.lang.reflect.Method;
|
| | | 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.Collections;
|
| | | import java.util.List;
|
| | |
|
| | | import com.gitblit.build.Build;
|
| | | import com.gitblit.Constants;
|
| | | import com.gitblit.client.Translation;
|
| | |
|
| | | /**
|
| | | * 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.
|
| | | * Downloads dependencies and launches Gitblit Authority.
|
| | | *
|
| | | * @author James Moger
|
| | | *
|
| | |
| | | */
|
| | | private static final Class<?>[] PARAMETERS = new Class[] { URL.class };
|
| | |
|
| | |
|
| | | public static void main(String[] args) {
|
| | | if (DEBUG) {
|
| | | System.out.println("jcp=" + System.getProperty("java.class.path"));
|
| | | ProtectionDomain protectionDomain = Launcher.class.getProtectionDomain();
|
| | | System.out.println("launcher="
|
| | | + protectionDomain.getCodeSource().getLocation().toExternalForm());
|
| | | }
|
| | |
|
| | | // download all runtime dependencies
|
| | | Build.runtime();
|
| | |
|
| | | // Load the JARs in the lib and ext folder
|
| | | String[] folders = new String[] { "lib", "ext" };
|
| | | List<File> jars = new ArrayList<File>();
|
| | | for (String folder : folders) {
|
| | | if (folder == null) {
|
| | | continue;
|
| | | }
|
| | | File libFolder = new File(folder);
|
| | | if (!libFolder.exists()) {
|
| | | continue;
|
| | | }
|
| | | List<File> found = findJars(libFolder.getAbsoluteFile());
|
| | | jars.addAll(found);
|
| | | }
|
| | | final SplashScreen splash = SplashScreen.getSplashScreen();
|
| | | |
| | | File libFolder = new File("ext");
|
| | | List<File> jars = findJars(libFolder.getAbsoluteFile());
|
| | | |
| | | // 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);
|
| | | for (File jar : jars) {
|
| | | try {
|
| | | updateSplash(splash, Translation.get("gb.loading") + " " + jar.getName() + "...");
|
| | | addJarFile(jar);
|
| | | } catch (IOException e) {
|
| | |
|
| | | if (jars.size() == 0) {
|
| | | for (String folder : folders) {
|
| | | File libFolder = new File(folder);
|
| | | // 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();
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | // Start Server
|
| | | GitBlitServer.main(args);
|
| | | |
| | | updateSplash(splash, Translation.get("gb.starting") + " Gitblit Authority...");
|
| | | GitblitAuthority.main(args);
|
| | | }
|
| | |
|
| | | private static void updateSplash(final SplashScreen splash, final String string) {
|
| | | if (splash == null) {
|
| | | return;
|
| | | }
|
| | | try {
|
| | | EventQueue.invokeAndWait(new Runnable() {
|
| | | public void run() {
|
| | | Graphics2D g = splash.createGraphics();
|
| | | if (g != null) {
|
| | | // Splash is 320x120
|
| | | FontMetrics fm = g.getFontMetrics();
|
| | | |
| | | // paint startup status
|
| | | g.setColor(Color.darkGray);
|
| | | int h = fm.getHeight() + fm.getMaxDescent();
|
| | | int x = 5;
|
| | | int y = 115;
|
| | | int w = 320 - 2 * x;
|
| | | g.fillRect(x, y - h, w, h);
|
| | | g.setColor(Color.lightGray);
|
| | | g.drawRect(x, y - h, w, h);
|
| | | g.setColor(Color.WHITE);
|
| | | int xw = fm.stringWidth(string);
|
| | | g.drawString(string, x + ((w - xw) / 2), y - 5);
|
| | | |
| | | // paint version
|
| | | String ver = "v" + Constants.getVersion();
|
| | | int vw = g.getFontMetrics().stringWidth(ver);
|
| | | g.drawString(ver, 320 - vw - 5, 34);
|
| | | g.dispose();
|
| | | splash.update();
|
| | | }
|
| | | }
|
| | | });
|
| | | } catch (Throwable t) {
|
| | | t.printStackTrace();
|
| | | }
|
| | | }
|
| | | |
| | | public static List<File> findJars(File folder) {
|
| | | List<File> jars = new ArrayList<File>();
|
| | | if (folder.exists()) {
|