Search in sources :

Example 91 with ServiceName

use of org.jboss.msc.service.ServiceName in project wildfly by wildfly.

the class AbstractQueueControlHandler method executeRuntimeStep.

@Override
protected void executeRuntimeStep(OperationContext context, ModelNode operation) throws OperationFailedException {
    if (rollbackOperationIfServerNotActive(context, operation)) {
        return;
    }
    final String operationName = operation.require(ModelDescriptionConstants.OP).asString();
    final String queueName = PathAddress.pathAddress(operation.require(ModelDescriptionConstants.OP_ADDR)).getLastElement().getValue();
    final ServiceName activeMQServiceName = MessagingServices.getActiveMQServiceName(PathAddress.pathAddress(operation.get(ModelDescriptionConstants.OP_ADDR)));
    ServiceController<?> activeMQService = context.getServiceRegistry(false).getService(activeMQServiceName);
    ActiveMQServer server = ActiveMQServer.class.cast(activeMQService.getValue());
    final DelegatingQueueControl<T> control = getQueueControl(server, queueName);
    if (control == null) {
        PathAddress address = PathAddress.pathAddress(operation.require(OP_ADDR));
        throw ControllerLogger.ROOT_LOGGER.managementResourceNotFound(address);
    }
    boolean reversible = false;
    Object handback = null;
    try {
        if (LIST_MESSAGES.equals(operationName)) {
            String filter = resolveFilter(context, operation);
            String json = control.listMessagesAsJSON(filter);
            context.getResult().set(ModelNode.fromJSONString(json));
        } else if (LIST_MESSAGES_AS_JSON.equals(operationName)) {
            String filter = resolveFilter(context, operation);
            context.getResult().set(control.listMessagesAsJSON(filter));
        } else if (LIST_DELIVERING_MESSAGES.equals(operationName)) {
            String json = control.listDeliveringMessagesAsJSON();
            context.getResult().set(ModelNode.fromJSONString(json));
        } else if (LIST_DELIVERING_MESSAGES_AS_JSON.equals(operationName)) {
            context.getResult().set(control.listDeliveringMessagesAsJSON());
        } else if (LIST_SCHEDULED_MESSAGES.equals(operationName)) {
            String json = control.listScheduledMessagesAsJSON();
            context.getResult().set(ModelNode.fromJSONString(json));
        } else if (LIST_SCHEDULED_MESSAGES_AS_JSON.equals(operationName)) {
            context.getResult().set(control.listScheduledMessagesAsJSON());
        } else if (COUNT_MESSAGES.equals(operationName)) {
            String filter = resolveFilter(context, operation);
            context.getResult().set(control.countMessages(filter));
        } else if (REMOVE_MESSAGE.equals(operationName)) {
            ModelNode id = getMessageIDAttributeDefinition().resolveModelAttribute(context, operation);
            context.getResult().set(control.removeMessage(id));
        } else if (REMOVE_MESSAGES.equals(operationName)) {
            String filter = resolveFilter(context, operation);
            context.getResult().set(control.removeMessages(filter));
        } else if (EXPIRE_MESSAGES.equals(operationName)) {
            String filter = resolveFilter(context, operation);
            context.getResult().set(control.expireMessages(filter));
        } else if (EXPIRE_MESSAGE.equals(operationName)) {
            ModelNode id = getMessageIDAttributeDefinition().resolveModelAttribute(context, operation);
            context.getResult().set(control.expireMessage(id));
        } else if (SEND_MESSAGE_TO_DEAD_LETTER_ADDRESS.equals(operationName)) {
            ModelNode id = getMessageIDAttributeDefinition().resolveModelAttribute(context, operation);
            context.getResult().set(control.sendMessageToDeadLetterAddress(id));
        } else if (SEND_MESSAGES_TO_DEAD_LETTER_ADDRESS.equals(operationName)) {
            String filter = resolveFilter(context, operation);
            context.getResult().set(control.sendMessagesToDeadLetterAddress(filter));
        } else if (CHANGE_MESSAGE_PRIORITY.equals(operationName)) {
            ModelNode id = getMessageIDAttributeDefinition().resolveModelAttribute(context, operation);
            int priority = NEW_PRIORITY.resolveModelAttribute(context, operation).asInt();
            context.getResult().set(control.changeMessagePriority(id, priority));
        } else if (CHANGE_MESSAGES_PRIORITY.equals(operationName)) {
            String filter = resolveFilter(context, operation);
            int priority = NEW_PRIORITY.resolveModelAttribute(context, operation).asInt();
            context.getResult().set(control.changeMessagesPriority(filter, priority));
        } else if (MOVE_MESSAGE.equals(operationName)) {
            ModelNode id = getMessageIDAttributeDefinition().resolveModelAttribute(context, operation);
            String otherQueue = OTHER_QUEUE_NAME.resolveModelAttribute(context, operation).asString();
            ModelNode rejectDuplicates = REJECT_DUPLICATES.resolveModelAttribute(context, operation);
            if (rejectDuplicates.isDefined()) {
                context.getResult().set(control.moveMessage(id, otherQueue, rejectDuplicates.asBoolean()));
            } else {
                context.getResult().set(control.moveMessage(id, otherQueue));
            }
        } else if (MOVE_MESSAGES.equals(operationName)) {
            String filter = resolveFilter(context, operation);
            String otherQueue = OTHER_QUEUE_NAME.resolveModelAttribute(context, operation).asString();
            ModelNode rejectDuplicates = REJECT_DUPLICATES.resolveModelAttribute(context, operation);
            if (rejectDuplicates.isDefined()) {
                context.getResult().set(control.moveMessages(filter, otherQueue, rejectDuplicates.asBoolean()));
            } else {
                context.getResult().set(control.moveMessages(filter, otherQueue));
            }
        } else if (LIST_MESSAGE_COUNTER_AS_JSON.equals(operationName)) {
            context.getResult().set(control.listMessageCounter());
        } else if (LIST_MESSAGE_COUNTER_AS_HTML.equals(operationName)) {
            context.getResult().set(control.listMessageCounterAsHTML());
        } else if (LIST_MESSAGE_COUNTER_HISTORY_AS_JSON.equals(operationName)) {
            context.getResult().set(control.listMessageCounterHistory());
        } else if (LIST_MESSAGE_COUNTER_HISTORY_AS_HTML.equals(operationName)) {
            context.getResult().set(control.listMessageCounterHistoryAsHTML());
        } else if (RESET_MESSAGE_COUNTER.equals(operationName)) {
            control.resetMessageCounter();
            // undefined
            context.getResult();
        } else if (PAUSE.equals(operationName)) {
            control.pause();
            reversible = true;
            // undefined
            context.getResult();
        } else if (RESUME.equals(operationName)) {
            control.resume();
            reversible = true;
            // undefined
            context.getResult();
        } else if (LIST_CONSUMERS_AS_JSON.equals(operationName)) {
            context.getResult().set(control.listConsumersAsJSON());
        } else {
            // TODO dmr-based LIST_MESSAGE_COUNTER, LIST_MESSAGE_COUNTER_HISTORY, LIST_CONSUMERS
            handback = handleAdditionalOperation(operationName, operation, context, control.getDelegate());
            reversible = handback == null;
        }
    } catch (RuntimeException e) {
        throw e;
    } catch (Exception e) {
        context.getFailureDescription().set(e.getLocalizedMessage());
    }
    OperationContext.RollbackHandler rh;
    if (reversible) {
        final Object rhHandback = handback;
        rh = new OperationContext.RollbackHandler() {

            @Override
            public void handleRollback(OperationContext context, ModelNode operation) {
                try {
                    if (PAUSE.equals(operationName)) {
                        control.resume();
                    } else if (RESUME.equals(operationName)) {
                        control.pause();
                    } else {
                        revertAdditionalOperation(operationName, operation, context, control.getDelegate(), rhHandback);
                    }
                } catch (Exception e) {
                    ROOT_LOGGER.revertOperationFailed(e, getClass().getSimpleName(), operation.require(ModelDescriptionConstants.OP).asString(), PathAddress.pathAddress(operation.require(ModelDescriptionConstants.OP_ADDR)));
                }
            }
        };
    } else {
        rh = OperationContext.RollbackHandler.NOOP_ROLLBACK_HANDLER;
    }
    context.completeStep(rh);
}
Also used : OperationContext(org.jboss.as.controller.OperationContext) OperationFailedException(org.jboss.as.controller.OperationFailedException) ActiveMQServer(org.apache.activemq.artemis.core.server.ActiveMQServer) LIST(org.jboss.dmr.ModelType.LIST) INT(org.jboss.dmr.ModelType.INT) ServiceName(org.jboss.msc.service.ServiceName) PathAddress(org.jboss.as.controller.PathAddress) ModelNode(org.jboss.dmr.ModelNode)

