You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by co...@apache.org on 2003/01/05 17:38:09 UTC

cvs commit: jakarta-commons/modeler/src/java/org/apache/commons/modeler/ant ModelerTask.java ant.properties JmxSet.java MLETTask.java

costin      2003/01/05 08:38:09

  Modified:    modeler/src/java/org/apache/commons/modeler/ant JmxSet.java
                        MLETTask.java
  Added:       modeler/src/java/org/apache/commons/modeler/ant
                        ModelerTask.java ant.properties
  Log:
  Added a <modeler> task that will create a BaseModelerMBean wrapping
  the real bean. The use is similar with <mlet>, except it wrapps the
  modeler around the code.
  
  Revision  Changes    Path
  1.4       +2 -0      jakarta-commons/modeler/src/java/org/apache/commons/modeler/ant/JmxSet.java
  
  Index: JmxSet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/modeler/src/java/org/apache/commons/modeler/ant/JmxSet.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JmxSet.java	26 Dec 2002 18:07:36 -0000	1.3
  +++ JmxSet.java	5 Jan 2003 16:38:09 -0000	1.4
  @@ -139,6 +139,8 @@
                        objValue=new ObjectName( value );
                    } else if( "int".equals( type )) {
                        objValue=new Integer( value );
  +                 } else if( "boolean".equals( type )) {
  +                     objValue=new Boolean( value );
                    }
   
               }
  
  
  
  1.3       +62 -35    jakarta-commons/modeler/src/java/org/apache/commons/modeler/ant/MLETTask.java
  
  Index: MLETTask.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/modeler/src/java/org/apache/commons/modeler/ant/MLETTask.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MLETTask.java	26 Dec 2002 18:08:11 -0000	1.2
  +++ MLETTask.java	5 Jan 2003 16:38:09 -0000	1.3
  @@ -61,6 +61,7 @@
   import javax.management.*;
   import javax.management.ObjectName;
   import javax.management.MBeanServer;
  +import javax.management.MBeanServerFactory;
   import javax.management.loading.MLet;
   import java.util.*;
   import java.net.URL;
  @@ -113,49 +114,75 @@
           this.objectName = name;
       }
   
  -    public void execute() throws BuildException {
  +    MBeanServer server;
  +
  +    public MBeanServer getMBeanServer() {
  +        if( server!= null ) return server;
  +
  +        server=(MBeanServer)project.getReference("jmx.server");
  +
  +        if (server != null) return server;
  +
           try {
  -            ObjectName defaultLoader= new ObjectName("ant", "mlet", "default");
  -            MBeanServer server=(MBeanServer)project.getReference("jmx.server");
  +            if( MBeanServerFactory.findMBeanServer(null).size() > 0 ) {
  +                server=(MBeanServer)MBeanServerFactory.findMBeanServer(null).get(0);
  +            } else {
  +                server=MBeanServerFactory.createMBeanServer();
   
  -            if (server == null) {
  -                if( MBeanServerFactory.findMBeanServer(null).size() > 0 ) {
  -                    server=(MBeanServer)MBeanServerFactory.findMBeanServer(null).get(0);
  -                } else {
  -                    server=MBeanServerFactory.createMBeanServer();
  -                    MLet mlet=new MLet( new URL[0], this.getClass().getClassLoader());
  -                    server.registerMBean(mlet, defaultLoader);
  -                    if( log.isDebugEnabled())
  -                        log.debug("Creating mbean server and loader "+ mlet +
  -                                " " + this.getClass().getClassLoader());
  -                }
  -                project.addReference("jmx.server", server);
  -                // Create the MLet object
  +                // Register a loader that will be find ant classes.
  +                ObjectName defaultLoader= new ObjectName("modeler-ant",
  +                        "loader", "ant");
  +                MLet mlet=new MLet( new URL[0], this.getClass().getClassLoader());
  +                server.registerMBean(mlet, defaultLoader);
  +
  +                if( log.isDebugEnabled())
  +                    log.debug("Creating mbean server and loader "+ mlet +
  +                            " " + this.getClass().getClassLoader());
               }
  +            project.addReference("jmx.server", server);
   
  -            if( log.isDebugEnabled()) log.debug("Using Mserver " + server );
  +            // Create the MLet object
  +        } catch( JMException ex ) {
  +            log.error("Error creating server", ex);
  +        }
  +
  +        if( log.isDebugEnabled()) log.debug("Using Mserver " + server );
  +
  +        return server;
  +    }
   
  -            ObjectName oname=new ObjectName( objectName );
  -            if( args==null ) {
  -                // XXX Use the loader ref, if any
  -                server.createMBean(code, oname, defaultLoader);
  -            } else {
  -                // XXX Use the loader ref, if any
  -                Object argsA[]=new Object[ args.size()];
  -                String sigA[]=new String[args.size()];
  -                for( int i=0; i<args.size(); i++ ) {
  -                    Arg arg=(Arg)args.elementAt(i);
  -                    if( arg.type==null )
  -                        arg.type="java.lang.String";
  -                    sigA[i]=arg.getType();
  -                    argsA[i]=arg.getValue();
  -                    // XXX Deal with not string types - IntrospectionUtils
  -                }
  -                server.createMBean(code, oname, defaultLoader, argsA, sigA );
  +
  +    protected void bindJmx(String objectName, String code,
  +                        String arg0, Vector args)
  +            throws Exception
  +    {
  +        MBeanServer server=getMBeanServer();
  +        ObjectName oname=new ObjectName( objectName );
  +
  +        // XXX Use the loader ref, if any
  +        if( args==null ) {
  +            server.createMBean(code, oname);
  +        } else {
  +            Object argsA[]=new Object[ args.size()];
  +            String sigA[]=new String[args.size()];
  +            for( int i=0; i<args.size(); i++ ) {
  +                Arg arg=(Arg)args.elementAt(i);
  +                if( arg.type==null )
  +                    arg.type="java.lang.String";
  +                sigA[i]=arg.getType();
  +                argsA[i]=arg.getValue();
  +                // XXX Deal with not string types - IntrospectionUtils
               }
  +            server.createMBean(code, oname, argsA, sigA );
  +        }
  +    }
   
  +
  +    public void execute() throws BuildException {
  +        try {
  +            bindJmx( objectName, code, null, args);
           } catch(Exception ex) {
  -            ex.printStackTrace();
  +            log.error("Can't create mbean " + objectName, ex);
           }
       }
   
  
  
  
  1.3       +30 -25    jakarta-commons/modeler/src/java/org/apache/commons/modeler/ant/ModelerTask.java
  
  
  
  
  1.1                  jakarta-commons/modeler/src/java/org/apache/commons/modeler/ant/ant.properties
  
  Index: ant.properties
  ===================================================================
  modeler=org.apache.commons.modeler.ant.ModelerTask
  MLET=org.apache.commons.modeler.ant.MLETTask
  mbean=org.apache.commons.modeler.ant.MLETTask
  jmx-attribute=org.apache.commons.modeler.ant.JmxSet
  jmx-operation=org.apache.commons.modeler.ant.JmxInvoke
  mbeans-descriptors=org.apache.commons.modeler.ant.RegistryTask
  
  # old names, to be removed
  jmxSet=org.apache.commons.modeler.ant.JmxSet
  jmx=org.apache.commons.modeler.ant.JmxInvoke
  modelerRegistry=org.apache.commons.modeler.ant.RegistryTask
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>