James Moger
2013-01-29 01e0b59d5d5c8933eef21e0842c1439084b3f936
Merge pull request #70
2 files added
6 files modified
156 ■■■■ changed files
src/com/gitblit/GitBlit.java 21 ●●●●● patch | view | raw | blame | history
src/com/gitblit/GitBlitServer.java 32 ●●●●● patch | view | raw | blame | history
tests/de/akquinet/devops/GitBlit4UITests.java 25 ●●●●● patch | view | raw | blame | history
tests/de/akquinet/devops/GitBlitServer4UITests.java 62 ●●●●● patch | view | raw | blame | history
tests/de/akquinet/devops/GitblitRunnable.java 2 ●●● patch | view | raw | blame | history
tests/de/akquinet/devops/test/ui/TestUISuite.java 2 ●●● patch | view | raw | blame | history
tests/de/akquinet/devops/test/ui/cases/UI_MultiAdminSupportTest.java 2 ●●● patch | view | raw | blame | history
tests/de/akquinet/devops/test/ui/view/RepoEditView.java 10 ●●●● patch | view | raw | blame | history
src/com/gitblit/GitBlit.java
@@ -3096,8 +3096,8 @@
        }
        
        // schedule lucene engine
        logger.info("Lucene executor is scheduled to process indexed branches every 2 minutes.");
        scheduledExecutor.scheduleAtFixedRate(luceneExecutor, 1, 2, TimeUnit.MINUTES);
        enableLuceneIndexing();
        
        // schedule gc engine
        if (gcExecutor.isReady()) {
@@ -3178,6 +3178,23 @@
        }
    }
    
    protected void enableLuceneIndexing() {
        scheduledExecutor.scheduleAtFixedRate(luceneExecutor, 1, 2,  TimeUnit.MINUTES);
        logger.info("Lucene executor is scheduled to process indexed branches every 2 minutes.");
    }
    protected final Logger getLogger() {
        return logger;
    }
    protected final ScheduledExecutorService getScheduledExecutor() {
        return scheduledExecutor;
    }
    protected final LuceneExecutor getLuceneExecutor() {
        return luceneExecutor;
    }
    private void logTimezone(String type, TimeZone zone) {
        SimpleDateFormat df = new SimpleDateFormat("z Z");
        df.setTimeZone(zone);
src/com/gitblit/GitBlitServer.java
@@ -84,6 +84,8 @@
    private static Logger logger;
    public static void main(String... args) {
        GitBlitServer server = new GitBlitServer();
        // filter out the baseFolder parameter
        List<String> filtered = new ArrayList<String>();
        String folder = "data";
@@ -108,16 +110,16 @@
        try {
            jc.parse(filtered.toArray(new String[filtered.size()]));
            if (params.help) {
                usage(jc, null);
                server.usage(jc, null);
            }
        } catch (ParameterException t) {
            usage(jc, t);
            server.usage(jc, t);
        }
        if (params.stop) {
            stop(params);
            server.stop(params);
        } else {
            start(params);
            server.start(params);
        }
    }
@@ -127,7 +129,7 @@
     * @param jc
     * @param t
     */
    private static void usage(JCommander jc, ParameterException t) {
    protected final void usage(JCommander jc, ParameterException t) {
        System.out.println(Constants.BORDER);
        System.out.println(Constants.getGitBlitVersion());
        System.out.println(Constants.BORDER);
@@ -147,7 +149,7 @@
    /**
     * Stop Gitblt GO.
     */
    public static void stop(Params params) {
    public void stop(Params params) {
        try {
            Socket s = new Socket(InetAddress.getByName("127.0.0.1"), params.shutdownPort);
            OutputStream out = s.getOutputStream();
@@ -165,7 +167,7 @@
    /**
     * Start Gitblit GO.
     */
    private static void start(Params params) {
    protected final void start(Params params) {
        final File baseFolder = new File(Params.baseFolder).getAbsoluteFile();
        FileSettings settings = params.FILESETTINGS;
        if (!StringUtils.isEmpty(params.settingsfile)) {
@@ -378,7 +380,7 @@
        server.setHandler(rootContext);
        // Setup the GitBlit context
        GitBlit gitblit = GitBlit.self();
        GitBlit gitblit = getGitBlitInstance();
        gitblit.configureContext(settings, baseFolder, true);
        rootContext.addEventListener(gitblit);
@@ -397,6 +399,10 @@
            System.exit(100);
        }
    }
    protected GitBlit getGitBlitInstance() {
        return GitBlit.self();
    }
    /**
     * Creates an http connector.
@@ -405,7 +411,7 @@
     * @param port
     * @return an http connector
     */
    private static Connector createConnector(boolean useNIO, int port) {
    private Connector createConnector(boolean useNIO, int port) {
        Connector connector;
        if (useNIO) {
            logger.info("Setting up NIO SelectChannelConnector on port " + port);
@@ -440,7 +446,7 @@
     * @param requireClientCertificates
     * @return an https connector
     */
    private static Connector createSSLConnector(String certAlias, File keyStore, File clientTrustStore,
    private Connector createSSLConnector(String certAlias, File keyStore, File clientTrustStore,
            String storePassword, File caRevocationList, boolean useNIO, int port, 
            boolean requireClientCertificates) {
        GitblitSslContextFactory factory = new GitblitSslContextFactory(certAlias,
@@ -474,7 +480,7 @@
     * @param port
     * @return an ajp connector
     */
    private static Connector createAJPConnector(int port) {
    private Connector createAJPConnector(int port) {
        logger.info("Setting up AJP Connector on port " + port);
        Ajp13SocketConnector ajp = new Ajp13SocketConnector();
        ajp.setPort(port);
@@ -489,7 +495,7 @@
     * 
     * @return true if this is a windows machine
     */
    private static boolean isWindows() {
    private boolean isWindows() {
        return System.getProperty("os.name").toLowerCase().indexOf("windows") > -1;
    }
@@ -548,7 +554,7 @@
     * JCommander Parameters class for GitBlitServer.
     */
    @Parameters(separators = " ")
    private static class Params {
    public static class Params {
        public static String baseFolder;
tests/de/akquinet/devops/GitBlit4UITests.java
New file
@@ -0,0 +1,25 @@
package de.akquinet.devops;
import java.util.concurrent.TimeUnit;
import com.gitblit.GitBlit;
public class GitBlit4UITests extends GitBlit {
    private boolean luceneIndexingEnabled;
    public GitBlit4UITests(boolean luceneIndexingEnabled) {
        this.luceneIndexingEnabled = luceneIndexingEnabled;
    }
    @Override
    protected void enableLuceneIndexing() {
        if (luceneIndexingEnabled) {
            getScheduledExecutor().scheduleAtFixedRate(getLuceneExecutor(), 1,
                    2, TimeUnit.MINUTES);
            getLogger()
                    .info("Lucene executor is scheduled to process indexed branches every 2 minutes.");
        }
    }
}
tests/de/akquinet/devops/GitBlitServer4UITests.java
New file
@@ -0,0 +1,62 @@
package de.akquinet.devops;
import java.util.ArrayList;
import java.util.List;
import com.beust.jcommander.JCommander;
import com.beust.jcommander.ParameterException;
import com.gitblit.GitBlit;
import com.gitblit.GitBlitServer;
public class GitBlitServer4UITests extends GitBlitServer {
    public static void main(String... args) {
        GitBlitServer4UITests server = new GitBlitServer4UITests();
        // filter out the baseFolder parameter
        List<String> filtered = new ArrayList<String>();
        String folder = "data";
        for (int i = 0; i < args.length; i++) {
            String arg = args[i];
            if (arg.equals("--baseFolder")) {
                if (i + 1 == args.length) {
                    System.out.println("Invalid --baseFolder parameter!");
                    System.exit(-1);
                } else if (args[i + 1] != ".") {
                    folder = args[i + 1];
                }
                i = i + 1;
            } else {
                filtered.add(arg);
            }
        }
        Params.baseFolder = folder;
        Params params = new Params();
        JCommander jc = new JCommander(params);
        try {
            jc.parse(filtered.toArray(new String[filtered.size()]));
            if (params.help) {
                server.usage(jc, null);
            }
        } catch (ParameterException t) {
            server.usage(jc, t);
        }
        if (params.stop) {
            server.stop(params);
        } else {
            server.start(params);
        }
    }
    private GitBlit4UITests instance;
    @Override
    protected GitBlit getGitBlitInstance() {
        if (instance == null) {
            instance = new GitBlit4UITests(false);
        }
        return instance;
    }
}
tests/de/akquinet/devops/GitblitRunnable.java
@@ -70,7 +70,7 @@
        }
        try {
            GitBlitServer.main("--httpPort", "" + httpPort, "--httpsPort", ""
            GitBlitServer4UITests.main("--httpPort", "" + httpPort, "--httpsPort", ""
                    + httpsPort, "--shutdownPort", "" + shutdownPort,
                    "--repositoriesFolder",
                    "\"" + GitBlitSuite.REPOSITORIES.getAbsolutePath() + "\"",
tests/de/akquinet/devops/test/ui/TestUISuite.java
@@ -27,7 +27,7 @@
 *
 */
@RunWith(Suite.class)
@Suite.SuiteClasses({ UI_MultiAdminSupportTest.class })
@Suite.SuiteClasses({ UI_MultiAdminSupportTest.class, UI_MultiAdminSupportTest.class })
public class TestUISuite {
}
tests/de/akquinet/devops/test/ui/cases/UI_MultiAdminSupportTest.java
@@ -64,7 +64,7 @@
                .changeAuthorizationControl(RepoEditView.AUTHCONTROL_RWALL));
        // with a second admin
        editView.addRepoAdministrator("admin");
        editView.addOwner("admin");
        Assert.assertTrue(editView.save());
        // user is automatically forwarded to repo list view
        Assert.assertTrue(view.isEmptyRepo(TEST_MULTI_ADMIN_SUPPORT_REPO_PATH));
tests/de/akquinet/devops/test/ui/view/RepoEditView.java
@@ -68,7 +68,7 @@
        return false;
    }
    private void changeRepoAdministrators(String action,
    private void changeOwners(String action,
            String affectedSelection, String username) {
        String xpath = "//select[@name=\"" + affectedSelection
                + "\"]/option[@value = \"" + username + "\" ]";
@@ -79,13 +79,13 @@
        button.click();
    }
    public void removeRepoAdministrator(String username) {
        changeRepoAdministrators("remove", "repoAdministrators:selection",
    public void removeOwner(String username) {
        changeOwners("remove", "owners:selection",
                username);
    }
    public void addRepoAdministrator(String username) {
        changeRepoAdministrators("add", "repoAdministrators:choices", username);
    public void addOwner(String username) {
        changeOwners("add", "owners:choices", username);
    }
    public WebElement getAccessRestrictionSelection() {