use of org.eclipse.core.runtime.jobs.ISchedulingRule in project tdi-studio-se by Talend.
the class GenericConnWizard method createOrUpdateConnectionItem.
private void createOrUpdateConnectionItem() throws CoreException {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
final IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
IWorkspaceRunnable operation = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
try {
Form form = wizPage.getForm();
if (form.isCallAfterFormFinish()) {
if (creation) {
factory.create(connectionItem, pathToSave);
}
compService.afterFormFinish(form.getName(), form.getProperties());
}
updateConnectionItem(factory);
} catch (Throwable e) {
throw new CoreException(new Status(IStatus.ERROR, IGenericConstants.REPOSITORY_PLUGIN_ID, "Error when saving the connection", e));
}
}
};
ISchedulingRule schedulingRule = workspace.getRoot();
// the update the project files need to be done in the workspace runnable to avoid all
// notification of changes before the end of the modifications.
workspace.run(operation, schedulingRule, IWorkspace.AVOID_UPDATE, new NullProgressMonitor());
// Move it from WorkspaceRunnable to avoid the conflicting rules with other jobs.
if (!creation) {
GenericUpdateManager.updateGenericConnection(connectionItem, oldMetadataTable);
}
}
use of org.eclipse.core.runtime.jobs.ISchedulingRule in project tesb-studio-se by Talend.
the class PublishMetadataRunnable method run.
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
final IWorkspaceRunnable op = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
monitor.beginTask(Messages.PublishMetadataAction_Importing, 3);
final Collection<XmlFileConnectionItem> xmlObjs;
try {
xmlObjs = initFileConnection();
} catch (Exception e) {
String message = (null != e.getMessage()) ? e.getMessage() : e.getClass().getName();
throw new CoreException(new Status(IStatus.ERROR, Activator.getDefault().getBundle().getSymbolicName(), "Can't retrieve schemas from metadata: " + message, e));
}
Collection<XmlFileConnectionItem> selectTables;
if (xmlObjs.size() > 0) {
RewriteSchemaDialogRunnable runnable = new RewriteSchemaDialogRunnable(shell, xmlObjs);
Display.getDefault().syncExec(runnable);
selectTables = runnable.getSelectTables();
if (null == selectTables) {
return;
}
} else {
selectTables = Collections.emptyList();
}
monitor.worked(1);
if (monitor.isCanceled()) {
return;
}
boolean validateWsdl = Activator.getDefault().getPreferenceStore().getBoolean(EsbSoapServicePreferencePage.ENABLE_WSDL_VALIDATION);
if (validateWsdl) {
WSDLUtils.validateWsdl(wsdlDefinition.getDocumentBaseURI());
}
monitor.worked(1);
if (monitor.isCanceled()) {
return;
}
try {
process(wsdlDefinition, selectTables);
} catch (Exception e) {
throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Error during schema processing", e));
}
monitor.done();
}
};
IWorkspace workspace = ResourcesPlugin.getWorkspace();
try {
ISchedulingRule schedulingRule = workspace.getRoot();
// the update the project files need to be done in the workspace runnable to avoid all
// notification
// of changes before the end of the modifications.
workspace.run(op, schedulingRule, IWorkspace.AVOID_UPDATE, monitor);
} catch (CoreException e) {
throw new InvocationTargetException(e);
}
}
use of org.eclipse.core.runtime.jobs.ISchedulingRule in project tdi-studio-se by Talend.
the class StandAloneTalendJavaEditor method refreshJobAndSave.
private void refreshJobAndSave(final IProxyRepositoryFactory repFactory) throws PersistenceException {
final IWorkspaceRunnable op = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
try {
repFactory.save(item);
} catch (PersistenceException e) {
throw new CoreException(new Status(IStatus.ERROR, DesignerPlugin.ID, "Save Routine failed!", e));
}
}
;
};
IRunnableWithProgress iRunnableWithProgress = new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
try {
ISchedulingRule schedulingRule = workspace.getRoot();
// the update the project files need to be done in the workspace runnable to avoid all
// notification
// of changes before the end of the modifications.
workspace.run(op, schedulingRule, IWorkspace.AVOID_UPDATE, monitor);
} catch (CoreException e) {
throw new InvocationTargetException(e);
}
}
};
try {
PlatformUI.getWorkbench().getProgressService().run(false, false, iRunnableWithProgress);
} catch (InvocationTargetException e) {
throw new PersistenceException(e);
} catch (InterruptedException e) {
throw new PersistenceException(e);
}
setTitleImage(getTitleImage());
}
Aggregations