diff options
author | pfullbright | 2011-12-16 17:22:46 +0000 |
---|---|---|
committer | pfullbright | 2011-12-16 17:22:46 +0000 |
commit | 8246447f12e7af5e8c8865544054539d1181d161 (patch) | |
tree | c056d32c19bb38c6e55fb5614858d5547d7ab6f9 /jaxb/plugins/org.eclipse.jpt.jaxb.core/src | |
parent | 4eb4001424403b10c7c32ae7228d18fb4332141d (diff) | |
download | webtools.dali-8246447f12e7af5e8c8865544054539d1181d161.tar.gz webtools.dali-8246447f12e7af5e8c8865544054539d1181d161.tar.xz webtools.dali-8246447f12e7af5e8c8865544054539d1181d161.zip |
changed to asynchronous sync/update
Diffstat (limited to 'jaxb/plugins/org.eclipse.jpt.jaxb.core/src')
2 files changed, 53 insertions, 3 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/GenericJaxbProjectManager.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/GenericJaxbProjectManager.java index c4056c7bd5..61f6cd5f40 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/GenericJaxbProjectManager.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/GenericJaxbProjectManager.java @@ -23,6 +23,8 @@ import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.jobs.IJobManager; import org.eclipse.core.runtime.jobs.ILock; import org.eclipse.core.runtime.jobs.Job; @@ -30,6 +32,9 @@ import org.eclipse.jdt.core.ElementChangedEvent; import org.eclipse.jdt.core.IElementChangedListener; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jpt.common.core.internal.JptCommonCoreMessages; +import org.eclipse.jpt.common.core.internal.utility.CallbackJobSynchronizer; +import org.eclipse.jpt.common.core.internal.utility.JobCommand; +import org.eclipse.jpt.common.core.internal.utility.JobSynchronizer; import org.eclipse.jpt.common.utility.Command; import org.eclipse.jpt.common.utility.internal.AsynchronousCommandExecutor; import org.eclipse.jpt.common.utility.internal.SimpleCommandExecutor; @@ -38,8 +43,12 @@ import org.eclipse.jpt.common.utility.internal.StringTools; import org.eclipse.jpt.common.utility.internal.SynchronizedBoolean; import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable; import org.eclipse.jpt.common.utility.internal.model.AbstractModel; +import org.eclipse.jpt.common.utility.synchronizers.CallbackSynchronizer; +import org.eclipse.jpt.common.utility.synchronizers.Synchronizer; +import org.eclipse.jpt.jaxb.core.internal.JptJaxbCoreMessages; import org.eclipse.jpt.jaxb.core.internal.SimpleJaxbProjectConfig; import org.eclipse.jpt.jaxb.core.platform.JaxbPlatformDefinition; +import org.eclipse.osgi.util.NLS; import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework; import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent; import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener; @@ -377,7 +386,8 @@ class GenericJaxbProjectManager if (jaxbProject == null) { return null; } -// jaxbProject.setUpdateSynchronizer(new CallbackAsynchronousSynchronizer()); + jaxbProject.setContextModelSynchronizer(buildJobContextModelSynchronizer(jaxbProject)); + jaxbProject.setUpdateSynchronizer(buildJobUpdateSynchronizer(jaxbProject)); return jaxbProject; } @@ -401,6 +411,44 @@ class GenericJaxbProjectManager return config; } + private Synchronizer buildJobContextModelSynchronizer(JaxbProject jaxbProject) { + return new JobSynchronizer( + buildContextModelJobName(jaxbProject), + buildContextModelJobCommand(jaxbProject), + jaxbProject.getProject()); + } + + private String buildContextModelJobName(JaxbProject jaxbProject) { + return NLS.bind(JptJaxbCoreMessages.CONTEXT_MODEL_SYNC_JOB_NAME, jaxbProject.getName()); + } + + private JobCommand buildContextModelJobCommand(final JaxbProject jaxbProject) { + return new JobCommand() { + public IStatus execute(IProgressMonitor monitor) { + return jaxbProject.synchronizeContextModel(monitor); + } + }; + } + + private CallbackSynchronizer buildJobUpdateSynchronizer(JaxbProject jaxbProject) { + return new CallbackJobSynchronizer( + buildUpdateJobName(jaxbProject), + buildUpdateJobCommand(jaxbProject), + jaxbProject.getProject()); + } + + private String buildUpdateJobName(JaxbProject jaxbProject) { + return NLS.bind(JptJaxbCoreMessages.UPDATE_JOB_NAME, jaxbProject.getName()); + } + + private JobCommand buildUpdateJobCommand(final JaxbProject jaxbProject) { + return new JobCommand() { + public IStatus execute(IProgressMonitor monitor) { + return jaxbProject.update(monitor); + } + }; + } + /* private */ void removeJaxbProject(JaxbProject jaxbProject) { // figure out exactly when JAXB projects are removed dumpStackTrace("remove: ", jaxbProject); //$NON-NLS-1$ diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/JptJaxbCoreMessages.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/JptJaxbCoreMessages.java index 112a1158e0..1ddbcdc20f 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/JptJaxbCoreMessages.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/JptJaxbCoreMessages.java @@ -16,6 +16,10 @@ import org.eclipse.osgi.util.NLS; */ public class JptJaxbCoreMessages { + public static String CONTEXT_MODEL_SYNC_JOB_NAME; + public static String UPDATE_JOB_NAME; + public static String PREFERENCES_FLUSH_JOB_NAME; + public static String ClassesGenerator_generatingClasses; public static String ClassesGenerator_generatingClassesTask; @@ -29,8 +33,6 @@ public class JptJaxbCoreMessages { public static String UserLibraryValidator_incompatibleJavaFacet; public static String UserLibraryValidator_incompatibleJavaLibrary; - public static String PREFERENCES_FLUSH_JOB_NAME; - public static String SchemaGenerator_creatingJAXBPropertiesFileTask; public static String XML_ATTRIBUTE_DESC; |