Search in sources :

Example 1 with TopicControl

use of org.apache.activemq.artemis.api.jms.management.TopicControl in project wildfly by wildfly.

the class JMSTopicControlHandler method executeRuntimeStep.

@Override
protected void executeRuntimeStep(OperationContext context, ModelNode operation) throws OperationFailedException {
    if (rollbackOperationIfServerNotActive(context, operation)) {
        return;
    }
    final ServiceName serviceName = MessagingServices.getActiveMQServiceName(PathAddress.pathAddress(operation.get(ModelDescriptionConstants.OP_ADDR)));
    final String operationName = operation.require(ModelDescriptionConstants.OP).asString();
    final String topicName = PathAddress.pathAddress(operation.require(ModelDescriptionConstants.OP_ADDR)).getLastElement().getValue();
    ServiceController<?> service = context.getServiceRegistry(false).getService(serviceName);
    ActiveMQServer server = ActiveMQServer.class.cast(service.getValue());
    TopicControl control = TopicControl.class.cast(server.getManagementService().getResource(ResourceNames.JMS_TOPIC + topicName));
    if (control == null) {
        PathAddress address = PathAddress.pathAddress(operation.require(OP_ADDR));
        throw ControllerLogger.ROOT_LOGGER.managementResourceNotFound(address);
    }
    try {
        if (LIST_ALL_SUBSCRIPTIONS.equals(operationName)) {
            String json = control.listAllSubscriptionsAsJSON();
            ModelNode jsonAsNode = ModelNode.fromJSONString(json);
            context.getResult().set(jsonAsNode);
        } else if (LIST_ALL_SUBSCRIPTIONS_AS_JSON.equals(operationName)) {
            context.getResult().set(control.listAllSubscriptionsAsJSON());
        } else if (LIST_DURABLE_SUBSCRIPTIONS.equals(operationName)) {
            String json = control.listDurableSubscriptionsAsJSON();
            ModelNode jsonAsNode = ModelNode.fromJSONString(json);
            context.getResult().set(jsonAsNode);
        } else if (LIST_DURABLE_SUBSCRIPTIONS_AS_JSON.equals(operationName)) {
            context.getResult().set(control.listDurableSubscriptionsAsJSON());
        } else if (LIST_NON_DURABLE_SUBSCRIPTIONS.equals(operationName)) {
            String json = control.listNonDurableSubscriptionsAsJSON();
            ModelNode jsonAsNode = ModelNode.fromJSONString(json);
            context.getResult().set(jsonAsNode);
        } else if (LIST_NON_DURABLE_SUBSCRIPTIONS_AS_JSON.equals(operationName)) {
            context.getResult().set(control.listNonDurableSubscriptionsAsJSON());
        } else if (LIST_MESSAGES_FOR_SUBSCRIPTION.equals(operationName)) {
            final String queueName = QUEUE_NAME.resolveModelAttribute(context, operation).asString();
            String json = control.listMessagesForSubscriptionAsJSON(queueName);
            context.getResult().set(ModelNode.fromJSONString(json));
        } else if (LIST_MESSAGES_FOR_SUBSCRIPTION_AS_JSON.equals(operationName)) {
            final String queueName = QUEUE_NAME.resolveModelAttribute(context, operation).asString();
            context.getResult().set(control.listMessagesForSubscriptionAsJSON(queueName));
        } else if (COUNT_MESSAGES_FOR_SUBSCRIPTION.equals(operationName)) {
            String clientId = CLIENT_ID.resolveModelAttribute(context, operation).asString();
            String subscriptionName = SUBSCRIPTION_NAME.resolveModelAttribute(context, operation).asString();
            String filter = resolveFilter(context, operation);
            context.getResult().set(control.countMessagesForSubscription(clientId, subscriptionName, filter));
        } else if (DROP_DURABLE_SUBSCRIPTION.equals(operationName)) {
            String clientId = CLIENT_ID.resolveModelAttribute(context, operation).asString();
            String subscriptionName = SUBSCRIPTION_NAME.resolveModelAttribute(context, operation).asString();
            control.dropDurableSubscription(clientId, subscriptionName);
            context.getResult();
        } else if (DROP_ALL_SUBSCRIPTIONS.equals(operationName)) {
            control.dropAllSubscriptions();
            context.getResult();
        } else if (REMOVE_MESSAGES.equals(operationName)) {
            String filter = resolveFilter(context, operation);
            context.getResult().set(control.removeMessages(filter));
        } else {
            // Bug
            throw MessagingLogger.ROOT_LOGGER.unsupportedOperation(operationName);
        }
    } catch (RuntimeException e) {
        throw e;
    } catch (Exception e) {
        context.getFailureDescription().set(e.toString());
    }
    context.completeStep(OperationContext.RollbackHandler.NOOP_ROLLBACK_HANDLER);
}
Also used : ActiveMQServer(org.apache.activemq.artemis.core.server.ActiveMQServer) ServiceName(org.jboss.msc.service.ServiceName) TopicControl(org.apache.activemq.artemis.api.jms.management.TopicControl) PathAddress(org.jboss.as.controller.PathAddress) ModelNode(org.jboss.dmr.ModelNode) OperationFailedException(org.jboss.as.controller.OperationFailedException)

