private void readProperties(final PropertiesAttributeDefinition attrDef, ModelNode addOp, final XMLExtendedStreamReader reader) throws XMLStreamException { while (nextTag(reader) != END_ELEMENT) { int attrCount = reader.getAttributeCount(); if (attrCount != 2) throw new XMLStreamException("Property must have only two attributes"); String name = ""; String value = ""; for (int i=0 ; i < 2; i++) { String attrName = reader.getAttributeLocalName(i); String attrValue = reader.getAttributeValue(i); if (attrName.equals("name")) { name = attrValue; } else if (attrName.equals("value")) { value = attrValue; } else { throw new XMLStreamException("Property can only have attributes named 'name' and 'value'"); } } attrDef.parseAndAddParameterElement(name, value, addOp, reader); nextTag(reader); } }
private void readProviders(final XMLExtendedStreamReader reader, ModelNode addKeycloakSub) throws XMLStreamException { while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { PROVIDERS.parseAndAddParameterElement(reader.getElementText(),addKeycloakSub, reader); } }
private void readModules(final XMLExtendedStreamReader reader, ModelNode addThemeDefaults) throws XMLStreamException { while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { MODULES.parseAndAddParameterElement(reader.getElementText(),addThemeDefaults, reader); } }
private void readProvider(final List<ModelNode> list, String spiName, final XMLExtendedStreamReader reader) throws XMLStreamException { String[] attributes = ParseUtils.requireAttributes(reader, "name", ENABLED.getXmlName()); String providerName = attributes[0]; String enabled = attributes[1]; ModelNode addProvider = new ModelNode(); addProvider.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), PathElement.pathElement(SpiResourceDefinition.TAG_NAME, spiName), PathElement.pathElement(ProviderResourceDefinition.TAG_NAME, providerName)); addProvider.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); addProvider.get(ENABLED.getName()).set(Boolean.valueOf(enabled)); list.add(addProvider); while (nextTag(reader) != END_ELEMENT) { if (reader.getLocalName().equals(PROPERTIES.getXmlName())) { readProperties(PROPERTIES, addProvider, reader); } } }
private void readSpi(final List<ModelNode> list, final XMLExtendedStreamReader reader) throws XMLStreamException { String spiName = ParseUtils.requireAttributes(reader, "name")[0]; ModelNode addSpi = new ModelNode(); addSpi.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), PathElement.pathElement(SpiResourceDefinition.TAG_NAME, spiName)); addSpi.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); list.add(addSpi); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { if (reader.getLocalName().equals(DEFAULT_PROVIDER.getXmlName())) { DEFAULT_PROVIDER.parseAndSetParameter(reader.getElementText(), addSpi, reader); } else if (reader.getLocalName().equals(ProviderResourceDefinition.TAG_NAME)) { readProvider(list, spiName, reader); } } }
private void readTheme(final List<ModelNode> list, final XMLExtendedStreamReader reader) throws XMLStreamException { ModelNode addThemeDefaults = new ModelNode(); addThemeDefaults.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), PathElement.pathElement(ThemeResourceDefinition.TAG_NAME, ThemeResourceDefinition.RESOURCE_NAME)); addThemeDefaults.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); list.add(addThemeDefaults); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String tagName = reader.getLocalName(); if (MODULES.getName().equals(tagName)) { readModules(reader, addThemeDefaults); continue; } SimpleAttributeDefinition def = KeycloakExtension.THEME_DEFINITION.lookup(tagName); if (def == null) throw new XMLStreamException("Unknown theme tag " + tagName); def.parseAndSetParameter(reader.getElementText(), addThemeDefaults, reader); } }
/** * {@inheritDoc} */ @Override public void readElement(final XMLExtendedStreamReader reader, final List<ModelNode> list) throws XMLStreamException { // Require no attributes ParseUtils.requireNoAttributes(reader); ModelNode addKeycloakSub = Util.createAddOperation(PathAddress.pathAddress(PATH_SUBSYSTEM)); list.add(addKeycloakSub); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { if (reader.getLocalName().equals(WEB_CONTEXT.getXmlName())) { WEB_CONTEXT.parseAndSetParameter(reader.getElementText(), addKeycloakSub, reader); } else { throw new XMLStreamException("Unknown keycloak-server subsystem tag: " + reader.getLocalName()); } } }
/** * {@inheritDoc} */ @Override public void readElement(final XMLExtendedStreamReader reader, final List<ModelNode> list) throws XMLStreamException { // Require no attributes ParseUtils.requireNoAttributes(reader); ModelNode addKeycloakSub = Util.createAddOperation(PathAddress.pathAddress(PATH_SUBSYSTEM)); list.add(addKeycloakSub); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { if (reader.getLocalName().equals(WEB_CONTEXT.getXmlName())) { WEB_CONTEXT.parseAndSetParameter(reader.getElementText(), addKeycloakSub, reader); } else if (reader.getLocalName().equals(PROVIDERS.getXmlName())) { readProviders(reader, addKeycloakSub); } else if (reader.getLocalName().equals(MASTER_REALM_NAME.getXmlName())) { MASTER_REALM_NAME.parseAndSetParameter(reader.getElementText(), addKeycloakSub, reader); } else if (reader.getLocalName().equals(SCHEDULED_TASK_INTERVAL.getXmlName())) { SCHEDULED_TASK_INTERVAL.parseAndSetParameter(reader.getElementText(), addKeycloakSub, reader); } else if (reader.getLocalName().equals(ThemeResourceDefinition.TAG_NAME)) { readTheme(list, reader); } else if (reader.getLocalName().equals(SpiResourceDefinition.TAG_NAME)) { readSpi(list, reader); } else { throw new XMLStreamException("Unknown keycloak-server subsystem tag: " + reader.getLocalName()); } } }