You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mp...@apache.org on 2006/09/28 02:33:49 UTC

svn commit: r450649 - /incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java

Author: mprudhom
Date: Wed Sep 27 17:33:48 2006
New Revision: 450649

URL: http://svn.apache.org/viewvc?view=rev&rev=450649
Log:
Only treat methods as persistent by default if there is a setter for the method in the described class.

Modified:
    incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java

Modified: incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java?view=diff&rev=450649&r1=450648&r2=450649
==============================================================================
--- incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java (original)
+++ incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java Wed Sep 27 17:33:48 2006
@@ -245,6 +245,21 @@
         int mods = member.getModifiers();
         if (Modifier.isTransient(mods))
             return false;
+
+        if (member instanceof Method) {
+            try {
+                // check for setters for methods
+                Method setter = meta.getDescribedType().getDeclaredMethod("set"
+                    + name.substring(0, 1).toUpperCase() + name.substring(1),
+                    new Class[] { ((Method) member).getReturnType() });
+                if (setter == null)
+                    return false;
+            } catch (Exception e) {
+                // e.g., NoSuchMethodException
+                return false;
+            }
+        }
+
         PersistenceStrategy strat = getPersistenceStrategy(null, member);
         if (strat == null || strat == PersistenceStrategy.TRANSIENT)
             return false;