Program: 28961
Project: 28961
Buggy source:
/** 
 * Create invocation info for one method.  
 * @param originalIntf Leaf interface for the given view.  Not set formethodIntf == bean.  
 */
private final InvocationInfo createInvocationInfo(Method method,int txAttr,boolean flushEnabled,String methodIntf,Class originalIntf) throws EJBException {
  InvocationInfo invInfo=new InvocationInfo(method);
  invInfo.ejbName=ejbDescriptor.getName();
  invInfo.txAttr=txAttr;
  invInfo.securityPermissions=Container.SEC_NOT_INITIALIZED;
  invInfo.methodIntf=methodIntf;
  invInfo.isBusinessMethod=isBusinessMethod(method);
  invInfo.isCreateHomeFinder=isCreateHomeFinder(method);
  invInfo.startsWithCreate=method.getName().startsWith("String_Node_Str");
  invInfo.startsWithFind=method.getName().startsWith("String_Node_Str");
  invInfo.startsWithRemove=method.getName().startsWith("String_Node_Str");
  invInfo.startsWithFindByPrimaryKey=method.getName().startsWith("String_Node_Str");
  invInfo.flushEnabled=flushEnabled;
  if (methodIntf.equals(MethodDescriptor.EJB_LOCALHOME)) {
    if (method.getDeclaringClass() != EJBLocalHome.class) {
      setHomeTargetMethodInfo(invInfo,true);
    }
  }
 else   if (methodIntf.equals(MethodDescriptor.EJB_HOME)) {
    if (method.getDeclaringClass() != EJBHome.class) {
      setHomeTargetMethodInfo(invInfo,false);
    }
  }
 else   if (methodIntf.equals(MethodDescriptor.EJB_LOCAL)) {
    if (method.getDeclaringClass() != EJBLocalObject.class) {
      setEJBObjectTargetMethodInfo(invInfo,true,originalIntf);
    }
  }
 else   if (methodIntf.equals(MethodDescriptor.EJB_REMOTE)) {
    if (method.getDeclaringClass() != EJBObject.class) {
      setEJBObjectTargetMethodInfo(invInfo,false,originalIntf);
    }
  }
  setConcurrencyInvInfo(method,methodIntf,invInfo);
  if (_logger.isLoggable(Level.FINE)) {
    _logger.log(Level.FINE,invInfo.toString());
  }
  adjustInvocationInfo(invInfo,method,txAttr,flushEnabled,methodIntf,originalIntf);
  return invInfo;
}

Fixed version (ground truth):
/** 
 * Create invocation info for one method.  
 * @param originalIntf Leaf interface for the given view.  Not set formethodIntf == bean.  
 */
private final InvocationInfo createInvocationInfo(Method method,int txAttr,boolean flushEnabled,String methodIntf,Class originalIntf) throws EJBException {
  InvocationInfo invInfo=new InvocationInfo(method);
  invInfo.ejbName=ejbDescriptor.getName();
  invInfo.txAttr=txAttr;
  invInfo.methodIntf=methodIntf;
  invInfo.isBusinessMethod=isBusinessMethod(method);
  invInfo.isCreateHomeFinder=isCreateHomeFinder(method);
  invInfo.startsWithCreate=method.getName().startsWith("String_Node_Str");
  invInfo.startsWithFind=method.getName().startsWith("String_Node_Str");
  invInfo.startsWithRemove=method.getName().startsWith("String_Node_Str");
  invInfo.startsWithFindByPrimaryKey=method.getName().startsWith("String_Node_Str");
  invInfo.flushEnabled=flushEnabled;
  if (methodIntf.equals(MethodDescriptor.EJB_LOCALHOME)) {
    if (method.getDeclaringClass() != EJBLocalHome.class) {
      setHomeTargetMethodInfo(invInfo,true);
    }
  }
 else   if (methodIntf.equals(MethodDescriptor.EJB_HOME)) {
    if (method.getDeclaringClass() != EJBHome.class) {
      setHomeTargetMethodInfo(invInfo,false);
    }
  }
 else   if (methodIntf.equals(MethodDescriptor.EJB_LOCAL)) {
    if (method.getDeclaringClass() != EJBLocalObject.class) {
      setEJBObjectTargetMethodInfo(invInfo,true,originalIntf);
    }
  }
 else   if (methodIntf.equals(MethodDescriptor.EJB_REMOTE)) {
    if (method.getDeclaringClass() != EJBObject.class) {
      setEJBObjectTargetMethodInfo(invInfo,false,originalIntf);
    }
  }
  setConcurrencyInvInfo(method,methodIntf,invInfo);
  if (_logger.isLoggable(Level.FINE)) {
    _logger.log(Level.FINE,invInfo.toString());
  }
  adjustInvocationInfo(invInfo,method,txAttr,flushEnabled,methodIntf,originalIntf);
  return invInfo;
}