org.jboss.as.ee.structure.EJBClientDescriptor14Parser Maven / Gradle / Ivy
/*
* Copyright The WildFly Authors
* SPDX-License-Identifier: Apache-2.0
*/
package org.jboss.as.ee.structure;
import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
import java.util.EnumSet;
import java.util.Set;
import javax.xml.stream.XMLStreamException;
import org.jboss.as.ee.metadata.EJBClientDescriptorMetaData;
import org.jboss.metadata.property.PropertyReplacer;
import org.jboss.staxmapper.XMLExtendedStreamReader;
/**
* Parser for urn:jboss:ejb-client:1.4:jboss-ejb-client
*
* @author Tomasz Adamski
*/
class EJBClientDescriptor14Parser extends EJBClientDescriptor13Parser {
public static final String NAMESPACE_1_4 = "urn:jboss:ejb-client:1.4";
protected EJBClientDescriptor14Parser(final PropertyReplacer propertyReplacer) {
super(propertyReplacer);
}
protected void parseClientContext(final XMLExtendedStreamReader reader,
final EJBClientDescriptorMetaData ejbClientDescriptorMetaData) throws XMLStreamException {
final int count = reader.getAttributeCount();
for (int i = 0; i < count; i++) {
final EJBClientDescriptorXMLAttribute attribute = EJBClientDescriptorXMLAttribute.forName(reader
.getAttributeLocalName(i));
final String value = readResolveValue(reader, i);
switch (attribute) {
case INVOCATION_TIMEOUT:
final Long invocationTimeout = Long.parseLong(value);
ejbClientDescriptorMetaData.setInvocationTimeout(invocationTimeout);
break;
case DEPLOYMENT_NODE_SELECTOR:
final String deploymentNodeSelector = readResolveValue(reader, i);
ejbClientDescriptorMetaData.setDeploymentNodeSelector(deploymentNodeSelector);
break;
case DEFAULT_COMPRESSION:
final Integer defaultRequestCompression = Integer.parseInt(value);
ejbClientDescriptorMetaData.setDefaultCompression(defaultRequestCompression);
break;
default:
unexpectedContent(reader);
}
}
final Set visited = EnumSet.noneOf(EJBClientDescriptorXMLElement.class);
while (reader.hasNext()) {
switch (reader.nextTag()) {
case END_ELEMENT: {
return;
}
case START_ELEMENT: {
final EJBClientDescriptorXMLElement element = EJBClientDescriptorXMLElement.forName(reader.getLocalName());
if (visited.contains(element)) {
unexpectedElement(reader);
}
visited.add(element);
switch (element) {
case EJB_RECEIVERS:
this.parseEJBReceivers(reader, ejbClientDescriptorMetaData);
break;
case HTTP_CONNECTIONS:
this.parseHttpConnections(reader, ejbClientDescriptorMetaData);
break;
case CLUSTERS:
this.parseClusters(reader, ejbClientDescriptorMetaData);
break;
case PROFILE:
this.parseProfile(reader, ejbClientDescriptorMetaData);
break;
default:
unexpectedElement(reader);
}
break;
}
default: {
unexpectedContent(reader);
}
}
}
unexpectedEndOfDocument(reader.getLocation());
}
protected void parseHttpConnections(final XMLExtendedStreamReader reader, final EJBClientDescriptorMetaData ejbClientDescriptorMetaData) throws XMLStreamException {
while (reader.hasNext()) {
switch (reader.nextTag()) {
case END_ELEMENT: {
return;
}
case START_ELEMENT: {
final EJBClientDescriptorXMLElement element = EJBClientDescriptorXMLElement.forName(reader.getLocalName());
switch (element) {
case HTTP_CONNECTION:
this.parseHttpConnection(reader, ejbClientDescriptorMetaData);
break;
default:
unexpectedElement(reader);
}
break;
}
default: {
unexpectedContent(reader);
}
}
}
unexpectedEndOfDocument(reader.getLocation());
}
protected void parseHttpConnection(final XMLExtendedStreamReader reader,
final EJBClientDescriptorMetaData ejbClientDescriptorMetaData) throws XMLStreamException {
String uri = null;
final Set required = EnumSet.of(EJBClientDescriptorXMLAttribute.URI);
final int count = reader.getAttributeCount();
for (int i = 0; i < count; i++) {
final EJBClientDescriptorXMLAttribute attribute = EJBClientDescriptorXMLAttribute.forName(reader
.getAttributeLocalName(i));
required.remove(attribute);
final String value = readResolveValue(reader, i);
switch (attribute) {
case URI:
uri = value;
break;
default:
unexpectedContent(reader);
}
}
if (!required.isEmpty()) {
missingAttributes(reader.getLocation(), required);
}
requireNoContent(reader);
ejbClientDescriptorMetaData.addHttpConnectionRef(uri);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy