Skip to content

Commit

Permalink
[WFLY-1634] Properly split out the parsing for attributes specific to…
Browse files Browse the repository at this point in the history
… version 2.0 of the configuration schema.

Also for version 2.0 split out the attribute parsing for http and native interfaces, trying to handle both in the same place was also becomming inconsistant.
  • Loading branch information
darranl committed Jul 3, 2013
1 parent d1626d7 commit 91ca3ee
Show file tree
Hide file tree
Showing 2 changed files with 198 additions and 7 deletions.
Expand Up @@ -462,8 +462,14 @@ public void parseManagementInterfaces(final XMLExtendedStreamReader reader, fina
case DOMAIN_1_0:
parseNativeManagementInterface1_0(reader, address, list);
break;
default:
case DOMAIN_1_1:
case DOMAIN_1_2:
case DOMAIN_1_3:
case DOMAIN_1_4:
parseManagementInterface1_1(reader, address, false, expectedNs, list);
break;
default:
parseManagementInterface2_0(reader, address, false, expectedNs, list);
}
break;
}
Expand All @@ -472,8 +478,14 @@ public void parseManagementInterfaces(final XMLExtendedStreamReader reader, fina
case DOMAIN_1_0:
parseHttpManagementInterface1_0(reader, address, list);
break;
default:
case DOMAIN_1_1:
case DOMAIN_1_2:
case DOMAIN_1_3:
case DOMAIN_1_4:
parseManagementInterface1_1(reader, address, true, expectedNs, list);
break;
default:
parseManagementInterface2_0(reader, address, true, expectedNs, list);
}
break;
}
Expand Down Expand Up @@ -658,6 +670,86 @@ private void parseManagementInterface1_1(XMLExtendedStreamReader reader, ModelNo
list.add(addOp);
}

private void parseHttpManagementInterfaceAttributes2_0(XMLExtendedStreamReader reader, ModelNode addOp) throws XMLStreamException {
final int count = reader.getAttributeCount();
for (int i = 0; i < count; i++) {
final String value = reader.getAttributeValue(i);
if (!isNoNamespaceAttribute(reader, i)) {
throw unexpectedAttribute(reader, i);
} else {
final Attribute attribute = Attribute.forName(reader.getAttributeLocalName(i));
switch (attribute) {
case SECURITY_REALM: {
HttpManagementResourceDefinition.SECURITY_REALM.parseAndSetParameter(value, addOp, reader);
break;
}
case CONSOLE_ENABLED: {
HttpManagementResourceDefinition.CONSOLE_ENABLED.parseAndSetParameter(value, addOp, reader);
break;
}
case HTTP_UPGRADE_ENABLED: {
HttpManagementResourceDefinition.HTTP_UPGRADE_ENABLED.parseAndSetParameter(value, addOp, reader);
break;
}
default:
throw unexpectedAttribute(reader, i);
}
}
}
}

private void parseNativeManagementInterfaceAttributes2_0(XMLExtendedStreamReader reader, ModelNode addOp) throws XMLStreamException {
final int count = reader.getAttributeCount();
for (int i = 0; i < count; i++) {
final String value = reader.getAttributeValue(i);
if (!isNoNamespaceAttribute(reader, i)) {
throw unexpectedAttribute(reader, i);
} else {
final Attribute attribute = Attribute.forName(reader.getAttributeLocalName(i));
switch (attribute) {
case SECURITY_REALM: {
NativeManagementResourceDefinition.SECURITY_REALM.parseAndSetParameter(value, addOp, reader);
break;
}
default:
throw unexpectedAttribute(reader, i);
}
}
}
}

