List<XMLEntry> values = ((DOMRecord)row).getValuesIndicatingNoEntry(this.getFields());
Object container = getContainerPolicy().containerInstance(values.size());
for(XMLEntry next:values) {
XMLField valueField = next.getXMLField();
DatabaseMapping nextMapping = (DatabaseMapping)this.choiceElementMappings.get(valueField);
Converter converter = getConverter();
if(nextMapping.isAbstractCompositeCollectionMapping()) {
XMLCompositeCollectionMapping xmlMapping = (XMLCompositeCollectionMapping)nextMapping;
Object value = xmlMapping.buildObjectFromNestedRow((AbstractRecord)next.getValue(), joinManager, sourceQuery, executionSession, isTargetProtected);
if(converter != null) {
if (converter instanceof XMLConverter) {
value = ((XMLConverter) converter).convertDataValueToObjectValue(value, executionSession, ((XMLRecord) row).getUnmarshaller());
} else {
value = converter.convertDataValueToObjectValue(value, executionSession);
}
}
getContainerPolicy().addInto(value, container, executionSession);
} else if(nextMapping instanceof XMLCompositeDirectCollectionMapping){
XMLCompositeDirectCollectionMapping xmlMapping = (XMLCompositeDirectCollectionMapping)nextMapping;
Object value = next.getValue();
if(converter != null) {
if (converter instanceof XMLConverter) {
value = ((XMLConverter) converter).convertDataValueToObjectValue(value, executionSession, ((XMLRecord) row).getUnmarshaller());
} else {
value = converter.convertDataValueToObjectValue(value, executionSession);
}
}
getContainerPolicy().addInto(value, container, executionSession);
}
}