in src/java/org/apache/fulcrum/intake/model/Group.java [659:698]
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 * fields.size() + 1));
// Fix fields
for (Field<?> field : fields)
{
if (StringUtils.isNotEmpty(field.mapToObject))
{
field.mapToObject = this.parent.getBasePackage() + field.mapToObject;
}
// map fields by their mapToObject
List<Field<?>> tmpFields = mapToObjectFieldLists.computeIfAbsent(
field.getMapToObject(),
k -> new ArrayList<Field<?>>(fields.size()));
tmpFields.add(field);
}
// Change the mapToObjectFields values to Field[]
mapToObjectFields = new HashMap<String, Field<?>[]>((int) (1.25 * fields.size() + 1));
for (Map.Entry<String, List<Field<?>>> entry : mapToObjectFieldLists.entrySet())
{
mapToObjectFields.put(entry.getKey(),
entry.getValue().toArray(new Field[entry.getValue().size()]));
}
}