Skip to content

Commit

Permalink
ISPN-6858 Refactor endpoint parser to a single class
Browse files Browse the repository at this point in the history
  • Loading branch information
tristantarrant authored and Sebastian Laskawiec committed Jul 26, 2016
1 parent d977a6e commit b0b8b95
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 1,161 deletions.
Expand Up @@ -18,19 +18,14 @@
*/
package org.infinispan.server.endpoint.subsystem;

import java.util.List;

import org.infinispan.server.endpoint.Constants;
import org.jboss.as.controller.Extension;
import org.jboss.as.controller.ExtensionContext;
import org.jboss.as.controller.SubsystemRegistration;
import org.jboss.as.controller.descriptions.ResourceDescriptionResolver;
import org.jboss.as.controller.parsing.ExtensionParsingContext;
import org.jboss.dmr.ModelNode;
import org.jboss.staxmapper.XMLElementReader;
import org.kohsuke.MetaInfServices;


/**
* @author <a href="http://gleamynode.net/">Trustin Lee</a>
* @author Tristan Tarrant
Expand All @@ -44,10 +39,6 @@ public class EndpointExtension implements Extension {
private static final String RESOURCE_NAME = EndpointExtension.class.getPackage().getName() + ".LocalDescriptions";

static ResourceDescriptionResolver getResourceDescriptionResolver(String keyPrefix) {
/*StringBuilder prefix = new StringBuilder(Constants.SUBSYSTEM_NAME);
for (String kp : keyPrefix) {
prefix.append('.').append(kp);
}*/
return new SharedResourceDescriptionResolver(keyPrefix, RESOURCE_NAME, EndpointExtension.class.getClassLoader(), true, true, null);
}

Expand All @@ -63,11 +54,8 @@ public final void initialize(ExtensionContext context) {

@Override
public void initializeParsers(ExtensionParsingContext context) {
for (Namespace namespace: Namespace.values()) {
XMLElementReader<List<ModelNode>> reader = namespace.getXMLReader();
if (reader != null) {
context.setSubsystemXmlMapping(Constants.SUBSYSTEM_NAME, namespace.getUri(), reader);
}
}
for (Namespace namespace : Namespace.values()) {
context.setSubsystemXmlMapping(Constants.SUBSYSTEM_NAME, namespace.getUri(), new EndpointSubsystemReader(namespace));
}
}
}
Expand Up @@ -43,8 +43,12 @@
* @author Tristan Tarrant
*
*/
class EndpointSubsystemReader_9_0 implements XMLStreamConstants, XMLElementReader<List<ModelNode>> {
public static final XMLElementReader<List<ModelNode>> INSTANCE = new EndpointSubsystemReader_9_0();
class EndpointSubsystemReader implements XMLStreamConstants, XMLElementReader<List<ModelNode>> {
private final Namespace namespace;

EndpointSubsystemReader(Namespace namespace) {
this.namespace = namespace;
}

@Override
public void readElement(final XMLExtendedStreamReader reader, final List<ModelNode> operations)
Expand Down Expand Up @@ -166,7 +170,11 @@ private String parseConnectorAttributes(XMLExtendedStreamReader reader, ModelNod
String value, Attribute attribute) throws XMLStreamException {
switch (attribute) {
case IGNORED_CACHES: {
reader.getListAttributeValue(i).forEach(a -> connector.get(ModelKeys.IGNORED_CACHES).add(a));
if (namespace.since(Namespace.INFINISPAN_ENDPOINT_8_0)) {
reader.getListAttributeValue(i).forEach(a -> connector.get(ModelKeys.IGNORED_CACHES).add(a));
} else {
throw ParseUtils.unexpectedAttribute(reader, i);
}
break;
}
case CACHE_CONTAINER: {
Expand Down Expand Up @@ -258,7 +266,11 @@ private void parseRestConnector(XMLExtendedStreamReader reader, PathAddress subs
break;
}
case IGNORED_CACHES: {
reader.getListAttributeValue(i).forEach(a -> connector.get(ModelKeys.IGNORED_CACHES).add(a));
if (namespace.since(Namespace.INFINISPAN_ENDPOINT_8_0)) {
reader.getListAttributeValue(i).forEach(a -> connector.get(ModelKeys.IGNORED_CACHES).add(a));
} else {
throw ParseUtils.unexpectedAttribute(reader, i);
}
break;
}
default: {
Expand Down Expand Up @@ -569,8 +581,10 @@ private void parseEncryption(XMLExtendedStreamReader reader, ModelNode connector
final Element element = Element.forName(reader.getLocalName());
switch (element) {
case SNI: {
parseSni(reader, security, operations);
break;
if (namespace.since(Namespace.INFINISPAN_ENDPOINT_9_0)) {
parseSni(reader, security, operations);
break;
}
}
default: {
throw ParseUtils.unexpectedElement(reader);
Expand Down

0 comments on commit b0b8b95

Please sign in to comment.