You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by ht...@apache.org on 2015/11/10 23:36:53 UTC

svn commit: r1713741 - in /openjpa/branches/2.2.1.x: ./ openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java

Author: hthomann
Date: Tue Nov 10 22:36:53 2015
New Revision: 1713741

URL: http://svn.apache.org/viewvc?rev=1713741&view=rev
Log:
OPENJPA-2472: Fix concurrency bug in ClassMetaData. Patch contributed by Dalia Abo Sheasha - back ported to 2.2.1.x Dalia's trunk changes.

Modified:
    openjpa/branches/2.2.1.x/   (props changed)
    openjpa/branches/2.2.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java

Propchange: openjpa/branches/2.2.1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov 10 22:36:53 2015
@@ -2,4 +2,4 @@
 /openjpa/branches/2.0.x:1419659,1484136,1484287,1504611
 /openjpa/branches/2.1.x:1415379,1415398,1436150,1469090,1469949,1484300,1484313,1485010,1505837,1513249,1517838,1529241,1530146,1533218,1533280,1539188,1569528,1575444,1591536,1614935,1636464,1648430,1655218,1662610,1673300,1673491,1686894,1709201,1709309
 /openjpa/branches/2.2.x:1580898,1580939,1591681,1641906,1642555,1702143
-/openjpa/trunk:1416742,1420324,1430117,1431649,1436957,1436960,1448662,1448796,1451369,1456574,1456614,1459091,1461833,1469646,1469649,1469652,1504282,1600757,1603251
+/openjpa/trunk:1416742,1420324,1430117,1431649,1436957,1436960,1448662,1448796,1451369,1456574,1456614,1459091,1461833,1469646,1469649,1469652,1504282,1564989,1600757,1603251

Modified: openjpa/branches/2.2.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.2.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java?rev=1713741&r1=1713740&r2=1713741&view=diff
==============================================================================
--- openjpa/branches/2.2.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java (original)
+++ openjpa/branches/2.2.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java Tue Nov 10 22:36:53 2015
@@ -2694,19 +2694,20 @@ public class ClassMetaData
 
         // Default to false, set to true only if this type is abstract and
         // declares a PKField.
-        _hasAbstractPKField = Boolean.FALSE;
+        Boolean temp = Boolean.FALSE;
 
         if (isAbstract() == true) {
             FieldMetaData[] declaredFields = getDeclaredFields();
             if (declaredFields != null && declaredFields.length != 0) {
                 for (FieldMetaData fmd : declaredFields) {
                     if (fmd.isPrimaryKey()) {
-                        _hasAbstractPKField = Boolean.TRUE;
+                        temp = Boolean.TRUE;
                         break;
                     }
                 }
             }
         }
+        _hasAbstractPKField = temp;
 
         return _hasAbstractPKField.booleanValue();
     }
@@ -2728,7 +2729,7 @@ public class ClassMetaData
         }
 
         // Default to FALSE, until proven true.
-        _hasPKFieldsFromAbstractClass = Boolean.FALSE;
+        Boolean temp = Boolean.FALSE;
 
         FieldMetaData[] pkFields = getPrimaryKeyFields();
         for (FieldMetaData fmd : pkFields) {
@@ -2743,11 +2744,12 @@ public class ClassMetaData
                     }
                 }
                 if (cmd == fmdDMDA) {
-                    _hasPKFieldsFromAbstractClass = Boolean.TRUE;
+                    temp = Boolean.TRUE;
                     break;
                 }
             }
         }
+        _hasPKFieldsFromAbstractClass = temp;
 
         return _hasPKFieldsFromAbstractClass.booleanValue();
     }
@@ -2785,10 +2787,11 @@ public class ClassMetaData
                 }
             }
             int idsSize = ids.size();
-            _pkAndNonPersistentManagedFmdIndexes = new int[idsSize];
-            for(int i = 0; i<idsSize; i++){
-                _pkAndNonPersistentManagedFmdIndexes[i] = ids.get(i).intValue();
+            int[] temp = new int[idsSize];
+            for (int i = 0; i < idsSize; i++) {
+                temp[i] = ids.get(i).intValue();
             }
+            _pkAndNonPersistentManagedFmdIndexes = temp;
         }
         return _pkAndNonPersistentManagedFmdIndexes;
     }