User: peterbraswell Date: 02/04/11 20:42:03 Modified: jboss.net/src/main/org/jboss/net/jmx/server MBeanProvider.java Log: added support in JMX->WSDL generation for attributes! Revision Changes Path 1.7 +88 -76 contrib/jboss.net/src/main/org/jboss/net/jmx/server/MBeanProvider.java Index: MBeanProvider.java =================================================================== RCS file: /cvsroot/jboss/contrib/jboss.net/src/main/org/jboss/net/jmx/server/MBeanProvider.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- MBeanProvider.java 12 Apr 2002 02:32:52 -0000 1.6 +++ MBeanProvider.java 12 Apr 2002 03:42:03 -0000 1.7 @@ -6,7 +6,7 @@ * See terms of license at gnu.org. */ -// $Id: MBeanProvider.java,v 1.6 2002/04/12 02:32:52 peterbraswell Exp $ +// $Id: MBeanProvider.java,v 1.7 2002/04/12 03:42:03 peterbraswell Exp $ package org.jboss.net.jmx.server; @@ -66,8 +66,6 @@ import java.util.Map; - - /** * Exposes mbeans as targets (pivot-handlers) of web-services. To * deploy a particular mbean as a web-service, a deployment descriptor @@ -95,7 +93,7 @@ * * @created 1. Oktober 2001, 16:38 * @author <a href="mailto:[EMAIL PROTECTED]">Christoph G. Jung</a> - * @version $Revision: 1.6 $ + * @version $Revision: 1.7 $ */ public class MBeanProvider @@ -127,8 +125,14 @@ protected boolean initialized; /** Creates new MBeanProvider */ - - private String allowedMethodsOption = "allowedMethods"; + + private String allowedMethodsOption = "allowedMethods"; + + /** + * Constructor MBeanProvider + * + * + */ public MBeanProvider () { @@ -367,24 +371,18 @@ { throw new AxisFault(Constants.EXCEPTION_OCCURED, e); } - } // if(nextBody instanceof RPCElement) - } // // while(allBodies.hasNext()) - } // invoke - - /** - * ToDo, inspect mbean-interfaces or so? - */ + } + } + } public void generateWSDL (MessageContext msgCtx) throws AxisFault { - - initialize(msgCtx); + initialize(msgCtx); - EngineConfiguration engineConfig = - msgCtx.getAxisEngine().getConfig(); + EngineConfiguration engineConfig = msgCtx.getAxisEngine().getConfig(); - if (!(engineConfig instanceof XMLResourceProvider)) return; + if (!(engineConfig instanceof XMLResourceProvider)) return; XMLResourceProvider config = ( XMLResourceProvider ) engineConfig; @@ -397,65 +395,75 @@ try { Thread.currentThread().setContextClassLoader(newLoader); - /* Find the service we're invoking so we can grab it's options */ - /***************************************************************/ - String serviceName = msgCtx.getTargetService(); - SOAPService service = msgCtx.getService(); - - /* Now get the service (RPC) specific info */ - /********************************************/ - String allowedMethods = getAllowedMethods(service); - - /** ??? Should we enforce setting methodName? As it was, - * if it's null, we allowed any method. This seems like it might - * be considered somewhat insecure (it's an easy mistake to - * make). Tossing an Exception if it's not set, and using "*" - * to explicitly indicate "any method" is probably better. - */ - if ((allowedMethods == null) || allowedMethods.equals("")) - throw new AxisFault("Server.NoMethodConfig", - JavaUtils.getMessage("noOption00", info.getClassName(), serviceName), - null, null); - if (allowedMethods.equals("*")) + String serviceName = msgCtx.getTargetService(); + SOAPService service = msgCtx.getService(); + String allowedMethods = getAllowedMethods(service); + + if ((allowedMethods == null) || allowedMethods.equals("")) + throw new AxisFault( + "Server.NoMethodConfig", + JavaUtils.getMessage( + "noOption00", info.getClassName(), serviceName), null, null); + + // Okay we want to expose everything. Iterate through all the methods in the + // MBeanInfo structure and pull out all operations and attribute accessors. + if (allowedMethods.equals("*")) { - - - - } + // Get the operations + StringBuffer exposedMethods = new StringBuffer(); + MBeanOperationInfo[] mboi = info.getOperations(); + int i = 0; + + for (i = 0; i < mboi.length; i++) + exposedMethods.append(mboi [i].getName() + " "); + + // Get the attributes + MBeanAttributeInfo[] mbai = info.getAttributes(); + + for (i = 0; i < mbai.length; i++) + { + if (mbai [i].isReadable()) + exposedMethods.append("get" + mbai [i].getName() + " "); + + if (mbai [i].isWritable()) + exposedMethods.append("set" + mbai [i].getName() + " "); + } - String url = msgCtx.getStrProp(MessageContext.TRANS_URL); - String urn = (String)msgCtx.getTargetService(); - String description = "JMX MBean exposed as a WebService"; - - Class cls = Class.forName(info.getClassName()); - - Emitter emitter = new Emitter(); - emitter.setMode(service.getStyle()); - emitter.setClsSmart(cls,url); - emitter.setAllowedMethods(allowedMethods); - emitter.setIntfNamespace(url); - emitter.setLocationUrl(url); - emitter.setTypeMapping((TypeMapping)msgCtx.getTypeMappingRegistry(). - getTypeMapping(org.apache.axis.Constants.URI_CURRENT_SOAP_ENC)); - emitter.setDefaultTypeMapping((TypeMapping)msgCtx.getTypeMappingRegistry(). - getDefaultTypeMapping()); - Document doc = emitter.emit(Emitter.MODE_ALL); + allowedMethods = exposedMethods.toString(); + } - msgCtx.setProperty("WSDL", doc); + String url = msgCtx.getStrProp(MessageContext.TRANS_URL); + String urn = ( String ) msgCtx.getTargetService(); + String description = "JMX MBean exposed as a WebService"; + Class cls = Class.forName(info.getClassName()); + Emitter emitter = new Emitter(); + + emitter.setMode(service.getStyle()); + emitter.setClsSmart(cls, url); + emitter.setAllowedMethods(allowedMethods); + emitter.setIntfNamespace(url); + emitter.setLocationUrl(url); + emitter.setTypeMapping( + ( TypeMapping ) msgCtx.getTypeMappingRegistry().getTypeMapping( + org.apache.axis.Constants.URI_CURRENT_SOAP_ENC)); + emitter.setDefaultTypeMapping( + ( TypeMapping ) msgCtx.getTypeMappingRegistry().getDefaultTypeMapping()); + Document doc = emitter.emit(Emitter.MODE_ALL); + + msgCtx.setProperty("WSDL", doc); } catch (Exception ex) { - ex.printStackTrace(); - Thread.currentThread().setContextClassLoader(currentLoader); - throw new AxisFault(Constants.COULDNT_GEN_WSDL, ex); + ex.printStackTrace(); + Thread.currentThread().setContextClassLoader(currentLoader); + throw new AxisFault(Constants.COULDNT_GEN_WSDL, ex); } - - Thread.currentThread().setContextClassLoader(currentLoader); + Thread.currentThread().setContextClassLoader(currentLoader); } /** @@ -467,17 +475,21 @@ // unbelievable this foresight } - - private String getAllowedMethods(Handler service) - { - String val = (String)service.getOption(allowedMethodsOption); - if (val == null || val.length() == 0) { - // Try the old option for backwards-compatibility - val = (String)service.getOption("methodName"); - } - return val; - } + + private String getAllowedMethods (Handler service) + { + String val = ( String ) service.getOption(allowedMethodsOption); + + if (val == null || val.length() == 0) + { + + // Try the old option for backwards-compatibility + val = ( String ) service.getOption("methodName"); + } + + return val; + } } -/*------ Formatted by Jindent 3.23 Basic 1.0 --- http://www.jindent.de ------*/ +
_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development