Example 92 with ServiceName

use of org.jboss.msc.service.ServiceName in project wildfly by wildfly.

the class ActiveMQActivationService method getActiveMQServer.

static ActiveMQServer getActiveMQServer(final OperationContext context, ModelNode operation) {
    final ServiceName activMQServerServiceName = MessagingServices.getActiveMQServiceName(pathAddress(operation.get(OP_ADDR)));
    final ServiceController<?> controller = context.getServiceRegistry(false).getService(activMQServerServiceName);
    if (controller != null) {
        return ActiveMQServer.class.cast(controller.getValue());
    }
    return null;
}
Also used : ServiceName(org.jboss.msc.service.ServiceName)

Example 93 with ServiceName

use of org.jboss.msc.service.ServiceName in project wildfly by wildfly.

the class ActiveMQServerControlHandler method executeRuntimeStep.

@Override
protected void executeRuntimeStep(OperationContext context, ModelNode operation) throws OperationFailedException {
    final String operationName = operation.require(OP).asString();
    final ServiceName serviceName = MessagingServices.getActiveMQServiceName(PathAddress.pathAddress(operation.get(ModelDescriptionConstants.OP_ADDR)));
    if (READ_ATTRIBUTE_OPERATION.equals(operationName)) {
        ActiveMQServer server = null;
        if (context.getRunningMode() == RunningMode.NORMAL) {
            ServiceController<?> service = context.getServiceRegistry(false).getService(serviceName);
            if (service == null || service.getState() != ServiceController.State.UP) {
                throw MessagingLogger.ROOT_LOGGER.activeMQServerNotInstalled(serviceName.getSimpleName());
            }
            server = ActiveMQServer.class.cast(service.getValue());
        }
        handleReadAttribute(context, operation, server);
        return;
    }
    if (rollbackOperationIfServerNotActive(context, operation)) {
        return;
    }
    final ActiveMQServerControl serverControl = getServerControl(context, operation);
    try {
        if (GET_CONNECTORS_AS_JSON.equals(operationName)) {
            String json = serverControl.getConnectorsAsJSON();
            context.getResult().set(json);
        } else if (RESET_ALL_MESSAGE_COUNTERS.equals(operationName)) {
            serverControl.resetAllMessageCounters();
            context.getResult();
        } else if (RESET_ALL_MESSAGE_COUNTER_HISTORIES.equals(operationName)) {
            serverControl.resetAllMessageCounterHistories();
            context.getResult();
        } else if (LIST_PREPARED_TRANSACTIONS.equals(operationName)) {
            String[] list = serverControl.listPreparedTransactions();
            reportListOfStrings(context, list);
        } else if (LIST_PREPARED_TRANSACTION_DETAILS_AS_JSON.equals(operationName)) {
            String json = serverControl.listPreparedTransactionDetailsAsJSON();
            context.getResult().set(json);
        } else if (LIST_PREPARED_TRANSACTION_DETAILS_AS_HTML.equals(operationName)) {
            String html = serverControl.listPreparedTransactionDetailsAsHTML();
            context.getResult().set(html);
        } else if (LIST_HEURISTIC_COMMITTED_TRANSACTIONS.equals(operationName)) {
            String[] list = serverControl.listHeuristicCommittedTransactions();
            reportListOfStrings(context, list);
        } else if (LIST_HEURISTIC_ROLLED_BACK_TRANSACTIONS.equals(operationName)) {
            String[] list = serverControl.listHeuristicRolledBackTransactions();
            reportListOfStrings(context, list);
        } else if (COMMIT_PREPARED_TRANSACTION.equals(operationName)) {
            String txId = TRANSACTION_AS_BASE_64.resolveModelAttribute(context, operation).asString();
            boolean committed = serverControl.commitPreparedTransaction(txId);
            context.getResult().set(committed);
        } else if (ROLLBACK_PREPARED_TRANSACTION.equals(operationName)) {
            String txId = TRANSACTION_AS_BASE_64.resolveModelAttribute(context, operation).asString();
            boolean committed = serverControl.rollbackPreparedTransaction(txId);
            context.getResult().set(committed);
        } else if (LIST_REMOTE_ADDRESSES.equals(operationName)) {
            ModelNode address = OPTIONAL_IP_ADDRESS.resolveModelAttribute(context, operation);
            String[] list = address.isDefined() ? serverControl.listRemoteAddresses(address.asString()) : serverControl.listRemoteAddresses();
            reportListOfStrings(context, list);
        } else if (CLOSE_CONNECTIONS_FOR_ADDRESS.equals(operationName)) {
            String address = REQUIRED_IP_ADDRESS.resolveModelAttribute(context, operation).asString();
            boolean closed = serverControl.closeConnectionsForAddress(address);
            context.getResult().set(closed);
        } else if (CLOSE_CONNECTIONS_FOR_USER.equals(operationName)) {
            String user = USER.resolveModelAttribute(context, operation).asString();
            boolean closed = serverControl.closeConnectionsForUser(user);
            context.getResult().set(closed);
        } else if (CLOSE_CONSUMER_CONNECTIONS_FOR_ADDRESS.equals(operationName)) {
            String address = ADDRESS_MATCH.resolveModelAttribute(context, operation).asString();
            boolean closed = serverControl.closeConsumerConnectionsForAddress(address);
            context.getResult().set(closed);
        } else if (LIST_CONNECTION_IDS.equals(operationName)) {
            String[] list = serverControl.listConnectionIDs();
            reportListOfStrings(context, list);
        } else if (LIST_PRODUCERS_INFO_AS_JSON.equals(operationName)) {
            String json = serverControl.listProducersInfoAsJSON();
            context.getResult().set(json);
        } else if (LIST_SESSIONS.equals(operationName)) {
            String connectionID = CONNECTION_ID.resolveModelAttribute(context, operation).asString();
            String[] list = serverControl.listSessions(connectionID);
            reportListOfStrings(context, list);
        } else if (GET_ROLES.equals(operationName)) {
            String addressMatch = ADDRESS_MATCH.resolveModelAttribute(context, operation).asString();
            String json = serverControl.getRolesAsJSON(addressMatch);
            reportRoles(context, json);
        } else if (GET_ROLES_AS_JSON.equals(operationName)) {
            String addressMatch = ADDRESS_MATCH.resolveModelAttribute(context, operation).asString();
            String json = serverControl.getRolesAsJSON(addressMatch);
            reportRolesAsJSON(context, json);
        } else if (GET_ADDRESS_SETTINGS_AS_JSON.equals(operationName)) {
            String addressMatch = ADDRESS_MATCH.resolveModelAttribute(context, operation).asString();
            String json = serverControl.getAddressSettingsAsJSON(addressMatch);
            context.getResult().set(json);
        } else if (FORCE_FAILOVER.equals(operationName)) {
            serverControl.forceFailover();
            context.getResult();
        } else {
            // Bug
            throw MessagingLogger.ROOT_LOGGER.unsupportedOperation(operationName);
        }
    } catch (RuntimeException e) {
        throw e;
    } catch (Exception e) {
        context.getFailureDescription().set(e.getLocalizedMessage());
    }
}
Also used : ActiveMQServer(org.apache.activemq.artemis.core.server.ActiveMQServer) ActiveMQServerControl(org.apache.activemq.artemis.api.core.management.ActiveMQServerControl) ServiceName(org.jboss.msc.service.ServiceName) ModelNode(org.jboss.dmr.ModelNode) OperationFailedException(org.jboss.as.controller.OperationFailedException)

