Program: 125665
Project: 125665
Buggy source:
@Override public IStatus runInUIThread(final IProgressMonitor monitor){
  String name="String_Node_Str" + getText();
  RepositoryWorkUnit<Object> repositoryWorkUnit=new RepositoryWorkUnit<Object>(name,this){
    @Override protected void run() throws LoginException, PersistenceException {
      monitor.beginTask(Messages.getString("String_Node_Str"),IProgressMonitor.UNKNOWN);
      if (!monitor.isCanceled()) {
        final ManagerConnection managerConnection=new ManagerConnection();
        DatabaseConnection connection=(DatabaseConnection)item.getConnection();
        String oldContextName=connection.getContextName();
        IMetadataConnection metadataConnection=ConvertionHelper.convert(connection,false,null);
        String newContextName=connection.getContextName();
        if (oldContextName != null && newContextName != null && !oldContextName.equals(newContextName)) {
          if (node != null && node.getObject() != null && node.getObject().getProperty() != null) {
            Item itemTemp=node.getObject().getProperty().getItem();
            if (itemTemp != null && itemTemp instanceof ConnectionItem) {
              ConnectionItem connItem=(ConnectionItem)itemTemp;
              SwitchContextGroupNameImpl.getInstance().updateContextGroup(connItem,newContextName);
            }
          }
        }
        if (!metadataConnection.getDbType().equals(EDatabaseConnTemplate.GODBC.getDBDisplayName()) && !metadataConnection.getDbType().equals(EDatabaseConnTemplate.ACCESS.getDBDisplayName()) && !metadataConnection.getDbType().equals(EDatabaseConnTemplate.GENERAL_JDBC.getDBDisplayName())) {
          String hiveMode=(String)metadataConnection.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE);
          if (EDatabaseTypeName.HIVE.getDisplayName().equals(metadataConnection.getDbType())) {
            boolean useSSL=Boolean.valueOf(connection.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_USE_SSL));
            if (!useSSL) {
              metadataConnection.setUrl(connection.getURL());
            }
            if (HiveModeInfo.get(hiveMode) == HiveModeInfo.EMBEDDED) {
              JavaSqlFactory.doHivePreSetup((DatabaseConnection)metadataConnection.getCurrentConnection());
            }
          }
 else {
            String genUrl=DatabaseConnStrUtil.getURLString(metadataConnection.getDbType(),metadataConnection.getDbVersionString(),metadataConnection.getServerName(),metadataConnection.getUsername(),metadataConnection.getPassword(),metadataConnection.getPort(),metadataConnection.getDatabase(),metadataConnection.getFileFieldName(),metadataConnection.getDataSourceName(),metadataConnection.getDbRootPath(),metadataConnection.getAdditionalParams());
            metadataConnection.setUrl(genUrl);
          }
        }
        if (connection != null) {
          EList<orgomg.cwm.objectmodel.core.Package> dp=connection.getDataPackage();
          Collection<Package> newDataPackage=EcoreUtil.copyAll(dp);
          ConnectionHelper.addPackages(newDataPackage,(DatabaseConnection)metadataConnection.getCurrentConnection());
        }
        if (creation) {
          String hiveMode=(String)metadataConnection.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE);
          if (EDatabaseTypeName.HIVE.getDisplayName().equals(metadataConnection.getDbType())) {
            try {
              HiveConnectionManager.getInstance().checkConnection(metadataConnection);
            }
 catch (            Exception e) {
              e.printStackTrace();
            }
          }
 else {
            managerConnection.check(metadataConnection);
          }
          ExtractMetaDataUtils.getInstance().setUseAllSynonyms(false);
          IProxyRepositoryFactory factory=ProxyRepositoryFactory.getInstance();
          boolean repositoryObjectEditable=factory.isEditableAndLockIfPossible(node.getObject());
          if (!repositoryObjectEditable) {
            boolean flag=MessageDialog.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"));
            if (flag) {
              DatabaseTableWizard databaseTableWizard=new DatabaseTableWizard(PlatformUI.getWorkbench(),creation,node.getObject(),metadataTable,getExistingNames(),forceReadOnly,managerConnection,metadataConnection);
              WizardDialog wizardDialog=new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),databaseTableWizard);
              wizardDialog.setBlockOnOpen(true);
              handleWizard(node,wizardDialog);
            }
          }
 else {
            DatabaseTableWizard databaseTableWizard=new DatabaseTableWizard(PlatformUI.getWorkbench(),creation,node.getObject(),metadataTable,getExistingNames(),forceReadOnly,managerConnection,metadataConnection);
            WizardDialog wizardDialog=new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),databaseTableWizard);
            wizardDialog.setBlockOnOpen(true);
            handleWizard(node,wizardDialog);
          }
        }
 else {
          final boolean skipStep=true;
          DatabaseTableWizard databaseTableWizard=new DatabaseTableWizard(PlatformUI.getWorkbench(),creation,node.getObject(),metadataTable,getExistingNames(),forceReadOnly,managerConnection,metadataConnection);
          databaseTableWizard.setSkipStep(skipStep);
          WizardDialog wizardDialog=new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),databaseTableWizard);
          handleWizard(node,wizardDialog);
        }
      }
    }
  }
;
  repositoryWorkUnit.setAvoidUnloadResources(isAvoidUnloadResources());
  IRepositoryService repositoryService=(IRepositoryService)GlobalServiceRegister.getDefault().getService(IRepositoryService.class);
  repositoryService.getProxyRepositoryFactory().executeRepositoryWorkUnit(repositoryWorkUnit);
  monitor.done();
  return Status.OK_STATUS;
}

