Author: ppoddar
Date: Tue Jun 10 20:33:35 2008
New Revision: 666515

URL: http://svn.apache.org/viewvc?rev=666515&view=rev
Log:
OPENJPA-209: Detect identical instances being added to L1 cache multiple times 
during a load session.

Modified:
    
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ProjectionResultObjectProvider.java
    
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java

Modified: 
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ProjectionResultObjectProvider.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ProjectionResultObjectProvider.java?rev=666515&r1=666514&r2=666515&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ProjectionResultObjectProvider.java
 (original)
+++ 
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ProjectionResultObjectProvider.java
 Tue Jun 10 20:33:35 2008
@@ -70,6 +70,8 @@
     public Object getResultObject()
         throws Exception {
         Result res = getResult();
+        // for a projection, Result has no base mapping
+        res.setBaseMapping(null);
         int idx = res.indexOf();
         Object[] arr = new Object[_exps[idx].projections.length];
         for (int i = 0; i < _exps[idx].projections.length; i++)

Modified: 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java?rev=666515&r1=666514&r2=666515&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
 (original)
+++ 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
 Tue Jun 10 20:33:35 2008
@@ -311,7 +311,9 @@
 
         // initialize our state and add ourselves to the broker's cache
         setPCState(state);
-        _broker.setStateManager(_id, this, BrokerImpl.STATUS_INIT);
+        if (_broker.getStateManagerImplById(getObjectId(), false) == null) {
+               _broker.setStateManager(_id, this, BrokerImpl.STATUS_INIT);
+        }
         if (state == PCState.PNEW)
             fireLifecycleEvent(LifecycleEvent.AFTER_PERSIST);
 


Reply via email to