Program: 179589
Project: 179589
Buggy source:
/** 
 * Used to configure the migration launcher with properties from a servlet  context.  You do not need migration.properties to use this method.
 * @param launcher the launcher to configure
 * @param sce the event to get the context and associated parameters from
 * @throws MigrationException if a problem with the look up in JNDI occurs
 */
private void configureFromServletContext(JdbcMigrationLauncher launcher,ServletContextEvent sce) throws MigrationException {
  DataSourceMigrationContext context=getDataSourceMigrationContext();
  String systemName=ConfigurationUtil.getRequiredParam("String_Node_Str",sce,this);
  context.setSystemName(systemName);
  String readOnly=sce.getServletContext().getInitParameter("String_Node_Str");
  launcher.setReadOnly(false);
  if ("String_Node_Str".equals(readOnly)) {
    launcher.setReadOnly(true);
  }
  String patchPath=ConfigurationUtil.getRequiredParam("String_Node_Str",sce,this);
  launcher.setPatchPath(patchPath);
  String postPatchPath=sce.getServletContext().getInitParameter("String_Node_Str");
  launcher.setPostPatchPath(postPatchPath);
  String databases=sce.getServletContext().getInitParameter("String_Node_Str");
  String[] databaseNames;
  if ((databases == null) || "String_Node_Str".equals(databases)) {
    databaseNames=new String[1];
    databaseNames[0]="String_Node_Str";
  }
 else {
    databaseNames=databases.split("String_Node_Str");
  }
  for (int i=0; i < databaseNames.length; i++) {
    String databaseName=databaseNames[i];
    if (databaseName != "String_Node_Str") {
      databaseName=databaseName + "String_Node_Str";
    }
    String databaseType=ConfigurationUtil.getRequiredParam("String_Node_Str" + databaseName + "String_Node_Str",sce,this);
    context.setDatabaseType(new DatabaseType(databaseType));
    String dataSource=ConfigurationUtil.getRequiredParam("String_Node_Str" + databaseName + "String_Node_Str",sce,this);
    try {
      Context ctx=new InitialContext();
      if (ctx == null) {
        throw new IllegalArgumentException("String_Node_Str" + "String_Node_Str");
      }
      DataSource ds=(DataSource)ctx.lookup("String_Node_Str" + dataSource);
      context.setDataSource(ds);
      launcher.addContext(context);
    }
 catch (    NamingException e) {
      throw new MigrationException("String_Node_Str" + dataSource,e);
    }
  }
}

Fixed version (ground truth):
/** 
 * Used to configure the migration launcher with properties from a servlet  context.  You do not need migration.properties to use this method.
 * @param launcher the launcher to configure
 * @param sce the event to get the context and associated parameters from
 * @throws MigrationException if a problem with the look up in JNDI occurs
 */
private void configureFromServletContext(JdbcMigrationLauncher launcher,ServletContextEvent sce) throws MigrationException {
  String readOnly=sce.getServletContext().getInitParameter("String_Node_Str");
  launcher.setReadOnly(false);
  if ("String_Node_Str".equals(readOnly)) {
    launcher.setReadOnly(true);
  }
  String patchPath=ConfigurationUtil.getRequiredParam("String_Node_Str",sce,this);
  launcher.setPatchPath(patchPath);
  String postPatchPath=sce.getServletContext().getInitParameter("String_Node_Str");
  launcher.setPostPatchPath(postPatchPath);
  String databases=sce.getServletContext().getInitParameter("String_Node_Str");
  String[] databaseNames;
  if ((databases == null) || "String_Node_Str".equals(databases)) {
    databaseNames=new String[1];
    databaseNames[0]="String_Node_Str";
    log.debug("String_Node_Str");
  }
 else {
    databaseNames=databases.split("String_Node_Str");
    log.debug("String_Node_Str" + databases + "String_Node_Str");
  }
  for (int i=0; i < databaseNames.length; i++) {
    String databaseName=databaseNames[i];
    if (databaseName != "String_Node_Str") {
      databaseName=databaseName + "String_Node_Str";
    }
    String databaseType=ConfigurationUtil.getRequiredParam("String_Node_Str" + databaseName + "String_Node_Str",sce,this);
    String systemName=ConfigurationUtil.getRequiredParam("String_Node_Str",sce,this);
    String dataSource=ConfigurationUtil.getRequiredParam("String_Node_Str" + databaseName + "String_Node_Str",sce,this);
    DataSourceMigrationContext context=getDataSourceMigrationContext();
    context.setSystemName(systemName);
    context.setDatabaseType(new DatabaseType(databaseType));
    try {
      Context ctx=new InitialContext();
      if (ctx == null) {
        throw new IllegalArgumentException("String_Node_Str" + "String_Node_Str");
      }
      DataSource ds=(DataSource)ctx.lookup("String_Node_Str" + dataSource);
      context.setDataSource(ds);
      log.debug("String_Node_Str" + dataSource + "String_Node_Str"+ databaseType);
      launcher.addContext(context);
    }
 catch (    NamingException e) {
      throw new MigrationException("String_Node_Str" + dataSource,e);
    }
  }
}