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);
|
}
|
|
|
}
|