001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package org.apache.commons.modeler.ant; 019 020 import java.util.ArrayList; 021 import java.util.List; 022 023 import org.apache.commons.logging.Log; 024 import org.apache.commons.logging.LogFactory; 025 import org.apache.commons.modeler.Registry; 026 import org.apache.tools.ant.BuildException; 027 import org.apache.tools.ant.Task; 028 029 /** 030 * Group a set of mbeans in a service, and perform actions on 031 * it. 032 * 033 * 034 */ 035 public class ServiceTask extends Task { 036 private static Log log = LogFactory.getLog(ServiceTask.class); 037 List mbeans=new ArrayList(); 038 String action; 039 String refId; 040 041 public ServiceTask() { 042 } 043 044 public void addMbean(MLETTask mbean) { 045 mbeans.add(mbean); 046 } 047 048 public List getMbeans() { 049 return mbeans; 050 } 051 052 /** Set action to be executed on the mbean collection. 053 * If null - we'll perform init and start. 054 * 055 * @param action 056 */ 057 public void setAction(String action) { 058 this.action=action; 059 } 060 061 /** Perform the action on a previously declared service 062 * 063 */ 064 public void setRefId( String ref ) { 065 this.refId=ref; 066 } 067 068 public void execute() throws BuildException { 069 try { 070 Registry reg=Registry.getRegistry(); 071 072 if( refId != null ) { 073 ServiceTask stask=(ServiceTask)project.getReference(refId); 074 } 075 // create the mbeans 076 List onames=new ArrayList(); 077 078 for( int i=0; i<mbeans.size(); i++ ) { 079 MLETTask mbean=(MLETTask)mbeans.get(i); 080 mbean.execute(); 081 onames.add( mbean.getObjectName()); 082 } 083 084 if( action==null ) { 085 // default: init and start 086 reg.invoke(onames, "init", false); 087 reg.invoke(onames, "start", false); 088 } else { 089 reg.invoke(onames, action, false ); 090 } 091 092 } catch(Exception ex) { 093 log.error("Error ", ex); 094 } 095 } 096 }