summaryrefslogtreecommitdiffstats
path: root/server/src/com/vaadin/data/fieldgroup/FieldGroup.java
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/com/vaadin/data/fieldgroup/FieldGroup.java')
-rw-r--r--server/src/com/vaadin/data/fieldgroup/FieldGroup.java98
1 files changed, 15 insertions, 83 deletions
diff --git a/server/src/com/vaadin/data/fieldgroup/FieldGroup.java b/server/src/com/vaadin/data/fieldgroup/FieldGroup.java
index dad2e26497..8803054857 100644
--- a/server/src/com/vaadin/data/fieldgroup/FieldGroup.java
+++ b/server/src/com/vaadin/data/fieldgroup/FieldGroup.java
@@ -693,11 +693,10 @@ public class FieldGroup implements Serializable {
* Binds member fields found in the given object.
* <p>
* This method processes all (Java) member fields whose type extends
- * {@link Field} and that can be mapped to a property id. Property ids are
- * searched in the following order: @{@link PropertyId} annotations, exact
- * field name matches and the case-insensitive matching that ignores
- * underscores. All non-null fields for which a property id can be
- * determined are bound to the property id.
+ * {@link Field} and that can be mapped to a property id. Property id
+ * mapping is done based on the field name or on a @{@link PropertyId}
+ * annotation on the field. All non-null fields for which a property id can
+ * be determined are bound to the property id.
* </p>
* <p>
* For example:
@@ -734,12 +733,11 @@ public class FieldGroup implements Serializable {
* that have not been initialized.
* <p>
* This method processes all (Java) member fields whose type extends
- * {@link Field} and that can be mapped to a property id. Property ids are
- * searched in the following order: @{@link PropertyId} annotations, exact
- * field name matches and the case-insensitive matching that ignores
- * underscores. Fields that are not initialized (null) are built using the
- * field factory. All non-null fields for which a property id can be
- * determined are bound to the property id.
+ * {@link Field} and that can be mapped to a property id. Property id
+ * mapping is done based on the field name or on a @{@link PropertyId}
+ * annotation on the field. Fields that are not initialized (null) are built
+ * using the field factory. All non-null fields for which a property id can
+ * be determined are bound to the property id.
* </p>
* <p>
* For example:
@@ -779,12 +777,11 @@ public class FieldGroup implements Serializable {
* member fields that have not been initialized.
* <p>
* This method processes all (Java) member fields whose type extends
- * {@link Field} and that can be mapped to a property id. Property ids are
- * searched in the following order: @{@link PropertyId} annotations, exact
- * field name matches and the case-insensitive matching that ignores
- * underscores. Fields that are not initialized (null) are built using the
- * field factory is buildFields is true. All non-null fields for which a
- * property id can be determined are bound to the property id.
+ * {@link Field} and that can be mapped to a property id. Property id
+ * mapping is done based on the field name or on a @{@link PropertyId}
+ * annotation on the field. Fields that are not initialized (null) are built
+ * using the field factory is buildFields is true. All non-null fields for
+ * which a property id can be determined are bound to the property id.
* </p>
*
* @param objectWithMemberFields
@@ -795,10 +792,6 @@ public class FieldGroup implements Serializable {
*/
protected void buildAndBindMemberFields(Object objectWithMemberFields,
boolean buildFields) throws BindException {
- if (getItemDataSource() == null) {
- // no data source set, cannot find property ids
- return;
- }
Class<?> objectClass = objectWithMemberFields.getClass();
for (java.lang.reflect.Field memberField : getFieldsInDeclareOrder(objectClass)) {
@@ -819,11 +812,7 @@ public class FieldGroup implements Serializable {
// @PropertyId(propertyId) always overrides property id
propertyId = propertyIdAnnotation.value();
} else {
- propertyId = findPropertyId(memberField);
- if (propertyId == null) {
- // Property id was not found, skip this field
- continue;
- }
+ propertyId = memberField.getName();
}
// Ensure that the property id exists
@@ -884,51 +873,6 @@ public class FieldGroup implements Serializable {
}
}
- /**
- * Searches for a property id from the current itemDataSource that matches
- * the given memberField.
- * <p>
- * If perfect match is not found, uses a case insensitive search that also
- * ignores underscores. Returns null if no match is found. Throws a
- * SearchException if no item data source has been set.
- * </p>
- * <p>
- * The propertyId search logic used by
- * {@link #buildAndBindMemberFields(Object, boolean)
- * buildAndBindMemberFields} can easily be customized by overriding this
- * method. No other changes are needed.
- * </p>
- *
- * @param memberField
- * The field an object id is searched for
- * @return
- */
- protected Object findPropertyId(java.lang.reflect.Field memberField) {
- String fieldName = memberField.getName();
- if (getItemDataSource() == null) {
- throw new SearchException(
- "Property id type for field '"
- + fieldName
- + "' could not be determined. No item data source has been set.");
- }
- Item dataSource = getItemDataSource();
- if (dataSource.getItemProperty(fieldName) != null) {
- return fieldName;
- } else {
- String minifiedFieldName = fieldName.toLowerCase().replace("_", "");
- for (Object itemPropertyId : dataSource.getItemPropertyIds()) {
- if (itemPropertyId instanceof String) {
- String itemPropertyName = (String) itemPropertyId;
- if (minifiedFieldName.equals(itemPropertyName.toLowerCase()
- .replace("_", ""))) {
- return itemPropertyName;
- }
- }
- }
- }
- return null;
- }
-
public static class CommitException extends Exception {
public CommitException() {
@@ -965,18 +909,6 @@ public class FieldGroup implements Serializable {
}
- public static class SearchException extends RuntimeException {
-
- public SearchException(String message) {
- super(message);
- }
-
- public SearchException(String message, Throwable t) {
- super(message, t);
- }
-
- }
-
/**
* Builds a field and binds it to the given property id using the field
* binder.