From 0e44acbb2fec928a1606dc60f427a148fff405c9 Mon Sep 17 00:00:00 2001
From: Mohamed Ragab <moragab@gmail.com>
Date: Wed, 02 May 2012 11:15:01 -0400
Subject: [PATCH] Added a script to facilitate setting the proxy host and port and no proxy hosts, and then it concatenates all the java system properties for setting the java proxy configurations and puts the resulting string in an environment variable JAVA_PROXY_CONFIG, modified the scirpts gitblit, gitblit-ubuntu, and gitblit-centos to source the java-proxy-config.sh script and then include the resulting java proxy configuration in the java command
---
src/com/gitblit/client/GitblitManager.java | 112 +++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 91 insertions(+), 21 deletions(-)
diff --git a/src/com/gitblit/client/GitblitManager.java b/src/com/gitblit/client/GitblitManager.java
index a337040..dd0315f 100644
--- a/src/com/gitblit/client/GitblitManager.java
+++ b/src/com/gitblit/client/GitblitManager.java
@@ -25,16 +25,19 @@
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
+import java.io.BufferedReader;
import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
import java.io.IOException;
import java.net.ConnectException;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
@@ -57,11 +60,12 @@
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.storage.file.FileBasedConfig;
-import org.eclipse.jgit.util.Base64;
import org.eclipse.jgit.util.FS;
import com.gitblit.Constants;
import com.gitblit.GitBlitException.ForbiddenException;
+import com.gitblit.models.FeedModel;
+import com.gitblit.utils.Base64;
import com.gitblit.utils.StringUtils;
/**
@@ -73,6 +77,8 @@
public class GitblitManager extends JFrame implements RegistrationsDialog.RegistrationListener {
private static final long serialVersionUID = 1L;
+ private static final String SERVER = "server";
+ private static final String FEED = "feed";
private final SimpleDateFormat dateFormat;
private JTabbedPane serverTabs;
private File configFile = new File(System.getProperty("user.home"), ".gitblit/config");
@@ -199,11 +205,16 @@
EditRegistrationDialog dialog = new EditRegistrationDialog(this, reg, true);
dialog.setLocationRelativeTo(GitblitManager.this);
dialog.setVisible(true);
- reg = dialog.getRegistration();
- if (reg == null) {
+ GitblitRegistration newReg = dialog.getRegistration();
+ if (newReg == null) {
// user canceled
return;
}
+ // preserve feeds
+ newReg.feeds.addAll(reg.feeds);
+
+ // use new reg
+ reg = newReg;
}
// login
@@ -287,28 +298,39 @@
private void loadRegistrations() {
try {
StoredConfig config = getConfig();
- Set<String> servers = config.getSubsections("servers");
+ Set<String> servers = config.getSubsections(SERVER);
for (String server : servers) {
Date lastLogin = new Date(0);
- String date = config.getString("servers", server, "lastLogin");
+ String date = config.getString(SERVER, server, "lastLogin");
if (!StringUtils.isEmpty(date)) {
lastLogin = dateFormat.parse(date);
}
- String url = config.getString("servers", server, "url");
- String account = config.getString("servers", server, "account");
+ String url = config.getString(SERVER, server, "url");
+ String account = config.getString(SERVER, server, "account");
char[] password;
- String pw = config.getString("servers", server, "password");
+ String pw = config.getString(SERVER, server, "password");
if (StringUtils.isEmpty(pw)) {
password = new char[0];
} else {
password = new String(Base64.decode(pw)).toCharArray();
}
- GitblitRegistration reg = new GitblitRegistration(server, url, account, password);
- String[] feeds = config.getStringList("servers", server, "feeds");
+ GitblitRegistration reg = new GitblitRegistration(server, url, account, password) {
+ private static final long serialVersionUID = 1L;
+
+ protected void cacheFeeds() {
+ writeFeedCache(this);
+ }
+ };
+ String[] feeds = config.getStringList(SERVER, server, FEED);
if (feeds != null) {
- reg.feeds = new ArrayList<String>(Arrays.asList(feeds));
+ // deserialize the field definitions
+ for (String definition : feeds) {
+ FeedModel feed = new FeedModel(definition);
+ reg.feeds.add(feed);
+ }
}
reg.lastLogin = lastLogin;
+ loadFeedCache(reg);
registrations.put(reg.name, reg);
}
} catch (Throwable t) {
@@ -323,23 +345,28 @@
if (!StringUtils.isEmpty(name) && !name.equals(reg.name)) {
// delete old registration
registrations.remove(name);
- config.unsetSection("servers", name);
+ config.unsetSection(SERVER, name);
}
// update registration
- config.setString("servers", reg.name, "url", reg.url);
- config.setString("servers", reg.name, "account", reg.account);
+ config.setString(SERVER, reg.name, "url", reg.url);
+ config.setString(SERVER, reg.name, "account", reg.account);
if (reg.savePassword) {
- config.setString("servers", reg.name, "password",
+ config.setString(SERVER, reg.name, "password",
Base64.encodeBytes(new String(reg.password).getBytes("UTF-8")));
} else {
- config.setString("servers", reg.name, "password", "");
+ config.setString(SERVER, reg.name, "password", "");
}
if (reg.lastLogin != null) {
- config.setString("servers", reg.name, "lastLogin", dateFormat.format(reg.lastLogin));
+ config.setString(SERVER, reg.name, "lastLogin", dateFormat.format(reg.lastLogin));
}
- if (reg.feeds != null) {
- config.setStringList("servers", reg.name, "feeds", reg.feeds);
+ // serialize the feed definitions
+ List<String> definitions = new ArrayList<String>();
+ for (FeedModel feed : reg.feeds) {
+ definitions.add(feed.toString());
+ }
+ if (definitions.size() > 0) {
+ config.setStringList(SERVER, reg.name, FEED, definitions);
}
config.save();
return true;
@@ -355,7 +382,7 @@
try {
StoredConfig config = getConfig();
for (GitblitRegistration reg : list) {
- config.unsetSection("servers", reg.name);
+ config.unsetSection(SERVER, reg.name);
registrations.remove(reg.name);
}
config.save();
@@ -372,6 +399,49 @@
return config;
}
+ private void loadFeedCache(GitblitRegistration reg) {
+ File feedCache = new File(configFile.getParentFile(), StringUtils.getSHA1(reg.toString())
+ + ".cache");
+ if (!feedCache.exists()) {
+ // no cache for this registration
+ return;
+ }
+ try {
+ BufferedReader reader = new BufferedReader(new FileReader(feedCache));
+ Map<String, Date> cache = new HashMap<String, Date>();
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+ String line = null;
+ while ((line = reader.readLine()) != null) {
+ String[] kvp = line.split("=");
+ cache.put(kvp[0], df.parse(kvp[1]));
+ }
+ reader.close();
+ for (FeedModel feed : reg.feeds) {
+ String name = feed.toString();
+ if (cache.containsKey(name)) {
+ feed.currentRefreshDate = cache.get(name);
+ }
+ }
+ } catch (Exception e) {
+ Utils.showException(GitblitManager.this, e);
+ }
+ }
+
+ private void writeFeedCache(GitblitRegistration reg) {
+ try {
+ File feedCache = new File(configFile.getParentFile(), StringUtils.getSHA1(reg
+ .toString()) + ".cache");
+ FileWriter writer = new FileWriter(feedCache);
+ for (FeedModel feed : reg.feeds) {
+ writer.append(MessageFormat.format("{0}={1,date,yyyy-MM-dd'T'HH:mm:ss}\n",
+ feed.toString(), feed.currentRefreshDate));
+ }
+ writer.close();
+ } catch (Exception e) {
+ Utils.showException(GitblitManager.this, e);
+ }
+ }
+
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
--
Gitblit v1.9.1