Java tutorial
/* * $Id$ * * SARL is an general-purpose agent programming language. * More details on http://www.sarl.io * * Copyright (C) 2014-2017 the original authors or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.sarl.m2e; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; import org.eclipse.m2e.core.internal.IMavenConstants; import org.eclipse.m2e.core.internal.MavenPluginActivator; import org.eclipse.m2e.core.project.IMavenProjectFacade; import io.sarl.eclipse.SARLEclipseConfig; import io.sarl.eclipse.runtime.ISREInstall; import io.sarl.eclipse.runtime.ProjectSREProvider; import io.sarl.eclipse.runtime.ProjectSREProviderFactory; import io.sarl.eclipse.runtime.SARLRuntime; import io.sarl.eclipse.runtime.StandardSREInstall; /** Factory of project SRE provider for the Maven projects. * * @author $Author: sgalland$ * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ */ public class MavenProjectSREProviderFactory implements ProjectSREProviderFactory { /** Construct the factory. */ public MavenProjectSREProviderFactory() { // } @Override public ProjectSREProvider getProjectSREProvider(IProject project) { try { if (project.hasNature(IMavenConstants.NATURE_ID) && project.hasNature(JavaCore.NATURE_ID) && project.hasNature(SARLEclipseConfig.NATURE_ID)) { final IMavenProjectFacade facade = MavenPluginActivator.getDefault().getMavenProjectManager() .getProject(project); if (facade == null) { return null; } final IJavaProject javaProject = JavaCore.create(project); final IClasspathEntry[] classpath = javaProject.getResolvedClasspath(true); if (classpath == null) { return null; } for (final IClasspathEntry dep : classpath) { final IPath depPath = dep.getPath(); if (SARLRuntime.isPackedSRE(depPath)) { return new MavenProjectSREProvider( facade.getArtifactKey().toString() + ":" + depPath.lastSegment(), //$NON-NLS-1$ depPath); } } } } catch (CoreException e) { SARLMavenEclipsePlugin.getDefault().log(e); } return null; } /** Provider of SRE from a maven project. * * @author $Author: sgalland$ * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ */ private static class MavenProjectSREProvider implements ProjectSREProvider { private final String id; private final IPath artifactFile; /** * @param id - the identifier of the SRE. * @param artifactFile - the file of the artifact. */ MavenProjectSREProvider(String id, IPath artifactFile) { this.id = id; this.artifactFile = artifactFile; } @Override public boolean hasProjectSpecificSREConfiguration() { return true; } @Override public boolean isSystemSREUsed() { return false; } @Override public String getSREInstallIdentifier() { return this.id; } @Override public ISREInstall getProjectSREInstall() { final StandardSREInstall tmpSre = new StandardSREInstall(this.id); tmpSre.setJarFile(this.artifactFile); return tmpSre; } } }