public static ModelMBeanOperationInfo [ ] extractOperationInfo ( Object object ) { ArrayList < ModelMBeanOperationInfo > infos = new ArrayList < ModelMBeanOperationInfo > ( ) ; for ( Method m : object . getClass ( ) . getMethods ( ) ) { JmxOperation jmxOperation = m . getAnnotation ( JmxOperation . class ) ; JmxGetter jmxGetter = m . getAnnotation ( JmxGetter . class ) ; JmxSetter jmxSetter = m . getAnnotation ( JmxSetter . class ) ; if ( jmxOperation != null || jmxGetter != null || jmxSetter != null ) { String description = "" ; int visibility = 1 ; int impact = MBeanOperationInfo . UNKNOWN ; if ( jmxOperation != null ) { description = jmxOperation . description ( ) ; impact = jmxOperation . impact ( ) ; } else if ( jmxGetter != null ) { description = jmxGetter . description ( ) ; impact = MBeanOperationInfo . INFO ; visibility = 4 ; } else if ( jmxSetter != null ) { description = jmxSetter . description ( ) ; impact = MBeanOperationInfo . ACTION ; visibility = 4 ; } ModelMBeanOperationInfo info = new ModelMBeanOperationInfo ( m . getName ( ) , description , extractParameterInfo ( m ) , m . getReturnType ( ) . getName ( ) , impact ) ; info . getDescriptor ( ) . setField ( "visibility" , Integer . toString ( visibility ) ) ; infos . add ( info ) ; } } return infos . toArray ( new ModelMBeanOperationInfo [ infos . size ( ) ] ) ; }
Extract all operations and attributes from the given object that have been annotated with the Jmx annotation . Operations are all methods that are marked with the JmxOperation annotation .