You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by cu...@apache.org on 2014/02/06 00:12:37 UTC

svn commit: r1564989 - /openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java

Author: curtisr7
Date: Wed Feb  5 23:12:37 2014
New Revision: 1564989

URL: http://svn.apache.org/r1564989
Log:
OPENJPA-2472: Fix concurrency bug in ClassMetaData. Patch contributed by Dalia Abo Sheasha.

Modified:
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java?rev=1564989&r1=1564988&r2=1564989&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java Wed Feb  5 23:12:37 2014
@@ -2692,19 +2692,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();
     }
@@ -2726,7 +2727,7 @@ public class ClassMetaData
         }
 
         // Default to FALSE, until proven true.
-        _hasPKFieldsFromAbstractClass = Boolean.FALSE;
+        Boolean temp = Boolean.FALSE;
 
         FieldMetaData[] pkFields = getPrimaryKeyFields();
         for (FieldMetaData fmd : pkFields) {
@@ -2741,11 +2742,12 @@ public class ClassMetaData
                     }
                 }
                 if (cmd == fmdDMDA) {
-                    _hasPKFieldsFromAbstractClass = Boolean.TRUE;
+                    temp = Boolean.TRUE;
                     break;
                 }
             }
         }
+        _hasPKFieldsFromAbstractClass = temp;
 
         return _hasPKFieldsFromAbstractClass.booleanValue();
     }
@@ -2783,10 +2785,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;
     }