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 2003/09/05 04:35:59 UTC

cvs commit: incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/plan CreateMBeanInstance.java InitializeMBeanInstance.java

dain        2003/09/04 19:35:59

  Modified:    modules/core/src/java/org/apache/geronimo/deployment/plan
                        CreateMBeanInstance.java
                        InitializeMBeanInstance.java
  Log:
  Added support for GeronimoMBean.
  Moved getValue method to Classes.
  
  Revision  Changes    Path
  1.13      +44 -67    incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/plan/CreateMBeanInstance.java
  
  Index: CreateMBeanInstance.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/plan/CreateMBeanInstance.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- CreateMBeanInstance.java	28 Aug 2003 11:18:01 -0000	1.12
  +++ CreateMBeanInstance.java	5 Sep 2003 02:35:59 -0000	1.13
  @@ -55,11 +55,8 @@
    */
   package org.apache.geronimo.deployment.plan;
   
  -import java.beans.PropertyEditor;
  -import java.io.File;
  -import java.lang.reflect.Constructor;
  -import java.net.MalformedURLException;
   import java.net.URI;
  +import java.util.ArrayList;
   import java.util.HashSet;
   import java.util.Iterator;
   import java.util.List;
  @@ -77,16 +74,13 @@
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  -
  -import org.apache.geronimo.common.StringValueParser;
   import org.apache.geronimo.common.Classes;
  -import org.apache.geronimo.common.propertyeditor.PropertyEditors;
  -
   import org.apache.geronimo.deployment.DeploymentException;
   import org.apache.geronimo.deployment.dependency.DependencyServiceMBean;
   import org.apache.geronimo.deployment.service.MBeanDependency;
   import org.apache.geronimo.deployment.service.MBeanMetadata;
   import org.apache.geronimo.deployment.service.MBeanRelationship;
  +import org.apache.geronimo.jmx.GeronimoMBean;
   import org.apache.geronimo.jmx.JMXUtil;
   
   /**
  @@ -156,25 +150,50 @@
               // Create and register the MBean
               try {
                   // Get the constructor arguments
  -                Object[] consValues = metadata.getConstructorArgs().toArray();
  -                List constructorTypes = metadata.getConstructorTypes();
  -                String[] consTypes = (String[]) constructorTypes.toArray(new String[constructorTypes.size()]);
  -                for (int i = 0; i < consTypes.length; i++) {
  -                    String consType = consTypes[i];
  -                    Object value = consValues[i];
  +                List constructorTypeStrings = metadata.getConstructorTypes();
  +                List constructorTypes = new ArrayList(constructorTypeStrings.size());
  +                List constructorValues = metadata.getConstructorArgs();
  +                for (int i = 0; i < constructorTypeStrings.size(); i++) {
  +                    String typeString = (String) constructorTypeStrings.get(i);
  +                    Class type = null;
  +                    try {
  +                        type = Classes.loadClass(typeString, newCL);
  +                    } catch (ClassNotFoundException e) {
  +                        throw new DeploymentException(e);
  +                    }
  +                    constructorTypes.add(type);
  +
  +                    Object value = constructorValues.get(i);
                       if (value instanceof String) {
  -                        value = getValue(newCL, consType, (String) value);
  -                        consValues[i] = value;
  +                        value = Classes.getValue(type, (String) value, baseURI);
  +                        constructorValues.set(i, value);
                       }
                   }
   
  -                // Create the mbean
  -                if (log.isTraceEnabled()) {
  -                    log.trace("Creating MBean name=" + metadata.getName() + " class=" + metadata.getCode());
  -                }
  -                actualName = server.createMBean(metadata.getCode(), metadata.getName(), metadata.getLoaderName(), consValues, consTypes).getObjectName();
  -                if (log.isTraceEnabled() && !actualName.equals(metadata.getName())) {
  -                    log.trace("Actual MBean name is " + actualName);
  +                if (metadata.getGeronimoMBeanInfo() != null) {
  +                    if (log.isTraceEnabled()) {
  +                        log.trace("Creating GeronimoMBean name=" + metadata.getName());
  +                    }
  +                    GeronimoMBean mbean = (GeronimoMBean) server.instantiate("org.apache.geronimo.jmx.GeronimoMBean");
  +                    mbean.setClassLoader(newCL);
  +                    mbean.setMBeanInfo(metadata.getGeronimoMBeanInfo());
  +                    server.registerMBean(mbean, metadata.getName());
  +                    actualName = metadata.getName();
  +                } else {
  +                    // Create the mbean
  +                    if (log.isTraceEnabled()) {
  +                        log.trace("Creating MBean name=" + metadata.getName() + " class=" + metadata.getCode());
  +                    }
  +                    actualName = server.createMBean(
  +                            metadata.getCode(),
  +                            metadata.getName(),
  +                            metadata.getLoaderName(),
  +                            constructorValues.toArray(),
  +                            (String[]) constructorTypeStrings.toArray(new String[constructorTypes.size()])
  +                    ).getObjectName();
  +                    if (log.isTraceEnabled() && !actualName.equals(metadata.getName())) {
  +                        log.trace("Actual MBean name is " + actualName);
  +                    }
                   }
                   metadata.setName(actualName);
   
  @@ -216,6 +235,7 @@
           }
       }
   
  +
       public void undo() {
           if (actualName == null) {
               return;
  @@ -253,49 +273,6 @@
               }
           } finally {
               Thread.currentThread().setContextClassLoader(oldCL);
  -        }
  -    }
  -
  -    private static final Class[] stringArg = new Class[]{String.class};
  -
  -    private Object getValue(ClassLoader cl, String typeName, String value) throws DeploymentException {
  -        StringValueParser parser = new StringValueParser();
  -        value = parser.parse(value);
  -        
  -        if("java.net.URI".equals(typeName)) {
  -            return baseURI.resolve(value);
  -        }
  -        if("java.net.URL".equals(typeName)) {
  -            try {
  -                return baseURI.resolve(value).toURL();
  -            } catch (MalformedURLException e) {
  -                throw new DeploymentException(e);
  -            }
  -        }
  -        if("java.io.File".equals(typeName)) {
  -            return new File(baseURI.resolve(value));
  -        }
  -
  -        Class attrType = null;
  -        try {
  -            attrType = Classes.loadClass(typeName, cl);
  -        } catch (ClassNotFoundException e) {
  -            throw new DeploymentException(e);
  -        }
  -
  -        // try a property editor
  -        PropertyEditor editor = PropertyEditors.findEditor(attrType);
  -        if (editor != null) {
  -            editor.setAsText(value);
  -            return editor.getValue();
  -        }
  -
  -        // try a String constructor
  -        try {
  -            Constructor cons = attrType.getConstructor(stringArg);
  -            return cons.newInstance(new Object[]{value});
  -        } catch (Exception e) {
  -            throw new DeploymentException("Could not create value of type " + typeName);
           }
       }
   
  
  
  
  1.6       +7 -38     incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/plan/InitializeMBeanInstance.java
  
  Index: InitializeMBeanInstance.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/plan/InitializeMBeanInstance.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- InitializeMBeanInstance.java	28 Aug 2003 11:18:01 -0000	1.5
  +++ InitializeMBeanInstance.java	5 Sep 2003 02:35:59 -0000	1.6
  @@ -55,8 +55,6 @@
    */
   package org.apache.geronimo.deployment.plan;
   
  -import java.beans.PropertyEditor;
  -import java.lang.reflect.Constructor;
   import java.util.Iterator;
   import java.util.Map;
   import javax.management.Attribute;
  @@ -70,13 +68,9 @@
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  -
  -import org.apache.geronimo.common.StringValueParser;
  -import org.apache.geronimo.common.Classes;
  -import org.apache.geronimo.common.propertyeditor.PropertyEditors;
  -
   import org.apache.geronimo.deployment.DeploymentException;
   import org.apache.geronimo.deployment.service.MBeanMetadata;
  +import org.apache.geronimo.common.Classes;
   
   /**
    *
  @@ -133,7 +127,11 @@
                   }
                   Object value = attributeValues.get(attributeName);
                   if (value instanceof String) {
  -                    value = getValue(newCL, attributeInfo.getType(), (String) value);
  +                    try {
  +                        value = Classes.getValue(newCL, attributeInfo.getType(), (String) value, metadata.getBaseURI());
  +                    } catch (ClassNotFoundException e) {
  +                        throw new DeploymentException(e);
  +                    }
                   }
   
                   attributeList.add(new Attribute(attributeName, value));
  @@ -162,35 +160,6 @@
       }
   
       public void undo() {
  -    }
  -
  -    private static final Class[] stringArg = new Class[]{String.class};
  -
  -    private Object getValue(ClassLoader cl, String typeName, String value) throws DeploymentException {
  -        StringValueParser parser = new StringValueParser();
  -        value = parser.parse(value);
  -        
  -        Class attrType = null;
  -        try {
  -            attrType = Classes.loadClass(typeName, cl);
  -        } catch (ClassNotFoundException e) {
  -            throw new DeploymentException(e);
  -        }
  -
  -        // try a property editor
  -        PropertyEditor editor = PropertyEditors.findEditor(attrType);
  -        if (editor != null) {
  -            editor.setAsText(value);
  -            return editor.getValue();
  -        }
  -
  -        // try a String constructor
  -        try {
  -            Constructor cons = attrType.getConstructor(stringArg);
  -            return cons.newInstance(new Object[]{value});
  -        } catch (Exception e) {
  -            throw new DeploymentException("Could not create value of type " + typeName);
  -        }
       }
   
       public String toString() {