Skip to content

Commit

Permalink
[WFCORE-5234] Avoid ModelNode.asPropertyList() in high level datasour…
Browse files Browse the repository at this point in the history
…ce marshaling
  • Loading branch information
bstansberry committed Aug 31, 2015
1 parent 5d730f3 commit 0aa770b
Showing 1 changed file with 21 additions and 19 deletions.
Expand Up @@ -111,9 +111,10 @@
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP_ADDR;
import static org.jboss.as.controller.parsing.ParseUtils.requireNoContent;

import java.util.List;

import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import java.util.List;

import org.jboss.as.controller.Extension;
import org.jboss.as.controller.ExtensionContext;
Expand Down Expand Up @@ -208,34 +209,35 @@ public void writeContent(XMLExtendedStreamWriter writer, SubsystemMarshallingCon
writer.writeStartElement(DATASOURCES);

if (node.hasDefined(DATA_SOURCE) || node.hasDefined(XA_DATASOURCE)) {
boolean isXADataSource = false;

if (node.hasDefined(DATA_SOURCE)) {
writeDS(writer, false, node.get(DATA_SOURCE).asPropertyList());
writeDS(writer, false, node.get(DATA_SOURCE));
}
if (node.hasDefined(XA_DATASOURCE)) {
writeDS(writer, true, node.get(XA_DATASOURCE).asPropertyList());
writeDS(writer, true, node.get(XA_DATASOURCE));
}

}

if (node.hasDefined(JDBC_DRIVER_NAME)) {
writer.writeStartElement(DataSources.Tag.DRIVERS.getLocalName());
for (Property driverProperty : node.get(JDBC_DRIVER_NAME).asPropertyList()) {
ModelNode drivers = node.get(JDBC_DRIVER_NAME);
for (String driverName : drivers.keys()) {
ModelNode driver = drivers.get(driverName);
writer.writeStartElement(DataSources.Tag.DRIVER.getLocalName());
writer.writeAttribute(Driver.Attribute.NAME.getLocalName(), driverProperty.getValue().require(DRIVER_NAME.getName()).asString());
if (has(driverProperty.getValue(), DRIVER_MODULE_NAME.getName())) {
String moduleName = driverProperty.getValue().get(DRIVER_MODULE_NAME.getName()).asString();
if (has(driverProperty.getValue(), MODULE_SLOT.getName())) {
moduleName = moduleName + ":" + driverProperty.getValue().get(MODULE_SLOT.getName()).asString();
writer.writeAttribute(Driver.Attribute.NAME.getLocalName(), driver.require(DRIVER_NAME.getName()).asString());
if (has(driver, DRIVER_MODULE_NAME.getName())) {
String moduleName = driver.get(DRIVER_MODULE_NAME.getName()).asString();
if (has(driver, MODULE_SLOT.getName())) {
moduleName = moduleName + ":" + driver.get(MODULE_SLOT.getName()).asString();
}
writer.writeAttribute(Driver.Attribute.MODULE.getLocalName(), moduleName);
}
writeAttributeIfHas(writer, driverProperty.getValue(), Driver.Attribute.MAJOR_VERSION, DRIVER_MAJOR_VERSION.getName());
writeAttributeIfHas(writer, driverProperty.getValue(), Driver.Attribute.MINOR_VERSION, DRIVER_MINOR_VERSION.getName());
writeElementIfHas(writer, driverProperty.getValue(), Driver.Tag.DRIVER_CLASS.getLocalName(), DRIVER_CLASS_NAME.getName());
writeElementIfHas(writer, driverProperty.getValue(), Driver.Tag.XA_DATASOURCE_CLASS.getLocalName(), DRIVER_XA_DATASOURCE_CLASS_NAME.getName());
writeElementIfHas(writer, driverProperty.getValue(), Driver.Tag.DATASOURCE_CLASS.getLocalName(), DRIVER_DATASOURCE_CLASS_NAME.getName());
writeAttributeIfHas(writer, driver, Driver.Attribute.MAJOR_VERSION, DRIVER_MAJOR_VERSION.getName());
writeAttributeIfHas(writer, driver, Driver.Attribute.MINOR_VERSION, DRIVER_MINOR_VERSION.getName());
writeElementIfHas(writer, driver, Driver.Tag.DRIVER_CLASS.getLocalName(), DRIVER_CLASS_NAME.getName());
writeElementIfHas(writer, driver, Driver.Tag.XA_DATASOURCE_CLASS.getLocalName(), DRIVER_XA_DATASOURCE_CLASS_NAME.getName());
writeElementIfHas(writer, driver, Driver.Tag.DATASOURCE_CLASS.getLocalName(), DRIVER_DATASOURCE_CLASS_NAME.getName());

writer.writeEndElement();
}
Expand All @@ -246,15 +248,15 @@ public void writeContent(XMLExtendedStreamWriter writer, SubsystemMarshallingCon
writer.writeEndElement();
}

private void writeDS(XMLExtendedStreamWriter writer, boolean isXADataSource, List<Property> propertyList) throws XMLStreamException {
for (Property property : propertyList) {
final ModelNode dataSourceNode = property.getValue();
private void writeDS(XMLExtendedStreamWriter writer, boolean isXADataSource, ModelNode datasources) throws XMLStreamException {
for (String dsName : datasources.keys()) {
final ModelNode dataSourceNode = datasources.get(dsName);

writer.writeStartElement(isXADataSource ? DataSources.Tag.XA_DATASOURCE.getLocalName()
: DataSources.Tag.DATASOURCE.getLocalName());
JTA.marshallAsAttribute(dataSourceNode, writer);
JNDI_NAME.marshallAsAttribute(dataSourceNode, writer);
writer.writeAttribute("pool-name", property.getName());
writer.writeAttribute("pool-name", dsName);
ENABLED.marshallAsAttribute(dataSourceNode, writer);
USE_JAVA_CONTEXT.marshallAsAttribute(dataSourceNode, writer);
SPY.marshallAsAttribute(dataSourceNode, writer);
Expand Down

0 comments on commit 0aa770b

Please sign in to comment.