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;