* @return parsed list
*/
protected SimpleEntry<String, List<Object>> preparePropertyList(PropertyList property,
PropertyDefinitionList propertyDefinition) {
PropertyDefinition memberDef = propertyDefinition.getMemberDefinition();
List<Property> embeddedProps = property.getList();
String propertyName = property.getName();
if (propertyName.endsWith(":nullable")) {
propertyName = propertyName.substring(0, propertyName.indexOf(":nullable"));
if (embeddedProps.isEmpty()) {
return new SimpleEntry<String, List<Object>>(propertyName, null);
}
}
List<Object> values = new ArrayList<Object>();
for (Property inner : embeddedProps) {
if (memberDef instanceof PropertyDefinitionSimple) {
PropertySimple ps = (PropertySimple) inner;
if (ps.getStringValue() != null)
values.add(ps.getStringValue()); // TODO handling of optional vs required
}
if (memberDef instanceof PropertyDefinitionMap) {
Map<String, Object> mapResult = null;
if (memberDef.getName().endsWith(":collapsed")) {
mapResult = prepareCollapsedPropertyMap((PropertyMap) inner, (PropertyDefinitionMap) memberDef);
} else {
mapResult = prepareSimplePropertyMap((PropertyMap) inner, (PropertyDefinitionMap) memberDef);
}
values.add(mapResult);