Revert "Use SimpleEntry in StorageMap." This reverts commit fc3088d7b42e123df81de2879f8a6c7d0a2ba12e. Breaks build. See: http://build.gwtproject.org/job/gwt/168/testReport/com.google.gwt.storage.client/LocalStorageMapTest/ Change-Id: I668d8643eb700690c31907f72aae0c1172bc26f9
diff --git a/user/src/com/google/gwt/storage/client/StorageMap.java b/user/src/com/google/gwt/storage/client/StorageMap.java index 37bce37..3c3ccac 100644 --- a/user/src/com/google/gwt/storage/client/StorageMap.java +++ b/user/src/com/google/gwt/storage/client/StorageMap.java
@@ -58,19 +58,48 @@ /* * Represents a Map.Entry to a Storage item */ - private class StorageEntry extends SimpleEntry<String, String> { + private class StorageEntry implements Map.Entry<String, String> { + private final String key; + public StorageEntry(String key) { - super(key, null); + this.key = key; } @Override + @SuppressWarnings("rawtypes") + public boolean equals(Object obj) { + if (obj == null) { + return false; + } else if (obj == this) { + return true; + } else if (!(obj instanceof Map.Entry)) { + return false; + } + + Map.Entry e = (Map.Entry) obj; + + return eq(key, e.getKey()) && eq(getValue(), e.getValue()); + } + + public String getKey() { + return key; + } + public String getValue() { - return get(getKey()); + return storage.getItem(key); } @Override + public int hashCode() { + String value = getValue(); + return (key == null ? 0 : key.hashCode()) + ^ (value == null ? 0 : value.hashCode()); + } + public String setValue(String value) { - return put(getKey(), value); + String oldValue = storage.getItem(key); + storage.setItem(key, value); + return oldValue; } }