package org.jboss.as.undertow;
import java.util.List;
import javax.xml.stream.XMLStreamException;
import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.PathAddress;
import org.jboss.as.controller.ReloadRequiredRemoveStepHandler;
import org.jboss.as.controller.ReloadRequiredWriteAttributeHandler;
import org.jboss.as.controller.SimplePersistentResourceDefinition;
import org.jboss.as.controller.registry.ManagementResourceRegistration;
import org.jboss.dmr.ModelNode;
import org.jboss.staxmapper.XMLExtendedStreamReader;
import org.jboss.staxmapper.XMLExtendedStreamWriter;
/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2013 Red Hat Inc.
*/
class LocationDefinition extends SimplePersistentResourceDefinition {
static final LocationDefinition INSTANCE = new LocationDefinition();
private LocationDefinition() {
super(UndertowExtension.PATH_LOCATION,
UndertowExtension.getResolver(Constants.HOST, Constants.LOCATION),
LocationAdd.INSTANCE,
ReloadRequiredRemoveStepHandler.INSTANCE
);
}
@Override
public AttributeDefinition[] getAttributes() {
return new AttributeDefinition[0];
}
@Override
public void registerAttributes(ManagementResourceRegistration resourceRegistration) {
ReloadRequiredWriteAttributeHandler writer = new ReloadRequiredWriteAttributeHandler(getAttributes());
for (AttributeDefinition attr : getAttributes()) {
resourceRegistration.registerReadWriteAttribute(attr, null, writer);
}
}
@Override
public void registerChildren(ManagementResourceRegistration resourceRegistration) {
super.registerChildren(resourceRegistration);
for (Handler handler : HandlerFactory.getHandlers()) {
resourceRegistration.registerSubModel(handler);
}
}
@Override
public void parseChildren(XMLExtendedStreamReader reader, PathAddress parentAddress, List<ModelNode> list) throws XMLStreamException {
HandlerFactory.parseHandlers(reader, parentAddress, list);
}
@Override
public void persistChildren(XMLExtendedStreamWriter writer, ModelNode model) throws XMLStreamException {
HandlerFactory.persistHandlers(writer, model, false);
}
}