Java tutorial
/******************************************************************************* * Copyright (c) 2008 Sonatype, Inc. * 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 *******************************************************************************/ package org.maven.ide.eclipse.mylyn3; import org.apache.maven.model.IssueManagement; import org.apache.maven.project.MavenProject; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.mylyn.tasks.core.IRepositoryManager; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.ui.AbstractTaskRepositoryLinkProvider; import org.maven.ide.eclipse.MavenPlugin; import org.maven.ide.eclipse.core.MavenLogger; import org.maven.ide.eclipse.project.IMavenProjectFacade; import org.maven.ide.eclipse.project.MavenProjectManager; /** * Repository Link provider for Maven metadata * * @author Eugene Kuleshov */ public class MavenRepositoryLinkProvider extends AbstractTaskRepositoryLinkProvider { public TaskRepository getTaskRepository(IResource resource, IRepositoryManager repositoryManager) { String url = getIssueManagementUrl(resource); if (url != null) { for (TaskRepository repository : repositoryManager.getAllRepositories()) { if (url.startsWith(repository.getUrl())) { return repository; } } } return null; } private String getIssueManagementUrl(IResource resource) { IProject project = resource.getProject(); if (project == null || !project.isAccessible()) { return null; } MavenProjectManager projectManager = MavenPlugin.getDefault().getMavenProjectManager(); IProgressMonitor monitor = new NullProgressMonitor(); IMavenProjectFacade facade = projectManager.create(project, monitor); if (facade != null) { MavenProject mavenProject; try { mavenProject = facade.getMavenProject(monitor); if (mavenProject != null) { IssueManagement issueManagement = mavenProject.getIssueManagement(); if (issueManagement != null) { return issueManagement.getUrl(); } } } catch (CoreException ex) { MavenLogger.log("Could not determine project issue management URL", ex); } } return null; } }