Author: snjeza
Date: 2010-11-07 18:27:57 -0500 (Sun, 07 Nov 2010)
New Revision: 26319
Added:
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/FixClasspathConfigurator.java
Modified:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/MavenCoreActivator.java
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
Log:
JBIDE-7011 Mavenized Seam Web project can't be created using m2eclipse 0.12.x
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 2010-11-06
08:53:36 UTC (rev 26318)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/MavenCoreActivator.java 2010-11-07
23:27:57 UTC (rev 26319)
@@ -322,10 +322,10 @@
//IMavenConfiguration mavenConfiguration =
MavenPlugin.lookup(IMavenConfiguration.class);
//IMavenConfiguration mavenConfiguration =
MavenPlugin.getDefault().getMavenConfiguration();
IMavenConfiguration mavenConfiguration = getMavenConfiguration();
+
configurationManager.updateProjectConfiguration(project,
- resolverConfiguration, //
- mavenConfiguration
- .getGoalOnUpdate(), new NullProgressMonitor());
+ resolverConfiguration, mavenConfiguration.getGoalOnUpdate(),
+ new NullProgressMonitor());
}
private static IMavenConfiguration getMavenConfiguration() {
Modified: trunk/maven/plugins/org.jboss.tools.maven.seam/plugin.xml
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.seam/plugin.xml 2010-11-06 08:53:36 UTC (rev
26318)
+++ trunk/maven/plugins/org.jboss.tools.maven.seam/plugin.xml 2010-11-07 23:27:57 UTC (rev
26319)
@@ -14,4 +14,13 @@
name="%Seam_Project_configurator" priority="200"/>
</extension>
+ <extension point="org.maven.ide.eclipse.projectConfigurators">
+ <configurator
+
id="org.jboss.tools.maven.seam.configurator.fixClasspathConfigurator"
+
class="org.jboss.tools.maven.seam.configurators.FixClasspathConfigurator"
+ name="%Seam_Project_configurator" priority="300"/>
+ </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 2010-11-06
08:53:36 UTC (rev 26318)
+++
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/MavenSeamActivator.java 2010-11-07
23:27:57 UTC (rev 26319)
@@ -191,6 +191,7 @@
parent.setArtifactId(parentArtifactId);
parent.setGroupId(m2FacetModel.getStringProperty(IJBossMavenConstants.GROUP_ID));
parent.setVersion(m2FacetModel.getStringProperty(IJBossMavenConstants.VERSION));
+ parent.setRelativePath("../" + parentProjectName); //$NON-NLS-1$
model.setParent(parent);
List dependencies = model.getDependencies();
@@ -362,6 +363,7 @@
parent.setArtifactId(parentArtifactId);
parent.setGroupId(m2FacetModel.getStringProperty(IJBossMavenConstants.GROUP_ID));
parent.setVersion(m2FacetModel.getStringProperty(IJBossMavenConstants.VERSION));
+ parent.setRelativePath("../" + parentProjectName); //$NON-NLS-1$
model.setParent(parent);
List dependencies = model.getDependencies();
@@ -484,14 +486,6 @@
model.setBuild(build);
MavenCoreActivator.createMavenProject(earProjectName, null, model, true);
removeWTPContainers(m2FacetModel, project);
- // configureApplicationXml(project, m2FacetModel, null);
- //removeRuntime(project);
- //IProject ejbProject =
ResourcesPlugin.getWorkspace().getRoot().getProject(ejbProjectName);
- //removeRuntime(ejbProject);
- //EarFacetRuntimeHandler.updateModuleProjectRuntime(project, ejbProject, null);
- //IProject webProject =
ResourcesPlugin.getWorkspace().getRoot().getProject(webProjectName);
- //removeRuntime(webProject);
- //EarFacetRuntimeHandler.updateModuleProjectRuntime(project, webProject, null);
} catch (Exception e) {
MavenSeamActivator.log(e);
}
@@ -499,7 +493,6 @@
}
}
-
private void removeRuntime(IProject project) throws CoreException {
IFacetedProject facetedProject = ProjectFacetsManager.create( project );
facetedProject.setRuntime(null, null);
@@ -528,6 +521,7 @@
parent.setArtifactId(parentArtifactId);
parent.setGroupId(m2FacetModel.getStringProperty(IJBossMavenConstants.GROUP_ID));
parent.setVersion(m2FacetModel.getStringProperty(IJBossMavenConstants.VERSION));
+ parent.setRelativePath("../" + parentProjectName); //$NON-NLS-1$
model.setParent(parent);
List dependencies = model.getDependencies();
@@ -589,11 +583,8 @@
String artifactId = parentProjectName;
String groupId = m2FacetModel.getStringProperty(IJBossMavenConstants.GROUP_ID);
String version = m2FacetModel.getStringProperty(IJBossMavenConstants.VERSION);
- String relativePath = null;
- if (SeamFacetAbstractInstallDelegate
- .isWarConfiguration(seamFacetModel)) {
- relativePath = "../" + parentProjectName; //$NON-NLS-1$
- }
+
+ String relativePath = "../" + parentProjectName; //$NON-NLS-1$
ParentAdder parentAdder = new ParentAdder(groupId, artifactId, version,
relativePath);
modelManager.updateProject(pomFile, parentAdder);
Added:
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/FixClasspathConfigurator.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/FixClasspathConfigurator.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/configurators/FixClasspathConfigurator.java 2010-11-07
23:27:57 UTC (rev 26319)
@@ -0,0 +1,141 @@
+/*************************************************************************************
+ * Copyright (c) 2008-2010 JBoss by Red Hat and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * JBoss by Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.maven.seam.configurators;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.maven.model.Resource;
+import org.apache.maven.project.MavenProject;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.jboss.tools.maven.seam.MavenSeamActivator;
+import org.maven.ide.eclipse.project.IMavenProjectFacade;
+import org.maven.ide.eclipse.project.MavenProjectChangedEvent;
+import org.maven.ide.eclipse.project.configurator.AbstractProjectConfigurator;
+import org.maven.ide.eclipse.project.configurator.ProjectConfigurationRequest;
+
+/**
+ * A workaround for
https://issues.sonatype.org/browse/MNGECLIPSE-2433
+ *
+ * @author Snjeza
+ */
+public class FixClasspathConfigurator extends AbstractProjectConfigurator {
+
+ @Override
+ public void configure(ProjectConfigurationRequest request,
+ IProgressMonitor monitor) throws CoreException {
+ MavenProject mavenProject = request.getMavenProject();
+ IProject project = request.getProject();
+ configureInternal(mavenProject,project, monitor);
+ }
+
+ private void configureInternal(MavenProject mavenProject, IProject project,
+ IProgressMonitor monitor) throws CoreException {
+ if (!project.hasNature(JavaCore.NATURE_ID)) {
+ return;
+ }
+ List<Resource> resources = mavenProject.getResources();
+ for (Resource resource:resources) {
+
+ File directory = new File(resource.getDirectory());
+ String absolutePath = directory.getAbsolutePath();
+ try {
+ absolutePath = directory.getCanonicalPath();
+ } catch(IOException e) {
+ MavenSeamActivator.log(e);
+ }
+ if (! new File(absolutePath).exists()) {
+ continue;
+ }
+ IPath relativePath = getProjectRelativePath(project, absolutePath);
+ IResource r = project.findMember(relativePath);
+ if (r != null) {
+ continue;
+ }
+ String path = getWorkspaceRelativePath(absolutePath);
+ IJavaProject javaProject = JavaCore.create(project);
+ IClasspathEntry[] entries = javaProject.getRawClasspath();
+ boolean exists = false;
+ for (IClasspathEntry entry:entries) {
+ if (entry.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
+ IPath entryPath = entry.getPath();
+ if (entryPath != null && path.equals(entryPath.toString())) {
+ exists = true;
+ break;
+ }
+ }
+ }
+ if (!exists) {
+ IClasspathEntry[] newEntries = new IClasspathEntry[entries.length + 1];
+ for (int i = 0; i < entries.length; i++) {
+ newEntries[i] = entries[i];
+ }
+ IClasspathEntry pathEntry = JavaCore.newLibraryEntry(new Path(path), null, null);
+ newEntries[entries.length] = pathEntry;
+ javaProject.setRawClasspath(newEntries, monitor);
+ }
+ }
+ }
+
+ private String getWorkspaceRelativePath(String absolutePath) {
+ File basedir = ResourcesPlugin.getWorkspace().getRoot().getLocation()
+ .toFile();
+ String relative;
+ if (absolutePath.equals(basedir.getAbsolutePath())) {
+ relative = "."; //$NON-NLS-1$
+ } else if (absolutePath.startsWith(basedir.getAbsolutePath())) {
+ relative = absolutePath.substring(basedir.getAbsolutePath()
+ .length() + 1);
+ } else {
+ return absolutePath;
+ }
+ relative = relative.replace("\\", "/").trim(); //$NON-NLS-1$
//$NON-NLS-2$
+ if (!relative.startsWith("/")) { //$NON-NLS-1$
+ relative = "/" + relative; //$NON-NLS-1$
+ }
+ return relative;
+ }
+
+ private IPath getProjectRelativePath(IProject project, String absolutePath) {
+ File basedir = project.getLocation().toFile();
+ String relative;
+ if (absolutePath.equals(basedir.getAbsolutePath())) {
+ relative = "."; //$NON-NLS-1$
+ } else if (absolutePath.startsWith(basedir.getAbsolutePath())) {
+ relative = absolutePath.substring(basedir.getAbsolutePath().length() + 1);
+ } else {
+ relative = absolutePath;
+ }
+ return new Path(relative.replace('\\', '/'));
+ }
+
+ @Override
+ public void mavenProjectChanged(MavenProjectChangedEvent event,
+ IProgressMonitor monitor) throws CoreException {
+ IMavenProjectFacade facade = event.getMavenProject();
+ if (facade != null) {
+ IProject project = facade.getProject();
+ MavenProject mavenProject = facade.getMavenProject(monitor);
+ configureInternal(mavenProject, project, monitor);
+ }
+ super.mavenProjectChanged(event, monitor);
+ }
+}