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>