Program: 126896
Project: 126896
Buggy source:
@Override public Connection fillUIConnParams(IMetadataConnection metadataBean,Connection connection){
  Connection newConnection=null;
  if (connection == null) {
    newConnection=ConnectionFactory.eINSTANCE.createDatabaseConnection();
  }
  if (super.fillUIConnParams(metadataBean,newConnection == null ? connection : newConnection) == null) {
    return null;
  }
  DatabaseConnection dbconn=null;
  if (newConnection != null) {
    dbconn=(DatabaseConnection)newConnection;
  }
 else {
    dbconn=(DatabaseConnection)connection;
  }
  if (newConnection != null) {
    dbconn.setDriverJarPath(metadataBean.getDriverJarPath());
    dbconn.setProductId(metadataBean.getProduct());
    dbconn.setDbmsId(metadataBean.getMapping());
    dbconn.setAdditionalParams(metadataBean.getAdditionalParams());
    dbconn.setDriverClass(metadataBean.getDriverClass());
    dbconn.setDatabaseType(metadataBean.getDbType());
    dbconn.setName(metadataBean.getLabel());
    dbconn.setLabel(metadataBean.getLabel());
    dbconn.setVersion(metadataBean.getVersion());
    dbconn.setUiSchema(metadataBean.getUiSchema());
    dbconn.setSQLMode(metadataBean.isSqlMode());
    dbconn.setSID(metadataBean.getDatabase());
    String distro=(String)metadataBean.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_DISTRIBUTION);
    String distroVersion=(String)metadataBean.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_VERSION);
    String hiveModel=(String)metadataBean.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE);
    dbconn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_DISTRIBUTION,distro);
    dbconn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_VERSION,distroVersion);
    dbconn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE,hiveModel);
  }
  try {
    if (sqlConnection == null || sqlConnection.isClosed()) {
      this.checkConnection(metadataBean);
    }
    if (newConnection != null) {
      fillMetadataParams(metadataBean,newConnection);
    }
    DatabaseMetaData dbMetadata=null;
    if (EDatabaseTypeName.HIVE.getXmlName().equalsIgnoreCase(metadataBean.getDbType())) {
      dbMetadata=HiveConnectionManager.getInstance().extractDatabaseMetaData(metadataBean);
    }
 else {
      dbMetadata=ExtractMetaDataUtils.getInstance().getDatabaseMetaData(sqlConnection,dbconn,false);
    }
    String productName=dbMetadata.getDatabaseProductName() == null ? PluginConstant.EMPTY_STRING : dbMetadata.getDatabaseProductName();
    String productVersion=dbMetadata.getDatabaseProductVersion() == null ? PluginConstant.EMPTY_STRING : dbMetadata.getDatabaseProductVersion();
    TaggedValueHelper.setTaggedValue(dbconn,TaggedValueHelper.DB_PRODUCT_NAME,productName);
    TaggedValueHelper.setTaggedValue(dbconn,TaggedValueHelper.DB_PRODUCT_VERSION,productVersion);
    boolean isHive=dbconn.getDatabaseType().equals(EDatabaseTypeName.HIVE.getDisplayName());
    boolean isHiveJdbc=dbconn.getDatabaseType().equals(EDatabaseTypeName.GENERAL_JDBC.getDisplayName()) && dbconn.getDriverClass() != null && dbconn.getDriverClass().equals(EDatabase4DriverClassName.HIVE.getDriverClass());
    if (!isHive && !isHiveJdbc) {
      String identifierQuote=dbMetadata.getIdentifierQuoteString();
      ConnectionHelper.setIdentifierQuoteString(identifierQuote == null ? "String_Node_Str" : identifierQuote,dbconn);
    }
  }
 catch (  SQLException e) {
    log.error(e,e);
  }
catch (  ClassNotFoundException e) {
    CommonExceptionHandler.process(e);
  }
catch (  InstantiationException e) {
    CommonExceptionHandler.process(e);
  }
catch (  IllegalAccessException e) {
    CommonExceptionHandler.process(e);
  }
 finally {
    if (sqlConnection != null) {
      ConnectionUtils.closeConnection(sqlConnection);
    }
    if (driver != null && MetadataConnectionUtils.isDerbyRelatedDb(metadataBean.getDriverClass(),metadataBean.getDbType())) {
      try {
        driver.connect("String_Node_Str",null);
      }
 catch (      SQLException e) {
      }
    }
  }
  if (newConnection != null) {
    return newConnection;
  }
 else {
    return connection;
  }
}

