You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2010/01/29 19:52:46 UTC

svn commit: r904587 - /labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseIdentity.java

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: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org