/*
* Copyright 2014
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://opensource.org/licenses/eclipse-1.0.txt
*/
package de.lynorics.eclipse.jangaroo.m2e;
import java.util.Arrays;
import java.util.List;
import java.util.Vector;
import org.apache.maven.plugin.MojoExecution;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.m2e.core.lifecyclemapping.model.IPluginExecutionMetadata;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.configurator.AbstractBuildParticipant;
import org.eclipse.m2e.core.project.configurator.ProjectConfigurationRequest;
import org.eclipse.m2e.jdt.internal.AbstractJavaProjectConfigurator;
import de.lynorics.eclipse.jangaroo.ui.JangarooProjectHelper;
public class JangarooProjectConfigurator extends AbstractJavaProjectConfigurator {
@Override
public void configure(ProjectConfigurationRequest request,
IProgressMonitor monitor) throws CoreException {
super.configure(request, monitor);
addNature(request.getProject(), JangarooProjectHelper.NATURE_ID, monitor);
addNature(request.getProject(), "org.eclipse.jdt.core.javanature", monitor);
declareSourcePath(request, monitor);
}
private void declareSourcePath(ProjectConfigurationRequest request, IProgressMonitor monitor)
throws JavaModelException {
IJavaProject javaProject = JavaCore.create(request.getProject());
IClasspathEntry[] classpath = javaProject.getRawClasspath();
List<IClasspathEntry> list = new Vector<IClasspathEntry>();
list.addAll(Arrays.asList(classpath));
// List<IClasspathEntry> list = new Vector<IClasspathEntry>();
addSourcePath(javaProject, list, "src/main/joo");
addSourcePath(javaProject, list, "src/test/joo");
addSourcePath(javaProject, list, "src/main/resources");
addSourcePath(javaProject, list, "target/generated-sources/joo");
javaProject.setRawClasspath((IClasspathEntry[]) list.toArray(new IClasspathEntry[list.size()]), monitor);
}
private void addSourcePath(IJavaProject javaProject, List<IClasspathEntry> entries, String path) throws JavaModelException {
IPath srcPath= javaProject.getPath().append(path);
IClasspathEntry srcEntry= JavaCore.newSourceEntry(srcPath, null);
boolean found = false;
for (IClasspathEntry entry : entries) {
if (entry.getPath().makeRelative().toString().equals(srcEntry.getPath().makeRelative().toString())) {
found = true;
break;
}
}
if (!found) {
entries.add(JavaCore.newSourceEntry(srcEntry.getPath()));
}
}
// @Override
// protected String getOutputFolderParameterName() {
// return "generateDirectory";
// }
@Override
public AbstractBuildParticipant getBuildParticipant(
IMavenProjectFacade projectFacade,
MojoExecution execution,
IPluginExecutionMetadata executionMetadata) {
return new JangarooBuildParticipant(execution);
}
}