@Override public void transformResource(ResourceTransformationContext context, PathAddress address, Resource resource) throws OperationFailedException { Resource untransformedResource = context.readResource(PathAddress.EMPTY_ADDRESS); ModelNode untransformedModel = Resource.Tools.readModel(untransformedResource); String defaultDataStore = untransformedModel.get(TimerServiceResourceDefinition.DEFAULT_DATA_STORE.getName()).asString(); ModelNode transformed = resource.getModel(); transformed.remove(TimerServiceResourceDefinition.DEFAULT_DATA_STORE.getName()); ModelNode fileStore = untransformedModel.get(EJB3SubsystemModel.FILE_DATA_STORE, defaultDataStore); if (!fileStore.isDefined()) {//happens where default is not file-store rejectIncompatibleDataStores(context, address); } else if ((untransformedModel.hasDefined(EJB3SubsystemModel.DATABASE_DATA_STORE) && untransformedModel.get(EJB3SubsystemModel.DATABASE_DATA_STORE).keys().size() > 0) || untransformedModel.get(EJB3SubsystemModel.FILE_DATA_STORE).keys().size() > 1) { rejectIncompatibleDataStores(context, address); } ModelNode path = fileStore.get(EJB3SubsystemModel.PATH); transformed.get(EJB3SubsystemModel.PATH).set(path); transformed.get(EJB3SubsystemModel.RELATIVE_TO).set(fileStore.get(EJB3SubsystemModel.RELATIVE_TO)); context.addTransformedResource(PathAddress.EMPTY_ADDRESS, resource); //do not process children! }
private void writeTLSEntity(final XMLExtendedStreamWriter writer, final ModelNode modelNode, final String tlsEntityName) throws XMLStreamException { if (modelNode.hasDefined(tlsEntityName)) { ModelNode tlsEntities = modelNode.require(tlsEntityName); for (String entityName : tlsEntities.keys()) { writer.writeStartElement(tlsEntityName); writer.writeAttribute(NAME, entityName); LEGACY_JSSE_CONFIG.marshallAsAttribute(tlsEntities.require(entityName), writer); writer.writeEndElement(); } } } }
private void writeSecurityDomainContent(XMLExtendedStreamWriter writer, ModelNode policyDetails) throws XMLStreamException { Set<String> keys = policyDetails.keys(); keys.remove(NAME); keys.remove(CACHE_TYPE); switch (element) { case AUTHENTICATION: { ModelNode kind = policyDetails.get(AUTHENTICATION); for (Property prop : kind.asPropertyList()) { if (CLASSIC.equals(prop.getName())) { writeAuthorization(writer, policyDetails.get(AUTHORIZATION, CLASSIC)); break; writeACL(writer, policyDetails.get(ACL, CLASSIC)); break;
ModelNode originalSubsystemModel = services.readWholeModel().get(JGroupsSubsystemResourceDefinition.PATH.getKeyValuePair()); ModelNode originalChannelModel = originalSubsystemModel.get(ChannelResourceDefinition.pathElement("ee").getKeyValuePair()); ModelNode originalForkModel = originalChannelModel.get(ForkResourceDefinition.pathElement("web").getKeyValuePair()); Assert.assertTrue(originalForkModel.isDefined()); originalForkModel.protect(); Assert.assertTrue(0 < originalForkModel.get(ProtocolResourceDefinition.WILDCARD_PATH.getKey()).keys().size()); ModelNode originalStackModel = originalSubsystemModel.get(StackResourceDefinition.pathElement("maximal").getKeyValuePair()); Assert.assertTrue(originalStackModel.isDefined()); originalStackModel.protect(); ModelNode forkModel = channelModel.get(ForkResourceDefinition.pathElement("web").getKeyValuePair()); Assert.assertEquals(originalForkModel.keys().size() + 1, forkModel.get(ProtocolResourceDefinition.WILDCARD_PATH.getKey()).keys().size()); Assert.assertEquals("MERGE3", forkModel.get(ProtocolResourceDefinition.WILDCARD_PATH.getKey()).keys().iterator().next());
@Override protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, ModelNode resolvedValue, ModelNode currentValue, HandbackHolder<AgroalConnectionPoolConfiguration> handbackHolder) throws OperationFailedException { ModelNode newBlockingTimeout = resolvedValue.remove(AbstractDataSourceDefinition.BLOCKING_TIMEOUT_MILLIS_ATTRIBUTE.getName()); ModelNode newMaxSize = resolvedValue.remove(AbstractDataSourceDefinition.MAX_SIZE_ATTRIBUTE.getName()); ModelNode newMinSize = resolvedValue.remove(AbstractDataSourceDefinition.MIN_SIZE_ATTRIBUTE.getName()); for (String attribute : resolvedValue.keys()) { if (!currentValue.hasDefined(attribute) || !resolvedValue.get(attribute).equals(currentValue.get(attribute))) { // Other attributes changed. Restart required return true; } } if (newBlockingTimeout != null) { getDataSource(context).getConfiguration().connectionPoolConfiguration().setAcquisitionTimeout(Duration.ofMillis(newBlockingTimeout.asInt())); } if (newMaxSize != null) { getDataSource(context).getConfiguration().connectionPoolConfiguration().setMaxSize(newMaxSize.asInt()); // if max-size decreases Agroal will gracefully destroy connections when they are returned to the pool, so there is nothing to do here } if (newMinSize != null) { getDataSource(context).getConfiguration().connectionPoolConfiguration().setMinSize(newMinSize.asInt()); // if min-size increases Agroal will create new connections when looking into the (shared) pool. FlushMode.FILL could be used here to enforce the new min-size } return false; }
public static Map<String, String> readConfiguration(ModelControllerClient client, String pid) throws Exception { ModelNode op = createOpNode("subsystem=configadmin/configuration=" + pid, ModelDescriptionConstants.READ_RESOURCE_OPERATION); ModelNode result = executeOperation(client, op, true); ModelNode entries = result.get("entries"); Map<String, String> map = new HashMap<String, String>(); for (String key : entries.keys()) { map.put(key, entries.get(key).asString()); } return map; }
public void writeExtensions(final XMLExtendedStreamWriter writer, final ModelNode modelNode) throws XMLStreamException { Set<String> keys = modelNode.keys(); if (keys.size() > 0) { writer.writeStartElement(Element.EXTENSIONS.getLocalName()); for (final String extension : keys) { writer.writeEmptyElement(Element.EXTENSION.getLocalName()); writer.writeAttribute(Attribute.MODULE.getLocalName(), extension); } writer.writeEndElement(); } }
private void checkActualOperationParamsAreDescribed(final ModelNode operation, final Map<String, ModelNode> describedProperties, final Map<String, ModelNode> actualParams) { for (String paramName : actualParams.keySet()) { final ModelNode param = actualParams.get(paramName); if(! param.isDefined()) { continue; } if(param.getType() == ModelType.OBJECT && param.keys().isEmpty()) { return; } if (!describedProperties.containsKey(paramName)) { throw ControllerLogger.ROOT_LOGGER.validationFailedActualParameterNotDescribed(paramName, describedProperties.keySet(), formatOperationForMessage(operation)); } } }
private void validateAttributeOrParameter(AttributeValidationElement validationElement, ModelNode rawDescription) { boolean reply = validationElement.name.equals(REPLY_PROPERTIES); if (!rawDescription.hasDefined(DESCRIPTION) && !reply) { errors.add(validationElement.createValidationFailure("Missing description")); } if (reply && rawDescription.isDefined()) { if (rawDescription.keys().size() == 0) { return; } } validateAttributeOrParameter(validationElement, rawDescription, rawDescription); }
private OpenMBeanAttributeInfo[] getAttributes() { List<OpenMBeanAttributeInfo> infos = new ArrayList<OpenMBeanAttributeInfo>(); if (providedDescription.hasDefined(ATTRIBUTES)) { for (final String name : providedDescription.require(ATTRIBUTES).keys()) { infos.add(getAttribute(name)); } } return infos.toArray(new OpenMBeanAttributeInfo[infos.size()]); }
/** {@inheritDoc} */ @Override public void writeContent(XMLExtendedStreamWriter writer, SubsystemMarshallingContext context) throws XMLStreamException { ModelNode node = context.getModelNode(); boolean hasChildren = node.hasDefined(RESOURCEADAPTER_NAME) && node.get(RESOURCEADAPTER_NAME).asPropertyList().size() > 0; context.startSubsystemElement(Namespace.CURRENT.getUriString(), !hasChildren); if (hasChildren) { writer.writeStartElement(Element.RESOURCE_ADAPTERS.getLocalName()); ModelNode ras = node.get(RESOURCEADAPTER_NAME); for (String name : ras.keys()) { final ModelNode ra = ras.get(name); writeRaElement(writer, ra, name); } writer.writeEndElement(); // Close the subsystem element writer.writeEndElement(); } }
public static void checkLegacyChildResourceModel(ModelNode model, String... properties) { Assert.assertEquals(0, properties.length % 2); ModelNode props = model.get("property"); Assert.assertEquals(properties.length / 2, props.isDefined() ? props.keys().size() : 0); for (int i = 0; i < properties.length; i += 2) { ModelNode property = props.get(properties[i]); Assert.assertTrue(property.isDefined()); Assert.assertEquals(1, property.keys().size()); Assert.assertEquals(properties[i + 1], property.get("value").asString()); } }
private void writeBinaryStorage( XMLExtendedStreamWriter writer, ModelNode repository ) throws XMLStreamException { if (has(repository, ModelKeys.CONFIGURATION, ModelKeys.BINARY_STORAGE)) { ModelNode configuration = repository.get(ModelKeys.CONFIGURATION); ModelNode binaryStorage = configuration.get(ModelKeys.BINARY_STORAGE); ModelNode binaryStorageType = binaryStorage.get(ModelKeys.STORAGE_TYPE); String storageType = binaryStorageType.isDefined() && binaryStorageType.keys().size() == 1 ? (String)binaryStorageType.keys() .toArray()[0] : null; ModelNode storage = storageType != null ? binaryStorageType.get((String)binaryStorageType.keys().toArray()[0]) : new ModelNode(); writeBinaryStorageModel(writer, storageType, storage); } }
private List<String> getServerGroupNames() { SortedSet<String> sorted = new TreeSet<String>(); ModelNode domainModel = getDomainModel(); if (domainModel.hasDefined("server-group")) { sorted.addAll(domainModel.get("server-group").keys()); } return new ArrayList<String>(sorted); }
@Override public void execute(OperationContext context, ModelNode operation) throws OperationFailedException { ModelNode entries = operation.get(ModelConstants.ENTRIES); String pid = operation.get(ModelDescriptionConstants.OP_ADDR).asObject().get(ModelConstants.CONFIGURATION).asString(); Dictionary<String, String> dictionary = new Hashtable<String, String>(); for (String key : entries.keys()) { dictionary.put(key, entries.get(key).asString()); } ConfigAdminInternal configAdmin = ConfigAdminExtension.getConfigAdminService(context); if (configAdmin != null) { configAdmin.putConfigurationInternal(pid, dictionary); } context.completeStep(OperationContext.RollbackHandler.NOOP_ROLLBACK_HANDLER); } }, OperationContext.Stage.RUNTIME);
public void writeExtensions(final XMLExtendedStreamWriter writer, final ModelNode modelNode) throws XMLStreamException { Set<String> keys = modelNode.keys(); if (keys.size() > 0) { writer.writeStartElement(Element.EXTENSIONS.getLocalName()); for (final String extension : keys) { writer.writeEmptyElement(Element.EXTENSION.getLocalName()); writer.writeAttribute(Attribute.MODULE.getLocalName(), extension); } writer.writeEndElement(); } }
private void checkActualOperationParamsAreDescribed(final ModelNode description, final ModelNode operation, final Map<String, ModelNode> describedProperties, final Map<String, ModelNode> actualParams) { for (String paramName : actualParams.keySet()) { final ModelNode param = actualParams.get(paramName); if(! param.isDefined()) { continue; } if(param.getType() == ModelType.OBJECT && param.keys().isEmpty()) { return; } if (!describedProperties.containsKey(paramName)) { throw MESSAGES.validationFailedActualParameterNotDescribed(paramName, describedProperties.keySet(), formatOperationForMessage(operation)); } } }
subsystem.get(OP).set(ADD); subsystem.get(OP_ADDR).set(address); list.add(subsystem); parseWorkManager(reader, address, list, subsystem, true); final ModelNode bootstrapContextOperation = new ModelNode(); bootstrapContextOperation.get(OP).set(ADD); final ModelNode bootStrapCOntextAddress = address.clone(); bootStrapCOntextAddress.add(BOOTSTRAP_CONTEXT, DEFAULT_NAME); ccmOperation.get(OP_ADDR).set(ccmAddress); assert ccmOperation.keys().size() == 2; // prevent people adding params without considering special