Java tutorial
/************************************************************************************* * Copyright (c) 2012 Red Hat, Inc. 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.conversion.ui.internal.jobs; import java.util.ArrayList; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; 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.jdt.internal.MavenClasspathHelpers; import org.jboss.tools.maven.conversion.ui.internal.MavenDependencyConversionActivator; public class DeleteExistingClasspathEntriesJob extends Job { private IProject project; public DeleteExistingClasspathEntriesJob(IProject project) { super("Delete classpath entries" + ((project == null) ? "" : "for " + project.getName())); this.project = project; } @Override protected IStatus run(IProgressMonitor monitor) { try { if (!project.hasNature(JavaCore.NATURE_ID)) { return Status.OK_STATUS; } } catch (CoreException ignore) { return Status.OK_STATUS; } IJavaProject javaProject = JavaCore.create(project); if (javaProject != null) { // remove classpatch containers from JavaProject try { ArrayList<IClasspathEntry> newEntries = new ArrayList<IClasspathEntry>(); for (IClasspathEntry entry : javaProject.getRawClasspath()) { //Keep Source/ JRE / Maven containers if (isKept(entry)) { newEntries.add(entry); } } javaProject.setRawClasspath(newEntries.toArray(new IClasspathEntry[newEntries.size()]), monitor); } catch (JavaModelException e) { IStatus error = new Status(IStatus.ERROR, MavenDependencyConversionActivator.PLUGIN_ID, "Unable to update classpath", e); return error; } } return Status.OK_STATUS; } private boolean isKept(IClasspathEntry cpe) { if (IClasspathEntry.CPE_SOURCE == cpe.getEntryKind() || (IClasspathEntry.CPE_CONTAINER == cpe.getEntryKind() && ("org.eclipse.jdt.launching.JRE_CONTAINER".equals(cpe.getPath().segment(0)) || MavenClasspathHelpers.isMaven2ClasspathContainer(cpe.getPath())))) { return true; } return false; } }