You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by tv...@apache.org on 2016/11/17 15:03:42 UTC
svn commit: r1770205 -
/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/
Author: tv
Date: Thu Nov 17 15:03:41 2016
New Revision: 1770205
URL: http://svn.apache.org/viewvc?rev=1770205&view=rev
Log:
Move handling of maps to afterUnmarshal() to play nice with Java8
Modified:
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BigDecimalField.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BooleanField.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DateStringField.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DoubleField.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Field.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FieldAdapter.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FileItemField.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FloatField.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Group.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/IntegerField.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/LongField.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/ShortField.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/StringField.java
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/XmlField.java
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BigDecimalField.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BigDecimalField.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BigDecimalField.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BigDecimalField.java Thu Nov 17 15:03:41 2016
@@ -107,7 +107,7 @@ public class BigDecimalField
@Override
protected void doSetValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
BigDecimal[] values = parser.getBigDecimals(getKey());
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BooleanField.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BooleanField.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BooleanField.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BooleanField.java Thu Nov 17 15:03:41 2016
@@ -98,7 +98,7 @@ public class BooleanField
@Override
protected Object getSafeEmptyValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
return new boolean[0];
}
@@ -125,7 +125,7 @@ public class BooleanField
@Override
protected void doSetValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
Boolean[] inputs = parser.getBooleanObjects(getKey());
boolean[] values = new boolean[inputs.length];
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DateStringField.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DateStringField.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DateStringField.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DateStringField.java Thu Nov 17 15:03:41 2016
@@ -27,6 +27,7 @@ import org.apache.commons.lang.StringUti
import org.apache.fulcrum.intake.IntakeException;
import org.apache.fulcrum.intake.IntakeRuntimeException;
import org.apache.fulcrum.intake.validator.DateStringValidator;
+import org.apache.fulcrum.intake.validator.Validator;
/**
@@ -60,6 +61,7 @@ public class DateStringField
{
super(field, group);
+ Validator<?> validator = getValidator();
if (validator == null || !(validator instanceof DateStringValidator))
{
df = DateFormat.getInstance();
@@ -139,7 +141,7 @@ public class DateStringField
@Override
protected void doSetValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
String[] inputs = parser.getStrings(getKey());
Date[] values = new Date[inputs.length];
@@ -185,6 +187,7 @@ public class DateStringField
{
Date date = null;
// FIXME: Canonicalize user-entered date strings.
+ Validator<?> validator = getValidator();
if (validator != null && validator instanceof DateStringValidator)
{
date = ((DateStringValidator) validator).parse(dateString);
@@ -206,6 +209,7 @@ public class DateStringField
{
String s = null;
Object value = getValue();
+ Validator<?> validator = getValidator();
if (value == null)
{
s = "";
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DoubleField.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DoubleField.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DoubleField.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DoubleField.java Thu Nov 17 15:03:41 2016
@@ -99,7 +99,7 @@ public class DoubleField
@Override
protected Object getSafeEmptyValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
return new double[0];
}
@@ -127,7 +127,7 @@ public class DoubleField
@Override
protected void doSetValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
Double[] inputs = parser.getDoubleObjects(getKey());
double[] values = new double[inputs.length];
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Field.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Field.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Field.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Field.java Thu Nov 17 15:03:41 2016
@@ -69,49 +69,49 @@ public abstract class Field<T> implement
// the following are set from the xml file and are permanent (final)
/** Name of the field. */
- protected final String name;
+ private final String name;
/** Key used to identify the field in the parser */
- protected final String key;
+ private final String key;
/** Display size of the field */
- protected final String displaySize;
+ private final String displaySize;
/** Class name of the object to which the field is mapped */
protected String mapToObject;
/** Optional property name of the object to which the field is mapped */
- protected String mapToProperty;
+ private String mapToProperty;
/** Class name of the validator (for deserialization) */
- protected String validatorClassName;
+ private String validatorClassName;
/** Used to validate the contents of the field */
- protected transient Validator<T> validator;
+ private transient Validator<T> validator;
/** Getter method in the mapped object used to populate the field */
- protected Method getter;
+ private Method getter;
/** Setter method in the mapped object used to store the value of field */
- protected Method setter;
+ private Method setter;
/** Error message set on the field if required and not set by parser */
- protected String ifRequiredMessage;
+ private String ifRequiredMessage;
/** Does this field accept multiple values? */
- protected final boolean isMultiValued;
+ private final boolean isMultiValued;
/** Group to which the field belongs */
- protected final Group group;
+ private final Group group;
/** Is this field always required? This is only set through the XML file */
- protected boolean alwaysRequired;
+ private boolean alwaysRequired;
/**
* Value of the field if an error occurs while getting
* the value from the mapped object
*/
- protected T onError;
+ private T onError;
/** Default value of the field */
protected T defaultValue;
@@ -120,7 +120,7 @@ public abstract class Field<T> implement
protected T emptyValue;
/** Display name of the field to be used on data entry forms... */
- protected String displayName;
+ private String displayName;
/** Max size of the field */
private String maxSize;
@@ -128,25 +128,25 @@ public abstract class Field<T> implement
// these are reset when the Field is returned to the pool
/** Has the field has been set from the parser? */
- protected boolean setFlag;
+ private boolean setFlag;
/** Has the field passed the validation test? */
- protected boolean validFlag;
+ private boolean validFlag;
/** Has the field been validated? */
- protected boolean validated;
+ private boolean validated;
/** Does the field require a value? */
- protected boolean required;
+ private boolean required;
/** Has the field has been set from the parser? */
- protected boolean initialized;
+ private boolean initialized;
/** Error message, is any, resulting from validation */
- protected String message;
+ private String message;
/** Mapped object used to set the initial field value */
- protected Retrievable retrievable;
+ private Retrievable retrievable;
/** Locale of the field */
private Locale locale;
@@ -312,8 +312,8 @@ public abstract class Field<T> implement
throws IntakeException
{
this.parser = pp;
- validFlag = true;
- validated = false;
+ setValid(true);
+ setValidated(false);
this.locale = pp.getLocale();
@@ -601,6 +601,30 @@ public abstract class Field<T> implement
}
/**
+ * @param setFlag the setFlag to set
+ */
+ protected void setSet(boolean setFlag)
+ {
+ this.setFlag = setFlag;
+ }
+
+ /**
+ * @param validFlag the validFlag to set
+ */
+ protected void setValid(boolean validFlag)
+ {
+ this.validFlag = validFlag;
+ }
+
+ /**
+ * @param validated the validated to set
+ */
+ protected void setValidated(boolean validated)
+ {
+ this.validated = validated;
+ }
+
+ /**
* @deprecated Call validate() instead (with no parameters).
*/
@Deprecated
@@ -617,7 +641,7 @@ public abstract class Field<T> implement
log.debug(name + ": validate()");
Validator<T> v = getValidator();
- if (isMultiValued)
+ if (isMultiValued())
{
stringValues = parser.getStrings(getKey());
@@ -961,7 +985,7 @@ public abstract class Field<T> implement
}
/**
- * Used to throw an IntakeException when an error occurs execuing the
+ * Used to throw an IntakeException when an error occurs executing the
* get/set method of the mapped persistent object.
*
* @param type Type of method. (setter/getter)
@@ -1027,7 +1051,7 @@ public abstract class Field<T> implement
}
/**
- * Gets the diplay size of the field. This is useful when
+ * Gets the display size of the field. This is useful when
* building the HTML input tag. If no displaySize was set,
* an empty string is returned.
*/
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FieldAdapter.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FieldAdapter.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FieldAdapter.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FieldAdapter.java Thu Nov 17 15:03:41 2016
@@ -20,10 +20,7 @@ package org.apache.fulcrum.intake.model;
*/
import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.adapters.XmlAdapter;
@@ -213,18 +210,6 @@ public class FieldAdapter extends XmlAda
FieldCtor fieldCtor = null;
Field<?> field = null;
String type = xmlField.getType();
-
- List<Rule> rules = xmlField.getRules();
- if (rules != null )
- {
-
- xmlField.getRuleMap().clear();
- Map<String,Rule> ruleMap = xmlField.getRuleMap();
- for (Rule rule : rules)
- {
- ruleMap.put(rule.getName(), rule);
- }
- }
fieldCtor = fieldCtors.get(type);
if (fieldCtor == null)
@@ -246,37 +231,9 @@ public class FieldAdapter extends XmlAda
@Override
public Field<?> unmarshal(XmlField xmlField) throws Exception
{
- Field<?> field = getInstance(xmlField, xmlField.getGroup());
-
- processDataInGroupContext(xmlField, field);
-
- return field;
+ return getInstance(xmlField, xmlField.getGroup());
}
- private void processDataInGroupContext(XmlField xmlField, Field<?> field) {
- Group group = xmlField.getGroup();
- Map<String, Field<?>> fields = group.fields;
-
- int defaultSize = 5;
- if (fields == null)
- {
- fields = new HashMap<String, Field<?>>((int) (1.25 * defaultSize + 1));
- }
-
- List<Field<?>> fieldsArray = null; // fieldsArray
- if (group.fieldsArray == null)
- {
- fieldsArray = new ArrayList<Field<?>>();
- } else
- {
- fieldsArray= new ArrayList<Field<?>>(Arrays.asList(group.fieldsArray));// resizable not size -fixed
- }
- fieldsArray.add(field);
- fields.put(field.getName(), field);
- group.fields = fields;
- group.fieldsArray = fieldsArray.toArray(new Field<?>[]{});
- }
-
/**
* @see javax.xml.bind.annotation.adapters.XmlAdapter#marshal(java.lang.Object)
*/
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FileItemField.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FileItemField.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FileItemField.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FileItemField.java Thu Nov 17 15:03:41 2016
@@ -119,23 +119,20 @@ public class FileItemField
public Field<FileItem> init(ValueParser vp)
throws IntakeException
{
- super.parser = vp;
-
if (!(vp instanceof ParameterParser))
{
throw new IntakeException(
"FileItemFields can only be used with ParameterParser");
}
- validFlag = true;
+ super.init(vp);
if (parser.containsKey(getKey()))
{
- setFlag = true;
+ setSet(true);
validate();
}
- initialized = true;
return this;
}
@@ -148,23 +145,23 @@ public class FileItemField
public boolean validate()
{
ParameterParser pp = (ParameterParser) super.parser;
- if (isMultiValued)
+ if (isMultiValued())
{
FileItem[] ss = pp.getFileItems(getKey());
// this definition of not set might need refined. But
// not sure the situation will arise.
if (ss.length == 0)
{
- setFlag = false;
+ setSet(false);
}
- if (validator != null)
+ if (getValidator() != null)
{
for (int i = 0; i < ss.length; i++)
{
try
{
- ((FileValidator) validator).assertValidity(ss[i]);
+ ((FileValidator) getValidator()).assertValidity(ss[i]);
}
catch (ValidationException ve)
{
@@ -173,7 +170,7 @@ public class FileItemField
}
}
- if (setFlag && validFlag)
+ if (isSet() && isValid())
{
doSetValue();
}
@@ -183,16 +180,16 @@ public class FileItemField
FileItem s = pp.getFileItem(getKey());
if (s == null || s.getSize() == 0)
{
- setFlag = false;
+ setSet(false);
}
- if (validator != null)
+ if (getValidator() != null)
{
try
{
- ((FileValidator) validator).assertValidity(s);
+ ((FileValidator) getValidator()).assertValidity(s);
- if (setFlag)
+ if (isSet())
{
doSetValue();
}
@@ -202,13 +199,13 @@ public class FileItemField
setMessage(ve.getMessage());
}
}
- else if (setFlag)
+ else if (isSet())
{
doSetValue();
}
}
- return validFlag;
+ return isValid();
}
/**
@@ -218,7 +215,7 @@ public class FileItemField
protected void doSetValue()
{
ParameterParser pp = (ParameterParser) super.parser;
- if (isMultiValued)
+ if (isMultiValued())
{
setTestValue(pp.getFileItems(getKey()));
}
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FloatField.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FloatField.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FloatField.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FloatField.java Thu Nov 17 15:03:41 2016
@@ -99,7 +99,7 @@ public class FloatField
@Override
protected Object getSafeEmptyValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
return new float[0];
}
@@ -127,7 +127,7 @@ public class FloatField
@Override
protected void doSetValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
Float[] inputs = parser.getFloatObjects(getKey());
float[] values = new float[inputs.length];
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Group.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Group.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Group.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Group.java Thu Nov 17 15:03:41 2016
@@ -21,9 +21,10 @@ package org.apache.fulcrum.intake.model;
import java.io.Serializable;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
+import java.util.ListIterator;
import java.util.Map;
import javax.xml.bind.Unmarshaller;
@@ -103,33 +104,42 @@ public class Group implements Serializab
/**
* A map of the fields in this group mapped by field name.
*/
- protected Map<String, Field<?>> fields;
+ private Map<String, Field<?>> fieldsByName;
/**
* Map of the fields by mapToObject
*/
- protected Map<String, Field<?>[]> mapToObjectFields;
+ private Map<String, Field<?>[]> mapToObjectFields;
/**
- * An array of fields in this group.
+ * A list of fields in this group.
*/
- protected Field<?>[] fieldsArray;
+ private LinkedList<Field<?>> fields;
/**
* The object id used to associate this group to a bean
* for one request cycle
*/
- protected String oid;
+ private String oid;
/**
* The object containing the request data
*/
- protected ValueParser pp;
+ private ValueParser pp;
/**
* A flag to help prevent duplicate hidden fields declaring this group.
*/
- protected boolean isDeclared;
+ private boolean isDeclared;
+
+ /**
+ * Default constructor
+ */
+ public Group()
+ {
+ super();
+ this.fields = new LinkedList<Field<?>>();
+ }
/**
* Enable Avalon Logging
@@ -162,15 +172,16 @@ public class Group implements Serializab
{
this.oid = key;
this.pp = pp;
- for (int i = fieldsArray.length - 1; i >= 0; i--)
+ for (ListIterator<Field<?>> i = fields.listIterator(fields.size()); i.hasPrevious();)
{
- fieldsArray[i].init(pp);
+ i.previous().init(pp);
}
- for (int i = fieldsArray.length - 1; i >= 0; i--)
+ for (ListIterator<Field<?>> i = fields.listIterator(fields.size()); i.hasPrevious();)
{
- if (fieldsArray[i].isSet() && !fieldsArray[i].isValidated())
+ Field<?> field = i.previous();
+ if (field.isSet() && !field.isValidated())
{
- fieldsArray[i].validate();
+ field.validate();
}
}
return this;
@@ -226,10 +237,11 @@ public class Group implements Serializab
*/
public String[] getFieldNames()
{
- String nameList[] = new String[fieldsArray.length];
- for (int i = 0; i < nameList.length; i++)
+ String nameList[] = new String[fields.size()];
+ int i = 0;
+ for (Field<?> f : fields)
{
- nameList[i] = fieldsArray[i].name;
+ nameList[i++] = f.getName();
}
return nameList;
}
@@ -327,9 +339,9 @@ public class Group implements Serializab
public Field<?> get(String fieldName)
throws IntakeException
{
- if (fields.containsKey(fieldName))
+ if (fieldsByName.containsKey(fieldName))
{
- return fields.get(fieldName);
+ return fieldsByName.get(fieldName);
}
else
{
@@ -344,16 +356,11 @@ public class Group implements Serializab
*/
public List<Field<?>> getFields()
{
- if (fieldsArray == null)
- {
- return null;// new ArrayList<Field<?>>();
- }
-
- return Arrays.asList(fieldsArray);
+ return fields;
}
/**
- * Jaxb sets the collection of fields for this group
+ * Set a collection of fields for this group
*
* @param fields the fields to set
*/
@@ -361,6 +368,7 @@ public class Group implements Serializab
@XmlJavaTypeAdapter(FieldAdapter.class)
protected void setFields(List<Field<?>> inputFields)
{
+ fields = new LinkedList<Field<?>>(inputFields);
}
/**
@@ -371,14 +379,15 @@ public class Group implements Serializab
public boolean isAllValid()
{
boolean valid = true;
- for (int i = fieldsArray.length - 1; i >= 0; i--)
+ for (ListIterator<Field<?>> i = fields.listIterator(fields.size()); i.hasPrevious();)
{
- valid &= fieldsArray[i].isValid();
- if (log.isDebugEnabled() && !fieldsArray[i].isValid())
+ Field<?> field = i.previous();
+ valid &= field.isValid();
+ if (log.isDebugEnabled() && !field.isValid())
{
log.debug("Group(" + oid + "): " + name + "; Field: "
- + fieldsArray[i].name + "; value=" +
- fieldsArray[i].getValue() + " is invalid!");
+ + field.getName() + "; value=" +
+ field.getValue() + " is invalid!");
}
}
return valid;
@@ -549,9 +558,9 @@ public class Group implements Serializab
pp.add(gid, groups[i]);
}
}
- for (int i = fieldsArray.length - 1; i >= 0; i--)
+ for (ListIterator<Field<?>> i = fields.listIterator(fields.size()); i.hasPrevious();)
{
- fieldsArray[i].removeFromRequest();
+ i.previous().removeFromRequest();
}
}
}
@@ -609,9 +618,9 @@ public class Group implements Serializab
result.append(" key=\"").append(getGID()).append("\"");
result.append(">\n");
- if (fieldsArray != null)
+ if (fields != null)
{
- for (Field<?> field : fieldsArray)
+ for (Field<?> field : fields)
{
result.append(field);
}
@@ -641,11 +650,20 @@ public class Group implements Serializab
public void afterUnmarshal(Unmarshaller um, Object parent)
{
this.parent = (AppData)parent;
+
+ // Build map
+ fieldsByName = new HashMap<String, Field<?>>((int) (1.25 * fields.size() + 1));
+
+ for (Field<?> field : fields)
+ {
+ fieldsByName.put(field.getName(), field);
+ }
+
Map<String, List<Field<?>>> mapToObjectFieldLists =
- new HashMap<String, List<Field<?>>>((int) (1.25 * fieldsArray.length + 1));
+ new HashMap<String, List<Field<?>>>((int) (1.25 * fields.size() + 1));
// Fix fields
- for (Field<?> field : fieldsArray)
+ for (Field<?> field : fields)
{
if (StringUtils.isNotEmpty(field.mapToObject))
{
@@ -656,7 +674,7 @@ public class Group implements Serializab
List<Field<?>> tmpFields = mapToObjectFieldLists.get(field.getMapToObject());
if (tmpFields == null)
{
- tmpFields = new ArrayList<Field<?>>(fieldsArray.length);
+ tmpFields = new ArrayList<Field<?>>(fields.size());
mapToObjectFieldLists.put(field.getMapToObject(), tmpFields);
}
@@ -664,7 +682,7 @@ public class Group implements Serializab
}
// Change the mapToObjectFields values to Field[]
- mapToObjectFields = new HashMap<String, Field<?>[]>((int) (1.25 * fieldsArray.length + 1));
+ mapToObjectFields = new HashMap<String, Field<?>[]>((int) (1.25 * fields.size() + 1));
for (Map.Entry<String, List<Field<?>>> entry : mapToObjectFieldLists.entrySet())
{
@@ -717,9 +735,10 @@ public class Group implements Serializab
Group group = pooledGroup.getObject();
group.oid = null;
group.pp = null;
- for (int i = group.fieldsArray.length - 1; i >= 0; i--)
+ for (ListIterator<Field<?>> i = group.fields.listIterator(group.fields.size());
+ i.hasPrevious();)
{
- group.fieldsArray[i].dispose();
+ i.previous().dispose();
}
group.isDeclared = false;
}
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/IntegerField.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/IntegerField.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/IntegerField.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/IntegerField.java Thu Nov 17 15:03:41 2016
@@ -98,7 +98,7 @@ public class IntegerField
@Override
protected Object getSafeEmptyValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
return new int[0];
}
@@ -126,7 +126,7 @@ public class IntegerField
@Override
protected void doSetValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
Integer[] inputs = parser.getIntObjects(getKey());
int[] values = new int[inputs.length];
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/LongField.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/LongField.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/LongField.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/LongField.java Thu Nov 17 15:03:41 2016
@@ -98,7 +98,7 @@ public class LongField
@Override
protected Object getSafeEmptyValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
return new long[0];
}
@@ -125,7 +125,7 @@ public class LongField
@Override
protected void doSetValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
Long[] inputs = parser.getLongObjects(getKey());
long[] values = new long[inputs.length];
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/ShortField.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/ShortField.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/ShortField.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/ShortField.java Thu Nov 17 15:03:41 2016
@@ -98,7 +98,7 @@ public class ShortField
@Override
protected Object getSafeEmptyValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
return new short[0];
}
@@ -126,7 +126,7 @@ public class ShortField
@Override
protected void doSetValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
Integer[] inputs = parser.getIntObjects(getKey());
short[] values = new short[inputs.length];
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/StringField.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/StringField.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/StringField.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/StringField.java Thu Nov 17 15:03:41 2016
@@ -92,7 +92,7 @@ public class StringField
@Override
protected void doSetValue()
{
- if (isMultiValued)
+ if (isMultiValued())
{
String[] ss = parser.getStrings(getKey());
String[] sval = new String[ss.length];
@@ -118,16 +118,16 @@ public class StringField
@Override
public void setRequired(boolean v, String message)
{
- this.required = v;
+ super.setRequired(v, message);
if (v)
{
- if (isMultiValued)
+ if (isMultiValued())
{
String[] ss = (String[]) getTestValue();
if (ss == null || ss.length == 0)
{
- validFlag = false;
- this.message = message;
+ setValid(false);
+ setMessage(message);
}
else
{
@@ -142,17 +142,17 @@ public class StringField
}
if (!set)
{
- validFlag = false;
- this.message = message;
+ setValid(false);
+ setMessage(message);
}
}
}
else
{
- if (!setFlag || StringUtils.isEmpty((String)getTestValue()))
+ if (!isSet() || StringUtils.isEmpty((String)getTestValue()))
{
- validFlag = false;
- this.message = message;
+ setValid(false);
+ setMessage(message);
}
}
}
Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/XmlField.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/XmlField.java?rev=1770205&r1=1770204&r2=1770205&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/XmlField.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/XmlField.java Thu Nov 17 15:03:41 2016
@@ -23,6 +23,7 @@ import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -93,14 +94,7 @@ public class XmlField
@XmlAttribute
private String emptyValue;
- /**
- * Jaxb set the collection of rules for this field
- *
- * @param rules the rules to set
- */
- @XmlElement(name="rule")
private List<Rule> rules;
-
private Map<String, Rule> ruleMap;
private Group parent;
@@ -112,6 +106,7 @@ public class XmlField
*/
public XmlField()
{
+ rules = new ArrayList<Rule>();
ruleMap = new HashMap<String, Rule>();
}
@@ -269,6 +264,17 @@ public class XmlField
}
/**
+ * Set the collection of rules for this field
+ *
+ * @param rules the rules to set
+ */
+ @XmlElement(name="rule")
+ public void setRules(List<Rule> rules)
+ {
+ this.rules = rules;
+ }
+
+ /**
* The collection of rules for this field keyed by
* parameter name.
*
@@ -288,6 +294,14 @@ public class XmlField
public void afterUnmarshal(Unmarshaller um, Object parent)
{
this.parent = (Group)parent;
+
+ // Build map
+ this.ruleMap.clear();
+ for (Rule rule : rules)
+ {
+ ruleMap.put(rule.getName(), rule);
+ }
+
if (mapToObject == null)
{
// if a mapToProperty exists, set the object to this group's default
Antwort: Re: svn commit: r1770205 - /turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/
Posted by Georg Kallidis <gk...@cedis.fu-berlin.de>.
I tested it with Java 7/8 without errors!
UnMarshalling is neat done this way (in the beans), let the adapter
(unMarshal) keep focused on its own issues ..
+1 (expect)
Best regards, Georg
-----Thomas Vandahl <tv...@apache.org> schrieb: -----
An: dev@turbine.apache.org
Von: Thomas Vandahl <tv...@apache.org>
Datum: 17.11.2016 16:24
Betreff: Re: svn commit: r1770205 -
/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/
Hi folks,
this is my approach for centralizing the post-processing in the JAXB
"magical method" afterUnmarshal(). This works with all JDKs I have
access to (6, 7, 8). I privatized a lot of fields to clean up the
interfaces, while I was at it. Please test and review. I may have missed
something.
Bye, Thomas.
On 17.11.16 16:03, tv@apache.org wrote:
> Author: tv
> Date: Thu Nov 17 15:03:41 2016
> New Revision: 1770205
>
> URL: http://svn.apache.org/viewvc?rev=1770205&view=rev
> Log:
> Move handling of maps to afterUnmarshal() to play nice with Java8
>
> Modified:
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BigDecimalField.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BooleanField.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DateStringField.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DoubleField.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Field.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FieldAdapter.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FileItemField.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FloatField.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Group.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/IntegerField.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/LongField.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/ShortField.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/StringField.java
>
turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/XmlField.java
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@turbine.apache.org
For additional commands, e-mail: dev-help@turbine.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@turbine.apache.org
For additional commands, e-mail: dev-help@turbine.apache.org
Re: svn commit: r1770205 -
/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/
Posted by Thomas Vandahl <tv...@apache.org>.
Hi folks,
this is my approach for centralizing the post-processing in the JAXB
"magical method" afterUnmarshal(). This works with all JDKs I have
access to (6, 7, 8). I privatized a lot of fields to clean up the
interfaces, while I was at it. Please test and review. I may have missed
something.
Bye, Thomas.
On 17.11.16 16:03, tv@apache.org wrote:
> Author: tv
> Date: Thu Nov 17 15:03:41 2016
> New Revision: 1770205
>
> URL: http://svn.apache.org/viewvc?rev=1770205&view=rev
> Log:
> Move handling of maps to afterUnmarshal() to play nice with Java8
>
> Modified:
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BigDecimalField.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/BooleanField.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DateStringField.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/DoubleField.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Field.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FieldAdapter.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FileItemField.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/FloatField.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/Group.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/IntegerField.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/LongField.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/ShortField.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/StringField.java
> turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/model/XmlField.java
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@turbine.apache.org
For additional commands, e-mail: dev-help@turbine.apache.org