@SuppressWarnings("deprecation") private void parseJDBCStore( XMLExtendedStreamReader reader, ModelNode cache, List<ModelNode> operations) throws XMLStreamException { // ModelNode for the store add operation ModelNode storeAddress = cache.get(ModelDescriptionConstants.OP_ADDR).clone(); // we can't determine the full address until we know which tables are present ModelNode store = Util.getEmptyOperation(ModelDescriptionConstants.ADD, null); for (int i = 0; i < reader.getAttributeCount(); i++) { String value = reader.getAttributeValue(i); Attribute attribute = Attribute.forName(reader.getAttributeLocalName(i)); switch (attribute) { case DATASOURCE: { CommonAttributes.DATA_SOURCE.parseAndSetParameter(value, store, reader); break; } default: { this.parseStoreAttribute(reader, i, attribute, value, store); } } } if (!store.hasDefined(ModelKeys.DATASOURCE)) { throw ParseUtils.missingRequired(reader, EnumSet.of(Attribute.DATASOURCE)); } while (reader.hasNext() && (reader.nextTag() != XMLStreamConstants.END_ELEMENT)) { Element element = Element.forName(reader.getLocalName()); switch (element) { case ENTRY_TABLE: { this.parseJDBCStoreTable( reader, store.get(ModelKeys.STRING_KEYED_TABLE).setEmptyObject()); break; } case BUCKET_TABLE: { this.parseJDBCStoreTable( reader, store.get(ModelKeys.BINARY_KEYED_TABLE).setEmptyObject()); break; } default: { this.parseStoreProperty(reader, store); } } } // we determine the store address by the presence / absence of tables boolean isStringTableDefined = store.get(ModelKeys.STRING_KEYED_TABLE).isDefined(); boolean isBinaryTableDefined = store.get(ModelKeys.BINARY_KEYED_TABLE).isDefined(); // if no tables are defined, we default to mixed store if (isStringTableDefined && !isBinaryTableDefined) { storeAddress.add(ModelKeys.STRING_KEYED_JDBC_STORE, ModelKeys.STRING_KEYED_JDBC_STORE_NAME); storeAddress.protect(); } else if (!isStringTableDefined && isBinaryTableDefined) { storeAddress.add(ModelKeys.BINARY_KEYED_JDBC_STORE, ModelKeys.BINARY_KEYED_JDBC_STORE_NAME); storeAddress.protect(); } else { storeAddress.add(ModelKeys.MIXED_KEYED_JDBC_STORE, ModelKeys.MIXED_KEYED_JDBC_STORE_NAME); storeAddress.protect(); } // set the address store.get(OP_ADDR).set(storeAddress); operations.add(store); }