costin 2003/02/27 20:54:35 Modified: modeler/src/java/org/apache/commons/modeler/ant JmxSet.java MLETTask.java ModelerTask.java ant.properties Log: A bit of refactoring and improvements in the ant tasks, to simplify the syntax and take advantage of metadata. The type is no longer needed ( since we have it anyway ). Duplicated code removed. <mbean> can take a "modeler" boolean flag that will add support for arbitrary beans ( it was a separate tag before ). Revision Changes Path 1.5 +24 -14 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.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- JmxSet.java 5 Jan 2003 16:38:09 -0000 1.4 +++ JmxSet.java 28 Feb 2003 04:54:35 -0000 1.5 @@ -57,6 +57,7 @@ import org.apache.tools.ant.*; import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.Log; +import org.apache.commons.modeler.Registry; import javax.management.*; import javax.management.MBeanServer; @@ -74,6 +75,7 @@ String valueRef; Object objValue; String objectName; + ObjectName oname; String type; @@ -84,6 +86,14 @@ this.attribute = attribute; } + public void setName( String name ) { + this.attribute=name; + } + + public String getName() { + return attribute; + } + public void setValue(String value) { this.value = value; } @@ -108,30 +118,30 @@ this.objectName = name; } + public void setObjectName( ObjectName oname ) { + this.oname=oname; + } public void execute() { try { - MBeanServer server=(MBeanServer)project.getReference("jmx.server"); + Registry registry=Registry.getRegistry(); + MBeanServer server=registry.getMBeanServer(); - if (server == null) { - if( MBeanServerFactory.findMBeanServer(null).size() > 0 ) { - server=(MBeanServer)MBeanServerFactory.findMBeanServer(null).get(0); - } else { - if( log.isDebugEnabled()) - log.debug("Creating mbean server"); - server=MBeanServerFactory.createMBeanServer(); - } - project.addReference("jmx.server", server); + if( oname==null ) + oname=new ObjectName(objectName); + if( type==null ) { + type=registry.getType(oname, attribute); + if( log.isDebugEnabled()) + log.debug("Discovered type " + type); } - ObjectName oname=new ObjectName(objectName); - // XXX convert value, use meta data to find type - if( objValue==null && valueRef != null ) { + if( objValue==null && valueRef != null ) { objValue=project.getReference(valueRef); } if( objValue==null ) { - if( type==null) {// string is default + if( type==null || "java.lang.String".equals( type )) { + // string is default objValue=value; } else if( "ObjectName".equals( type )) { if( log.isTraceEnabled()) 1.4 +47 -16 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.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- MLETTask.java 5 Jan 2003 16:38:09 -0000 1.3 +++ MLETTask.java 28 Feb 2003 04:54:35 -0000 1.4 @@ -83,8 +83,10 @@ String archive; String codebase; String objectName; + ObjectName oname; - Vector args; + List args=new ArrayList(); + List attributes=new ArrayList(); // ant specific String loaderRef; // class loader ref @@ -93,8 +95,11 @@ } public void addArg(Arg arg ) { - if( args==null ) args=new Vector(); - args.addElement(arg); + args.add(arg); + } + + public void addAttribute( JmxSet arg ) { + attributes.add( arg ); } @@ -151,36 +156,62 @@ return server; } + boolean modeler=false; + + public void setModeler(boolean modeler) { + this.modeler = modeler; + } protected void bindJmx(String objectName, String code, - String arg0, Vector args) + String arg0, List args) throws Exception { MBeanServer server=getMBeanServer(); - ObjectName oname=new ObjectName( objectName ); + oname=new ObjectName( objectName ); + if( modeler ) { + Arg codeArg=new Arg(); + codeArg.setType("java.lang.String"); + codeArg.setValue( code ); + if( args==null) args=new ArrayList(); + args.add(0, codeArg); + code="org.apache.commons.modeler.BaseModelMBean"; + } + + Object argsA[]=new Object[ args.size()]; + String sigA[]=new String[args.size()]; + for( int i=0; i<args.size(); i++ ) { + Arg arg=(Arg)args.get(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 + } // XXX Use the loader ref, if any - if( args==null ) { + if( args.size()==0 ) { 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 ObjectName getObjectName() { + return oname; + } public void execute() throws BuildException { try { + // create the mbean bindJmx( objectName, code, null, args); + + // process attributes + for( int i=0; i<attributes.size(); i++ ) { + JmxSet att=(JmxSet)attributes.get(i); + att.setObjectName( oname ); + log.info("Setting attribute " + oname + " " + att.getName()); + att.execute(); + } } catch(Exception ex) { log.error("Can't create mbean " + objectName, ex); } 1.4 +7 -6 jakarta-commons/modeler/src/java/org/apache/commons/modeler/ant/ModelerTask.java Index: ModelerTask.java =================================================================== RCS file: /home/cvs/jakarta-commons/modeler/src/java/org/apache/commons/modeler/ant/ModelerTask.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ModelerTask.java 5 Jan 2003 16:38:09 -0000 1.3 +++ ModelerTask.java 28 Feb 2003 04:54:35 -0000 1.4 @@ -81,12 +81,13 @@ Arg codeArg=new Arg(); codeArg.setType("java.lang.String"); codeArg.setValue( code ); - if( args==null) args=new Vector(); - args.insertElementAt(codeArg, 0); - super.bindJmx(objectName, - "org.apache.commons.modeler.BaseModelMBean", - null, - args ); + if( args==null) args=new ArrayList(); + args.add(0, codeArg); + super.execute(); +// super.bindJmx(objectName, +// "org.apache.commons.modeler.BaseModelMBean", +// null, +// args ); } catch(Exception ex) { ex.printStackTrace(); } 1.2 +3 -0 jakarta-commons/modeler/src/java/org/apache/commons/modeler/ant/ant.properties Index: ant.properties =================================================================== RCS file: /home/cvs/jakarta-commons/modeler/src/java/org/apache/commons/modeler/ant/ant.properties,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ant.properties 5 Jan 2003 16:38:09 -0000 1.1 +++ ant.properties 28 Feb 2003 04:54:35 -0000 1.2 @@ -5,6 +5,9 @@ jmx-operation=org.apache.commons.modeler.ant.JmxInvoke mbeans-descriptors=org.apache.commons.modeler.ant.RegistryTask +jmx-service=org.apache.commons.modeler.ant.ServiceTask +service=org.apache.commons.modeler.ant.ServiceTask + # old names, to be removed jmxSet=org.apache.commons.modeler.ant.JmxSet jmx=org.apache.commons.modeler.ant.JmxInvoke
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]