private void validateTimeoutCallbackMethod(BeanMetaData bmd, MethodMap.MethodInfo methodInfo) // d666251
                    throws EJBConfigurationException {
        final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
        if (isTraceOn && tc.isEntryEnabled())
            Tr.entry(tc, "validateTimeoutCallbackMethod : " + methodInfo.getMethod());

        Method method = methodInfo.getMethod();
        String specificCause = "";

        int modifiers = method.getModifiers();
        if (Modifier.isStatic(modifiers)) {
            specificCause += " The 'static' modifier is not allowed.";
        }

        if (Modifier.isFinal(modifiers)) {
            specificCause += " The 'final' modifier is not allowed.";
        }

        if (method.getReturnType() != Void.TYPE) {
            specificCause += " The return type must be 'void'.";
        }

        if (!hasTimeoutCallbackParameters(methodInfo)) {
            specificCause += " The method must take 0 parameters or a Timer parameter.";
        }

        if (!hasEmptyThrowsClause(method)) {
            specificCause += " The method must not throw any exceptions.";
        }

        if (!"".equals(specificCause)) {
            if (isTraceOn && tc.isEntryEnabled())
                Tr.exit(tc, "validateTimeoutCallbackMethod :" + specificCause);

            Tr.error(tc, "INVALID_TIMEOUT_CALLBACK_SIGNATURE_CNTR0209E",
                     new Object[] { bmd.enterpriseBeanName, bmd._moduleMetaData.ivName, method });
            throw new EJBConfigurationException("CNTR0327E: The " + method +
                                                " method does not have the required method signature for a" +
                                                " timeout callback method." + specificCause);
        }

        if (isTraceOn && tc.isEntryEnabled())
            Tr.exit(tc, "validateTimeoutCallbackMethod : valid");
    }
private void validateTimeoutCallbackMethod ( BeanMetaData bmd , MethodMap . MethodInfo methodInfo ) throws EJBConfigurationException { final boolean isTraceOn = TraceComponent . isAnyTracingEnabled ( ) ; if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . entry ( tc , "validateTimeoutCallbackMethod : " + methodInfo . getMethod ( ) ) ; Method method = methodInfo . getMethod ( ) ; String specificCause = "" ; int modifiers = method . getModifiers ( ) ; if ( Modifier . isStatic ( modifiers ) ) { specificCause += " The 'static' modifier is not allowed." ; } if ( Modifier . isFinal ( modifiers ) ) { specificCause += " The 'final' modifier is not allowed." ; } if ( method . getReturnType ( ) != Void . TYPE ) { specificCause += " The return type must be 'void'." ; } if ( ! hasTimeoutCallbackParameters ( methodInfo ) ) { specificCause += " The method must take 0 parameters or a Timer parameter." ; } if ( ! hasEmptyThrowsClause ( method ) ) { specificCause += " The method must not throw any exceptions." ; } if ( ! "" . equals ( specificCause ) ) { if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . exit ( tc , "validateTimeoutCallbackMethod :" + specificCause ) ; Tr . error ( tc , "INVALID_TIMEOUT_CALLBACK_SIGNATURE_CNTR0209E" , new Object [ ] { bmd . enterpriseBeanName , bmd . _moduleMetaData . ivName , method } ) ; throw new EJBConfigurationException ( "CNTR0327E: The " + method + " method does not have the required method signature for a" + " timeout callback method." + specificCause ) ; } if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . exit ( tc , "validateTimeoutCallbackMethod : valid" ) ; }
Verifies that an automatic timer callback method has been coded properly
based on the rules from the specification. <p>

The following rules are validated:
<ul>
<li> must not be static
<li> must not be final
<li> must have a void return type
<li> parameters must either be empty or Timer
</ul>

@param bmd bean metadata for the bean being processed
@param method the session synchronization method

@throws EJBConfigurationException thrown if the method has not been
coded properly based on the rules in the specification