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