From f1720ca884bc3fa9da1288ad955e46f165aa4168 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 01 Jun 2011 08:09:46 -0400
Subject: [PATCH] Unit testing. Disable links on first commit. Initial stats page.

---
 src/com/gitblit/FileSettings.java |   51 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 42 insertions(+), 9 deletions(-)

diff --git a/src/com/gitblit/FileSettings.java b/src/com/gitblit/FileSettings.java
index 371b734..01176c0 100644
--- a/src/com/gitblit/FileSettings.java
+++ b/src/com/gitblit/FileSettings.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;
@@ -6,6 +21,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
+import java.util.regex.PatternSyntaxException;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -16,11 +32,17 @@
  */
 public class FileSettings implements IStoredSettings {
 
+	private final Logger logger = LoggerFactory.getLogger(FileSettings.class);
+
+	private final File propertiesFile;
+
 	private Properties properties = new Properties();
 
-	private long lastread = 0;
+	private long lastread;
 
-	private final Logger logger = LoggerFactory.getLogger(FileSettings.class);
+	public FileSettings(String file) {
+		this.propertiesFile = new File(file);
+	}
 
 	@Override
 	public List<String> getAllKeys(String startingWith) {
@@ -116,28 +138,39 @@
 					strings.add(chunk);
 				}
 			}
-		} catch (Exception e) {
+		} catch (PatternSyntaxException e) {
+			logger.error("Failed to parse " + value, e);
 		}
 		return strings;
 	}
 
 	private synchronized Properties read() {
-		File file = new File(Constants.PROPERTIES_FILE);
-		if (file.exists() && (file.lastModified() > lastread)) {
+		if (propertiesFile.exists() && (propertiesFile.lastModified() > lastread)) {
+			FileInputStream is = null;
 			try {
 				properties = new Properties();
-				properties.load(new FileInputStream(Constants.PROPERTIES_FILE));
-				lastread = file.lastModified();
+				is = new FileInputStream(propertiesFile);
+				properties.load(is);
+				lastread = propertiesFile.lastModified();
 			} catch (FileNotFoundException f) {
+				// IGNORE - won't happen because file.exists() check above
 			} catch (Throwable t) {
 				t.printStackTrace();
+			} finally {
+				if (is != null) {
+					try {
+						is.close();
+					} catch (Throwable t) {
+						// IGNORE
+					}
+				}
 			}
 		}
 		return properties;
 	}
-	
+
 	@Override
 	public String toString() {
-		return getClass().getSimpleName() + ": " + new File(Constants.PROPERTIES_FILE).getAbsolutePath();
+		return propertiesFile.getAbsolutePath();
 	}
 }

--
Gitblit v1.9.1