use of org.eclipse.core.runtime.jobs.ISchedulingRule in project webtools.sourceediting by eclipse.
the class OccurrencesSearchQuery method doQuery.
/**
* This query looks for all occurrences of the selected string
*
* @see org.eclipse.wst.sse.ui.internal.search.BasicSearchQuery#doQuery()
*/
protected IStatus doQuery(IProgressMonitor monitor) {
IStatus status = Status.OK_STATUS;
FindRegions findRegions = new FindRegions(this.fDocument, this.fRegionText, this.fRegionType);
try {
// BUG158846 - deadlock if lock up entire workspace, so only lock
// up the file we are searching on
ISchedulingRule markerRule = ResourcesPlugin.getWorkspace().getRuleFactory().markerRule(getFile());
ResourcesPlugin.getWorkspace().run(findRegions, markerRule, IWorkspace.AVOID_UPDATE, monitor);
} catch (CoreException e) {
// $NON-NLS-1$
status = new Status(IStatus.ERROR, SSEUIPlugin.ID, IStatus.OK, "", null);
}
return status;
}
use of org.eclipse.core.runtime.jobs.ISchedulingRule in project pmd-eclipse-plugin by pmd.
the class ReviewCodeCmd method getSchedulingRule.
/**
* @return the scheduling rule needed to apply markers
*/
private ISchedulingRule getSchedulingRule() {
final IWorkspace workspace = ResourcesPlugin.getWorkspace();
final IResourceRuleFactory ruleFactory = workspace.getRuleFactory();
ISchedulingRule rule;
if (resources.isEmpty()) {
rule = ruleFactory.markerRule(resourceDelta.getResource().getProject());
} else {
ISchedulingRule[] rules = new ISchedulingRule[resources.size()];
for (int i = 0; i < rules.length; i++) {
rules[i] = ruleFactory.markerRule((IResource) resources.get(i));
}
rule = new MultiRule(resources.toArray(rules));
}
return rule;
}
use of org.eclipse.core.runtime.jobs.ISchedulingRule in project tesb-studio-se by Talend.
the class OpenWSDLPage method finish.
public boolean finish() {
// changed by hqzhang for TDI-19527, label=displayName
final String label = item.getProperty().getDisplayName();
item.getProperty().setLabel(label);
IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
public void run(final IProgressMonitor monitor) throws CoreException {
IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
try {
item.setConnection(ServicesFactory.eINSTANCE.createServiceConnection());
if (creation) {
item.getProperty().setId(factory.getNextId());
factory.create(item, getDestinationPath());
repositoryNode = new RepositoryNode(new RepositoryViewObject(item.getProperty()), repositoryNode.getParent(), ENodeType.REPOSITORY_ELEMENT);
}
((ServiceConnection) item.getConnection()).setWSDLPath(path);
((ServiceConnection) item.getConnection()).getServicePort().clear();
final IFile fileWsdl = WSDLUtils.getWsdlFile(item);
final InputStream is;
if (null == path) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// create new WSDL file from template
TemplateProcessor.processTemplate("DATA_SERVICE_WSDL", Collections.singletonMap("serviceName", (Object) label), baos, getClass().getResourceAsStream(TEMPLATE_SERVICE_WSDL));
is = new ByteArrayInputStream(baos.toByteArray());
} else {
// $NON-NLS-1$
String filenameTemplate = item.getProperty().getLabel() + '_' + item.getProperty().getVersion() + ".%d.wsdl";
Map<String, InputStream> wsdls = new WSDLLoader().load(path, filenameTemplate);
is = wsdls.remove(WSDLLoader.DEFAULT_FILENAME);
for (Map.Entry<String, InputStream> wsdl : wsdls.entrySet()) {
String filename = wsdl.getKey();
IFile importedWsdl = fileWsdl.getParent().getFile(new Path(filename));
if (!importedWsdl.exists()) {
importedWsdl.create(wsdl.getValue(), true, monitor);
} else {
importedWsdl.setContents(wsdl.getValue(), 0, monitor);
}
createReferenceResources(filename.substring(filename.lastIndexOf('.', filename.lastIndexOf('.') - 1) + 1));
}
}
// store WSDL in service
if (!fileWsdl.exists()) {
fileWsdl.create(is, true, monitor);
} else {
fileWsdl.setContents(is, 0, monitor);
}
// create reference to wsdl
// $NON-NLS-1$
createReferenceResources("wsdl");
// path
definition = WSDLUtils.getDefinition(fileWsdl);
populateModelFromWsdl(factory, definition, item, repositoryNode);
factory.save(item);
ProxyRepositoryFactory.getInstance().saveProject(ProjectManager.getInstance().getCurrentProject());
} catch (Exception e) {
// delete the node if any exception during the creation
if (creation) {
try {
factory.save(item);
factory.deleteObjectPhysical(repositoryNode.getObject());
} catch (PersistenceException e1) {
throw getCoreException("WDSL creation failed", e1);
}
}
// throw the exception
if (e instanceof CoreException) {
throw (CoreException) e;
}
if (e instanceof InvocationTargetException) {
throw getCoreException("WDSL creation failed", e.getCause());
}
throw getCoreException("WDSL creation failed", e);
}
}
};
IWorkspace workspace = ResourcesPlugin.getWorkspace();
try {
// we use the workspace scheduling rule to lock all
ISchedulingRule schedulingRule = workspace.getRoot();
// workspace modifications during the run.
// the update of 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(runnable, schedulingRule, IWorkspace.AVOID_UPDATE, null);
} catch (CoreException e) {
MessageBoxExceptionHandler.process(e);
return false;
}
// open wsdl editor
OpenWSDLEditorAction action = new OpenWSDLEditorAction();
action.setServiceItem(item);
action.run();
// import schemas if required
if (checkImport.isVisible() && checkImport.getSelection() && null != definition) {
PublishMetadataRunnable publishMetadataRunnable = new PublishMetadataRunnable(definition, getShell());
try {
getContainer().run(true, true, publishMetadataRunnable);
} catch (InvocationTargetException e) {
Throwable cause = e.getCause();
String message = (null != cause.getMessage()) ? cause.getMessage() : cause.getClass().getName();
setErrorMessage("Populate schema to repository: " + message);
return false;
} catch (InterruptedException e) {
return false;
}
}
return true;
}
use of org.eclipse.core.runtime.jobs.ISchedulingRule in project tbd-studio-se by Talend.
the class HadoopConfsManager method updateHadoopCluster.
private void updateHadoopCluster() throws CoreException {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRunnable operation = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
Item item = null;
try {
IRepositoryViewObject repObj = factory.getLastVersion(hadoopClusterId);
if (repObj != null && repObj.getProperty() != null) {
item = repObj.getProperty().getItem();
}
if (item != null) {
factory.save(item);
}
} catch (PersistenceException e) {
ExceptionHandler.process(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());
}
use of org.eclipse.core.runtime.jobs.ISchedulingRule in project tbd-studio-se by Talend.
the class AbstractHadoopClusterMigrationTask method execute.
/*
* (non-Javadoc)
*
* @see org.talend.core.model.migration.AbstractItemMigrationTask#execute(org.talend.core.model.properties.Item)
*/
@Override
public ExecutionResult execute(final Item item) {
if (item == null || !(item instanceof ConnectionItem) || !ERepositoryObjectType.getItemType(item).equals(getType())) {
return ExecutionResult.NOTHING_TO_DO;
}
try {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRunnable operation = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
try {
convert((ConnectionItem) item);
} catch (Exception e) {
throw new CoreException(new Status(IStatus.ERROR, HadoopClusterPlugin.PLUGIN_ID, Messages.getString("AbstractHadoopClusterMigrationTask.errorMsg"), // $NON-NLS-1$
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());
if (modified[0]) {
return ExecutionResult.SUCCESS_NO_ALERT;
} else {
return ExecutionResult.NOTHING_TO_DO;
}
} catch (Exception e) {
ExceptionHandler.process(e);
return ExecutionResult.FAILURE;
}
}
Aggregations