You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by al...@apache.org on 2010/03/25 23:53:14 UTC

svn commit: r927630 - /openjpa/branches/2.0.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java

Author: allee8285
Date: Thu Mar 25 22:53:14 2010
New Revision: 927630

URL: http://svn.apache.org/viewvc?rev=927630&view=rev
Log:
OPENJPA-1599 - Retain em method user input property map content from modifications.

Modified:
    openjpa/branches/2.0.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java

Modified: openjpa/branches/2.0.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.0.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java?rev=927630&r1=927629&r2=927630&view=diff
==============================================================================
--- openjpa/branches/2.0.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java (original)
+++ openjpa/branches/2.0.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java Thu Mar 25 22:53:14 2010
@@ -33,6 +33,7 @@ import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.EnumSet;
+import java.util.HashMap;
 import java.util.IdentityHashMap;
 import java.util.Map;
 import java.util.Set;
@@ -487,6 +488,7 @@ public class EntityManagerImpl
     @SuppressWarnings("unchecked")
     public <T> T find(Class<T> cls, Object oid, LockModeType mode, Map<String, Object> properties) {
         assertNotCloseInvoked();
+        properties = cloneProperties(properties);
         configureCurrentCacheModes(pushFetchPlan(), properties);
         configureCurrentFetchPlan(getFetchPlan(), properties, mode, true);
         try {
@@ -1186,6 +1188,7 @@ public class EntityManagerImpl
         assertNotCloseInvoked();
         assertValidAttchedEntity(LOCK, entity);
         _broker.assertActiveTransaction();
+        properties = cloneProperties(properties);
         configureCurrentCacheModes(pushFetchPlan(), properties);
         configureCurrentFetchPlan(getFetchPlan(), properties, mode, false);
         try {
@@ -1808,4 +1811,11 @@ public class EntityManagerImpl
         }
         return value;
     }
+
+    private Map<String, Object> cloneProperties(Map<String, Object> properties) {
+        if (properties != null) {
+            properties = new HashMap<String, Object>(properties);
+        }
+        return properties;
+    }
 }