/** * Create a setting. * * @param context the operation context * @param config the detyped config * @return the address settings * @throws OperationFailedException if the model is invalid */ static AddressSettings createSettings(final OperationContext context, final ModelNode config) throws OperationFailedException { final AddressSettings settings = new AddressSettings(); if (config.hasDefined(AddressSettingDefinition.ADDRESS_FULL_MESSAGE_POLICY.getName())) { final AddressFullMessagePolicy addressPolicy = AddressFullMessagePolicy.valueOf( AddressSettingDefinition.ADDRESS_FULL_MESSAGE_POLICY .resolveModelAttribute(context, config) .asString()); settings.setAddressFullMessagePolicy(addressPolicy); } if (config.hasDefined(DEAD_LETTER_ADDRESS.getName())) { settings.setDeadLetterAddress( asSimpleString(DEAD_LETTER_ADDRESS.resolveModelAttribute(context, config), null)); } if (config.hasDefined(AddressSettingDefinition.LAST_VALUE_QUEUE.getName())) { settings.setLastValueQueue( AddressSettingDefinition.LAST_VALUE_QUEUE .resolveModelAttribute(context, config) .asBoolean()); } if (config.hasDefined(AddressSettingDefinition.MAX_DELIVERY_ATTEMPTS.getName())) { settings.setMaxDeliveryAttempts( AddressSettingDefinition.MAX_DELIVERY_ATTEMPTS .resolveModelAttribute(context, config) .asInt()); } if (config.hasDefined(AddressSettingDefinition.MAX_SIZE_BYTES.getName())) { settings.setMaxSizeBytes( AddressSettingDefinition.MAX_SIZE_BYTES.resolveModelAttribute(context, config).asLong()); } if (config.hasDefined(AddressSettingDefinition.MESSAGE_COUNTER_HISTORY_DAY_LIMIT.getName())) { settings.setMessageCounterHistoryDayLimit( AddressSettingDefinition.MESSAGE_COUNTER_HISTORY_DAY_LIMIT .resolveModelAttribute(context, config) .asInt()); } if (config.hasDefined(CommonAttributes.EXPIRY_ADDRESS.getName())) { settings.setExpiryAddress( asSimpleString(EXPIRY_ADDRESS.resolveModelAttribute(context, config), null)); } if (config.hasDefined(AddressSettingDefinition.EXPIRY_DELAY.getName())) { settings.setExpiryDelay( AddressSettingDefinition.EXPIRY_DELAY.resolveModelAttribute(context, config).asLong()); } if (config.hasDefined(AddressSettingDefinition.REDELIVERY_DELAY.getName())) { settings.setRedeliveryDelay( AddressSettingDefinition.REDELIVERY_DELAY .resolveModelAttribute(context, config) .asLong()); } if (config.hasDefined(AddressSettingDefinition.REDELIVERY_MULTIPLIER.getName())) { settings.setRedeliveryMultiplier( AddressSettingDefinition.REDELIVERY_MULTIPLIER .resolveModelAttribute(context, config) .asDouble()); } if (config.hasDefined(AddressSettingDefinition.MAX_REDELIVERY_DELAY.getName())) { settings.setMaxRedeliveryDelay( AddressSettingDefinition.MAX_REDELIVERY_DELAY .resolveModelAttribute(context, config) .asLong()); } if (config.hasDefined(AddressSettingDefinition.REDISTRIBUTION_DELAY.getName())) { settings.setRedistributionDelay( AddressSettingDefinition.REDISTRIBUTION_DELAY .resolveModelAttribute(context, config) .asLong()); } if (config.hasDefined(AddressSettingDefinition.PAGE_SIZE_BYTES.getName())) { settings.setPageSizeBytes( AddressSettingDefinition.PAGE_SIZE_BYTES.resolveModelAttribute(context, config).asLong()); } if (config.hasDefined(AddressSettingDefinition.PAGE_MAX_CACHE_SIZE.getName())) { settings.setPageCacheMaxSize( AddressSettingDefinition.PAGE_MAX_CACHE_SIZE .resolveModelAttribute(context, config) .asInt()); } if (config.hasDefined(AddressSettingDefinition.SEND_TO_DLA_ON_NO_ROUTE.getName())) { settings.setSendToDLAOnNoRoute( AddressSettingDefinition.SEND_TO_DLA_ON_NO_ROUTE .resolveModelAttribute(context, config) .asBoolean()); } return settings; }
@Override public void executeRuntimeStep(OperationContext context, ModelNode operation) throws OperationFailedException { if (ignoreOperationIfServerNotActive(context, operation)) { return; } validator.validate(operation); final String attributeName = operation.require(ModelDescriptionConstants.NAME).asString(); PathAddress address = PathAddress.pathAddress(operation.require(ModelDescriptionConstants.OP_ADDR)); String queueName = address.getLastElement().getValue(); if (forwardToRuntimeQueue(context, operation, RUNTIME_INSTANCE)) { return; } final ServiceName serviceName = MessagingServices.getActiveMQServiceName(address); ServiceController<?> service = context.getServiceRegistry(false).getService(serviceName); ActiveMQServer server = ActiveMQServer.class.cast(service.getValue()); QueueControl control = QueueControl.class.cast( server.getManagementService().getResource(ResourceNames.CORE_QUEUE + queueName)); if (control == null) { throw ControllerLogger.ROOT_LOGGER.managementResourceNotFound(address); } if (MESSAGE_COUNT.getName().equals(attributeName)) { context.getResult().set(control.getMessageCount()); } else if (SCHEDULED_COUNT.getName().equals(attributeName)) { context.getResult().set(control.getScheduledCount()); } else if (CONSUMER_COUNT.getName().equals(attributeName)) { context.getResult().set(control.getConsumerCount()); } else if (DELIVERING_COUNT.getName().equals(attributeName)) { context.getResult().set(control.getDeliveringCount()); } else if (MESSAGES_ADDED.getName().equals(attributeName)) { context.getResult().set(control.getMessagesAdded()); } else if (ID.getName().equals(attributeName)) { context.getResult().set(control.getID()); } else if (PAUSED.getName().equals(attributeName)) { try { context.getResult().set(control.isPaused()); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new RuntimeException(e); } } else if (TEMPORARY.getName().equals(attributeName)) { context.getResult().set(control.isTemporary()); } else if (EXPIRY_ADDRESS.getName().equals(attributeName)) { if (control.getExpiryAddress() != null) { context.getResult().set(control.getExpiryAddress()); } } else if (DEAD_LETTER_ADDRESS.getName().equals(attributeName)) { if (control.getDeadLetterAddress() != null) { context.getResult().set(control.getDeadLetterAddress()); } } else if (readStorageAttributes && getStorageAttributeNames().contains(attributeName)) { if (ADDRESS.getName().equals(attributeName)) { context.getResult().set(control.getAddress()); } else if (DURABLE.getName().equals(attributeName)) { context.getResult().set(control.isDurable()); } else if (FILTER.getName().equals(attributeName)) { ModelNode result = context.getResult(); String filter = control.getFilter(); if (filter != null) { result.set(filter); } } } else { throw MessagingLogger.ROOT_LOGGER.unsupportedAttribute(attributeName); } }