/* * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.switchyard.as7.extension.admin; import static org.switchyard.as7.extension.SwitchYardModelConstants.SERVICE_NAME; import static org.switchyard.as7.extension.SwitchYardModelConstants.TYPE; import javax.xml.namespace.QName; import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationFailedException; import org.jboss.as.controller.OperationStepHandler; import org.jboss.dmr.ModelNode; import org.jboss.msc.service.ServiceController; import org.switchyard.admin.Application; import org.switchyard.admin.ComponentService; import org.switchyard.admin.Reference; import org.switchyard.admin.Service; import org.switchyard.admin.SwitchYard; import org.switchyard.as7.extension.services.SwitchYardAdminService; /** * SwitchYardSubsystemShowMetrics * * Operation returning metrics for services deployed on the SwitchYard subsystem. */ public final class SwitchYardSubsystemShowMetrics implements OperationStepHandler { /** * The global instance for this operation. */ public static final SwitchYardSubsystemShowMetrics INSTANCE = new SwitchYardSubsystemShowMetrics(); private SwitchYardSubsystemShowMetrics() { // forbidden inheritance } /* * (non-Javadoc) * * @see * org.jboss.as.controller.OperationStepHandler#execute(org.jboss.as.controller * .OperationContext, org.jboss.dmr.ModelNode) */ @Override public void execute(final OperationContext context, final ModelNode operation) throws OperationFailedException { context.addStep(new OperationStepHandler() { @Override public void execute(final OperationContext context, final ModelNode operation) throws OperationFailedException { final ServiceController<?> controller = context.getServiceRegistry(false).getRequiredService( SwitchYardAdminService.SERVICE_NAME); SwitchYard switchYard = SwitchYard.class.cast(controller.getService().getValue()); if (operation.hasDefined(SERVICE_NAME)) { final String serviceName = operation.get(SERVICE_NAME).asString(); final String type = operation.get(TYPE).asString(); final QName serviceQName = QName.valueOf(serviceName); for (Application application : switchYard.getApplications()) { if (type == null || "*".equals(type) || "service".equals(type)) { for (Service service : application.getServices()) { if ("*".equals(serviceName) || serviceQName.equals(service.getName())) { context.getResult().add(ModelNodeCreationUtil.createServiceMetricsNode(service)); } } } if (type == null || "*".equals(type) || "reference".equals(type)) { for (Reference reference : application.getReferences()) { if ("*".equals(serviceName) || serviceQName.equals(reference.getName())) { context.getResult().add(ModelNodeCreationUtil.createReferenceMetricsNode(reference)); } } } if (type == null || "*".equals(type) || "componentService".equals(type)) { for (ComponentService componentService : application.getComponentServices()) { if ("*".equals(serviceName) || serviceQName.equals(componentService.getName())) { context.getResult().add(ModelNodeCreationUtil.createComponentServiceMetricsNode(componentService)); } } } } } else { context.getResult().add( ModelNodeCreationUtil.addMetricsToNode( new ModelNode(), switchYard.getMessageMetrics())); } context.stepCompleted(); } }, OperationContext.Stage.RUNTIME); context.stepCompleted(); } }