Example 2 with TopicControl

use of org.apache.activemq.artemis.api.jms.management.TopicControl in project wildfly by wildfly.

the class JMSTopicReadAttributeHandler method executeRuntimeStep.

@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();
    String topicName = PathAddress.pathAddress(operation.require(ModelDescriptionConstants.OP_ADDR)).getLastElement().getValue();
    final ServiceName serviceName = MessagingServices.getActiveMQServiceName(PathAddress.pathAddress(operation.get(ModelDescriptionConstants.OP_ADDR)));
    ServiceController<?> service = context.getServiceRegistry(false).getService(serviceName);
    ActiveMQServer server = ActiveMQServer.class.cast(service.getValue());
    TopicControl control = TopicControl.class.cast(server.getManagementService().getResource(ResourceNames.JMS_TOPIC + topicName));
    if (control == null) {
        PathAddress address = PathAddress.pathAddress(operation.require(OP_ADDR));
        throw ControllerLogger.ROOT_LOGGER.managementResourceNotFound(address);
    }
    if (CommonAttributes.MESSAGE_COUNT.getName().equals(attributeName)) {
        try {
            context.getResult().set(control.getMessageCount());
        } catch (RuntimeException e) {
            throw e;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    } else if (CommonAttributes.DELIVERING_COUNT.getName().equals(attributeName)) {
        context.getResult().set(control.getDeliveringCount());
    } else if (CommonAttributes.MESSAGES_ADDED.getName().equals(attributeName)) {
        context.getResult().set(control.getMessagesAdded());
    } else if (DURABLE_MESSAGE_COUNT.getName().equals(attributeName)) {
        context.getResult().set(control.getDurableMessageCount());
    } else if (NON_DURABLE_MESSAGE_COUNT.getName().equals(attributeName)) {
        context.getResult().set(control.getNonDurableMessageCount());
    } else if (SUBSCRIPTION_COUNT.getName().equals(attributeName)) {
        context.getResult().set(control.getSubscriptionCount());
    } else if (DURABLE_SUBSCRIPTION_COUNT.getName().equals(attributeName)) {
        context.getResult().set(control.getDurableSubscriptionCount());
    } else if (NON_DURABLE_SUBSCRIPTION_COUNT.getName().equals(attributeName)) {
        context.getResult().set(control.getNonDurableSubscriptionCount());
    } else if (TOPIC_ADDRESS.getName().equals(attributeName)) {
        context.getResult().set(control.getAddress());
    } else if (CommonAttributes.TEMPORARY.getName().equals(attributeName)) {
        context.getResult().set(control.isTemporary());
    } else {
        throw MessagingLogger.ROOT_LOGGER.unsupportedAttribute(attributeName);
    }
}
Also used : ActiveMQServer(org.apache.activemq.artemis.core.server.ActiveMQServer) ServiceName(org.jboss.msc.service.ServiceName) TopicControl(org.apache.activemq.artemis.api.jms.management.TopicControl) PathAddress(org.jboss.as.controller.PathAddress) OperationFailedException(org.jboss.as.controller.OperationFailedException)

Aggregations

TopicControl (org.apache.activemq.artemis.api.jms.management.TopicControl)2 ActiveMQServer (org.apache.activemq.artemis.core.server.ActiveMQServer)2 OperationFailedException (org.jboss.as.controller.OperationFailedException)2 PathAddress (org.jboss.as.controller.PathAddress)2 ServiceName (org.jboss.msc.service.ServiceName)2 ModelNode (org.jboss.dmr.ModelNode)1