| /******************************************************************************* |
| * Copyright (c) 2008-2010 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 |
| * |
| * Contributors: |
| * Sonatype, Inc. - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.m2e.jdt; |
| |
| import java.util.List; |
| import java.util.Map; |
| |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.jdt.core.IAccessRule; |
| import org.eclipse.jdt.core.IClasspathEntry; |
| |
| import org.eclipse.m2e.core.embedder.ArtifactKey; |
| |
| |
| /** |
| * Mutable version of IClasspathEntry with additional Maven specific attributes. |
| * |
| * @author igor |
| * @noimplement This interface is not intended to be implemented by clients. |
| */ |
| public interface IClasspathEntryDescriptor { |
| |
| // classpath entry getters and setters (open a bug if you need any of the missing getters/setters) |
| |
| public IPath getPath(); |
| |
| public void setPath(IPath path); |
| |
| public int getEntryKind(); |
| |
| public void setEntryKind(int entryKind); |
| |
| public void setSourceAttachment(IPath srcPath, IPath srcRoot); |
| |
| public void setJavadocUrl(String javaDocUrl); |
| |
| public IPath getSourceAttachmentPath(); |
| |
| public IPath getSourceAttachmentRootPath(); |
| |
| public String getJavadocUrl(); |
| |
| public void setOutputLocation(IPath outputLocation); |
| |
| public void addInclusionPattern(IPath pattern); |
| |
| public void removeInclusionPattern(IPath pattern); |
| |
| public void setInclusionPatterns(IPath[] inclusionPatterns); |
| |
| public IPath[] getInclusionPatterns(); |
| |
| public void addExclusionPattern(IPath pattern); |
| |
| public void removeExclusionPattern(IPath pattern); |
| |
| public void setExclusionPatterns(IPath[] exclusionPatterns); |
| |
| public IPath[] getExclusionPatterns(); |
| |
| public void setExported(boolean exported); |
| |
| public boolean isExported(); |
| |
| public IPath getOutputLocation(); |
| |
| public void setClasspathAttribute(String name, String value); |
| |
| public Map<String, String> getClasspathAttributes(); |
| |
| public void addAccessRule(IAccessRule rule); |
| |
| public List<IAccessRule> getAccessRules(); |
| |
| public void setCombineAccessRules(boolean combineAccessRules); |
| |
| public boolean combineAccessRules(); |
| |
| // maven-specific getters and setters |
| |
| /** |
| * Short for getArtifactKey().getGroupId(), with appropriate null check |
| */ |
| public String getGroupId(); |
| |
| /** |
| * Short for getArtifactKey().getArtifactId(), with appropriate null check |
| */ |
| public String getArtifactId(); |
| |
| public ArtifactKey getArtifactKey(); |
| |
| public void setArtifactKey(ArtifactKey artifactKey); |
| |
| /** |
| * @return true if this entry corresponds to an optional maven dependency, false otherwise |
| */ |
| public boolean isOptionalDependency(); |
| |
| public void setOptionalDependency(boolean optional); |
| |
| public String getScope(); |
| |
| public void setScope(String scope); |
| |
| // |
| |
| /** |
| * Create IClasspathEntry with information collected in this descriptor |
| */ |
| public IClasspathEntry toClasspathEntry(); |
| |
| /** |
| * Returns <code>true</code> if this classpath entry was derived from pom.xml and <code>false</code> otherwise. <br/> |
| * Stale derived entries are automatically removed when workspace project configuration is synchronized with pom.xml. |
| * |
| * @see #setPomDerived(boolean) |
| * @since 1.1 |
| */ |
| public boolean isPomDerived(); |
| |
| /** |
| * Marks classpath entry as derived from pom.xml (<code>true</code>) or not (<code>false</code>). |
| * <p> |
| * Not-derived (or custom) entries are preserved during project configuration update, while derived entries are |
| * automatically removed whenever their corresponding pom.xml configuration is changed or removed. |
| * <p> |
| * All new classpath entries are marked as derived by default, however value of this flag is preserved when entry |
| * descriptor is read from .classpath file. The intend is to make sure that custom classpath entries are not removed |
| * automatically. Clients of IClasspathDescriptor API who prefer to manage cleanup of stale class classpath entries |
| * explicitly may set derived flag to <code>false</code>. |
| * <p> |
| * Although not enforced, derived flag only applies to project 'raw' classpath entries. The flag is silently ignored |
| * for classpath container entries. |
| * |
| * @since 1.1 |
| */ |
| public void setPomDerived(boolean derived); |
| } |