code: private void processSecurityRoleLink(BeanMetaData bmd) {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
  
          if (isTraceOn && tc.isEntryEnabled()) {
              Tr.entry(tc, "processSecurityRoleLink");
          }
  
          EnterpriseBean ejbBean = bmd.wccm.enterpriseBean;
  
          if (ejbBean != null) {
              // get security-role-ref if any
  
              // The role name in thesecurity-role-ref is not really a role name,
              // it is a seudo name that is to be linked to the "real"
              // role name that is in the role-link stanza  //429623
              for (SecurityRoleRef roleRef : ejbBean.getSecurityRoleRefs()) {
                  String link = roleRef.getLink();
                  if (link != null) {
                      if (isTraceOn && tc.isDebugEnabled())
                          Tr.debug(tc, "role-ref = " + roleRef.getName() + " role-link = " + link);
                      //create a new HashMap only when needed.
                      if (bmd.ivRoleLinkMap == null) {
                          bmd.ivRoleLinkMap = new HashMap<String, String>();
                      }
                      bmd.ivRoleLinkMap.put(roleRef.getName(), link);
                  }
              }
          } // if (ejbBean != null)
  
          if (isTraceOn && tc.isEntryEnabled()) {
              if (bmd.ivRoleLinkMap == null) {
                  Tr.exit(tc, "processSecurityRoleLink:  no role-link elements found.");
              } else {
                  Tr.exit(tc, "processSecurityRoleLink:  " + bmd.ivRoleLinkMap.toString());
              }
          }
  
      }
docs: Process any role links that have been established. We
  will create a HashMap linking these role-links (if any) to
  their corresponding roles. This information is needed during
  isCallerInRole processing.
  
  @param bmd BeanMetaData for the specific Enterprise Bean