Refine search
@Override public TransformedOperation transformOperation(TransformationContext context, PathAddress address, ModelNode operation) { if (operation != null && !(operation.hasDefined(OPERATION_HEADERS) && operation.get(OPERATION_HEADERS, "push-to-servers").asBoolean(false)) ){ operation = operation.clone(); String statefulCache = operation.get(DEFAULT_SFSB_CACHE).asString(); String statefulPassivationDisabledCache = operation.get(DEFAULT_SFSB_PASSIVATION_DISABLED_CACHE).asString(); operation.get(DEFAULT_SFSB_CACHE).set(statefulPassivationDisabledCache); operation.get(EJB3SubsystemModel.DEFAULT_CLUSTERED_SFSB_CACHE).set(statefulCache); operation.remove(DEFAULT_SFSB_PASSIVATION_DISABLED_CACHE); } return new TransformedOperation(operation, OperationResultTransformer.ORIGINAL_RESULT); } }
@Override public ModelNode correct(ModelNode newValue, ModelNode currentValue) { ModelNode result = newValue; if (newValue.getType() == ModelType.LIST && newValue.asInt() == 1) { // extract the single element result = newValue.get(0); if (result.has(NAME)) { result.remove(NAME); } } return result; } }
@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 statefulCache = untransformedModel.get(DEFAULT_SFSB_CACHE).asString(); String statefulPassivationDisabledCache = untransformedModel.get(DEFAULT_SFSB_PASSIVATION_DISABLED_CACHE).asString(); ModelNode transformed = resource.getModel(); transformed.get(DEFAULT_SFSB_CACHE).set(statefulPassivationDisabledCache); transformed.get(EJB3SubsystemModel.DEFAULT_CLUSTERED_SFSB_CACHE).set(statefulCache); transformed.remove(DEFAULT_SFSB_PASSIVATION_DISABLED_CACHE); final ResourceTransformationContext childContext = context.addTransformedResource(PathAddress.EMPTY_ADDRESS, resource); childContext.processChildren(resource); } }
@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! }
@SuppressWarnings("deprecation") @Override public void transformResource(ResourceTransformationContext context, PathAddress address, Resource resource) throws OperationFailedException { final ModelNode model = resource.getModel(); final ModelNode maxBatchSize = model.remove(StoreResourceDefinition.Attribute.MAX_BATCH_SIZE.getName()); final ModelNode stringTableModel = Resource.Tools.readModel(resource.removeChild(StringTableResourceDefinition.PATH)); if (stringTableModel != null && stringTableModel.isDefined()) { model.get(DeprecatedAttribute.TABLE.getName()).set(stringTableModel); model.get(DeprecatedAttribute.TABLE.getName()).get(TableResourceDefinition.DeprecatedAttribute.BATCH_SIZE.getName()).set((maxBatchSize != null) ? maxBatchSize : new ModelNode()); } final ModelNode properties = model.remove(StoreResourceDefinition.Attribute.PROPERTIES.getName()); final ResourceTransformationContext childContext = context.addTransformedResource(PathAddress.EMPTY_ADDRESS, resource); LegacyPropertyResourceTransformer.transformPropertiesToChildrenResources(properties, address, childContext); context.processChildren(resource); } });
@SuppressWarnings("deprecation") @Override public void transformResource(ResourceTransformationContext context, PathAddress address, Resource resource) throws OperationFailedException { final ModelNode model = resource.getModel(); final ModelNode maxBatchSize = model.remove(StoreResourceDefinition.Attribute.MAX_BATCH_SIZE.getName()); final ModelNode binaryTableModel = Resource.Tools.readModel(resource.removeChild(BinaryTableResourceDefinition.PATH)); if (binaryTableModel != null && binaryTableModel.isDefined()) { model.get(DeprecatedAttribute.TABLE.getName()).set(binaryTableModel); model.get(DeprecatedAttribute.TABLE.getName()).get(TableResourceDefinition.DeprecatedAttribute.BATCH_SIZE.getName()).set((maxBatchSize != null) ? maxBatchSize : new ModelNode()); } final ModelNode properties = model.remove(StoreResourceDefinition.Attribute.PROPERTIES.getName()); final ResourceTransformationContext childContext = context.addTransformedResource(PathAddress.EMPTY_ADDRESS, resource); LegacyPropertyResourceTransformer.transformPropertiesToChildrenResources(properties, address, childContext); context.processChildren(resource); } });
@Override public ModelNode transformOperation(ModelNode operation) { if (operation.hasDefined(PROPERTIES)) { final ModelNode addOperation = operation.clone(); List<Property> properties = addOperation.remove(PROPERTIES).asPropertyList(); List<ModelNode> operations = new ArrayList<>(properties.size() + 1); operations.add(addOperation); PathAddress address = this.addressResolver.apply(addOperation); for (final Property property : properties) { String key = property.getName(); ModelNode value = property.getValue(); ModelNode propertyAddOperation = Util.createAddOperation(address.append(PathElement.pathElement(PROPERTY, key))); propertyAddOperation.get(VALUE).set(value); operations.add(propertyAddOperation); } return Operations.createCompositeOperation(operations); } return operation; } }
@SuppressWarnings("deprecation") @Override public void transformResource(ResourceTransformationContext context, PathAddress address, Resource resource) throws OperationFailedException { final ModelNode model = resource.getModel(); final ModelNode maxBatchSize = model.remove(StoreResourceDefinition.Attribute.MAX_BATCH_SIZE.getName()); final ModelNode binaryTableModel = Resource.Tools.readModel(resource.removeChild(BinaryTableResourceDefinition.PATH)); if (binaryTableModel != null && binaryTableModel.isDefined()) { model.get(DeprecatedAttribute.BINARY_TABLE.getName()).set(binaryTableModel); model.get(DeprecatedAttribute.BINARY_TABLE.getName()).get(TableResourceDefinition.DeprecatedAttribute.BATCH_SIZE.getName()).set((maxBatchSize != null) ? maxBatchSize : new ModelNode()); } final ModelNode stringTableModel = Resource.Tools.readModel(resource.removeChild(StringTableResourceDefinition.PATH)); if (stringTableModel != null && stringTableModel.isDefined()) { model.get(DeprecatedAttribute.STRING_TABLE.getName()).set(stringTableModel); model.get(DeprecatedAttribute.STRING_TABLE.getName()).get(TableResourceDefinition.DeprecatedAttribute.BATCH_SIZE.getName()).set((maxBatchSize != null) ? maxBatchSize : new ModelNode()); } final ModelNode properties = model.remove(StoreResourceDefinition.Attribute.PROPERTIES.getName()); final ResourceTransformationContext childContext = context.addTransformedResource(PathAddress.EMPTY_ADDRESS, resource); LegacyPropertyResourceTransformer.transformPropertiesToChildrenResources(properties, address, childContext); context.processChildren(resource); } });
@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; }
private ModelNode sanitizeOperation(ModelNode operation) { ModelNode sanitized = operation.clone(); // Strip headers that are not usable by clients if (sanitized.hasDefined(OPERATION_HEADERS)) { ModelNode headers = sanitized.get(OPERATION_HEADERS); headers.remove(SYNC_REMOVED_FOR_READD); headers.remove(DOMAIN_UUID); headers.remove(EXECUTE_FOR_COORDINATOR); } // If so configured record that this is a user request if (forUserCalls) { sanitized.get(OPERATION_HEADERS, CALLER_TYPE).set(USER); } return sanitized; }
@Override public final void revertRestartRequired() { processState.revertRestartRequired(this.activeStep.restartStamp); if (activeStep.response.get(RESPONSE_HEADERS).hasDefined(OPERATION_REQUIRES_RESTART)) { activeStep.response.get(RESPONSE_HEADERS).remove(OPERATION_REQUIRES_RESTART); if (activeStep.response.get(RESPONSE_HEADERS).asInt() == 0) { activeStep.response.remove(RESPONSE_HEADERS); } } }
private PathAddress addNameToAddress(ModelNode current, PathAddress containerAddress, String type) { String name = current.get(ModelKeys.NAME).asString(); // setup the cache configuration address PathAddress cacheConfigurationAddress = containerAddress.append(ModelKeys.CONFIGURATIONS, ModelKeys.CONFIGURATIONS_NAME).append(type + ModelKeys.CONFIGURATION_SUFFIX, name); current.get(ModelDescriptionConstants.OP_ADDR).set(cacheConfigurationAddress.toModelNode()); // get rid of NAME now that we are finished with it current.remove(ModelKeys.NAME); return cacheConfigurationAddress; }
@Override public final void revertRestartRequired() { processState.revertRestartRequired(this.activeStep.restartStamp); if (activeStep.response.get(RESPONSE_HEADERS).hasDefined(OPERATION_REQUIRES_RESTART)) { activeStep.response.get(RESPONSE_HEADERS).remove(OPERATION_REQUIRES_RESTART); if (activeStep.response.get(RESPONSE_HEADERS).asInt() == 0) { activeStep.response.remove(RESPONSE_HEADERS); } } }
@Override public Map<Set<ServerIdentity>, ModelNode> getServerOperations(ModelNode domainOp, PathAddress address) { Map<Set<ServerIdentity>, ModelNode> ops = ServerOperationsResolverHandler.this.getServerOperations(context, domainOp, address, pushToServers); for (Map.Entry<Set<ServerIdentity>, ModelNode> entry : ops.entrySet()) { ModelNode op = entry.getValue(); //Remove the caller-type=user header if (op.hasDefined(OPERATION_HEADERS) && op.get(OPERATION_HEADERS).hasDefined(CALLER_TYPE) && op.get(OPERATION_HEADERS, CALLER_TYPE).asString().equals(USER)) { op.get(OPERATION_HEADERS).remove(CALLER_TYPE); } } return ops; } };
@Override public final void revertRestartRequired() { //skip if restartRequired() was not called if (this.activeStep.restartStamp == null) { return; } processState.revertRestartRequired(this.activeStep.restartStamp); if (activeStep.response.get(RESPONSE_HEADERS).hasDefined(OPERATION_REQUIRES_RESTART)) { activeStep.response.get(RESPONSE_HEADERS).remove(OPERATION_REQUIRES_RESTART); if (activeStep.response.get(RESPONSE_HEADERS).asInt() == 0) { activeStep.response.remove(RESPONSE_HEADERS); } } }
@Override public Map<Set<ServerIdentity>, ModelNode> getServerOperations(ModelNode domainOp, PathAddress address) { Map<Set<ServerIdentity>, ModelNode> ops = ServerOperationsResolverHandler.this.getServerOperations(context, domainOp, address, pushToServers); for (Map.Entry<Set<ServerIdentity>, ModelNode> entry : ops.entrySet()) { ModelNode op = entry.getValue(); //Remove the caller-type=user header if (op.hasDefined(OPERATION_HEADERS, CALLER_TYPE) && op.get(OPERATION_HEADERS, CALLER_TYPE).asString().equals(USER)) { op.get(OPERATION_HEADERS).remove(CALLER_TYPE); } } HOST_CONTROLLER_LOGGER.tracef("Server ops for %s -- %s", domainOp, ops); return ops; } };
@Override public Map<Set<ServerIdentity>, ModelNode> getServerOperations(ModelNode domainOp, PathAddress address) { Map<Set<ServerIdentity>, ModelNode> ops = ServerOperationsResolverHandler.this.getServerOperations(context, domainOp, address, pushToServers); for (Map.Entry<Set<ServerIdentity>, ModelNode> entry : ops.entrySet()) { ModelNode op = entry.getValue(); //Remove the caller-type=user header if (op.hasDefined(OPERATION_HEADERS, CALLER_TYPE) && op.get(OPERATION_HEADERS, CALLER_TYPE).asString().equals(USER)) { op.get(OPERATION_HEADERS).remove(CALLER_TYPE); } } HOST_CONTROLLER_LOGGER.tracef("Server ops for %s -- %s", domainOp, ops); return ops; } };