X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.repo%2Fsrc%2Forg%2Feclipse%2Faether%2Fgraph%2FDependency.java;fp=org.argeo.slc.repo%2Fsrc%2Forg%2Feclipse%2Faether%2Fgraph%2FDependency.java;h=0000000000000000000000000000000000000000;hb=c5df8cb6e6d56113a2707fd4a75c0b912b97e4c0;hp=72ea0f6d805130515cf14914ca083093d4b49947;hpb=e6113a28ca93a1c6bb4aa23242c9d05b63d51cae;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.repo/src/org/eclipse/aether/graph/Dependency.java b/org.argeo.slc.repo/src/org/eclipse/aether/graph/Dependency.java deleted file mode 100644 index 72ea0f6d8..000000000 --- a/org.argeo.slc.repo/src/org/eclipse/aether/graph/Dependency.java +++ /dev/null @@ -1,321 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010, 2013 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.aether.graph; - -import java.util.AbstractSet; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.NoSuchElementException; -import java.util.Set; - -import org.eclipse.aether.artifact.Artifact; - -/** - * A dependency to some artifact. Note: Instances of this class are immutable and the exposed mutators return - * new objects rather than changing the current instance. - */ -public final class Dependency -{ - - private final Artifact artifact; - - private final String scope; - - private final Boolean optional; - - private final Set exclusions; - - /** - * Creates a mandatory dependency on the specified artifact with the given scope. - * - * @param artifact The artifact being depended on, must not be {@code null}. - * @param scope The scope of the dependency, may be {@code null}. - */ - public Dependency( Artifact artifact, String scope ) - { - this( artifact, scope, false ); - } - - /** - * Creates a dependency on the specified artifact with the given scope. - * - * @param artifact The artifact being depended on, must not be {@code null}. - * @param scope The scope of the dependency, may be {@code null}. - * @param optional A flag whether the dependency is optional or mandatory, may be {@code null}. - */ - public Dependency( Artifact artifact, String scope, Boolean optional ) - { - this( artifact, scope, optional, null ); - } - - /** - * Creates a dependency on the specified artifact with the given scope and exclusions. - * - * @param artifact The artifact being depended on, must not be {@code null}. - * @param scope The scope of the dependency, may be {@code null}. - * @param optional A flag whether the dependency is optional or mandatory, may be {@code null}. - * @param exclusions The exclusions that apply to transitive dependencies, may be {@code null} if none. - */ - public Dependency( Artifact artifact, String scope, Boolean optional, Collection exclusions ) - { - this( artifact, scope, Exclusions.copy( exclusions ), optional ); - } - - private Dependency( Artifact artifact, String scope, Set exclusions, Boolean optional ) - { - // NOTE: This constructor assumes immutability of the provided exclusion collection, for internal use only - if ( artifact == null ) - { - throw new IllegalArgumentException( "no artifact specified for dependency" ); - } - this.artifact = artifact; - this.scope = ( scope != null ) ? scope : ""; - this.optional = optional; - this.exclusions = exclusions; - } - - /** - * Gets the artifact being depended on. - * - * @return The artifact, never {@code null}. - */ - public Artifact getArtifact() - { - return artifact; - } - - /** - * Sets the artifact being depended on. - * - * @param artifact The artifact, must not be {@code null}. - * @return The new dependency, never {@code null}. - */ - public Dependency setArtifact( Artifact artifact ) - { - if ( this.artifact.equals( artifact ) ) - { - return this; - } - return new Dependency( artifact, scope, exclusions, optional ); - } - - /** - * Gets the scope of the dependency. The scope defines in which context this dependency is relevant. - * - * @return The scope or an empty string if not set, never {@code null}. - */ - public String getScope() - { - return scope; - } - - /** - * Sets the scope of the dependency, e.g. "compile". - * - * @param scope The scope of the dependency, may be {@code null}. - * @return The new dependency, never {@code null}. - */ - public Dependency setScope( String scope ) - { - if ( this.scope.equals( scope ) || ( scope == null && this.scope.length() <= 0 ) ) - { - return this; - } - return new Dependency( artifact, scope, exclusions, optional ); - } - - /** - * Indicates whether this dependency is optional or not. Optional dependencies can be ignored in some contexts. - * - * @return {@code true} if the dependency is (definitively) optional, {@code false} otherwise. - */ - public boolean isOptional() - { - return Boolean.TRUE.equals( optional ); - } - - /** - * Gets the optional flag for the dependency. Note: Most clients will usually call {@link #isOptional()} to - * determine the optional flag, this method is for advanced use cases where three-valued logic is required. - * - * @return The optional flag or {@code null} if unspecified. - */ - public Boolean getOptional() - { - return optional; - } - - /** - * Sets the optional flag for the dependency. - * - * @param optional {@code true} if the dependency is optional, {@code false} if the dependency is mandatory, may be - * {@code null} if unspecified. - * @return The new dependency, never {@code null}. - */ - public Dependency setOptional( Boolean optional ) - { - if ( eq( this.optional, optional ) ) - { - return this; - } - return new Dependency( artifact, scope, exclusions, optional ); - } - - /** - * Gets the exclusions for this dependency. Exclusions can be used to remove transitive dependencies during - * resolution. - * - * @return The (read-only) exclusions, never {@code null}. - */ - public Collection getExclusions() - { - return exclusions; - } - - /** - * Sets the exclusions for the dependency. - * - * @param exclusions The exclusions, may be {@code null}. - * @return The new dependency, never {@code null}. - */ - public Dependency setExclusions( Collection exclusions ) - { - if ( hasEquivalentExclusions( exclusions ) ) - { - return this; - } - return new Dependency( artifact, scope, optional, exclusions ); - } - - private boolean hasEquivalentExclusions( Collection exclusions ) - { - if ( exclusions == null || exclusions.isEmpty() ) - { - return this.exclusions.isEmpty(); - } - if ( exclusions instanceof Set ) - { - return this.exclusions.equals( exclusions ); - } - return exclusions.size() >= this.exclusions.size() && this.exclusions.containsAll( exclusions ) - && exclusions.containsAll( this.exclusions ); - } - - @Override - public String toString() - { - return String.valueOf( getArtifact() ) + " (" + getScope() + ( isOptional() ? "?" : "" ) + ")"; - } - - @Override - public boolean equals( Object obj ) - { - if ( obj == this ) - { - return true; - } - else if ( obj == null || !getClass().equals( obj.getClass() ) ) - { - return false; - } - - Dependency that = (Dependency) obj; - - return artifact.equals( that.artifact ) && scope.equals( that.scope ) && eq( optional, that.optional ) - && exclusions.equals( that.exclusions ); - } - - private static boolean eq( T o1, T o2 ) - { - return ( o1 != null ) ? o1.equals( o2 ) : o2 == null; - } - - @Override - public int hashCode() - { - int hash = 17; - hash = hash * 31 + artifact.hashCode(); - hash = hash * 31 + scope.hashCode(); - hash = hash * 31 + ( optional != null ? optional.hashCode() : 0 ); - hash = hash * 31 + exclusions.size(); - return hash; - } - - private static class Exclusions - extends AbstractSet - { - - private final Exclusion[] exclusions; - - public static Set copy( Collection exclusions ) - { - if ( exclusions == null || exclusions.isEmpty() ) - { - return Collections.emptySet(); - } - return new Exclusions( exclusions ); - } - - private Exclusions( Collection exclusions ) - { - if ( exclusions.size() > 1 && !( exclusions instanceof Set ) ) - { - exclusions = new LinkedHashSet( exclusions ); - } - this.exclusions = exclusions.toArray( new Exclusion[exclusions.size()] ); - } - - @Override - public Iterator iterator() - { - return new Iterator() - { - - private int cursor = 0; - - public boolean hasNext() - { - return cursor < exclusions.length; - } - - public Exclusion next() - { - try - { - Exclusion exclusion = exclusions[cursor]; - cursor++; - return exclusion; - } - catch ( IndexOutOfBoundsException e ) - { - throw new NoSuchElementException(); - } - } - - public void remove() - { - throw new UnsupportedOperationException(); - } - - }; - } - - @Override - public int size() - { - return exclusions.length; - } - - } - -}