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

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

djencks     2004/01/21 11:44:29

  Modified:    modules/kernel/src/java/org/apache/geronimo/gbean/jmx
                        GBeanMBean.java CollectionProxy.java
  Log:
  useful info on exceptions
  
  Revision  Changes    Path
  1.4       +12 -7     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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- GBeanMBean.java	20 Jan 2004 22:39:05 -0000	1.3
  +++ GBeanMBean.java	21 Jan 2004 19:44:29 -0000	1.4
  @@ -62,6 +62,7 @@
   import java.util.Iterator;
   import java.util.Map;
   import java.util.Set;
  +
   import javax.management.Attribute;
   import javax.management.AttributeList;
   import javax.management.AttributeNotFoundException;
  @@ -78,20 +79,18 @@
   import javax.management.ObjectName;
   import javax.management.ReflectionException;
   
  +import net.sf.cglib.reflect.FastClass;
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  -import org.apache.geronimo.kernel.jmx.MBeanOperationSignature;
  -import org.apache.geronimo.kernel.management.NotificationType;
   import org.apache.geronimo.gbean.GAttributeInfo;
  +import org.apache.geronimo.gbean.GBean;
   import org.apache.geronimo.gbean.GBeanInfo;
   import org.apache.geronimo.gbean.GConstructorInfo;
   import org.apache.geronimo.gbean.GEndpointInfo;
   import org.apache.geronimo.gbean.GOperationInfo;
   import org.apache.geronimo.gbean.InvalidConfigurationException;
  -import org.apache.geronimo.gbean.GBean;
  -import org.apache.geronimo.gbean.jmx.AbstractManagedObject;
  -
  -import net.sf.cglib.reflect.FastClass;
  +import org.apache.geronimo.kernel.jmx.MBeanOperationSignature;
  +import org.apache.geronimo.kernel.management.NotificationType;
   
   /**
    * A GeronimoMBean is a J2EE Management Managed Object, and is standard base for Geronimo services.
  @@ -267,6 +266,7 @@
           // create the instance
           Object[] parameters = new Object[parameterTypes.length];
           Iterator names = constructorInfo.getAttributeNames().iterator();
  +        Iterator assertedTypes = constructorInfo.getTypes().iterator();
           for (int i = 0; i < parameters.length; i++) {
               String name = (String) names.next();
               if (attributeMap.containsKey(name)) {
  @@ -278,6 +278,11 @@
               } else {
                   throw new InvalidConfigurationException("Unknown attribute or endpoint name in constructor: name=" + name);
               }
  +            Class assertedType = (Class) assertedTypes.next();
  +            assert parameters[i] == null || assertedType.isPrimitive() || assertedType.isAssignableFrom(parameters[i].getClass()):
  +                    "Attempting to construct " + objectName + " of type " + gbeanInfo.getClassName()
  +                    + ". Constructor parameter " + i + " should be " + assertedType.getName()
  +                    + " but is " + parameters[i].getClass().getName();
           }
           target = constructor.newInstance(parameters);
   
  
  
  
  1.9       +8 -2      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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- CollectionProxy.java	20 Jan 2004 22:39:05 -0000	1.8
  +++ CollectionProxy.java	21 Jan 2004 19:44:29 -0000	1.9
  @@ -79,6 +79,7 @@
   import net.sf.cglib.proxy.Enhancer;
   import net.sf.cglib.proxy.Factory;
   import net.sf.cglib.proxy.SimpleCallbacks;
  +import net.sf.cglib.core.CodeGenerationException;
   
   /**
    *
  @@ -140,7 +141,12 @@
           });
           enhancer.setCallbacks(new SimpleCallbacks());
           enhancer.setClassLoader(type.getClassLoader());
  -        factory = enhancer.create();
  +        try {
  +            factory = enhancer.create();
  +        } catch (CodeGenerationException e) {
  +            log.info("Most likely you are enhancing a class rather than an interface and it lacks a default constructor" +  e.getMessage());
  +            throw e;
  +        }
       }
   
       public synchronized void destroy() {