aboutsummaryrefslogtreecommitdiffstats
path: root/ajde
diff options
context:
space:
mode:
authorwisberg <wisberg>2003-04-30 02:31:37 +0000
committerwisberg <wisberg>2003-04-30 02:31:37 +0000
commitb6d1b910e99b706e4e954e897b92ea014dec5e8d (patch)
tree4045a2cedc2ba6adf464258f221771b5928dfdcc /ajde
parentbc69606c36cc12f4fcf35e4b8bcb0302ce97d833 (diff)
downloadaspectj-b6d1b910e99b706e4e954e897b92ea014dec5e8d.tar.gz
aspectj-b6d1b910e99b706e4e954e897b92ea014dec5e8d.zip
- making default filename static (access by tests)
- closing streams to permit better test cleanup
Diffstat (limited to 'ajde')
-rw-r--r--ajde/src/org/aspectj/ajde/ui/internal/UserPreferencesStore.java61
1 files changed, 49 insertions, 12 deletions
diff --git a/ajde/src/org/aspectj/ajde/ui/internal/UserPreferencesStore.java b/ajde/src/org/aspectj/ajde/ui/internal/UserPreferencesStore.java
index c5c001a0b..722e18577 100644
--- a/ajde/src/org/aspectj/ajde/ui/internal/UserPreferencesStore.java
+++ b/ajde/src/org/aspectj/ajde/ui/internal/UserPreferencesStore.java
@@ -27,6 +27,7 @@ import java.util.StringTokenizer;
import org.aspectj.ajde.Ajde;
import org.aspectj.ajde.ui.UserPreferencesAdapter;
+import org.aspectj.util.LangUtil;
public class UserPreferencesStore implements UserPreferencesAdapter {
public static final String FILE_NAME = "/.ajbrowser";
@@ -34,14 +35,14 @@ public class UserPreferencesStore implements UserPreferencesAdapter {
private Properties properties = new Properties();
public UserPreferencesStore() {
- try {
- if (new File(getPropertiesFilePath()).exists()) {
- properties.load(new FileInputStream(getPropertiesFilePath()));
- }
- } catch (IOException ioe) {
- Ajde.getDefault().getErrorHandler().handleError("Could not read properties", ioe);
- }
+ this(true);
}
+
+ public UserPreferencesStore(boolean loadDefault) {
+ if (loadDefault) {
+ loadProperties(getPropertiesFilePath());
+ }
+ }
public String getProjectPreference(String name) {
return properties.getProperty(name);
@@ -60,7 +61,7 @@ public class UserPreferencesStore implements UserPreferencesAdapter {
}
public void setProjectPreference(String name, String value) {
- properties.setProperty(name, value);
+ properties.setProperty(name, value);
saveProperties();
}
@@ -73,7 +74,7 @@ public class UserPreferencesStore implements UserPreferencesAdapter {
saveProperties();
}
- public String getPropertiesFilePath() {
+ public static String getPropertiesFilePath() {
String path = System.getProperty("user.home");
if (path == null) {
path = ".";
@@ -96,12 +97,48 @@ public class UserPreferencesStore implements UserPreferencesAdapter {
public void setGlobalMultivalPreference(String name, List values) {
setProjectMultivalPreference(name, values);
}
-
+ private void loadProperties(String path) {
+ if (LangUtil.isEmpty(path)) {
+ return;
+ }
+ File file = new File(path);
+ if (!file.canRead()) {
+ return;
+ }
+ FileInputStream in = null;
+ try {
+ path = getPropertiesFilePath();
+ in = new FileInputStream(file);
+ properties.load(in);
+ } catch (IOException ioe) {
+ Ajde.getDefault().getErrorHandler().handleError("Error reading properties from " + path, ioe);
+ } finally {
+ if (null != in) {
+ try {
+ in.close();
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+ }
+ }
public void saveProperties() {
+ FileOutputStream out = null;
+ String path = null;
try {
- properties.store(new FileOutputStream(getPropertiesFilePath()), "AJDE Settings");
+ path = getPropertiesFilePath();
+ out = new FileOutputStream(path);
+ properties.store(out, "AJDE Settings");
} catch (IOException ioe) {
- Ajde.getDefault().getErrorHandler().handleError("Could not write properties", ioe);
+ Ajde.getDefault().getErrorHandler().handleError("Error writing properties to " + path, ioe);
+ } finally {
+ if (null != out) {
+ try {
+ out.close();
+ } catch (IOException e) {
+ // ignore
+ }
+ }
}
}
}