* Implement new case insensitive mapping that uses an in-between key lookup
table and preserves capitalization of property keys.
This commit is contained in:
parent
4ee8b35d80
commit
d47a2de6ff
1 changed files with 41 additions and 5 deletions
|
@ -56,6 +56,8 @@ public class ResourceProperties extends Properties {
|
||||||
// Sorted map of resources
|
// Sorted map of resources
|
||||||
private Set resources;
|
private Set resources;
|
||||||
|
|
||||||
|
private Properties keyMap = new Properties();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs an empty ResourceProperties
|
* Constructs an empty ResourceProperties
|
||||||
* Resources must be added manually afterwards
|
* Resources must be added manually afterwards
|
||||||
|
@ -307,7 +309,13 @@ public class ResourceProperties extends Properties {
|
||||||
if ((System.currentTimeMillis() - lastCheck) > CACHE_TIME) {
|
if ((System.currentTimeMillis() - lastCheck) > CACHE_TIME) {
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
return (String) super.get(ignoreCase ? key.toString().toLowerCase() : key.toString());
|
String strkey = key.toString();
|
||||||
|
if (ignoreCase) {
|
||||||
|
strkey = keyMap.getProperty(strkey.toLowerCase());
|
||||||
|
if (strkey == null)
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return (String) super.get(key.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -364,7 +372,12 @@ public class ResourceProperties extends Properties {
|
||||||
if ((System.currentTimeMillis() - lastCheck) > CACHE_TIME) {
|
if ((System.currentTimeMillis() - lastCheck) > CACHE_TIME) {
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
return super.getProperty(ignoreCase ? key.toLowerCase() : key, defaultValue);
|
if (ignoreCase) {
|
||||||
|
key = keyMap.getProperty(key.toLowerCase());
|
||||||
|
if (key == null)
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
return super.getProperty(key, defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -376,7 +389,12 @@ public class ResourceProperties extends Properties {
|
||||||
if ((System.currentTimeMillis() - lastCheck) > CACHE_TIME) {
|
if ((System.currentTimeMillis() - lastCheck) > CACHE_TIME) {
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
return super.getProperty(ignoreCase ? key.toLowerCase() : key);
|
if (ignoreCase) {
|
||||||
|
key = keyMap.getProperty(key.toLowerCase());
|
||||||
|
if (key == null)
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return super.getProperty(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -430,7 +448,11 @@ public class ResourceProperties extends Properties {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
value = value.toString().trim();
|
value = value.toString().trim();
|
||||||
}
|
}
|
||||||
return super.put(ignoreCase ? key.toString().toLowerCase() : key.toString(), value);
|
String strkey = key.toString();
|
||||||
|
if (ignoreCase) {
|
||||||
|
keyMap.put(strkey.toLowerCase(), strkey);
|
||||||
|
}
|
||||||
|
return super.put(strkey, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -439,7 +461,13 @@ public class ResourceProperties extends Properties {
|
||||||
* @return the old value
|
* @return the old value
|
||||||
*/
|
*/
|
||||||
public Object remove(Object key) {
|
public Object remove(Object key) {
|
||||||
return super.remove(ignoreCase ? key.toString().toLowerCase() : key.toString());
|
String strkey = key.toString();
|
||||||
|
if (ignoreCase) {
|
||||||
|
strkey = (String) keyMap.remove(strkey.toLowerCase());
|
||||||
|
if (strkey == null)
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return super.remove(strkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -464,6 +492,14 @@ public class ResourceProperties extends Properties {
|
||||||
return super.size();
|
return super.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overwrite clear() to also empty the key map.
|
||||||
|
*/
|
||||||
|
public void clear() {
|
||||||
|
keyMap.clear();
|
||||||
|
super.clear();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a string-representation of the class
|
* Returns a string-representation of the class
|
||||||
* @return string
|
* @return string
|
||||||
|
|
Loading…
Add table
Reference in a new issue