final void init ( ) throws DiagnosticModuleRegistrationFailureException { if ( initialized ) { return ; } initialized = true ; Method [ ] methods = getClass ( ) . getMethods ( ) ; for ( Method method : methods ) { String name = method . getName ( ) . toLowerCase ( ) ; if ( name . startsWith ( FFDC_DUMP_PREFIX ) ) { Class < ? > [ ] params = method . getParameterTypes ( ) ; if ( params . length == FFDC_DUMP_PARAMS . length ) { // Possible candidate method, so check the types boolean allOK = true ; for ( int i = 0 ; ( i < params . length ) && ( allOK ) ; i ++ ) { allOK = ( params [ i ] == FFDC_DUMP_PARAMS [ i ] ) ; } if ( allOK ) { _directives . add ( method . getName ( ) ) ; if ( name . startsWith ( FFDC_DUMP_DEFAULT_PREFIX ) ) _dumpDefaultMethods . add ( method ) ; else _dumpMethods . add ( method ) ; } else if ( makeNoise ( ) ) { throw new DiagnosticModuleRegistrationFailureException ( "Error: " + method + " starts with " + FFDC_DUMP_DEFAULT_PREFIX + " but does not conform to the signature. Method skipped!" ) ; } } else if ( makeNoise ( ) ) { throw new DiagnosticModuleRegistrationFailureException ( "Error: " + method + " starts with " + FFDC_DUMP_DEFAULT_PREFIX + " but does not conform to the signature. Method skipped!" ) ; } } } }
The init method is provided to subclasses to initialize this particular DiagnosticModule . Called when the diagnostic module is registered .