You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by aw...@apache.org on 2007/02/27 19:14:46 UTC

svn commit: r512350 - in /incubator/openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ openjpa-kern...

Author: awhite
Date: Tue Feb 27 10:14:45 2007
New Revision: 512350

URL: http://svn.apache.org/viewvc?view=rev&rev=512350
Log:
Improve error checks for mapped-by mappings.  Mark deleted instances as
eligible for state restore on rollback so they don't always clear.  Always
cascade attach to embedded instances.


Modified:
    incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java
    incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyInverseKeyFieldStrategy.java
    incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyTableFieldStrategy.java
    incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties
    incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PDeletedState.java
    incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java

Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java?view=diff&rev=512350&r1=512349&r2=512350
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java Tue Feb 27 10:14:45 2007
@@ -86,7 +86,7 @@
             field.getValueInfo().assertNoSchemaComponents(field, !adapt);
             mapped.resolve(mapped.MODE_META | mapped.MODE_MAPPING);
 
-            if (!mapped.getDefiningMapping().isMapped())
+            if (!mapped.isMapped() || mapped.isSerialized())
                 throw new MetaDataException(_loc.get("mapped-by-unmapped",
                     field, mapped));
 

Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyInverseKeyFieldStrategy.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyInverseKeyFieldStrategy.java?view=diff&rev=512350&r1=512349&r2=512350
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyInverseKeyFieldStrategy.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyInverseKeyFieldStrategy.java Tue Feb 27 10:14:45 2007
@@ -119,7 +119,7 @@
         boolean criteria = vinfo.getUseClassCriteria();
         if (mapped != null) {
             mapped.resolve(mapped.MODE_META | mapped.MODE_MAPPING);
-            if (!(mapped.getStrategy()instanceof RelationFieldStrategy))
+            if (!(mapped.getStrategy() instanceof RelationFieldStrategy))
                 throw new MetaDataException(_loc.get("not-inv-relation",
                     field, mapped));
             vinfo.assertNoSchemaComponents(elem, !adapt);

Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyTableFieldStrategy.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyTableFieldStrategy.java?view=diff&rev=512350&r1=512349&r2=512350
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyTableFieldStrategy.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationToManyTableFieldStrategy.java Tue Feb 27 10:14:45 2007
@@ -110,7 +110,7 @@
             vinfo.assertNoSchemaComponents(elem, !adapt);
             mapped.resolve(mapped.MODE_META | mapped.MODE_MAPPING);
 
-            if (!mapped.getDefiningMapping().isMapped())
+            if (!mapped.isMapped() || mapped.isSerialized())
                 throw new MetaDataException(_loc.get("mapped-by-unmapped",
                     field, mapped));
 

Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties?view=diff&rev=512350&r1=512349&r2=512350
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties Tue Feb 27 10:14:45 2007
@@ -20,7 +20,7 @@
 	"{2}".  You cannot use an inverse foreign key to map a superclass field of \
 	an unjoined subclass.
 mapped-by-unmapped: Field "{0}" cannot be mapped by "{1}", because the related \
-	type is unmapped.
+	field or type is unmapped.
 cant-join: Cannot join across "{0}".  The related type has unjoined subclasses.
 cant-inverse: "{0}" is not a valid mapping.  Inverse foreign key-based \
 	relations to types with unjoined subclasses are not supported.

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PDeletedState.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PDeletedState.java?view=diff&rev=512350&r1=512349&r2=512350
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PDeletedState.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PDeletedState.java Tue Feb 27 10:14:45 2007
@@ -25,6 +25,10 @@
 class PDeletedState
     extends PCState {
 
+    void initialize(StateManagerImpl context) {
+        context.saveFields(false);
+    }
+
     PCState flush(StateManagerImpl context) {
         return PDELETEDFLUSHED;
     }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java?view=diff&rev=512350&r1=512349&r2=512350
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java Tue Feb 27 10:14:45 2007
@@ -243,6 +243,8 @@
         if (_owner.getManagement() != FieldMetaData.MANAGE_PERSISTENT
             || !isDeclaredTypePC()) // attach acts on declared type
             return CASCADE_NONE;
+        if (isEmbeddedPC())
+            return CASCADE_IMMEDIATE;
         return _attach;
     }