public boolean isMonitorable ( Class < ? > clazz ) { // Faster(?) path if ( notMonitorable . contains ( clazz ) ) { return false ; } else if ( monitorable . contains ( clazz ) ) { return true ; } boolean isMonitorable = true ; if ( ! instrumentation . isModifiableClass ( clazz ) ) { isMonitorable = false ; } else if ( clazz . isInterface ( ) ) { isMonitorable = false ; } else if ( clazz . isArray ( ) ) { isMonitorable = false ; } else if ( Proxy . isProxyClass ( clazz ) ) { isMonitorable = false ; } else if ( clazz . isPrimitive ( ) ) { isMonitorable = false ; } else if ( isExcludedClass ( Type . getInternalName ( clazz ) ) ) { isMonitorable = false ; } else if ( ! includeBootstrap && clazz . getClassLoader ( ) == null ) { isMonitorable = false ; } // Update collections if ( ! isMonitorable ) { synchronized ( notMonitorable ) { notMonitorable . add ( clazz ) ; } } else { monitorable . add ( clazz ) ; } return isMonitorable ; }
Determine of the specified class can be monitored via the probes infrastructure .