Node child = children.item(i);
if (child.getNodeType() == Node.ELEMENT_NODE
&& DATA_STORE_ELEMENT.equals(child.getNodeName())) {
BeanConfig bc = parseBeanConfig(parent, DATA_STORE_ELEMENT);
bc.setValidate(false);
DataStore store = bc.newInstance(DataStore.class);
if (store instanceof MultiDataStore) {
DataStore primary = null;
DataStore archive = null;
NodeList subParamNodes = child.getChildNodes();
for (int x = 0; x < subParamNodes.getLength(); x++) {
Node paramNode = subParamNodes.item(x);
if (paramNode.getNodeType() == Node.ELEMENT_NODE
&& (PRIMARY_DATASTORE_ATTRIBUTE.equals(paramNode.getAttributes().getNamedItem("name").getNodeValue())
|| ARCHIVE_DATASTORE_ATTRIBUTE.equals(paramNode.getAttributes().getNamedItem("name").getNodeValue()))) {
try {
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element newParent = document.createElement("parent");
document.appendChild(newParent);
Element datastoreElement = document.createElement(DATA_STORE_ELEMENT);
newParent.appendChild(datastoreElement);
NodeList childNodes = paramNode.getChildNodes();
for (int y = 0; childNodes.getLength() > y; y++) {
datastoreElement.appendChild(document.importNode(childNodes.item(y), true));
}
NamedNodeMap attributes = paramNode.getAttributes();
for (int z = 0; attributes.getLength() > z; z++) {
Node item = attributes.item(z);
datastoreElement.setAttribute(CLASS_ATTRIBUTE, item.getNodeValue());
}
DataStore subDataStore = getDataStoreFactory(newParent, directory).getDataStore();
if (!MultiDataStoreAware.class.isAssignableFrom(subDataStore.getClass())) {
throw new ConfigurationException("Only MultiDataStoreAware datastore's can be used within a MultiDataStore.");
}
String type = getAttribute((Element) paramNode, NAME_ATTRIBUTE);
if (PRIMARY_DATASTORE_ATTRIBUTE.equals(type)) {
primary = subDataStore;