You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by oz...@apache.org on 2006/07/13 19:42:53 UTC
svn commit: r421670 - in /jakarta/commons/proper/transaction/trunk/src:
java/org/apache/commons/transaction/memory/TransactionalMapWrapper.java
test/org/apache/commons/transaction/memory/MapWrapperTest.java
Author: ozeigermann
Date: Thu Jul 13 10:42:52 2006
New Revision: 421670
URL: http://svn.apache.org/viewvc?rev=421670&view=rev
Log:
Fix for bug 38545. Transactional map wrapper did not allow for
null values. Bug reported and patch
supplied by Greg Steckman at
http://issues.apache.org/bugzilla/show_bug.cgi?id=38545.
Modified:
jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/memory/TransactionalMapWrapper.java
jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/memory/MapWrapperTest.java
Modified: jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/memory/TransactionalMapWrapper.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/memory/TransactionalMapWrapper.java?rev=421670&r1=421669&r2=421670&view=diff
==============================================================================
--- jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/memory/TransactionalMapWrapper.java (original)
+++ jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/memory/TransactionalMapWrapper.java Thu Jul 13 10:42:52 2006
@@ -317,7 +317,7 @@
* @see Map#containsKey(java.lang.Object)
*/
public boolean containsKey(Object key) {
- return (get(key) != null);
+ return keySet().contains(key);
}
/**
@@ -529,6 +529,7 @@
Set keySet = new HashSet();
if (!cleared) {
keySet.addAll(wrapped.keySet());
+ keySet.removeAll(deletes);
}
keySet.addAll(adds.keySet());
return keySet;
@@ -541,14 +542,12 @@
return null;
}
- Object changed = changes.get(key);
- if (changed != null) {
- return changed;
+ if(changes.containsKey(key)){
+ return changes.get(key);
}
- Object added = adds.get(key);
- if (added != null) {
- return added;
+ if(adds.containsKey(key)){
+ return adds.get(key);
}
if (cleared) {
@@ -563,7 +562,7 @@
try {
readOnly = false;
deletes.remove(key);
- if (wrapped.get(key) != null) {
+ if (wrapped.containsKey(key)) {
changes.put(key, value);
} else {
adds.put(key, value);
Modified: jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/memory/MapWrapperTest.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/memory/MapWrapperTest.java?rev=421670&r1=421669&r2=421670&view=diff
==============================================================================
--- jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/memory/MapWrapperTest.java (original)
+++ jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/memory/MapWrapperTest.java Thu Jul 13 10:42:52 2006
@@ -121,6 +121,37 @@
report("value2", (String) txMap1.get("key1"));
}
+ public void testContainsKeyWithNullValue() throws Throwable {
+
+ logger.info("Checking containsKey returns true when the value is null");
+
+ final Map map1 = new HashMap();
+
+ final TransactionalMapWrapper txMap1 = getNewWrapper(map1);
+
+ assertTrue(txMap1.isEmpty());
+
+ // make sure changes are propagated to wrapped map outside tx
+ txMap1.put("key1", null);
+ assertTrue(txMap1.containsKey("key1"));
+
+ // make sure changes are progated to wrapped map after commit
+ txMap1.startTransaction();
+ txMap1.put("key2", null);
+ assertTrue(txMap1.containsKey("key2"));
+ txMap1.remove("key1");
+ assertTrue(map1.containsKey("key1"));
+ txMap1.commitTransaction();
+ assertTrue(txMap1.containsKey("key2"));
+ assertFalse(txMap1.containsKey("key1"));
+
+ txMap1.startTransaction();
+ assertTrue(txMap1.containsKey("key2"));
+ txMap1.remove("key2");
+ assertFalse(txMap1.containsKey("key2"));
+ txMap1.commitTransaction();
+ }
+
public void testComplex() throws Throwable {
logger.info("Checking advanced and complex transaction features");
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org