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;