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;
+ }
}