Author: simoneg
Date: Fri Jan 29 18:52:46 2010
New Revision: 904587

URL: http://svn.apache.org/viewvc?rev=904587&view=rev
Log:
Try native counterparts when searching for setter method for primary keys

Modified:
    
labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseIdentity.java

Modified: 
labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseIdentity.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseIdentity.java?rev=904587&r1=904586&r2=904587&view=diff
==============================================================================
--- 
labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseIdentity.java
 (original)
+++ 
labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseIdentity.java
 Fri Jan 29 18:52:46 2010
@@ -21,10 +21,14 @@
 
 import javax.persistence.Id;
 
+import org.apache.commons.beanutils.MethodUtils;
+import org.apache.magma.basics.LocalizableString;
 import org.apache.magma.basics.MagmaException;
 import org.apache.magma.conversion.Converter;
 import org.apache.magma.conversion.Converters;
 
+import sun.reflect.misc.MethodUtil;
+
 public class DatabaseIdentity {
 
        Class<? extends DatabasePersisted> myclass = null;      
@@ -120,7 +124,21 @@
                                method.invoke(bean, value);
                                return;
                        } catch (Exception e) {
-                               throw new MagmaException(e, "Error callong 
method {0}.{1}, which is key setter for the class {2}", 
idgetter.getDeclaringClass(), name, myclass.getName());                         
     
+                               Class<? extends Object> clz = value.getClass();
+                               clz = MethodUtils.getPrimitiveType(clz);
+                               MagmaException me = new MagmaException(e, 
"Error callong method {0}.{1}, which is key setter for the class {2}", 
idgetter.getDeclaringClass(), name, myclass.getName());
+                               if (clz != null) {
+                                       try {
+                                               Method method = 
this.myclass.getMethod(name, clz);
+                                               method.invoke(bean, value);
+                                               return;
+                                       } catch (NoSuchMethodException e2) {
+                                               me.addMessage(new 
LocalizableString("Additionally an error occurred searching for primitive type 
{0}", clz));
+                                       } catch (Exception e2) {
+                                               throw new MagmaException(e, 
"Error callong method {0}.{1}, which is key setter for the class {2}", 
idgetter.getDeclaringClass(), name, myclass.getName());
+                                       }
+                               }
+                               throw me;
                        }
                }
        }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to