Example 94 with ServiceName

use of org.jboss.msc.service.ServiceName in project wildfly by wildfly.

the class ActiveMQServerControlHandler method getServerControl.

private ActiveMQServerControl getServerControl(final OperationContext context, ModelNode operation) throws OperationFailedException {
    final ServiceName serviceName = MessagingServices.getActiveMQServiceName(PathAddress.pathAddress(operation.get(ModelDescriptionConstants.OP_ADDR)));
    ServiceController<?> service = context.getServiceRegistry(false).getService(serviceName);
    if (service == null || service.getState() != ServiceController.State.UP) {
        throw MessagingLogger.ROOT_LOGGER.activeMQServerNotInstalled(serviceName.getSimpleName());
    }
    ActiveMQServer server = ActiveMQServer.class.cast(service.getValue());
    return server.getActiveMQServerControl();
}
Also used : ActiveMQServer(org.apache.activemq.artemis.core.server.ActiveMQServer) ServiceName(org.jboss.msc.service.ServiceName)

Example 95 with ServiceName

use of org.jboss.msc.service.ServiceName in project wildfly by wildfly.

the class ActiveMQServerControlWriteHandler method applyUpdateToRuntime.

@Override
protected boolean applyUpdateToRuntime(final OperationContext context, final ModelNode operation, final String attributeName, final ModelNode newValue, final ModelNode currentValue, final HandbackHolder<Void> handbackHolder) throws OperationFailedException {
    AttributeDefinition attr = getAttributeDefinition(attributeName);
    if (attr.getFlags().contains(AttributeAccess.Flag.RESTART_ALL_SERVICES)) {
        // Restart required
        return true;
    } else {
        ServiceRegistry registry = context.getServiceRegistry(true);
        final ServiceName serviceName = MessagingServices.getActiveMQServiceName(PathAddress.pathAddress(operation.get(OP_ADDR)));
        ServiceController<?> service = registry.getService(serviceName);
        if (service == null) {
            // The service isn't installed, so the work done in the Stage.MODEL part is all there is to it
            return false;
        } else if (service.getState() != ServiceController.State.UP) {
            // No, don't barf; just let the update apply to the model and put the server in a reload-required state
            return true;
        } else {
            if (!ActiveMQActivationService.isActiveMQServerActive(context, operation)) {
                return false;
            }
            applyOperationToActiveMQService(operation, attributeName, newValue, service);
            return false;
        }
    }
}
Also used : ServiceName(org.jboss.msc.service.ServiceName) AttributeDefinition(org.jboss.as.controller.AttributeDefinition) ServiceRegistry(org.jboss.msc.service.ServiceRegistry)

