/**
*
* Copyright 2003-2005 The Apache Software Foundation
*
*  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.apache.geronimo.tomcat.cluster;

import java.util.Map;

import org.apache.catalina.cluster.ClusterDeployer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.tomcat.BaseGBean;
import org.apache.geronimo.tomcat.ObjectRetriever;

public class ClusterDeployerGBean  extends BaseGBean implements
        GBeanLifecycle, ObjectRetriever {

    private static final Log log = LogFactory
            .getLog(MembershipServiceGBean.class);

    public static final String J2EE_TYPE = "MembershipService";

    private final ClusterDeployer deployer;

    public ClusterDeployerGBean(String className, Map initParams) throws Exception {

        super(); // TODO: make it an attribute

        // Validate
        if (className == null) {
            throw new IllegalArgumentException(
                    "Must have a 'className' attribute.");
        }

        // Create the CatalinaCluster object
        deployer = (ClusterDeployer) Class.forName(className).newInstance();

        // Set the parameters
        setParameters(deployer, initParams);

    }

    public Object getInternalObject() {
        return deployer;
    }

    public void doFail() {
        log.info("Failed");
    }

    public void doStart() throws Exception {
        log.info("Started ClusterDeployer gbean.");
    }

    public void doStop() throws Exception {
        log.info("Stopped ClusterDeployer gbean.");
    }

    public static final GBeanInfo GBEAN_INFO;

    static {
        GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("ClusterDeployer",
                ClusterDeployerGBean.class, J2EE_TYPE);
        infoFactory.addAttribute("className", String.class, true);
        infoFactory.addAttribute("initParams", Map.class, true);
        infoFactory.addOperation("getInternalObject");
        infoFactory.setConstructor(new String[] { "className", "initParams" });
        GBEAN_INFO = infoFactory.getBeanInfo();
    }

    public static GBeanInfo getGBeanInfo() {
        return GBEAN_INFO;
    }
}

@@ -1053,16 +1053,73 @@
 triever;
+%0Aimport org.apache.geronimo.system.serverinfo.ServerInfo;
 %0A%0Apublic
@@ -1175,24 +1175,16 @@
 plements
-%0A       
  GBeanLi
@@ -1277,33 +1277,31 @@
 .getLog(
-MembershipService
+ClusterDeployer
 GBean.cl
@@ -1355,25 +1355,23 @@
  = %22
-MembershipService
+ClusterDeployer
 %22;%0A%0A
@@ -1376,21 +1376,23 @@
 %0A%0A    pr
-iva
+otec
 te
+d
  final C
@@ -2051,17 +2051,50 @@
 (%22Failed
-%22
+: %22+ deployer.getClass().getName()
 );%0A    %7D
@@ -2166,31 +2166,51 @@
 Started 
-ClusterDeployer
+%22+ deployer.getClass().getName() +%22
  gbean.%22
@@ -2289,31 +2289,53 @@
 Stopped 
-ClusterDeployer
+%22 + deployer.getClass().getName() + %22
  gbean.%22

Tidy up some small bugs