Author: rob.stryker(a)jboss.com
Date: 2008-06-16 14:19:03 -0400 (Mon, 16 Jun 2008)
New Revision: 8801
Added:
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/build/SaveArchivesJob.java
Modified:
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesModelModuleContributor.java
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/ArchivePublishWizard.java
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/FilesetWizard.java
Log:
JBIDE-2319 - build events occurring in main thread
Modified:
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesModelModuleContributor.java
===================================================================
---
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesModelModuleContributor.java 2008-06-16
16:48:10 UTC (rev 8800)
+++
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesModelModuleContributor.java 2008-06-16
18:19:03 UTC (rev 8801)
@@ -112,7 +112,6 @@
ArchivesModel.instance().save(project.getLocation(),
new NullProgressMonitor());
} catch( ArchivesModelException ame ) {
-
}
}
}
Modified:
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/ArchivePublishWizard.java
===================================================================
---
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/ArchivePublishWizard.java 2008-06-16
16:48:10 UTC (rev 8800)
+++
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/ArchivePublishWizard.java 2008-06-16
18:19:03 UTC (rev 8801)
@@ -27,6 +27,7 @@
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
+import org.jboss.ide.eclipse.archives.core.build.SaveArchivesJob;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
@@ -48,16 +49,7 @@
pack.setProperty(ArchivesBuildListener.DEPLOY_SERVERS, alwaysPublish ? getServers() :
null);
pack.setProperty(ArchivesBuildListener.DEPLOY_AFTER_BUILD, getAutoDeploy());
final IPath p = pack.getProjectPath();
- new Job("Saving Archives Preferences") {
- protected IStatus run(IProgressMonitor monitor) {
- try {
- ArchivesModel.instance().save(p, null);
- return Status.OK_STATUS;
- } catch( ArchivesModelException ame ) {
- return new Status(IStatus.ERROR, JBossServerUIPlugin.PLUGIN_ID, "Unable to save
archive preferences", ame);
- }
- }
- }.schedule();
+ new SaveArchivesJob(p).schedule();
return true;
}
public void addPages() {
Added:
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/build/SaveArchivesJob.java
===================================================================
---
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/build/SaveArchivesJob.java
(rev 0)
+++
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/build/SaveArchivesJob.java 2008-06-16
18:19:03 UTC (rev 8801)
@@ -0,0 +1,43 @@
+package org.jboss.ide.eclipse.archives.core.build;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.jboss.ide.eclipse.archives.core.ArchivesCorePlugin;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
+
+public class SaveArchivesJob extends Job {
+ private Runnable runnable;
+ private IPath projectPath;
+ public SaveArchivesJob(IPath projectPath) {
+ this(projectPath, null, null);
+ }
+ public SaveArchivesJob(IPath projectPath,Runnable runnable, String jobName) {
+ super(jobName == null ? "Save Archives Job" : jobName);
+ this.runnable = runnable;
+ this.projectPath = projectPath;
+ }
+
+ protected IStatus run(IProgressMonitor monitor) {
+ if( runnable != null ) {
+ try {
+ runnable.run();
+ } catch( Exception e ) {
+ IStatus status = new Status(IStatus.ERROR, ArchivesCorePlugin.PLUGIN_ID,
"Problem executing pre-save runnable", e);
+ return status;
+ }
+ }
+ try {
+ ArchivesModel.instance().save(projectPath, new NullProgressMonitor());
+ } catch( ArchivesModelException ame ) {
+ IStatus status = new Status(IStatus.ERROR, ArchivesCorePlugin.PLUGIN_ID, "Problem
saving archives model", ame);
+ return status;
+ }
+ return Status.OK_STATUS;
+ }
+
+}
Modified:
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java
===================================================================
---
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java 2008-06-16
16:48:10 UTC (rev 8800)
+++
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java 2008-06-16
18:19:03 UTC (rev 8801)
@@ -27,6 +27,7 @@
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.PlatformUI;
import org.jboss.ide.eclipse.archives.core.build.ArchiveBuildDelegate;
+import org.jboss.ide.eclipse.archives.core.build.SaveArchivesJob;
import org.jboss.ide.eclipse.archives.core.model.ArchiveNodeFactory;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
@@ -185,13 +186,7 @@
buildAction = new ActionWithDelegate("",
ArchivesSharedImages.getImageDescriptor(ArchivesSharedImages.IMG_BUILD_PACKAGES)) {
public void run() {
- final Object selected = getSelectedObject();
- new Job("Build Archive Node") {
- protected IStatus run(IProgressMonitor monitor) {
- buildSelectedNode(selected);
- return Status.OK_STATUS;
- }
- }.schedule();
+ buildSelectedNode(getSelectedObject());
}
public IStructuredSelection getSelection() {
@@ -226,7 +221,7 @@
};
contextMenuManager.add(action);
}
- } catch( Exception e) { System.out.println(e.getMessage()); }
+ } catch( Exception e) {}
}
}
@@ -301,41 +296,31 @@
int response = dialog.open();
if (response == Dialog.OK) {
- try {
- String[] folderPaths = dialog.getValue().split("[\\\\/]");
- IArchiveNode selected = getSelectedNode();
- IArchiveFolder current = null;
- IArchiveFolder temp = null;
-
- for(int i = folderPaths.length-1; i >= 0 ; i-- ) {
- temp = ArchiveNodeFactory.createFolder();
- temp.setName(folderPaths[i]);
- if( current == null )
- current = temp;
- else {
- temp.addChild(current);
- current = temp;
- }
+ String[] folderPaths = dialog.getValue().split("[\\\\/]");
+ IArchiveNode selected = getSelectedNode();
+ IArchiveFolder current = null;
+ IArchiveFolder temp = null;
+
+ for(int i = folderPaths.length-1; i >= 0 ; i-- ) {
+ temp = ArchiveNodeFactory.createFolder();
+ temp.setName(folderPaths[i]);
+ if( current == null )
+ current = temp;
+ else {
+ temp.addChild(current);
+ current = temp;
}
-
- selected.addChild(current);
- ArchivesModel.instance().save(selected.getProjectPath(), new NullProgressMonitor());
- } catch( ArchivesModelException ame ) {
- IStatus status = new Status(IStatus.ERROR, PackagesUIPlugin.PLUGIN_ID, "Error
Attaching Archives Node", ame);
- PackagesUIPlugin.getDefault().getLog().log(status);
}
+
+ selected.addChild(current);
+ new SaveArchivesJob(selected.getProjectPath()).schedule();
}
}
private void createFileset () {
- try {
- IArchiveNode selected = getSelectedNode();
- WizardDialog dialog = new WizardDialog(getSite().getShell(), new FilesetWizard(null,
selected));
-
- dialog.open();
- } catch( Exception e ) {
- e.printStackTrace();
- }
+ IArchiveNode selected = getSelectedNode();
+ WizardDialog dialog = new WizardDialog(getSite().getShell(), new FilesetWizard(null,
selected));
+ dialog.open();
}
private void editSelectedNode () {
@@ -344,9 +329,7 @@
if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE_FILESET) {
IArchiveFileSet fileset = (IArchiveFileSet) node;
WizardDialog dialog = new WizardDialog(getSite().getShell(), new
FilesetWizard(fileset, node.getParent()));
- try {
- dialog.open();
- } catch( Exception e ) { e.printStackTrace(); }
+ dialog.open();
} else if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE) {
IArchive pkg = (IArchive) node;
WizardDialog dialog = new WizardDialog(getSite().getShell(), new NewJARWizard(pkg));
@@ -355,34 +338,33 @@
// folder can do the model save here.
IArchiveFolder folder = (IArchiveFolder) node;
InputDialog dialog = new InputDialog(getSite().getShell(),
- ArchivesUIMessages.ProjectPackagesView_createFolderDialog_title,
- ArchivesUIMessages.ProjectPackagesView_createFolderDialog_message, folder.getName(),
null);
+ ArchivesUIMessages.ProjectPackagesView_createFolderDialog_title,
+ ArchivesUIMessages.ProjectPackagesView_createFolderDialog_message,
folder.getName(), null);
int response = dialog.open();
if (response == Dialog.OK) {
folder.setName(dialog.getValue());
- try {
- ArchivesModel.instance().save(folder.getProjectPath(), new NullProgressMonitor());
- } catch( ArchivesModelException ame ) {
- IStatus status = new Status(IStatus.ERROR, PackagesUIPlugin.PLUGIN_ID,
"Problem saving archives model", ame);
- PackagesUIPlugin.getDefault().getLog().log(status);
- }
+ new SaveArchivesJob(folder.getProjectPath()).schedule();
}
}
}
}
- private void buildSelectedNode(Object selected) {
- if( selected == null ) return;
- if (selected instanceof IArchiveNode &&
- ((IArchiveNode)selected).getNodeType() == IArchiveNode.TYPE_ARCHIVE) {
- new ArchiveBuildDelegate().fullArchiveBuild((IArchive)selected);
- } else if( selected != null && selected instanceof WrappedProject ){
- new
ArchiveBuildDelegate().fullProjectBuild(((WrappedProject)selected).getProject().getLocation());
- } else {
- new
ArchiveBuildDelegate().fullArchiveBuild(((IArchiveNode)selected).getRootArchive());
- }
-
+ private void buildSelectedNode(final Object selected) {
+ new Job("Build Archive Node") {
+ protected IStatus run(IProgressMonitor monitor) {
+ if( selected == null ) return Status.OK_STATUS;
+ if (selected instanceof IArchiveNode &&
+ ((IArchiveNode)selected).getNodeType() == IArchiveNode.TYPE_ARCHIVE) {
+ new ArchiveBuildDelegate().fullArchiveBuild((IArchive)selected);
+ } else if( selected != null && selected instanceof WrappedProject ){
+ new
ArchiveBuildDelegate().fullProjectBuild(((WrappedProject)selected).getProject().getLocation());
+ } else {
+ new
ArchiveBuildDelegate().fullArchiveBuild(((IArchiveNode)selected).getRootArchive());
+ }
+ return Status.OK_STATUS;
+ }
+ }.schedule();
}
private void deleteSelectedNode () {
@@ -390,25 +372,11 @@
if (node != null) {
final IArchiveNode parent = (IArchiveNode) node.getParent();
parent.removeChild(node);
- new Job("Delete Archives Node") {
- protected IStatus run(IProgressMonitor monitor) {
- if( parent.getProjectPath() != null ) {
- try {
- ArchivesModel.instance().save(parent.getProjectPath(), new
NullProgressMonitor());
- } catch( ArchivesModelException ame ) {
- IStatus status = new Status(IStatus.ERROR, PackagesUIPlugin.PLUGIN_ID,
"Problem saving archives model", ame);
- PackagesUIPlugin.getDefault().getLog().log(status);
- }
- }
- return Status.OK_STATUS;
- }
-
- }.schedule();
+ SaveArchivesJob job = new SaveArchivesJob(parent.getProjectPath());
+ job.schedule();
}
}
-
-
/*
* Utility methods below
*/
Modified:
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java
===================================================================
---
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java 2008-06-16
16:48:10 UTC (rev 8800)
+++
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java 2008-06-16
18:19:03 UTC (rev 8801)
@@ -82,7 +82,7 @@
if (performed) {
try {
- getContainer().run(false, false, new IRunnableWithProgress () {
+ getContainer().run(true, false, new IRunnableWithProgress () {
public void run(IProgressMonitor monitor) throws InvocationTargetException,
InterruptedException {
IArchiveNode parent = null;
Modified:
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/FilesetWizard.java
===================================================================
---
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/FilesetWizard.java 2008-06-16
16:48:10 UTC (rev 8800)
+++
branches/jbosstools-2.1.x/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/FilesetWizard.java 2008-06-16
18:19:03 UTC (rev 8801)
@@ -37,11 +37,11 @@
fillFilesetFromPage(fileset);
try {
- getContainer().run(false, false, new IRunnableWithProgress () {
+ getContainer().run(true, false, new IRunnableWithProgress () {
public void run(IProgressMonitor monitor) throws InvocationTargetException,
InterruptedException {
+ if (createFileset)
+ parentNode.addChild(fileset);
try {
- if (createFileset)
- parentNode.addChild(fileset);
ArchivesModel.instance().save(fileset.getProjectPath(), monitor);
} catch( ArchivesModelException ame ) {
IStatus status = new Status(IStatus.ERROR, PackagesUIPlugin.PLUGIN_ID, "Error
Completing Wizard", ame);