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

svn commit: r509885 - in /incubator/openjpa/trunk/openjpa-jdbc/src/main: java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties

Author: ssegu
Date: Tue Feb 20 20:06:45 2007
New Revision: 509885

URL: http://svn.apache.org/viewvc?view=rev&rev=509885
Log:
OPENJPA-157. Fix to use the getIndependentTypeMappings to handle the case of field's declared type being abstract/unmapped

Modified:
    incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java
    incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties

Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java?view=diff&rev=509885&r1=509884&r2=509885
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationStrategies.java Tue Feb 20 20:06:45 2007
@@ -31,6 +31,7 @@
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.meta.JavaTypes;
 import org.apache.openjpa.util.MetaDataException;
+import org.apache.openjpa.util.UserException;
 
 /**
  * Helper methods for relation mappings.
@@ -74,11 +75,18 @@
     public static Object toDataStoreValue(ValueMapping vm, Object val,
         JDBCStore store) {
         ClassMapping rel;
-        if (val == null || val.getClass() == vm.getType()) 
+        if (val == null) {
+            ClassMapping[] clss = vm.getIndependentTypeMappings();
+            rel = (clss.length > 0) ? clss[0] : vm.getTypeMapping();
+        } else if (val.getClass() == vm.getType())
             rel = vm.getTypeMapping(); // common case
         else
             rel = vm.getMappingRepository().getMapping(val.getClass(),
                 store.getContext().getClassLoader(), true);
+
+        if (!rel.isMapped())
+            throw new UserException(_loc.get("unmapped-datastore-value", 
+                rel.getDescribedType()));
 
         Column[] cols;
         if (vm.getJoinDirection() == ValueMapping.JOIN_INVERSE)

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=509885&r1=509884&r2=509885
==============================================================================
--- 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 20 20:06:45 2007
@@ -131,3 +131,5 @@
 bad-unmapped-rel: "{0}" cannot be mapped without stringifying the oid of \
 	the related object to a string column.  The related type is unmapped and \
 	its "{1}" primary key field does not use a simple mapping.
+unmapped-datastore-value: Instances of type "{0}" are not valid query \
+	parameters because the type is not mapped.
\ No newline at end of file