Fixed version (ground truth):
@Override public IStatus runInUIThread(final IProgressMonitor monitor){
  String name="String_Node_Str" + getText();
  RepositoryWorkUnit<Object> repositoryWorkUnit=new RepositoryWorkUnit<Object>(name,this){
    @Override protected void run() throws LoginException, PersistenceException {
      monitor.beginTask(Messages.getString("String_Node_Str"),IProgressMonitor.UNKNOWN);
      if (!monitor.isCanceled()) {
        final ManagerConnection managerConnection=new ManagerConnection();
        DatabaseConnection connection=(DatabaseConnection)item.getConnection();
        String oldContextName=connection.getContextName();
        IMetadataConnection metadataConnection=ConvertionHelper.convert(connection,false,null);
        String newContextName=connection.getContextName();
        if (oldContextName != null && newContextName != null && !oldContextName.equals(newContextName)) {
          if (node != null && node.getObject() != null && node.getObject().getProperty() != null) {
            Item itemTemp=node.getObject().getProperty().getItem();
            if (itemTemp != null && itemTemp instanceof ConnectionItem) {
              ConnectionItem connItem=(ConnectionItem)itemTemp;
              SwitchContextGroupNameImpl.getInstance().updateContextGroup(connItem,newContextName);
            }
          }
        }
        if (!metadataConnection.getDbType().equals(EDatabaseConnTemplate.GODBC.getDBDisplayName()) && !metadataConnection.getDbType().equals(EDatabaseConnTemplate.ACCESS.getDBDisplayName()) && !metadataConnection.getDbType().equals(EDatabaseConnTemplate.GENERAL_JDBC.getDBDisplayName())&& !metadataConnection.getDbType().equals(EDatabaseConnTemplate.IMPALA.getDBDisplayName())) {
          String hiveMode=(String)metadataConnection.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE);
          if (EDatabaseTypeName.HIVE.getDisplayName().equals(metadataConnection.getDbType())) {
            boolean useSSL=Boolean.valueOf(connection.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_USE_SSL));
            if (!useSSL) {
              metadataConnection.setUrl(connection.getURL());
            }
            if (HiveModeInfo.get(hiveMode) == HiveModeInfo.EMBEDDED) {
              JavaSqlFactory.doHivePreSetup((DatabaseConnection)metadataConnection.getCurrentConnection());
            }
          }
 else {
            String genUrl=DatabaseConnStrUtil.getURLString(metadataConnection.getDbType(),metadataConnection.getDbVersionString(),metadataConnection.getServerName(),metadataConnection.getUsername(),metadataConnection.getPassword(),metadataConnection.getPort(),metadataConnection.getDatabase(),metadataConnection.getFileFieldName(),metadataConnection.getDataSourceName(),metadataConnection.getDbRootPath(),metadataConnection.getAdditionalParams());
            metadataConnection.setUrl(genUrl);
          }
        }
        if (connection != null) {
          EList<orgomg.cwm.objectmodel.core.Package> dp=connection.getDataPackage();
          Collection<Package> newDataPackage=EcoreUtil.copyAll(dp);
          ConnectionHelper.addPackages(newDataPackage,(DatabaseConnection)metadataConnection.getCurrentConnection());
        }
        if (creation) {
          String hiveMode=(String)metadataConnection.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE);
          if (EDatabaseTypeName.HIVE.getDisplayName().equals(metadataConnection.getDbType())) {
            try {
              HiveConnectionManager.getInstance().checkConnection(metadataConnection);
            }
 catch (            Exception e) {
              e.printStackTrace();
            }
          }
 else {
            managerConnection.check(metadataConnection);
          }
          ExtractMetaDataUtils.getInstance().setUseAllSynonyms(false);
          IProxyRepositoryFactory factory=ProxyRepositoryFactory.getInstance();
          boolean repositoryObjectEditable=factory.isEditableAndLockIfPossible(node.getObject());
          if (!repositoryObjectEditable) {
            boolean flag=MessageDialog.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"));
            if (flag) {
              DatabaseTableWizard databaseTableWizard=new DatabaseTableWizard(PlatformUI.getWorkbench(),creation,node.getObject(),metadataTable,getExistingNames(),forceReadOnly,managerConnection,metadataConnection);
              WizardDialog wizardDialog=new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),databaseTableWizard);
              wizardDialog.setBlockOnOpen(true);
              handleWizard(node,wizardDialog);
            }
          }
 else {
            DatabaseTableWizard databaseTableWizard=new DatabaseTableWizard(PlatformUI.getWorkbench(),creation,node.getObject(),metadataTable,getExistingNames(),forceReadOnly,managerConnection,metadataConnection);
            WizardDialog wizardDialog=new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),databaseTableWizard);
            wizardDialog.setBlockOnOpen(true);
            handleWizard(node,wizardDialog);
          }
        }
 else {
          final boolean skipStep=true;
          DatabaseTableWizard databaseTableWizard=new DatabaseTableWizard(PlatformUI.getWorkbench(),creation,node.getObject(),metadataTable,getExistingNames(),forceReadOnly,managerConnection,metadataConnection);
          databaseTableWizard.setSkipStep(skipStep);
          WizardDialog wizardDialog=new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),databaseTableWizard);
          handleWizard(node,wizardDialog);
        }
      }
    }
  }
;
  repositoryWorkUnit.setAvoidUnloadResources(isAvoidUnloadResources());
  IRepositoryService repositoryService=(IRepositoryService)GlobalServiceRegister.getDefault().getService(IRepositoryService.class);
  repositoryService.getProxyRepositoryFactory().executeRepositoryWorkUnit(repositoryWorkUnit);
  monitor.done();
  return Status.OK_STATUS;
}