Author: snjeza
Date: 2009-08-14 17:31:23 -0400 (Fri, 14 Aug 2009)
New Revision: 17094
Added:
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/SeamProjectConfigurator.java
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/preferences/
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/preferences/SeamConfiguratorPreferencePage.java
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/preferences/SeamConfiguratorPreferencesInitializer.java
Modified:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/IJBossMavenConstants.java
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/MavenCoreActivator.java
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/internal/project/facet/MavenFacetInstallDataModelProvider.java
trunk/maven/plugins/org.jboss.tools.maven.seam/META-INF/MANIFEST.MF
trunk/maven/plugins/org.jboss.tools.maven.seam/plugin.xml
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/MavenSeamActivator.java
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/internal/project/facet/MavenPostInstallListener.java
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/project/facet/MavenFacetInstallPage.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/ISeamFacetDataModelProperties.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDataModelProvider.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-4736 Add m2eclipse project-configurator for Seam
projects
Modified:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/IJBossMavenConstants.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/IJBossMavenConstants.java 2009-08-14
20:01:18 UTC (rev 17093)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/IJBossMavenConstants.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -31,4 +31,5 @@
static final String SEAM_MAVEN_VERSION = "seamMavenVersion"; //$NON-NLS-1$
static final String SEAM_VERSION = "seam.version"; //$NON-NLS-1$
static final String REMOVE_WTP_CLASSPATH_CONTAINERS =
"removeWTPClasspathContainers"; //$NON-NLS-1$
+ static final String MAVEN_PROJECT_EXISTS = "mavenProjectExists";
//$NON-NLS-1$
}
\ No newline at end of file
Modified:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/MavenCoreActivator.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/MavenCoreActivator.java 2009-08-14
20:01:18 UTC (rev 17093)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/MavenCoreActivator.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -473,6 +473,9 @@
}
public static void mergeModel(org.maven.ide.components.pom.Model projectModel,
org.maven.ide.components.pom.Model libraryModel) {
+ if (projectModel == null || libraryModel == null) {
+ return;
+ }
addProperties(projectModel,libraryModel);
addRepositories(projectModel,libraryModel);
addPlugins(projectModel,libraryModel);
Modified:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/internal/project/facet/MavenFacetInstallDataModelProvider.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/internal/project/facet/MavenFacetInstallDataModelProvider.java 2009-08-14
20:01:18 UTC (rev 17093)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/internal/project/facet/MavenFacetInstallDataModelProvider.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -51,6 +51,9 @@
if (propertyName.equals(IJBossMavenConstants.REMOVE_WTP_CLASSPATH_CONTAINERS)) {
return Boolean.TRUE;
}
+ if (propertyName.equals(IJBossMavenConstants.MAVEN_PROJECT_EXISTS)) {
+ return Boolean.FALSE;
+ }
return super.getDefaultProperty(propertyName);
}
@@ -65,6 +68,7 @@
propertyNames.add(IJBossMavenConstants.PACKAGING);
propertyNames.add(IJBossMavenConstants.SEAM_MAVEN_VERSION);
propertyNames.add(IJBossMavenConstants.REMOVE_WTP_CLASSPATH_CONTAINERS);
+ propertyNames.add(IJBossMavenConstants.MAVEN_PROJECT_EXISTS);
return propertyNames;
}
Modified: trunk/maven/plugins/org.jboss.tools.maven.seam/META-INF/MANIFEST.MF
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.seam/META-INF/MANIFEST.MF 2009-08-14
20:01:18 UTC (rev 17093)
+++ trunk/maven/plugins/org.jboss.tools.maven.seam/META-INF/MANIFEST.MF 2009-08-14
21:31:23 UTC (rev 17094)
@@ -8,8 +8,12 @@
org.eclipse.core.runtime,
org.jboss.tools.maven.core,
org.jboss.tools.seam.core,
+ org.jboss.tools.seam.ui,
+ org.jboss.tools.common.model,
org.maven.ide.components.maven_model_edit,
- org.eclipse.jst.j2ee.core
+ org.eclipse.jst.j2ee.core,
+ org.eclipse.jst.j2ee,
+ org.eclipse.wst.common.emfworkbench.integration
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-Vendor: JBoss by Red Hat
Modified: trunk/maven/plugins/org.jboss.tools.maven.seam/plugin.xml
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.seam/plugin.xml 2009-08-14 20:01:18 UTC (rev
17093)
+++ trunk/maven/plugins/org.jboss.tools.maven.seam/plugin.xml 2009-08-14 21:31:23 UTC (rev
17094)
@@ -7,4 +7,24 @@
eventTypes="POST_INSTALL"/>
</extension>
+ <extension point="org.maven.ide.eclipse.projectConfigurators">
+ <configurator
+ id="org.jboss.tools.maven.seam.configurator"
+
class="org.jboss.tools.maven.seam.configurators.SeamProjectConfigurator"
+ name="Seam Project configurator" priority="200"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.jboss.tools.common.model.ui.MainPreferencePage"
+
class="org.jboss.tools.maven.seam.preferences.SeamConfiguratorPreferencePage"
+
id="org.jboss.tools.maven.seam.preferences.seamConfiguratorPreferencePage"
+ name="JBoss Maven Integration"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer
class="org.jboss.tools.maven.seam.preferences.SeamConfiguratorPreferencesInitializer"/>
+ </extension>
</plugin>
Modified:
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/MavenSeamActivator.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/MavenSeamActivator.java 2009-08-14
20:01:18 UTC (rev 17093)
+++
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/MavenSeamActivator.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -72,6 +72,10 @@
// The plug-in ID
public static final String PLUGIN_ID = "org.jboss.tools.maven.seam";
+
+ public static final String CONFIGURE_SEAM = "configureSeam"; //$NON-NLS-1$
+
+ public static final boolean CONFIGURE_SEAM_VALUE = true;
// The shared instance
private static MavenSeamActivator plugin;
Added:
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/SeamProjectConfigurator.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/SeamProjectConfigurator.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/SeamProjectConfigurator.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -0,0 +1,305 @@
+package org.jboss.tools.maven.seam.configurators;
+
+import java.util.List;
+
+import org.apache.maven.model.Dependency;
+import org.apache.maven.project.MavenProject;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ProjectScope;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
+import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.ModuleCoreNature;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IProjectFacet;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.jboss.tools.common.model.util.EclipseResourceUtil;
+import org.jboss.tools.jst.web.kb.IKbProject;
+import org.jboss.tools.maven.core.IJBossMavenConstants;
+import
org.jboss.tools.maven.core.internal.project.facet.MavenFacetInstallDataModelProvider;
+import org.jboss.tools.maven.seam.MavenSeamActivator;
+import org.jboss.tools.seam.core.ISeamProject;
+import org.jboss.tools.seam.core.SeamCorePlugin;
+import org.jboss.tools.seam.internal.core.project.facet.ISeamFacetDataModelProperties;
+import
org.jboss.tools.seam.internal.core.project.facet.SeamFacetInstallDataModelProvider;
+import org.maven.ide.eclipse.MavenPlugin;
+import org.maven.ide.eclipse.core.IMavenConstants;
+import org.maven.ide.eclipse.project.IMavenProjectFacade;
+import org.maven.ide.eclipse.project.MavenProjectChangedEvent;
+import org.maven.ide.eclipse.project.MavenProjectManager;
+import org.maven.ide.eclipse.project.configurator.AbstractProjectConfigurator;
+import org.maven.ide.eclipse.project.configurator.ProjectConfigurationRequest;
+import org.osgi.service.prefs.BackingStoreException;
+
+public class SeamProjectConfigurator extends AbstractProjectConfigurator {
+
+ private static final String JBOSS_SEAM_ARTIFACT_PREFIX = "jboss-seam";
//$NON-NLS-1$
+ private static final String ORG_JBOSS_SEAM_GROUP_ID = "org.jboss.seam";
//$NON-NLS-1$
+ private static final String JBOSS_SEAM_ARTIFACT_ID = "jboss-seam";
//$NON-NLS-1$
+
+ protected static final IProjectFacet dynamicWebFacet;
+ protected static final IProjectFacetVersion dynamicWebVersion;
+ protected static final IProjectFacet javaFacet;
+ protected static final IProjectFacetVersion javaVersion;
+ protected static final IProjectFacet jsfFacet;
+ protected static final IProjectFacetVersion jsfVersion;
+ protected static final IProjectFacet earFacet;
+ protected static final IProjectFacetVersion earVersion;
+ protected static final IProjectFacet ejbFacet;
+ protected static final IProjectFacetVersion ejbVersion;
+ protected static final IProjectFacet m2Facet;
+ protected static final IProjectFacetVersion m2Version;
+ private static final IProjectFacet seamFacet;
+
+ static {
+ seamFacet = ProjectFacetsManager.getProjectFacet("jst.seam"); //$NON-NLS-1$
+ javaFacet = ProjectFacetsManager.getProjectFacet("jst.java"); //$NON-NLS-1$
+ javaVersion = javaFacet.getVersion("5.0"); //$NON-NLS-1$
+ dynamicWebFacet = ProjectFacetsManager.getProjectFacet("jst.web");
//$NON-NLS-1$
+ dynamicWebVersion = dynamicWebFacet.getVersion("2.5"); //$NON-NLS-1$
+ jsfFacet = ProjectFacetsManager.getProjectFacet("jst.jsf"); //$NON-NLS-1$
+ jsfVersion = jsfFacet.getVersion("1.2"); //$NON-NLS-1$
+ earFacet = ProjectFacetsManager.getProjectFacet("jst.ear"); //$NON-NLS-1$
+ earVersion = earFacet.getVersion("5.0"); //$NON-NLS-1$
+ m2Facet = ProjectFacetsManager.getProjectFacet("jboss.m2"); //$NON-NLS-1$
+ m2Version = m2Facet.getVersion("1.0"); //$NON-NLS-1$
+ ejbFacet = ProjectFacetsManager.getProjectFacet("jst.ejb"); //$NON-NLS-1$
+ ejbVersion = ejbFacet.getVersion("3.0"); //$NON-NLS-1$
+ }
+
+ @Override
+ public void configure(ProjectConfigurationRequest request,
+ IProgressMonitor monitor) throws CoreException {
+ // adds Seam capabilities if there are Seam dependencies
+ MavenProject mavenProject = request.getMavenProject();
+ IProject project = request.getProject();
+ configureInternal(mavenProject,project, monitor);
+
+ }
+
+ private void configureInternal(MavenProject mavenProject,IProject project,
+ IProgressMonitor monitor) throws CoreException {
+ IPreferenceStore store = MavenSeamActivator.getDefault().getPreferenceStore();
+ boolean configureSeam = store.getBoolean(MavenSeamActivator.CONFIGURE_SEAM);
+ if (!configureSeam) {
+ return;
+ }
+ String packaging = mavenProject.getPackaging();
+ String seamVersion = getSeamVersion(mavenProject);
+ if (seamVersion != null) {
+ IProject[] earProjects = J2EEProjectUtilities.getReferencingEARProjects(project);
+ String deploying = packaging;
+ if (earProjects.length > 0) {
+ deploying = "ear"; //$NON-NLS-1$
+ }
+ IDataModel model = createSeamDataModel(deploying);
+ final IFacetedProject fproj = ProjectFacetsManager.create(project);
+ if ("war".equals(packaging)) { //$NON-NLS-1$
+ installWarFacets(fproj,model,seamVersion, monitor);
+ } else if ("ear".equals(packaging)) { //$NON-NLS-1$
+ installEarFacets(fproj, monitor);
+ installM2Facet(fproj, monitor);
+ } else if ("ejb".equals(packaging)) { //$NON-NLS-1$
+ installM2Facet(fproj,monitor);
+ installEjbFacets(fproj, monitor);
+ addSeamSupport(project, earProjects);
+ storeSettings(project);
+
+ }
+// addSeamSupport(project);
+//
+// storeSettings(project);
+ }
+ }
+
+ @Override
+ protected void mavenProjectChanged(MavenProjectChangedEvent event,
+ IProgressMonitor monitor) throws CoreException {
+ IMavenProjectFacade facade = event.getMavenProject();
+ if(facade != null) {
+ IProject project = facade.getProject();
+ if(isWTPProject(project)) {
+ MavenProject mavenProject = facade.getMavenProject(monitor);
+ configureInternal(mavenProject, project, monitor);
+ }
+ }
+ super.mavenProjectChanged(event, monitor);
+ }
+
+ private boolean isWTPProject(IProject project) {
+ return ModuleCoreNature.getModuleCoreNature(project) != null;
+ }
+
+ private void installM2Facet(IFacetedProject fproj, IProgressMonitor monitor) throws
CoreException {
+ if (!fproj.hasProjectFacet(m2Facet)) {
+ IDataModel config = (IDataModel) new MavenFacetInstallDataModelProvider().create();
+ config.setBooleanProperty(IJBossMavenConstants.MAVEN_PROJECT_EXISTS, true);
+ fproj.installProjectFacet(m2Version, config, monitor);
+ }
+ }
+
+ private IProjectFacetVersion getSeamFacetVersion(String seamVersion) {
+ String version = seamVersion.substring(0, 3);
+ return seamFacet.getVersion(version);
+ }
+
+ private void installEarFacets(IFacetedProject fproj,IProgressMonitor monitor) throws
CoreException {
+ if (!fproj.hasProjectFacet(earFacet)) {
+ fproj.installProjectFacet(earVersion, null, monitor);
+ }
+
+ }
+
+ private void installEjbFacets(IFacetedProject fproj,IProgressMonitor monitor) throws
CoreException {
+ if (!fproj.hasProjectFacet(javaFacet)) {
+ fproj.installProjectFacet(javaVersion, null, monitor);
+ }
+ if (!fproj.hasProjectFacet(ejbFacet)) {
+ fproj.installProjectFacet(ejbVersion, null, monitor);
+ }
+ }
+
+ private void installWarFacets(IFacetedProject fproj,IDataModel model, String
seamVersion,IProgressMonitor monitor) throws CoreException {
+ if (!fproj.hasProjectFacet(javaFacet)) {
+ fproj.installProjectFacet(javaVersion, null, monitor);
+ }
+ if (!fproj.hasProjectFacet(dynamicWebFacet)) {
+ fproj.installProjectFacet(dynamicWebVersion, null, monitor);
+ }
+ installJSFFacet(fproj, monitor);
+ installM2Facet(fproj, monitor);
+ if (!fproj.hasProjectFacet(seamFacet)) {
+ IProjectFacetVersion seamFacetVersion = getSeamFacetVersion(seamVersion);
+ fproj.installProjectFacet(seamFacetVersion, model, monitor);
+ }
+ }
+
+ private void installJSFFacet(IFacetedProject fproj, IProgressMonitor monitor)
+ throws CoreException {
+ if (!fproj.hasProjectFacet(jsfFacet)) {
+ fproj.installProjectFacet(jsfVersion, null, monitor);
+ }
+ }
+
+ private void storeSettings(IProject project) {
+ IScopeContext projectScope = new ProjectScope(project);
+ IEclipsePreferences prefs = projectScope.getNode(SeamCorePlugin.PLUGIN_ID);
+ prefs.put(ISeamFacetDataModelProperties.SEAM_SETTINGS_VERSION,
+ ISeamFacetDataModelProperties.SEAM_SETTINGS_VERSION_1_1);
+
+ try {
+ prefs.flush();
+ } catch (BackingStoreException e) {
+ MavenSeamActivator.log(e);
+ }
+ }
+
+ private void addSeamSupport(IProject project, IProject[] earProjects) {
+ if(project==null) {
+ return;
+ }
+ try {
+ if (!project.hasNature(ISeamProject.NATURE_ID)) {
+ EclipseResourceUtil.addNatureToProject(project, ISeamProject.NATURE_ID);
+ }
+ if(!project.hasNature(IKbProject.NATURE_ID)) {
+ EclipseResourceUtil.addNatureToProject(project, IKbProject.NATURE_ID);
+ }
+ for (int i = 0; i < earProjects.length; i++) {
+ IEclipsePreferences prefs = SeamCorePlugin
+ .getSeamPreferences(project);
+ String seamParentProject =
prefs.get(ISeamFacetDataModelProperties.SEAM_PARENT_PROJECT,null);
+ if (seamParentProject == null) {
+ IProject earProject = earProjects[i];
+ IProject webProject = getReferencingSeamWebProject(earProject);
+ if (webProject != null) {
+ prefs.put(ISeamFacetDataModelProperties.SEAM_PARENT_PROJECT,webProject.getName());
+ break;
+ }
+ }
+ }
+
+ } catch (CoreException e) {
+ MavenSeamActivator.log(e);
+ }
+
+ }
+
+ private IProject getReferencingSeamWebProject(IProject earProject)
+ throws CoreException {
+ IVirtualComponent component = ComponentCore.createComponent(earProject);
+ if (component != null) {
+ IVirtualReference[] references = component.getReferences();
+ for (int i = 0; i < references.length; i++) {
+ IVirtualComponent refComponent = references[i].getReferencedComponent();
+ IProject refProject = refComponent.getProject();
+ if (JavaEEProjectUtilities.isDynamicWebProject(refProject)) {
+ if (refProject.hasNature(IMavenConstants.NATURE_ID)) {
+ IFile pom = refProject.getFile(IMavenConstants.POM_FILE_NAME);
+ if (pom.exists()) {
+ MavenProjectManager projectManager =
MavenPlugin.getDefault().getMavenProjectManager();
+ IMavenProjectFacade facade = projectManager.create(pom, true, null);
+ if(facade!=null) {
+ MavenProject mavenProject = facade.getMavenProject(null);
+ if (mavenProject != null) {
+ String version = getSeamVersion(mavenProject);
+ if (version != null) {
+ return refProject;
+ }
+ }
+ }
+ }
+
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ private String getSeamVersion(MavenProject mavenProject) {
+ List<Dependency> dependencies = mavenProject.getDependencies();
+ Dependency seamDependency = null;
+ for (Dependency dependency:dependencies) {
+ String groupId = dependency.getGroupId();
+ if (groupId != null && ORG_JBOSS_SEAM_GROUP_ID.equals(groupId)) {
+ String artifactId = dependency.getArtifactId();
+ if (artifactId != null && JBOSS_SEAM_ARTIFACT_ID.equals(artifactId)) {
+ return dependency.getVersion();
+ } else if (artifactId != null &&
artifactId.startsWith(JBOSS_SEAM_ARTIFACT_PREFIX)) {
+ seamDependency = dependency;
+ }
+ }
+ }
+ if (seamDependency != null) {
+ return seamDependency.getVersion();
+ }
+ return null;
+ }
+
+ private IDataModel createSeamDataModel(String deployType) {
+ IDataModel config = (IDataModel) new SeamFacetInstallDataModelProvider().create();
+ //config.setStringProperty(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME,
SEAM_1_2_0);
+ config.setBooleanProperty(ISeamFacetDataModelProperties.DB_ALREADY_EXISTS, true);
+ config.setBooleanProperty(ISeamFacetDataModelProperties.RECREATE_TABLES_AND_DATA_ON_DEPLOY,
false);
+ config.setStringProperty(ISeamFacetDataModelProperties.JBOSS_AS_DEPLOY_AS,
deployType);
+ //config.setStringProperty(ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_NAME,
"org.session.beans");
+ //config.setStringProperty(ISeamFacetDataModelProperties.ENTITY_BEAN_PACKAGE_NAME,
"org.entity.beans");
+ //config.setStringProperty(ISeamFacetDataModelProperties.TEST_CASES_PACKAGE_NAME,
"org.test.beans");
+ config.setBooleanProperty(ISeamFacetDataModelProperties.CONFIGURE_DEFAULT_SEAM_RUNTIME,
false);
+ config.setBooleanProperty(ISeamFacetDataModelProperties.CONFIGURE_WAR_PROJECT, false);
+ //config.setStringProperty(ISeamFacetDataModelProperties.SEAM_CONNECTION_PROFILE,
"noop-connection");
+ //config.setProperty(ISeamFacetDataModelProperties.JDBC_DRIVER_JAR_PATH, new String[] {
"noop-driver.jar" });
+ return config;
+ }
+}
Modified:
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/internal/project/facet/MavenPostInstallListener.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/internal/project/facet/MavenPostInstallListener.java 2009-08-14
20:01:18 UTC (rev 17093)
+++
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/internal/project/facet/MavenPostInstallListener.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -20,8 +20,8 @@
private IDataModel m2FacetModel, seamFacetModel;
private boolean configured = false;
- private static final String M2_FACET_MODEL_PROVIDER =
"org.jboss.tools.maven.core.internal.project.facet.MavenFacetInstallDataModelProvider";
- private static final String SEAM_FACET_MODEL_PROVIDER =
"org.jboss.tools.seam.internal.core.project.facet.SeamFacetInstallDataModelProvider";
+ private static final String M2_FACET_MODEL_PROVIDER =
"org.jboss.tools.maven.core.internal.project.facet.MavenFacetInstallDataModelProvider";
//$NON-NLS-1$
+ private static final String SEAM_FACET_MODEL_PROVIDER =
"org.jboss.tools.seam.internal.core.project.facet.SeamFacetInstallDataModelProvider";
//$NON-NLS-1$
public void handleEvent(IFacetedProjectEvent event) {
IFacetedProject facetedProject = event.getProject();
Set<IProjectFacetVersion> projectFacets = facetedProject
@@ -57,7 +57,10 @@
}
if (isSeamProject && isM2Project && !configured) {
- MavenSeamActivator.getDefault().configureSeamProject(seamFacetModel,m2FacetModel);
+ boolean mavenProjectExists =
m2FacetModel.getBooleanProperty(IJBossMavenConstants.MAVEN_PROJECT_EXISTS);
+ if (!mavenProjectExists) {
+ MavenSeamActivator.getDefault().configureSeamProject(seamFacetModel,m2FacetModel);
+ }
configured=true;
}
}
Added:
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/preferences/SeamConfiguratorPreferencePage.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/preferences/SeamConfiguratorPreferencePage.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/preferences/SeamConfiguratorPreferencePage.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -0,0 +1,55 @@
+package org.jboss.tools.maven.seam.preferences;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.jboss.tools.maven.seam.MavenSeamActivator;
+
+public class SeamConfiguratorPreferencePage extends PreferencePage implements
+ IWorkbenchPreferencePage {
+
+
+ private Button button;
+
+ @Override
+ protected Control createContents(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(1, false);
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ composite.setLayout(layout);
+
+ button = new Button(composite,SWT.CHECK);
+ button.setText("Configure Seam when importing Maven projects");
+ IPreferenceStore store = MavenSeamActivator.getDefault().getPreferenceStore();
+ boolean configureSeam = store.getBoolean(MavenSeamActivator.CONFIGURE_SEAM);
+ button.setSelection(configureSeam);
+ return composite;
+ }
+
+ public void init(IWorkbench workbench) {
+ }
+
+ @Override
+ protected void performDefaults() {
+ button.setSelection(MavenSeamActivator.CONFIGURE_SEAM_VALUE);
+ IPreferenceStore store = MavenSeamActivator.getDefault().getPreferenceStore();
+ store.setValue(MavenSeamActivator.CONFIGURE_SEAM,
MavenSeamActivator.CONFIGURE_SEAM_VALUE);
+ super.performDefaults();
+ }
+
+ @Override
+ public boolean performOk() {
+ IPreferenceStore store = MavenSeamActivator.getDefault().getPreferenceStore();
+ store.setValue(MavenSeamActivator.CONFIGURE_SEAM, button.getSelection());
+ return super.performOk();
+ }
+
+
+}
Added:
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/preferences/SeamConfiguratorPreferencesInitializer.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/preferences/SeamConfiguratorPreferencesInitializer.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/preferences/SeamConfiguratorPreferencesInitializer.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -0,0 +1,21 @@
+package org.jboss.tools.maven.seam.preferences;
+
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.jboss.tools.maven.seam.MavenSeamActivator;
+
+public class SeamConfiguratorPreferencesInitializer extends
+ AbstractPreferenceInitializer {
+
+ @Override
+ public void initializeDefaultPreferences() {
+ IEclipsePreferences node = new DefaultScope().getNode(MavenSeamActivator.PLUGIN_ID);
+
+ node.putBoolean(
+ MavenSeamActivator.CONFIGURE_SEAM,
+ MavenSeamActivator.CONFIGURE_SEAM_VALUE);
+ }
+
+}
Modified:
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/project/facet/MavenFacetInstallPage.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/project/facet/MavenFacetInstallPage.java 2009-08-14
20:01:18 UTC (rev 17093)
+++
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/project/facet/MavenFacetInstallPage.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -5,6 +5,11 @@
import javax.swing.JButton;
+import org.apache.maven.model.Model;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetConstants;
import org.eclipse.jst.j2ee.web.project.facet.WebFacetUtils;
import org.eclipse.swt.SWT;
@@ -28,6 +33,10 @@
import org.eclipse.wst.common.project.facet.ui.IFacetWizardPage;
import org.eclipse.wst.common.project.facet.ui.IWizardContext;
import org.jboss.tools.maven.core.IJBossMavenConstants;
+import org.jboss.tools.maven.ui.Activator;
+import org.maven.ide.eclipse.MavenPlugin;
+import org.maven.ide.eclipse.core.IMavenConstants;
+import org.maven.ide.eclipse.embedder.MavenModelManager;
public class MavenFacetInstallPage extends DataModelWizardPage implements
IFacetWizardPage {
@@ -37,6 +46,8 @@
private Text artifactId;
private Text version;
private Combo packaging;
+ private Text description;
+ private Text name;
public static final IProjectFacet SEAM_FACET =
ProjectFacetsManager.getProjectFacet(SEAM_FACET_ID);
public MavenFacetInstallPage() {
@@ -55,10 +66,42 @@
GridData gd = new GridData(GridData.FILL_BOTH);
composite.setLayoutData(gd);
+ String projectName =
getDataModel().getStringProperty(IFacetProjectCreationDataModelProperties.FACET_PROJECT_NAME);
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+ boolean mavenProjectExists = false;
+ if (project != null && project.isOpen()) {
+ try {
+ boolean hasMavenNature = project.hasNature(IMavenConstants.NATURE_ID);
+ IFile pom = project.getFile(IMavenConstants.POM_FILE_NAME);
+ if (hasMavenNature && pom.exists()) {
+ getDataModel().setBooleanProperty(IJBossMavenConstants.MAVEN_PROJECT_EXISTS, true);
+ mavenProjectExists = true;
+ MavenModelManager modelManager = MavenPlugin.getDefault().getMavenModelManager();
+ Model mavenModel = modelManager.readMavenModel(pom);
+ String groupId = mavenModel.getGroupId();
+ model.setStringProperty(IJBossMavenConstants.GROUP_ID, groupId);
+ String artifactId = mavenModel.getArtifactId();
+ model.setStringProperty(IJBossMavenConstants.ARTIFACT_ID, artifactId);
+ String version = mavenModel.getVersion();
+ model.setStringProperty(IJBossMavenConstants.VERSION, version);
+ String packaging = mavenModel.getPackaging();
+ model.setStringProperty(IJBossMavenConstants.PACKAGING, packaging);
+ String name = mavenModel.getName();
+ model.setStringProperty(IJBossMavenConstants.NAME, name);
+ String description = mavenModel.getDescription();
+ model.setStringProperty(IJBossMavenConstants.DESCRIPTION, description);
+ }
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+
+ }
+
groupId = createField(composite,"Group Id:",IJBossMavenConstants.GROUP_ID);
artifactId = createField(composite, "Artifact Id:",
IJBossMavenConstants.ARTIFACT_ID);
- String projectName =
getDataModel().getStringProperty(IFacetProjectCreationDataModelProperties.FACET_PROJECT_NAME);
- artifactId.setText(projectName);
+ if (!mavenProjectExists) {
+ artifactId.setText(projectName);
+ }
version = createField(composite, "Version:", IJBossMavenConstants.VERSION);
@@ -67,39 +110,64 @@
packaging = new Combo(composite, SWT.READ_ONLY);
gd = new GridData(GridData.FILL_HORIZONTAL);
packaging.setLayoutData(gd);
- synchHelper.synchCombo(packaging, IJBossMavenConstants.PACKAGING, null);
- // FIXME
String[] items = { "war","ear", "ejb", "jar" };
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
packaging.setItems(items);
- IFacetedProjectWorkingCopy fpwc = (IFacetedProjectWorkingCopy)
getDataModel().getProperty(IFacetDataModelProperties.FACETED_PROJECT_WORKING_COPY);
- if (fpwc.hasProjectFacet(WebFacetUtils.WEB_FACET)) {
- packaging.select(0);
- } else if (fpwc.hasProjectFacet(IJ2EEFacetConstants.ENTERPRISE_APPLICATION_FACET)) {
- packaging.select(1);
- } else if (fpwc.hasProjectFacet(IJ2EEFacetConstants.EJB_FACET)) {
- packaging.select(2);
- } else {
- packaging.select(3);
- }
- Text name = createField(composite, "Name:", IJBossMavenConstants.NAME);
- name.setText(projectName);
- createField(composite, "Description", IJBossMavenConstants.DESCRIPTION);
-
- if (fpwc.hasProjectFacet(SEAM_FACET)) {
- Text seamVersion = createField(composite, "Seam Maven version:",
IJBossMavenConstants.SEAM_MAVEN_VERSION);
- IProjectFacetVersion seamFacetVersion = fpwc.getProjectFacetVersion(SEAM_FACET);
- if ("2.0".equals(seamFacetVersion.getVersionString())) { //$NON-NLS-1$
- seamVersion.setText("2.0.2.SP1"); //$NON-NLS-1$
+ IFacetedProjectWorkingCopy fpwc = null;
+ try {
+ fpwc = (IFacetedProjectWorkingCopy)
getDataModel().getProperty(IFacetDataModelProperties.FACETED_PROJECT_WORKING_COPY);
+ if (!mavenProjectExists) {
+ if (fpwc.hasProjectFacet(WebFacetUtils.WEB_FACET)) {
+ packaging.select(0);
+ } else if (fpwc
+ .hasProjectFacet(IJ2EEFacetConstants.ENTERPRISE_APPLICATION_FACET)) {
+ packaging.select(1);
+ } else if (fpwc.hasProjectFacet(IJ2EEFacetConstants.EJB_FACET)) {
+ packaging.select(2);
+ } else {
+ packaging.select(3);
+ }
} else {
- seamVersion.setText("2.1.1.GA"); //$NON-NLS-1$
+ String mavenPackaging =
getDataModel().getStringProperty(IJBossMavenConstants.PACKAGING);
+ packaging.setText(mavenPackaging);
}
- Button removeWTPContainers = new Button(composite,SWT.CHECK);
- removeWTPContainers.setText("Remove WTP Classpath containers");
- synchHelper.synchCheckbox(removeWTPContainers,
IJBossMavenConstants.REMOVE_WTP_CLASSPATH_CONTAINERS, null);
- // FIXME add the Validate button
+ synchHelper.synchCombo(packaging, IJBossMavenConstants.PACKAGING, null);
+
+ name = createField(composite, "Name:", IJBossMavenConstants.NAME);
+ name.setText(projectName);
+ description = createField(composite, "Description",
IJBossMavenConstants.DESCRIPTION);
+
+ if (!mavenProjectExists && fpwc.hasProjectFacet(SEAM_FACET)) {
+ Text seamVersion = createField(composite, "Seam Maven version:",
IJBossMavenConstants.SEAM_MAVEN_VERSION);
+ IProjectFacetVersion seamFacetVersion = fpwc.getProjectFacetVersion(SEAM_FACET);
+ if ("2.0".equals(seamFacetVersion.getVersionString())) { //$NON-NLS-1$
+ seamVersion.setText("2.0.2.SP1"); //$NON-NLS-1$
+ } else if ("2.1".equals(seamFacetVersion.getVersionString())) {
//$NON-NLS-1$
+ seamVersion.setText("2.1.1.GA"); //$NON-NLS-1$
+ } else if ("2.2".equals(seamFacetVersion.getVersionString())) {
//$NON-NLS-1$
+ seamVersion.setText("2.2.0.GA"); //$NON-NLS-1$
+ }
+ Button removeWTPContainers = new Button(composite,SWT.CHECK);
+ removeWTPContainers.setText("Remove WTP Classpath containers");
+ synchHelper.synchCheckbox(removeWTPContainers,
IJBossMavenConstants.REMOVE_WTP_CLASSPATH_CONTAINERS, null);
+ // FIXME add the Validate button
+ }
+ } catch (Exception e) {
+ Activator.log(e);
+ } finally {
+ if (fpwc != null) {
+ fpwc.dispose();
+ }
}
+ if (mavenProjectExists) {
+ artifactId.setEditable(false);
+ groupId.setEditable(false);
+ version.setEditable(false);
+ name.setEditable(false);
+ description.setEditable(false);
+ packaging.setEnabled(false);
+ }
validatePage();
return composite;
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/ISeamFacetDataModelProperties.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/ISeamFacetDataModelProperties.java 2009-08-14
20:01:18 UTC (rev 17093)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/ISeamFacetDataModelProperties.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -293,4 +293,8 @@
String DEFAULT_MODEL_SRC_FOLDER_NAME = "main"; //$NON-NLS-1$
String CREATE_EAR_PROJECTS = "create.ear.projects"; //$NON-NLS-1$
+
+ String CONFIGURE_DEFAULT_SEAM_RUNTIME = "configure.default.seam.runtime";
//$NON-NLS-1$
+
+ String CONFIGURE_WAR_PROJECT = "configure.war.project"; //$NON-NLS-1$
}
\ No newline at end of file
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java 2009-08-14
20:01:18 UTC (rev 17093)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -333,12 +333,14 @@
webInfClassesMetaInf.mkdirs();
webLibFolder = new File(webContentFolder, WEB_LIBRARIES_RELATED_PATH);
srcFolder = isWarConfiguration(model) ? new
File(warDefaultSrcRootFolder.getUnderlyingFolder().getLocation().toFile(),
DEFAULT_MODEL_SRC_FOLDER_NAME) :
warDefaultSrcRootFolder.getUnderlyingFolder().getLocation().toFile();
- Object runtimeName =
model.getProperty(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME);
- if(runtimeName!=null) {
- copyFilesToWarProject(project, fv, model, monitor);
- } else {
- // If seam runtime is null then just modify web.xml and add seam nature.
- configureWebXml(project);
+ if (model.getBooleanProperty(CONFIGURE_WAR_PROJECT)) {
+ Object runtimeName =
model.getProperty(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME);
+ if (runtimeName != null) {
+ copyFilesToWarProject(project, fv, model, monitor);
+ } else {
+ // If seam runtime is null then just modify web.xml and add seam nature.
+ configureWebXml(project);
+ }
}
}
@@ -818,7 +820,7 @@
if(model.getProperty(ISeamFacetDataModelProperties.TEST_CASES_PACKAGE_NAME)==null) {
model.setProperty(ISeamFacetDataModelProperties.TEST_CASES_PACKAGE_NAME,
"org.domain." + projectNamePackage + ".test"); //$NON-NLS-1$
//$NON-NLS-2$
}
- if(model.getProperty(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME)==null) {
+ if(model.getProperty(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME)==null &&
model.getBooleanProperty(CONFIGURE_DEFAULT_SEAM_RUNTIME)) {
String runtimeName =
SeamFacetInstallDataModelProvider.getSeamRuntimeDefaultValue(model);
if((runtimeName!=null && runtimeName.length()>0)) {
model.setProperty(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME, runtimeName);
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDataModelProvider.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDataModelProvider.java 2009-08-14
20:01:18 UTC (rev 17093)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDataModelProvider.java 2009-08-14
21:31:23 UTC (rev 17094)
@@ -86,7 +86,9 @@
names.add(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME);
names.add(ISeamFacetDataModelProperties.HIBERNATE_HBM2DDL_AUTO);
names.add(ISeamFacetDataModelProperties.CREATE_EAR_PROJECTS);
-
+ names.add(CONFIGURE_DEFAULT_SEAM_RUNTIME);
+ names.add(CONFIGURE_WAR_PROJECT);
+
return names;
}
@@ -120,6 +122,10 @@
}
else if(JBOSS_AS_TARGET_RUNTIME.equals(propertyName)) {
return null;
+ } else if (CONFIGURE_DEFAULT_SEAM_RUNTIME.equals(propertyName)) {
+ return Boolean.TRUE;
+ } else if (CONFIGURE_WAR_PROJECT.equals(propertyName)) {
+ return Boolean.TRUE;
}
return super.getDefaultProperty(propertyName);
}