Fixed version (ground truth):
@Override public Connection fillUIConnParams(IMetadataConnection metadataBean,Connection connection){
  Connection newConnection=null;
  if (connection == null) {
    newConnection=ConnectionFactory.eINSTANCE.createDatabaseConnection();
  }
  if (super.fillUIConnParams(metadataBean,newConnection == null ? connection : newConnection) == null) {
    return null;
  }
  DatabaseConnection dbconn=null;
  if (newConnection != null) {
    dbconn=(DatabaseConnection)newConnection;
  }
 else {
    dbconn=(DatabaseConnection)connection;
  }
  if (newConnection != null) {
    dbconn.setDriverJarPath(metadataBean.getDriverJarPath());
    dbconn.setProductId(metadataBean.getProduct());
    dbconn.setDbmsId(metadataBean.getMapping());
    dbconn.setAdditionalParams(metadataBean.getAdditionalParams());
    dbconn.setDriverClass(metadataBean.getDriverClass());
    dbconn.setDatabaseType(metadataBean.getDbType());
    dbconn.setName(metadataBean.getLabel());
    dbconn.setLabel(metadataBean.getLabel());
    dbconn.setVersion(metadataBean.getVersion());
    dbconn.setUiSchema(metadataBean.getUiSchema());
    dbconn.setSQLMode(metadataBean.isSqlMode());
    dbconn.setSID(metadataBean.getDatabase());
    String distro=(String)metadataBean.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_DISTRIBUTION);
    String distroVersion=(String)metadataBean.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_VERSION);
    String hiveModel=(String)metadataBean.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE);
    dbconn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_DISTRIBUTION,distro);
    dbconn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_VERSION,distroVersion);
    dbconn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE,hiveModel);
  }
  java.sql.Connection sqlConnection=null;
  try {
    sqlConnection=MetadataConnectionUtils.createConnection(metadataBean).getObject();
    if (newConnection != null) {
      fillMetadataParams(metadataBean,newConnection);
    }
    DatabaseMetaData dbMetadata=null;
    if (EDatabaseTypeName.HIVE.getXmlName().equalsIgnoreCase(metadataBean.getDbType())) {
      dbMetadata=HiveConnectionManager.getInstance().extractDatabaseMetaData(metadataBean);
    }
 else {
      dbMetadata=ExtractMetaDataUtils.getInstance().getDatabaseMetaData(sqlConnection,dbconn,false);
    }
    String productName=dbMetadata.getDatabaseProductName() == null ? PluginConstant.EMPTY_STRING : dbMetadata.getDatabaseProductName();
    String productVersion=dbMetadata.getDatabaseProductVersion() == null ? PluginConstant.EMPTY_STRING : dbMetadata.getDatabaseProductVersion();
    TaggedValueHelper.setTaggedValue(dbconn,TaggedValueHelper.DB_PRODUCT_NAME,productName);
    TaggedValueHelper.setTaggedValue(dbconn,TaggedValueHelper.DB_PRODUCT_VERSION,productVersion);
    boolean isHive=dbconn.getDatabaseType().equals(EDatabaseTypeName.HIVE.getDisplayName());
    boolean isHiveJdbc=dbconn.getDatabaseType().equals(EDatabaseTypeName.GENERAL_JDBC.getDisplayName()) && dbconn.getDriverClass() != null && dbconn.getDriverClass().equals(EDatabase4DriverClassName.HIVE.getDriverClass());
    if (!isHive && !isHiveJdbc) {
      String identifierQuote=dbMetadata.getIdentifierQuoteString();
      ConnectionHelper.setIdentifierQuoteString(identifierQuote == null ? "String_Node_Str" : identifierQuote,dbconn);
    }
  }
 catch (  SQLException e) {
    log.error(e,e);
  }
catch (  ClassNotFoundException e) {
    CommonExceptionHandler.process(e);
  }
catch (  InstantiationException e) {
    CommonExceptionHandler.process(e);
  }
catch (  IllegalAccessException e) {
    CommonExceptionHandler.process(e);
  }
 finally {
    if (sqlConnection != null) {
      ConnectionUtils.closeConnection(sqlConnection);
    }
    if (driver != null && MetadataConnectionUtils.isDerbyRelatedDb(metadataBean.getDriverClass(),metadataBean.getDbType())) {
      try {
        driver.connect("String_Node_Str",null);
      }
 catch (      SQLException e) {
      }
    }
  }
  if (newConnection != null) {
    return newConnection;
  }
 else {
    return connection;
  }
}