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


Reply via email to