diff options
author | nhauge | 2010-07-08 00:51:39 +0000 |
---|---|---|
committer | nhauge | 2010-07-08 00:51:39 +0000 |
commit | 45c3c7d0c769159d221646f0a11f409e0e125284 (patch) | |
tree | 70c373945913757fd16450466903012e03364c61 | |
parent | d412bd4d0df3e205e013048eae03c41524321d86 (diff) | |
download | webtools.dali-45c3c7d0c769159d221646f0a11f409e0e125284.tar.gz webtools.dali-45c3c7d0c769159d221646f0a11f409e0e125284.tar.xz webtools.dali-45c3c7d0c769159d221646f0a11f409e0e125284.zip |
303670 - Move project XML creation to facet install delegate and remove project creation based on faceted project POST_INSTALL event.
4 files changed, 59 insertions, 92 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/GenericJpaProjectManager.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/GenericJpaProjectManager.java index 7b2e9f6f6e..a4646d5d06 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/GenericJpaProjectManager.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/GenericJpaProjectManager.java @@ -11,7 +11,6 @@ package org.eclipse.jpt.core; import java.util.Vector; -import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; @@ -34,10 +33,6 @@ import org.eclipse.jdt.core.JavaCore; import org.eclipse.jpt.core.internal.AsynchronousJpaProjectUpdater; import org.eclipse.jpt.core.internal.JptCoreMessages; import org.eclipse.jpt.core.internal.SimpleJpaProjectConfig; -import org.eclipse.jpt.core.internal.facet.JpaFacetInstallDataModelProperties; -import org.eclipse.jpt.core.internal.operations.JpaFileCreationDataModelProperties; -import org.eclipse.jpt.core.internal.operations.OrmFileCreationDataModelProvider; -import org.eclipse.jpt.core.internal.operations.PersistenceFileCreationDataModelProvider; import org.eclipse.jpt.utility.Command; import org.eclipse.jpt.utility.internal.AsynchronousCommandExecutor; import org.eclipse.jpt.utility.internal.SimpleCommandExecutor; @@ -46,8 +41,6 @@ import org.eclipse.jpt.utility.internal.StringTools; import org.eclipse.jpt.utility.internal.SynchronizedBoolean; import org.eclipse.jpt.utility.internal.iterables.LiveCloneIterable; import org.eclipse.jpt.utility.internal.model.AbstractModel; -import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory; -import org.eclipse.wst.common.frameworks.datamodel.IDataModel; 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; @@ -69,7 +62,7 @@ import org.eclipse.wst.common.project.facet.core.events.IProjectFacetActionEvent * during resource and Java change notifications. * <p> * Events that trigger either the adding or removing of a JPA project (e.g. - * {@link IFacetedProjectEvent.Type#POST_INSTALL}) are handled "synchronously" + * {@link IResourceChangeEvent#POST_CHANGE}) are handled "synchronously" * by allowing the background thread to handle any outstanding events before * updating the list of JPA projects and returning execution to the event * source. @@ -80,7 +73,7 @@ import org.eclipse.wst.common.project.facet.core.events.IProjectFacetActionEvent * to find and add all pre-existing JPA projects. * * <li>Project created and facet installed<p> - * {@link IFacetedProjectEvent.Type#POST_INSTALL} + * {@link IResourceChangeEvent#POST_CHANGE} * <li>Project facet uninstalled<p> * {@link IFacetedProjectEvent.Type#PRE_UNINSTALL} * @@ -118,9 +111,7 @@ import org.eclipse.wst.common.project.facet.core.events.IProjectFacetActionEvent * -> {@link IResourceDelta#CHANGED} facet settings file * </ul> */ -// TODO remove faceted project listener and rely solely on resource change events -// for the faceted project settings file - this will require moving all the -// datamodel stuff to the UI (where it belongs) +//TODO Still need to look at faceted project listener for facet uninstall class GenericJpaProjectManager extends AbstractModel implements JpaProjectManager @@ -173,7 +164,6 @@ class GenericJpaProjectManager * {@link #facetedProjectListener}. */ private static final IFacetedProjectEvent.Type[] FACETED_PROJECT_EVENT_TYPES = new IFacetedProjectEvent.Type[] { - IFacetedProjectEvent.Type.POST_INSTALL, IFacetedProjectEvent.Type.PRE_UNINSTALL }; @@ -512,64 +502,6 @@ class GenericJpaProjectManager }; } - - // ********** FacetedProject POST_INSTALL ********** - - /* private */ void jpaFacetedProjectPostInstall(IProjectFacetActionEvent event) { - this.executeAfterEventsHandled(this.buildJpaFacetedProjectPostInstallCommand(event)); - } - - private Command buildJpaFacetedProjectPostInstallCommand(final IProjectFacetActionEvent event) { - return new EventHandlerCommand("Faceted Project POST_INSTALL Command") { //$NON-NLS-1$ - @Override - void execute_() { - GenericJpaProjectManager.this.jpaFacetedProjectPostInstall_(event); - } - }; - } - - /* private */ void jpaFacetedProjectPostInstall_(IProjectFacetActionEvent event) { - IProject project = event.getProject().getProject(); - IDataModel dataModel = (IDataModel) event.getActionConfig(); - - // assume(?) this is the first event to indicate we need to add the JPA project to the JPA project manager - this.addJpaProject(project); - - boolean buildOrmXml = dataModel.getBooleanProperty(JpaFacetInstallDataModelProperties.CREATE_ORM_XML); - this.createProjectXml(project, buildOrmXml); - } - - private void createProjectXml(IProject project, boolean buildOrmXml) { - this.createPersistenceXml(project); - - if (buildOrmXml) { - this.createOrmXml(project); - } - } - - private void createPersistenceXml(IProject project) { - IDataModel config = DataModelFactory.createDataModel(new PersistenceFileCreationDataModelProvider()); - config.setProperty(JpaFileCreationDataModelProperties.PROJECT_NAME, project.getName()); - // default values for all other properties should suffice - try { - config.getDefaultOperation().execute(null, null); - } catch (ExecutionException ex) { - JptCorePlugin.log(ex); - } - } - - private void createOrmXml(IProject project) { - IDataModel config = DataModelFactory.createDataModel(new OrmFileCreationDataModelProvider()); - config.setProperty(JpaFileCreationDataModelProperties.PROJECT_NAME, project.getName()); - // default values for all other properties should suffice - try { - config.getDefaultOperation().execute(null, null); - } catch (ExecutionException ex) { - JptCorePlugin.log(ex); - } - } - - // ********** FacetedProject PRE_UNINSTALL ********** /* private */ void jpaFacetedProjectPreUninstall(IProjectFacetActionEvent event) { @@ -804,8 +736,8 @@ class GenericJpaProjectManager } /** - * POST_INSTALL and PRE_UNINSTALL are the only facet events we use for - * adding/removing JPA projects. These are the cases where we listen for resource events. + * PRE_UNINSTALL is the only facet event we use for + * removing JPA projects. These are the cases where we listen for resource events. * <p> * Check for:<ul> * <li>facet settings file added/removed/changed @@ -980,15 +912,11 @@ class GenericJpaProjectManager /** * Check for:<ul> - * <li>install of JPA facet * <li>un-install of JPA facet * </ul> */ public void handleEvent(IFacetedProjectEvent event) { switch (event.getType()) { - case POST_INSTALL : - this.processPostInstallEvent((IProjectFacetActionEvent) event); - break; case PRE_UNINSTALL : this.processPreUninstallEvent((IProjectFacetActionEvent) event); break; @@ -997,13 +925,6 @@ class GenericJpaProjectManager } } - private void processPostInstallEvent(IProjectFacetActionEvent event) { - debug("Facet POST_INSTALL: ", event.getProjectFacet()); //$NON-NLS-1$ - if (event.getProjectFacet().getId().equals(JptCorePlugin.FACET_ID)) { - GenericJpaProjectManager.this.jpaFacetedProjectPostInstall(event); - } - } - private void processPreUninstallEvent(IProjectFacetActionEvent event) { debug("Facet PRE_UNINSTALL: ", event.getProjectFacet()); //$NON-NLS-1$ if (event.getProjectFacet().getId().equals(JptCorePlugin.FACET_ID)) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetInstallDelegate.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetInstallDelegate.java index 41e4d1c198..9cc71791d3 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetInstallDelegate.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetInstallDelegate.java @@ -9,6 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.facet; +import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; @@ -16,8 +17,13 @@ import org.eclipse.jdt.core.IClasspathContainer; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jpt.core.JptCorePlugin; +import org.eclipse.jpt.core.internal.operations.JpaFileCreationDataModelProperties; +import org.eclipse.jpt.core.internal.operations.OrmFileCreationDataModelProvider; +import org.eclipse.jpt.core.internal.operations.PersistenceFileCreationDataModelProvider; import org.eclipse.jpt.db.JptDbPlugin; import org.eclipse.jpt.utility.internal.ArrayTools; +import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory; import org.eclipse.wst.common.frameworks.datamodel.IDataModel; import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; @@ -44,12 +50,22 @@ public class JpaFacetInstallDelegate IJavaProject javaProject = JavaCore.create(project); IDataModel dataModel = (IDataModel) config; - monitor.beginTask("", 1); //$NON-NLS-1$ - - // project settings - this.addDbDriverLibraryToClasspath(javaProject, dataModel, monitor); - - monitor.worked(1); + try { + monitor.beginTask("", 3); //$NON-NLS-1$ + + // project settings + this.addDbDriverLibraryToClasspath(javaProject, dataModel, monitor); + + monitor.worked(1); + + // create project XML files + this.createProjectXml(project, dataModel.getBooleanProperty(CREATE_ORM_XML)); + + monitor.worked(2); + } + finally { + monitor.done(); + } } protected void addDbDriverLibraryToClasspath( @@ -83,4 +99,34 @@ public class JpaFacetInstallDelegate newClasspath[len] = classpathEntry; javaProject.setRawClasspath(newClasspath, monitor); } + + private void createProjectXml(IProject project, boolean buildOrmXml) { + this.createPersistenceXml(project); + + if (buildOrmXml) { + this.createOrmXml(project); + } + } + + private void createPersistenceXml(IProject project) { + IDataModel config = DataModelFactory.createDataModel(new PersistenceFileCreationDataModelProvider()); + config.setProperty(JpaFileCreationDataModelProperties.PROJECT_NAME, project.getName()); + // default values for all other properties should suffice + try { + config.getDefaultOperation().execute(null, null); + } catch (ExecutionException ex) { + JptCorePlugin.log(ex); + } + } + + private void createOrmXml(IProject project) { + IDataModel config = DataModelFactory.createDataModel(new OrmFileCreationDataModelProvider()); + config.setProperty(JpaFileCreationDataModelProperties.PROJECT_NAME, project.getName()); + // default values for all other properties should suffice + try { + config.getDefaultOperation().execute(null, null); + } catch (ExecutionException ex) { + JptCorePlugin.log(ex); + } + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationDataModelProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationDataModelProvider.java index 5c779c3572..86d5cdb701 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationDataModelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationDataModelProvider.java @@ -96,7 +96,7 @@ public class OrmFileCreationDataModelProvider if (getProject() == null) { return null; } - return getJpaProject().getJpaPlatform().getMostRecentSupportedResourceType( + return JptCorePlugin.getJpaPlatform(getProject()).getMostRecentSupportedResourceType( JptCorePlugin.ORM_XML_CONTENT_TYPE).getVersion(); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/PersistenceFileCreationDataModelProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/PersistenceFileCreationDataModelProvider.java index e8d744dc1f..9ff6f9c366 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/PersistenceFileCreationDataModelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/PersistenceFileCreationDataModelProvider.java @@ -43,7 +43,7 @@ public class PersistenceFileCreationDataModelProvider if (getProject() == null) { return null; } - return getJpaProject().getJpaPlatform().getMostRecentSupportedResourceType( + return JptCorePlugin.getJpaPlatform(getProject()).getMostRecentSupportedResourceType( JptCorePlugin.PERSISTENCE_XML_CONTENT_TYPE).getVersion(); } |