You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by da...@apache.org on 2004/01/20 23:39:05 UTC

cvs commit: incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/gbean/jmx GBeanMBeanContext.java CollectionProxy.java GBeanMBean.java

dain        2004/01/20 14:39:05

  Modified:    modules/kernel/src/java/org/apache/geronimo/gbean GBean.java
               modules/kernel/src/java/org/apache/geronimo/gbean/jmx
                        CollectionProxy.java GBeanMBean.java
  Added:       modules/kernel/src/java/org/apache/geronimo/gbean
                        GBeanContext.java
               modules/kernel/src/java/org/apache/geronimo/gbean/jmx
                        GBeanMBeanContext.java
  Log:
  Added GBeanContext - this is currently commented out because it requires
  all GBeans be updated
  
  Revision  Changes    Path
  1.2       +7 -1      incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/gbean/GBean.java
  
  Index: GBean.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/gbean/GBean.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- GBean.java	14 Jan 2004 22:16:37 -0000	1.1
  +++ GBean.java	20 Jan 2004 22:39:04 -0000	1.2
  @@ -66,6 +66,12 @@
    */
   public interface GBean {
       /**
  +     * Sets the operating context for the GBean.
  +     * @param context the context object or null
  +     */
  +//    void setGBeanContext(GBeanContext context);
  +
  +    /**
        * Starts the GBean.  This informs the GBean that it is about to transition to the running state.
        * @throws org.apache.geronimo.gbean.WaitingException if the target is waiting for an external condition before it can fully start
        * @throws java.lang.Exception if the target failed to start; this will cause a transition to the failed state
  
  
  
  1.1                  incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/gbean/GBeanContext.java
  
  Index: GBeanContext.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  package org.apache.geronimo.gbean;
  
  
  /**
   * Context handle for a GBean which allows the bean to determin the current state, and to change the
   * current state.
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/20 22:39:04 $
   */
  public interface GBeanContext {
      /**
       * Gets the state of this component as an int.
       * The int return is required by the JSR77 specification.
       *
       * @return the current state of this component
       */
      public int getState();
  
      /**
       * Attempts to bring the component into the fully running state. If an Exception occurs while
       * starting the component, the component is automaticaly failed.
       *
       * There is no guarantee that the Geronimo MBean will be running when the method returns.
       *
       * @throws Exception if a problem occurs while starting the component
       */
      public void start() throws Exception;
  
      /**
       * Attempt to bring the component into the fully stopped state. If an exception occurs while
       * stopping the component, tthe component is automaticaly failed.
       *
       * There is no guarantee that the Geronimo MBean will be stopped when the method returns.
       *
       * @throws Exception if a problem occurs while stopping the component
       */
      public void stop() throws Exception;
  
      /**
       * Moves this component to the FAILED state.
       *
       * The component is guaranteed to be in the failed state when the method returns.
       *
       */
      public void fail();
  }
  
  
  
  1.8       +10 -15    incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/CollectionProxy.java
  
  Index: CollectionProxy.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/CollectionProxy.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- CollectionProxy.java	19 Jan 2004 06:33:24 -0000	1.7
  +++ CollectionProxy.java	20 Jan 2004 22:39:05 -0000	1.8
  @@ -55,32 +55,30 @@
    */
   package org.apache.geronimo.gbean.jmx;
   
  +import java.lang.reflect.Method;
  +import java.util.ArrayList;
   import java.util.Collection;
   import java.util.Collections;
   import java.util.HashMap;
  +import java.util.HashSet;
   import java.util.Iterator;
   import java.util.Map;
   import java.util.NoSuchElementException;
   import java.util.Set;
  -import java.util.HashSet;
  -import java.util.ArrayList;
  -import java.lang.reflect.Method;
  -
   import javax.management.ObjectName;
   
  -import org.apache.geronimo.gbean.WaitingException;
  -import org.apache.geronimo.gbean.EndpointCollection;
  -import org.apache.geronimo.gbean.EndpointCollectionListener;
  -import org.apache.geronimo.gbean.EndpointCollectionEvent;
  -import org.apache.geronimo.kernel.jmx.InterfaceCallbackFilter;
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  +import org.apache.geronimo.gbean.EndpointCollection;
  +import org.apache.geronimo.gbean.EndpointCollectionEvent;
  +import org.apache.geronimo.gbean.EndpointCollectionListener;
  +import org.apache.geronimo.gbean.WaitingException;
   
  +import net.sf.cglib.proxy.CallbackFilter;
  +import net.sf.cglib.proxy.Callbacks;
   import net.sf.cglib.proxy.Enhancer;
   import net.sf.cglib.proxy.Factory;
   import net.sf.cglib.proxy.SimpleCallbacks;
  -import net.sf.cglib.proxy.CallbackFilter;
  -import net.sf.cglib.proxy.Callbacks;
   
   /**
    *
  @@ -135,13 +133,11 @@
           } else {
               enhancer.setSuperclass(type);
           }
  -        //enhancer.setCallbackFilter(new InterfaceCallbackFilter(type));
           enhancer.setCallbackFilter(new CallbackFilter() {
               public int accept(Method method) {
                   return Callbacks.INTERCEPT;
               }
           });
  -
           enhancer.setCallbacks(new SimpleCallbacks());
           enhancer.setClassLoader(type.getClassLoader());
           factory = enhancer.create();
  @@ -153,7 +149,6 @@
               interceptor.disconnect();
           }
           proxy.listeners = null;
  -
           gmbean = null;
           name = null;
           proxies = null;
  
  
  
  1.3       +10 -1     incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/GBeanMBean.java
  
  Index: GBeanMBean.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/GBeanMBean.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- GBeanMBean.java	16 Jan 2004 23:31:21 -0000	1.2
  +++ GBeanMBean.java	20 Jan 2004 22:39:05 -0000	1.3
  @@ -304,6 +304,10 @@
   
           if (registrationDone.booleanValue()) {
               // we're now offically on line
  +            if (target instanceof GBean) {
  +                GBean gbean = (GBean) target;
  +//                gbean.setGBeanContext(new GBeanMBeanContext(server, this, objectName));
  +            }
               offline = false;
           } else {
               // we need to bring the endpoints back off line
  @@ -328,6 +332,11 @@
           for (Iterator iterator = endpointMap.values().iterator(); iterator.hasNext();) {
               GBeanMBeanEndpoint endpoint = (GBeanMBeanEndpoint) iterator.next();
               endpoint.offline();
  +        }
  +
  +        if (target instanceof GBean) {
  +            GBean gbean = (GBean) target;
  +//            gbean.setGBeanContext(null);
           }
   
           offline = true;
  
  
  
  1.1                  incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/GBeanMBeanContext.java
  
  Index: GBeanMBeanContext.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  package org.apache.geronimo.gbean.jmx;
  
  import javax.management.MBeanServer;
  import javax.management.ObjectName;
  
  import org.apache.geronimo.gbean.GBeanContext;
  import org.apache.geronimo.kernel.management.State;
  
  /**
   * 
   * 
   * @version $Revision: 1.1 $ $Date: 2004/01/20 22:39:05 $
   */
  public class GBeanMBeanContext implements GBeanContext {
      /**
       * The MBean server in which the Geronimo MBean is registered.
       */
      private MBeanServer server;
  
      /**
       * The GeronimoMBean which owns the target.
       */
      private GBeanMBean gmbean;
  
      /**
       * The object name of the Geronimo MBean.
       */
      private ObjectName objectName;
  
      /**
       * Creates a new context for a target.
       *
       * @param server a reference to the mbean server in which the Geronimo Mbean is registered
       * @param gmbean the Geronimo Mbean the contains the target
       * @param objectName the registered name of the Geronimo MBean
       */
      public GBeanMBeanContext(MBeanServer server, GBeanMBean gmbean, ObjectName objectName) {
          this.server = server;
          this.gmbean = gmbean;
          this.objectName = objectName;
      }
  
      /**
       * Gets a reference to the MBean server in which the Geronimo MBean is registered.
       * @return a reference to the MBean server in which the Geronimo MBean is registered
       */
      public MBeanServer getServer() {
          return server;
      }
  
      /**
       * Gets the registered name of the Geronimo MBean
       * @return the registered name of the Geronimo MBean
       */
      public ObjectName getObjectName() {
          return objectName;
      }
  
      /**
       * Gets the state of this component as an int.
       * The int return is required by the JSR77 specification.
       *
       * @return the current state of this component
       */
      public int getState() {
          return gmbean.getState();
      }
  
      /**
       * Attempts to bring the component into the fully running state. If an Exception occurs while
       * starting the component, the component is automaticaly failed.
       *
       * There is no guarantee that the Geronimo MBean will be running when the method returns.
       *
       * @throws Exception if a problem occurs while starting the component
       */
      public void start() throws Exception {
          gmbean.attemptFullStart();
      }
  
      /**
       * Attempt to bring the component into the fully stopped state. If an exception occurs while
       * stopping the component, tthe component is automaticaly failed.
       *
       * There is no guarantee that the Geronimo MBean will be stopped when the method returns.
       *
       * @throws Exception if a problem occurs while stopping the component
       */
      public void stop() throws Exception {
          final int state = gmbean.getState();
          if (state == State.RUNNING_INDEX || state == State.STARTING_INDEX) {
              gmbean.stop();
          } else if (state == State.STOPPING_INDEX) {
              gmbean.attemptFullStop();
          }
      }
  
      /**
       * Moves this component to the FAILED state.
       *
       * The component is guaranteed to be in the failed state when the method returns.
       */
      public void fail() {
          gmbean.fail();
      }
  }