package com.awsle.aibatis.xml.engine.converters.collections; import com.awsle.aibatis.xml.engine.alias.ClassMapper; import com.awsle.aibatis.xml.engine.converters.ConverterLookup; import com.awsle.aibatis.xml.engine.objecttree.ObjectTree; import com.awsle.aibatis.xml.engine.xml.XMLReader; import com.awsle.aibatis.xml.engine.xml.XMLWriter; import java.lang.reflect.Array; public class ArrayConverter extends AbstractCollectionConverter { public ArrayConverter(ClassMapper classMapper) { super(classMapper); } public boolean canConvert(Class type) { return type.isArray(); } public void toXML(ObjectTree objectGraph, XMLWriter xmlWriter, ConverterLookup converterLookup) { Object array = objectGraph.get(); int length = Array.getLength(array); for (int i = 0; i < length; i++) { Object item = Array.get(array, i); writeItem(item, xmlWriter, converterLookup, objectGraph); } } public void fromXML(ObjectTree objectGraph, XMLReader xmlReader, ConverterLookup converterLookup, Class requiredType) { int size = xmlReader.childCount(); Class type = classMapper.lookupType(xmlReader.name()); Object array = Array.newInstance(type.getComponentType(), size); for (int i = 0; i < size; i++) { Object item = readItem(xmlReader, i, objectGraph, converterLookup); Array.set(array, i, item); } objectGraph.set(array); } }