private Map<Method, ArrayList<EJBMethodInfoImpl>> createEJBMethodInfoMap(final BeanMetaData bmd, final Method[] allMethodsOfEJB) {
        final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();

        if (isTraceOn && tc.isEntryEnabled()) {
            Tr.entry(tc, "createEJBMethodInfoMap: " + bmd.enterpriseBeanName);
        }

        final HashMap<Method, ArrayList<EJBMethodInfoImpl>> map = new HashMap<Method, ArrayList<EJBMethodInfoImpl>>();

        // Determine which public methods of the EJB are business methods
        // and populate the EJBMethodInfo map with entries for each business method.
        if (bmd.isMessageDrivenBean()) {
            // As described section 5.4.9 Message Listener Interceptor Methods for Message-Driven
            // Beans, the AroundInvoke business method interceptor methods are supported for
            // message-driven beans. These interceptor methods may be defined on the bean class
            // or on a interceptor class and apply to the handling of the invocation of the
            // bean's message listener method(s).  Therefore, only the methods of the
            // message listener interface need to be processed.
            EJBMethodInfoImpl[] methodInfos = bmd.localMethodInfos;
            for (Method method : allMethodsOfEJB) {
                EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray(methodInfos, method); //d494984.1
                if (info != null) {
                    ArrayList<EJBMethodInfoImpl> list = new ArrayList<EJBMethodInfoImpl>();
                    list.add(info);
                    map.put(method, list);
                }
            }
        } else if (bmd.isSessionBean() || bmd.isManagedBean()) {
            // As described in section 4.3.9 Business Method Delegation, the session bean's
            // business interface, component interface, or web service endpoint defines the
            // business methods callable by a client.  Therefore, only process methods
            // of business, component, and webservices interfaces.
            EJBMethodInfoImpl[] localInfos = bmd.localMethodInfos;
            EJBMethodInfoImpl[] remoteInfos = bmd.methodInfos;
            EJBMethodInfoImpl[] webServiceInfos = bmd.wsEndpointMethodInfos;

            for (Method method : allMethodsOfEJB) {
                ArrayList<EJBMethodInfoImpl> list = new ArrayList<EJBMethodInfoImpl>();
                if (localInfos != null) {
                    EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray(localInfos, method); //d494984.1
                    if (info != null) {
                        list.add(info);
                    }
                }
                if (remoteInfos != null) {
                    EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray(remoteInfos, method); //d494984.1
                    if (info != null) {
                        list.add(info);
                    }
                }
                if (webServiceInfos != null) {
                    EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray(webServiceInfos, method); //d494984.1
                    if (info != null) {
                        list.add(info);
                    }
                }
                if (!list.isEmpty()) {
                    map.put(method, list);
                }
            }
        }

        if (isTraceOn && tc.isEntryEnabled()) {
            Tr.exit(tc, "createEJBMethodInfoMap: " + bmd.enterpriseBeanName);
        }
        return map;
    }
private Map < Method , ArrayList < EJBMethodInfoImpl > > createEJBMethodInfoMap ( final BeanMetaData bmd , final Method [ ] allMethodsOfEJB ) { final boolean isTraceOn = TraceComponent . isAnyTracingEnabled ( ) ; if ( isTraceOn && tc . isEntryEnabled ( ) ) { Tr . entry ( tc , "createEJBMethodInfoMap: " + bmd . enterpriseBeanName ) ; } final HashMap < Method , ArrayList < EJBMethodInfoImpl > > map = new HashMap < Method , ArrayList < EJBMethodInfoImpl > > ( ) ; if ( bmd . isMessageDrivenBean ( ) ) { EJBMethodInfoImpl [ ] methodInfos = bmd . localMethodInfos ; for ( Method method : allMethodsOfEJB ) { EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray ( methodInfos , method ) ; if ( info != null ) { ArrayList < EJBMethodInfoImpl > list = new ArrayList < EJBMethodInfoImpl > ( ) ; list . add ( info ) ; map . put ( method , list ) ; } } } else if ( bmd . isSessionBean ( ) || bmd . isManagedBean ( ) ) { EJBMethodInfoImpl [ ] localInfos = bmd . localMethodInfos ; EJBMethodInfoImpl [ ] remoteInfos = bmd . methodInfos ; EJBMethodInfoImpl [ ] webServiceInfos = bmd . wsEndpointMethodInfos ; for ( Method method : allMethodsOfEJB ) { ArrayList < EJBMethodInfoImpl > list = new ArrayList < EJBMethodInfoImpl > ( ) ; if ( localInfos != null ) { EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray ( localInfos , method ) ; if ( info != null ) { list . add ( info ) ; } } if ( remoteInfos != null ) { EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray ( remoteInfos , method ) ; if ( info != null ) { list . add ( info ) ; } } if ( webServiceInfos != null ) { EJBMethodInfoImpl info = findMethodInEJBMethodInfoArray ( webServiceInfos , method ) ; if ( info != null ) { list . add ( info ) ; } } if ( ! list . isEmpty ( ) ) { map . put ( method , list ) ; } } } if ( isTraceOn && tc . isEntryEnabled ( ) ) { Tr . exit ( tc , "createEJBMethodInfoMap: " + bmd . enterpriseBeanName ) ; } return map ; }
d430356 - added entire method