import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
+import java.util.HashMap;
import java.util.Locale;
+import java.util.Map;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.TreeSet;
// in-memory only storage of proxy password, safer to use char array
public static char[] proxyAuthPassword = null;
+ /**
+ * Session properties, set by command line, try not to affect stored
+ * properties!
+ */
+ private static Map<String, String> sessionProperties = new HashMap<>();
+
+ private static boolean bypassSessionProperties = false;
+
+ public static void enableSessionProperties()
+ {
+ bypassSessionProperties = false;
+ }
+
+ public static void disableSessionProperties()
+ {
+ bypassSessionProperties = true;
+ }
+
/** Jalview Properties */
public static Properties applicationProperties = new Properties()
{
*/
public static String getProperty(String key)
{
- String prop = applicationProperties.getProperty(key);
+ return getProperty(key, false);
+ }
+
+ public static String getProperty(String key,
+ boolean skipSessionProperties)
+ {
+ String prop = null;
+ if (!(skipSessionProperties || bypassSessionProperties))
+ {
+ prop = getSessionProperty(key);
+ }
+ if (prop == null)
+ {
+ prop = applicationProperties.getProperty(key);
+ }
if (prop == null && Platform.isJS())
{
prop = applicationProperties.getProperty(Platform.getUniqueAppletID()
try
{
oldValue = applicationProperties.setProperty(key, obj);
- if (propertiesFile != null && !propsAreReadOnly)
+ if (propertiesFile != null && !propsAreReadOnly
+ // don't rewrite if new value is same as old value
+ && !((obj == null && oldValue == null)
+ || (obj != null && obj.equals(oldValue))))
{
+ // reset the session property too
+ if (sessionProperties.containsKey(key))
+ {
+ sessionProperties.remove(key);
+ }
FileOutputStream out = new FileOutputStream(propertiesFile);
applicationProperties.store(out, "---JalviewX Properties File---");
out.close();
}
return bootstrapProps;
}
+
+ public static void setSessionProperty(String key, String val)
+ {
+ if (key != null)
+ {
+ sessionProperties.put(key, val);
+ }
+ }
+
+ public static String getSessionProperty(String key)
+ {
+ return key == null ? null : sessionProperties.get(key);
+ }
}