Program: 66967
Project: 66967
Buggy source:
/** 
 * Figure out the BoundType and ValueType for the XmlAdapter class, then either create an instance of the XmlAdapter, or if an instance is set on the marshaller, use it.
 * @param mapping
 * @param session
 */
public void initialize(DatabaseMapping mapping,Session session){
  if (xmlAdapterClass == null) {
    try {
      if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
        try {
          xmlAdapterClass=(Class)AccessController.doPrivileged(new PrivilegedClassForName(getXmlAdapterClassName()));
        }
 catch (        PrivilegedActionException ex) {
          if (ex.getCause() instanceof ClassNotFoundException) {
            throw (ClassNotFoundException)ex.getCause();
          }
          throw (RuntimeException)ex.getCause();
        }
      }
 else {
        xmlAdapterClass=PrivilegedAccessHelper.getClassForName(getXmlAdapterClassName());
      }
    }
 catch (    ClassNotFoundException cnfe) {
      return;
    }
  }
  this.mapping=mapping;
  Method[] methods=null;
  if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
    try {
      methods=(Method[])AccessController.doPrivileged(new PrivilegedGetDeclaredMethods(xmlAdapterClass));
      ;
    }
 catch (    PrivilegedActionException ex) {
      throw (RuntimeException)ex.getCause();
    }
  }
 else {
    methods=PrivilegedAccessHelper.getDeclaredMethods(xmlAdapterClass);
  }
  Method method;
  for (int i=0; i < methods.length; i++) {
    method=methods[i];
    if (method.getName().equals("String_Node_Str") && (method.getReturnType() != Object.class) && (method.getParameterTypes()[0] != Object.class)) {
      valueType=method.getReturnType();
      boundType=method.getParameterTypes()[0];
      break;
    }
  }
  try {
    if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
      try {
        xmlAdapter=(XmlAdapter)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(getXmlAdapterClass()));
        ;
      }
 catch (      PrivilegedActionException ex) {
        if (ex.getCause() instanceof IllegalAccessException) {
          throw (IllegalAccessException)ex.getCause();
        }
        if (ex.getCause() instanceof InstantiationException) {
          throw (InstantiationException)ex.getCause();
        }
        throw (RuntimeException)ex.getCause();
      }
    }
 else {
      xmlAdapter=(XmlAdapter)PrivilegedAccessHelper.newInstanceFromClass(getXmlAdapterClass());
    }
  }
 catch (  Exception ex) {
  }
}

Fixed version (ground truth):
/** 
 * Figure out the BoundType and ValueType for the XmlAdapter class, then either create an instance of the XmlAdapter, or if an instance is set on the marshaller, use it.
 * @param mapping
 * @param session
 */
public void initialize(DatabaseMapping mapping,Session session){
  if (xmlAdapterClass == null) {
    ClassLoader loader=session.getDatasourceLogin().getDatasourcePlatform().getConversionManager().getLoader();
    try {
      if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
        try {
          xmlAdapterClass=(Class)AccessController.doPrivileged(new PrivilegedClassForName(getXmlAdapterClassName(),true,loader));
        }
 catch (        PrivilegedActionException ex) {
          if (ex.getCause() instanceof ClassNotFoundException) {
            throw (ClassNotFoundException)ex.getCause();
          }
          throw (RuntimeException)ex.getCause();
        }
      }
 else {
        xmlAdapterClass=PrivilegedAccessHelper.getClassForName(getXmlAdapterClassName(),true,loader);
      }
    }
 catch (    ClassNotFoundException cnfe) {
      throw (RuntimeException)cnfe.getCause();
    }
  }
  this.mapping=mapping;
  Method[] methods=null;
  if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
    try {
      methods=(Method[])AccessController.doPrivileged(new PrivilegedGetDeclaredMethods(xmlAdapterClass));
      ;
    }
 catch (    PrivilegedActionException ex) {
      throw (RuntimeException)ex.getCause();
    }
  }
 else {
    methods=PrivilegedAccessHelper.getDeclaredMethods(xmlAdapterClass);
  }
  Method method;
  for (int i=0; i < methods.length; i++) {
    method=methods[i];
    if (method.getName().equals("String_Node_Str") && (method.getReturnType() != Object.class) && (method.getParameterTypes()[0] != Object.class)) {
      valueType=method.getReturnType();
      boundType=method.getParameterTypes()[0];
      break;
    }
  }
  try {
    if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
      try {
        xmlAdapter=(XmlAdapter)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(getXmlAdapterClass()));
        ;
      }
 catch (      PrivilegedActionException ex) {
        if (ex.getCause() instanceof IllegalAccessException) {
          throw (IllegalAccessException)ex.getCause();
        }
        if (ex.getCause() instanceof InstantiationException) {
          throw (InstantiationException)ex.getCause();
        }
        throw (RuntimeException)ex.getCause();
      }
    }
 else {
      xmlAdapter=(XmlAdapter)PrivilegedAccessHelper.newInstanceFromClass(getXmlAdapterClass());
    }
  }
 catch (  Exception ex) {
  }
}