diff options
Diffstat (limited to 'server/src/com/vaadin/ui/declarative/FieldBinder.java')
-rw-r--r-- | server/src/com/vaadin/ui/declarative/FieldBinder.java | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/server/src/com/vaadin/ui/declarative/FieldBinder.java b/server/src/com/vaadin/ui/declarative/FieldBinder.java index 577e9f5515..3766458175 100644 --- a/server/src/com/vaadin/ui/declarative/FieldBinder.java +++ b/server/src/com/vaadin/ui/declarative/FieldBinder.java @@ -18,7 +18,6 @@ package com.vaadin.ui.declarative; import java.beans.IntrospectionException; import java.io.Serializable; import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -28,7 +27,6 @@ import java.util.Map; import java.util.logging.Logger; import com.vaadin.ui.Component; -import com.vaadin.util.ReflectTools; /** * Binder utility that binds member fields of a design class instance to given @@ -84,7 +82,7 @@ public class FieldBinder implements Serializable { List<String> unboundFields = new ArrayList<String>(); for (Field f : fieldMap.values()) { try { - Object value = ReflectTools.getJavaFieldValue(bindTarget, f); + Object value = getFieldValue(bindTarget, f); if (value == null) { unboundFields.add(f.getName()); } @@ -92,8 +90,6 @@ public class FieldBinder implements Serializable { throw new FieldBindingException("Could not get field value", e); } catch (IllegalAccessException e) { throw new FieldBindingException("Could not get field value", e); - } catch (InvocationTargetException e) { - throw new FieldBindingException("Could not get field value", e); } } if (unboundFields.size() > 0) { @@ -192,15 +188,14 @@ public class FieldBinder implements Serializable { return false; } // validate that the field is not set - Object fieldValue = ReflectTools.getJavaFieldValue(bindTarget, - field); + Object fieldValue = getFieldValue(bindTarget, field); if (fieldValue != null) { getLogger().fine( "The field \"" + fieldName + "\" was already mapped. Ignoring."); } else { // set the field value - ReflectTools.setJavaFieldValue(bindTarget, field, instance); + field.set(bindTarget, instance); } return true; } catch (IllegalAccessException e) { @@ -209,12 +204,18 @@ public class FieldBinder implements Serializable { } catch (IllegalArgumentException e) { throw new FieldBindingException("Field binding failed for " + identifier, e); - } catch (InvocationTargetException e) { - throw new FieldBindingException("Field binding failed for " - + identifier, e); } } + private Object getFieldValue(Object object, Field field) + throws IllegalArgumentException, IllegalAccessException { + if (!field.isAccessible()) { + field.setAccessible(true); + } + + return field.get(object); + } + /** * Converts the given identifier to a valid field name by stripping away * illegal character and setting the first letter of the name to lower case. |