Aggregations

ServiceName (org.jboss.msc.service.ServiceName)323 ServiceTarget (org.jboss.msc.service.ServiceTarget)62 PathAddress (org.jboss.as.controller.PathAddress)57 ModelNode (org.jboss.dmr.ModelNode)53 DeploymentUnit (org.jboss.as.server.deployment.DeploymentUnit)47 ServiceRegistry (org.jboss.msc.service.ServiceRegistry)45 OperationFailedException (org.jboss.as.controller.OperationFailedException)35 ServiceController (org.jboss.msc.service.ServiceController)26 Module (org.jboss.modules.Module)24 ActiveMQServer (org.apache.activemq.artemis.core.server.ActiveMQServer)22 EEModuleDescription (org.jboss.as.ee.component.EEModuleDescription)22 ContextNames (org.jboss.as.naming.deployment.ContextNames)21 ComponentDescription (org.jboss.as.ee.component.ComponentDescription)20 BinderService (org.jboss.as.naming.service.BinderService)20 ArrayList (java.util.ArrayList)17 HashSet (java.util.HashSet)17 ServiceBuilder (org.jboss.msc.service.ServiceBuilder)16 HashMap (java.util.HashMap)14 DeploymentUnitProcessingException (org.jboss.as.server.deployment.DeploymentUnitProcessingException)14 OperationContext (org.jboss.as.controller.OperationContext)12