private void parseManagementInterface2_0(XMLExtendedStreamReader reader, ModelNode address, boolean http, Namespace expectedNs, List<ModelNode> list) throws XMLStreamException {

final ModelNode operationAddress = address.clone();
operationAddress.add(MANAGEMENT_INTERFACE, http ? HTTP_INTERFACE : NATIVE_INTERFACE);
final ModelNode addOp = Util.getEmptyOperation(ADD, operationAddress);

// Handle attributes
if (http) {
parseHttpManagementInterfaceAttributes2_0(reader, addOp);
} else {
parseNativeManagementInterfaceAttributes2_0(reader, addOp);
}

// Handle elements
while (reader.hasNext() && reader.nextTag() != END_ELEMENT) {
requireNamespace(reader, expectedNs);
final Element element = Element.forName(reader.getLocalName());
switch (element) {
case SOCKET:
if (http) {
parseHttpManagementSocket(reader, addOp);
} else {
parseNativeManagementSocket(reader, addOp);
}
break;
default:
throw unexpectedElement(reader);
}
}

list.add(addOp);
}
private void parseNativeManagementSocket(XMLExtendedStreamReader reader, ModelNode addOp) throws XMLStreamException {
// Handle attributes
boolean hasInterface = false;
Expand Down
109 changes: 104 additions & 5 deletions server/src/main/java/org/jboss/as/server/parsing/StandaloneXml.java
Expand Up @@ -634,11 +634,29 @@ private void parseManagementInterfaces_1_1(final XMLExtendedStreamReader reader,
final Element element = Element.forName(reader.getLocalName());
switch (element) {
case NATIVE_INTERFACE: {
parseManagementInterface1_1(reader, address, false, expectedNs, list);
switch (expectedNs) { // Will not be 1.0 as this method is called for 1.1 and above.
case DOMAIN_1_1:
case DOMAIN_1_2:
case DOMAIN_1_3:
case DOMAIN_1_4:
parseManagementInterface1_1(reader, address, false, expectedNs, list);
break;
default:
parseManagementInterface2_0(reader, address, false, expectedNs, list);
}
break;
}
case HTTP_INTERFACE: {
parseManagementInterface1_1(reader, address, true, expectedNs, list);
switch (expectedNs) { // Will not be 1.0 as this method is called for 1.1 and above.
case DOMAIN_1_1:
case DOMAIN_1_2:
case DOMAIN_1_3:
case DOMAIN_1_4:
parseManagementInterface1_1(reader, address, true, expectedNs, list);
break;
default:
parseManagementInterface2_0(reader, address, true, expectedNs, list);
}
break;
}
case NATIVE_REMOTING_INTERFACE: {
Expand Down Expand Up @@ -681,17 +699,98 @@ private void parseManagementInterface1_1(XMLExtendedStreamReader reader, ModelNo
}
break;
}
default:
throw unexpectedAttribute(reader, i);
}
}
}

// Handle elements
while (reader.hasNext() && reader.nextTag() != END_ELEMENT) {
requireNamespace(reader, expectedNs);
final Element element = Element.forName(reader.getLocalName());
switch (element) {
case SOCKET:
if (http) {
parseHttpManagementSocket(reader, addOp);
} else {
parseNativeManagementSocket(reader, addOp);
}
break;
case SOCKET_BINDING:
if (http) {
parseHttpManagementSocketBinding(reader, addOp);
} else {
parseNativeManagementSocketBinding(reader, addOp);
}
break;
default:
throw unexpectedElement(reader);
}
}

list.add(addOp);
}

private void parseHttpManagementInterfaceAttributes2_0(XMLExtendedStreamReader reader,ModelNode addOp) throws XMLStreamException {
final int count = reader.getAttributeCount();
for (int i = 0; i < count; i++) {
final String value = reader.getAttributeValue(i);
if (!isNoNamespaceAttribute(reader, i)) {
throw unexpectedAttribute(reader, i);
} else {
final Attribute attribute = Attribute.forName(reader.getAttributeLocalName(i));
switch (attribute) {
case SECURITY_REALM: {
HttpManagementResourceDefinition.SECURITY_REALM.parseAndSetParameter(value, addOp, reader);
break;
}
case CONSOLE_ENABLED: {
HttpManagementResourceDefinition.CONSOLE_ENABLED.parseAndSetParameter(value, addOp, reader);
break;
}
case HTTP_UPGRADE_ENABLED: {
if (http) {
HttpManagementResourceDefinition.HTTP_UPGRADE_ENABLED.parseAndSetParameter(value, addOp, reader);
}
HttpManagementResourceDefinition.HTTP_UPGRADE_ENABLED.parseAndSetParameter(value, addOp, reader);
break;
}
default:
throw unexpectedAttribute(reader, i);
}
}
}
}

private void parseNativeManagementInterfaceAttributes2_0(XMLExtendedStreamReader reader, ModelNode addOp) throws XMLStreamException {
final int count = reader.getAttributeCount();
for (int i = 0; i < count; i++) {
final String value = reader.getAttributeValue(i);
if (!isNoNamespaceAttribute(reader, i)) {
throw unexpectedAttribute(reader, i);
} else {
final Attribute attribute = Attribute.forName(reader.getAttributeLocalName(i));
switch (attribute) {
case SECURITY_REALM: {
NativeManagementResourceDefinition.SECURITY_REALM.parseAndSetParameter(value, addOp, reader);
break;
}
default:
throw unexpectedAttribute(reader, i);
}
}
}
}

private void parseManagementInterface2_0(XMLExtendedStreamReader reader, ModelNode address, boolean http, Namespace expectedNs, List<ModelNode> list) throws XMLStreamException {
final ModelNode operationAddress = address.clone();
operationAddress.add(MANAGEMENT_INTERFACE, http ? HTTP_INTERFACE : NATIVE_INTERFACE);
final ModelNode addOp = Util.getEmptyOperation(ADD, operationAddress);

// Handle attributes
if (http) {
parseHttpManagementInterfaceAttributes2_0(reader, addOp);
} else {
parseNativeManagementInterfaceAttributes2_0(reader, addOp);
}

// Handle elements
while (reader.hasNext() && reader.nextTag() != END_ELEMENT) {
Expand Down

0 comments on commit 91ca3ee

Please sign in to comment.