Author: ppoddar
Date: Fri Apr 19 00:07:41 2013
New Revision: 1469643

URL: http://svn.apache.org/r1469643
Log:
Add a warning when complex id class is non-serializable

Modified:
    
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
    
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
    
openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties

Modified: 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java?rev=1469643&r1=1469642&r2=1469643&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
 Fri Apr 19 00:07:41 2013
@@ -599,8 +599,13 @@ public class AnnotationPersistenceMetaDa
                         warnFlushMode(meta);
                     break;
                 case ID_CLASS:
-                    if (isMetaDataMode())
+                    if (isMetaDataMode()) {
+                       Class<?> idClass = ((IdClass)anno).value();
+                       if (!Serializable.class.isAssignableFrom(idClass)) {
+                               _log.warn(_loc.get("id-class-not-serializable", 
idClass, _cls).toString());
+                       }
                         meta.setObjectIdType(((IdClass) anno).value(), true);
+                    }
                     break;
                 case NATIVE_QUERIES:
                     if (isQueryMode() && (meta.getSourceMode() & 
MODE_QUERY)==0)

Modified: 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java?rev=1469643&r1=1469642&r2=1469643&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
 Fri Apr 19 00:07:41 2013
@@ -21,6 +21,7 @@ package org.apache.openjpa.persistence;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.Serializable;
 import java.lang.reflect.Field;
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
@@ -1266,6 +1267,9 @@ public class XMLPersistenceMetaDataParse
         } catch (Throwable t) {
             throw getException(_loc.get("invalid-id-class", meta, cls), t);
         }
+        if (!Serializable.class.isAssignableFrom(idCls)) {
+               
_conf.getConfigurationLog().warn(_loc.get("id-class-not-serializable", idCls, 
_cls));
+        }
         meta.setObjectIdType(idCls, true);
         return true;
     }

Modified: 
openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties?rev=1469643&r1=1469642&r2=1469643&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
 (original)
+++ 
openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
 Fri Apr 19 00:07:41 2013
@@ -256,3 +256,4 @@ EntityManagers this property should not 
 time.
 shared-cache-mode-take-precedence: The DataCache is set to {0} while the 
shared-cache-mode Element or \
 javax.persistence.sharedCache.mode property is set to NONE. The 
shared-cache-mode takes precedence and caching is disabled.
+id-class-not-serializable: The composite identity class "{0}" for entity "{1}" 
is not serializable.
\ No newline at end of file


Reply via email to