http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/graph/Dependency.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/graph/Dependency.java b/aether-api/src/main/java/org/eclipse/aether/graph/Dependency.java deleted file mode 100644 index b9e7cb4..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/graph/Dependency.java +++ /dev/null @@ -1,330 +0,0 @@ -package org.eclipse.aether.graph; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -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. <em>Note:</em> 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<Exclusion> 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<Exclusion> exclusions ) - { - this( artifact, scope, Exclusions.copy( exclusions ), optional ); - } - - private Dependency( Artifact artifact, String scope, Set<Exclusion> 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<Exclusion> 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<Exclusion> exclusions ) - { - if ( hasEquivalentExclusions( exclusions ) ) - { - return this; - } - return new Dependency( artifact, scope, optional, exclusions ); - } - - private boolean hasEquivalentExclusions( Collection<Exclusion> 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 <T> 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<Exclusion> - { - - private final Exclusion[] exclusions; - - public static Set<Exclusion> copy( Collection<Exclusion> exclusions ) - { - if ( exclusions == null || exclusions.isEmpty() ) - { - return Collections.emptySet(); - } - return new Exclusions( exclusions ); - } - - private Exclusions( Collection<Exclusion> exclusions ) - { - if ( exclusions.size() > 1 && !( exclusions instanceof Set ) ) - { - exclusions = new LinkedHashSet<Exclusion>( exclusions ); - } - this.exclusions = exclusions.toArray( new Exclusion[exclusions.size()] ); - } - - @Override - public Iterator<Exclusion> iterator() - { - return new Iterator<Exclusion>() - { - - 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; - } - - } - -}
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/graph/DependencyCycle.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/graph/DependencyCycle.java b/aether-api/src/main/java/org/eclipse/aether/graph/DependencyCycle.java deleted file mode 100644 index 1076ab8..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/graph/DependencyCycle.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.eclipse.aether.graph; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.util.List; - -/** - * A cycle within a dependency graph, that is a sequence of dependencies d_1, d_2, ..., d_n where d_1 and d_n have the - * same versionless coordinates. In more practical terms, a cycle occurs when a project directly or indirectly depends - * on its own output artifact. - * - * @noimplement This interface is not intended to be implemented by clients. - * @noextend This interface is not intended to be extended by clients. - */ -public interface DependencyCycle -{ - - /** - * Gets the dependencies that lead to the first dependency on the cycle, starting from the root of the dependency - * graph. - * - * @return The (read-only) sequence of dependencies that precedes the cycle in the graph, potentially empty but - * never {@code null}. - */ - List<Dependency> getPrecedingDependencies(); - - /** - * Gets the dependencies that actually form the cycle. For example, a -> b -> c -> a, i.e. the last - * dependency in this sequence duplicates the first element and closes the cycle. Hence the length of the cycle is - * the size of the returned sequence minus 1. - * - * @return The (read-only) sequence of dependencies that forms the cycle, never {@code null}. - */ - List<Dependency> getCyclicDependencies(); - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/graph/DependencyFilter.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/graph/DependencyFilter.java b/aether-api/src/main/java/org/eclipse/aether/graph/DependencyFilter.java deleted file mode 100644 index 41776ff..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/graph/DependencyFilter.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.eclipse.aether.graph; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.util.List; - -/** - * A filter to include/exclude dependency nodes during other operations. - */ -public interface DependencyFilter -{ - - /** - * Indicates whether the specified dependency node shall be included or excluded. - * - * @param node The dependency node to filter, must not be {@code null}. - * @param parents The (read-only) chain of parent nodes that leads to the node to be filtered, must not be - * {@code null}. Iterating this (possibly empty) list walks up the dependency graph towards the root - * node, i.e. the immediate parent node (if any) is the first node in the list. The size of the list also - * denotes the zero-based depth of the filtered node. - * @return {@code true} to include the dependency node, {@code false} to exclude it. - */ - boolean accept( DependencyNode node, List<DependencyNode> parents ); - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/graph/DependencyNode.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/graph/DependencyNode.java b/aether-api/src/main/java/org/eclipse/aether/graph/DependencyNode.java deleted file mode 100644 index 2551043..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/graph/DependencyNode.java +++ /dev/null @@ -1,232 +0,0 @@ -package org.eclipse.aether.graph; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.repository.RemoteRepository; -import org.eclipse.aether.version.Version; -import org.eclipse.aether.version.VersionConstraint; - -/** - * A node within a dependency graph. To conserve memory, dependency graphs may reuse a given node instance multiple - * times to represent reoccurring dependencies. As such clients traversing a dependency graph should be prepared to - * discover multiple paths leading to the same node instance unless the input graph is known to be a duplicate-free - * tree. <em>Note:</em> Unless otherwise noted, implementation classes are not thread-safe and dependency nodes should - * not be mutated by concurrent threads. - * - * @noimplement This interface is not intended to be implemented by clients. - * @noextend This interface is not intended to be extended by clients. - */ -public interface DependencyNode -{ - - /** - * A bit flag indicating the dependency version was subject to dependency management - * - * @see #getManagedBits() - */ - int MANAGED_VERSION = 0x01; - - /** - * A bit flag indicating the dependency scope was subject to dependency management - * - * @see #getManagedBits() - */ - int MANAGED_SCOPE = 0x02; - - /** - * A bit flag indicating the optional flag was subject to dependency management - * - * @see #getManagedBits() - */ - int MANAGED_OPTIONAL = 0x04; - - /** - * A bit flag indicating the artifact properties were subject to dependency management - * - * @see #getManagedBits() - */ - int MANAGED_PROPERTIES = 0x08; - - /** - * A bit flag indicating the exclusions were subject to dependency management - * - * @see #getManagedBits() - */ - int MANAGED_EXCLUSIONS = 0x10; - - /** - * Gets the child nodes of this node. To conserve memory, dependency nodes with equal dependencies may share the - * same child list instance. Hence clients mutating the child list need to be aware that these changes might affect - * more than this node. Where this is not desired, the child list should be copied before mutation if the client - * cannot be sure whether it might be shared with other nodes in the graph. - * - * @return The child nodes of this node, never {@code null}. - */ - List<DependencyNode> getChildren(); - - /** - * Sets the child nodes of this node. - * - * @param children The child nodes, may be {@code null} - */ - void setChildren( List<DependencyNode> children ); - - /** - * Gets the dependency associated with this node. <em>Note:</em> For dependency graphs that have been constructed - * without a root dependency, this method will yield {@code null} when invoked on the graph's root node. The root - * node of such graphs may however still have a label as returned by {@link #getArtifact()}. - * - * @return The dependency or {@code null} if none. - */ - Dependency getDependency(); - - /** - * Gets the artifact associated with this node. If this node is associated with a dependency, this is equivalent to - * {@code getDependency().getArtifact()}. Otherwise the artifact merely provides a label for this node in which case - * the artifact must not be subjected to dependency collection/resolution. - * - * @return The associated artifact or {@code null} if none. - */ - Artifact getArtifact(); - - /** - * Updates the artifact of the dependency after resolution. The new artifact must have the same coordinates as the - * original artifact. This method may only be invoked if this node actually has a dependency, i.e. if - * {@link #getDependency()} is not null. - * - * @param artifact The artifact satisfying the dependency, must not be {@code null}. - */ - void setArtifact( Artifact artifact ); - - /** - * Gets the sequence of relocations that was followed to resolve the artifact referenced by the dependency. - * - * @return The (read-only) sequence of relocations, never {@code null}. - */ - List<? extends Artifact> getRelocations(); - - /** - * Gets the known aliases for this dependency's artifact. An alias can be used to mark a patched rebuild of some - * other artifact as such, thereby allowing conflict resolution to consider the patched and the original artifact as - * a conflict. - * - * @return The (read-only) set of known aliases, never {@code null}. - */ - Collection<? extends Artifact> getAliases(); - - /** - * Gets the version constraint that was parsed from the dependency's version declaration. - * - * @return The version constraint for this node or {@code null}. - */ - VersionConstraint getVersionConstraint(); - - /** - * Gets the version that was selected for the dependency's target artifact. - * - * @return The parsed version or {@code null}. - */ - Version getVersion(); - - /** - * Sets the scope of the dependency. This method may only be invoked if this node actually has a dependency, i.e. if - * {@link #getDependency()} is not null. - * - * @param scope The scope, may be {@code null}. - */ - void setScope( String scope ); - - /** - * Sets the optional flag of the dependency. This method may only be invoked if this node actually has a dependency, - * i.e. if {@link #getDependency()} is not null. - * - * @param optional The optional flag, may be {@code null}. - */ - void setOptional( Boolean optional ); - - /** - * Gets a bit field indicating which attributes of this node were subject to dependency management. - * - * @return A bit field containing any of the bits {@link #MANAGED_VERSION}, {@link #MANAGED_SCOPE}, - * {@link #MANAGED_OPTIONAL}, {@link #MANAGED_PROPERTIES} and {@link #MANAGED_EXCLUSIONS} if the - * corresponding attribute was set via dependency management. - */ - int getManagedBits(); - - /** - * Gets the remote repositories from which this node's artifact shall be resolved. - * - * @return The (read-only) list of remote repositories to use for artifact resolution, never {@code null}. - */ - List<RemoteRepository> getRepositories(); - - /** - * Gets the request context in which this dependency node was created. - * - * @return The request context, never {@code null}. - */ - String getRequestContext(); - - /** - * Sets the request context in which this dependency node was created. - * - * @param context The context, may be {@code null}. - */ - void setRequestContext( String context ); - - /** - * Gets the custom data associated with this dependency node. Clients of the repository system can use this data to - * annotate dependency nodes with domain-specific information. Note that the returned map is read-only and - * {@link #setData(Object, Object)} needs to be used to update the custom data. - * - * @return The (read-only) key-value mappings, never {@code null}. - */ - Map<?, ?> getData(); - - /** - * Sets the custom data associated with this dependency node. - * - * @param data The new custom data, may be {@code null}. - */ - void setData( Map<Object, Object> data ); - - /** - * Associates the specified dependency node data with the given key. <em>Note:</em> This method must not be called - * while {@link #getData()} is being iterated. - * - * @param key The key under which to store the data, must not be {@code null}. - * @param value The data to associate with the key, may be {@code null} to remove the mapping. - */ - void setData( Object key, Object value ); - - /** - * Traverses this node and potentially its children using the specified visitor. - * - * @param visitor The visitor to call back, must not be {@code null}. - * @return {@code true} to visit siblings nodes of this node as well, {@code false} to skip siblings. - */ - boolean accept( DependencyVisitor visitor ); - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/graph/DependencyVisitor.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/graph/DependencyVisitor.java b/aether-api/src/main/java/org/eclipse/aether/graph/DependencyVisitor.java deleted file mode 100644 index 2a85f2d..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/graph/DependencyVisitor.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.eclipse.aether.graph; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -/** - * A visitor for nodes of the dependency graph. - * - * @see DependencyNode#accept(DependencyVisitor) - */ -public interface DependencyVisitor -{ - - /** - * Notifies the visitor of a node visit before its children have been processed. - * - * @param node The dependency node being visited, must not be {@code null}. - * @return {@code true} to visit child nodes of the specified node as well, {@code false} to skip children. - */ - boolean visitEnter( DependencyNode node ); - - /** - * Notifies the visitor of a node visit after its children have been processed. Note that this method is always - * invoked regardless whether any children have actually been visited. - * - * @param node The dependency node being visited, must not be {@code null}. - * @return {@code true} to visit siblings nodes of the specified node as well, {@code false} to skip siblings. - */ - boolean visitLeave( DependencyNode node ); - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/graph/Exclusion.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/graph/Exclusion.java b/aether-api/src/main/java/org/eclipse/aether/graph/Exclusion.java deleted file mode 100644 index 497cf43..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/graph/Exclusion.java +++ /dev/null @@ -1,131 +0,0 @@ -package org.eclipse.aether.graph; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -/** - * An exclusion of one or more transitive dependencies. <em>Note:</em> Instances of this class are immutable and the - * exposed mutators return new objects rather than changing the current instance. - * - * @see Dependency#getExclusions() - */ -public final class Exclusion -{ - - private final String groupId; - - private final String artifactId; - - private final String classifier; - - private final String extension; - - /** - * Creates an exclusion for artifacts with the specified coordinates. - * - * @param groupId The group identifier, may be {@code null}. - * @param artifactId The artifact identifier, may be {@code null}. - * @param classifier The classifier, may be {@code null}. - * @param extension The file extension, may be {@code null}. - */ - public Exclusion( String groupId, String artifactId, String classifier, String extension ) - { - this.groupId = ( groupId != null ) ? groupId : ""; - this.artifactId = ( artifactId != null ) ? artifactId : ""; - this.classifier = ( classifier != null ) ? classifier : ""; - this.extension = ( extension != null ) ? extension : ""; - } - - /** - * Gets the group identifier for artifacts to exclude. - * - * @return The group identifier, never {@code null}. - */ - public String getGroupId() - { - return groupId; - } - - /** - * Gets the artifact identifier for artifacts to exclude. - * - * @return The artifact identifier, never {@code null}. - */ - public String getArtifactId() - { - return artifactId; - } - - /** - * Gets the classifier for artifacts to exclude. - * - * @return The classifier, never {@code null}. - */ - public String getClassifier() - { - return classifier; - } - - /** - * Gets the file extension for artifacts to exclude. - * - * @return The file extension of artifacts to exclude, never {@code null}. - */ - public String getExtension() - { - return extension; - } - - @Override - public String toString() - { - return getGroupId() + ':' + getArtifactId() + ':' + getExtension() - + ( getClassifier().length() > 0 ? ':' + getClassifier() : "" ); - } - - @Override - public boolean equals( Object obj ) - { - if ( obj == this ) - { - return true; - } - else if ( obj == null || !getClass().equals( obj.getClass() ) ) - { - return false; - } - - Exclusion that = (Exclusion) obj; - - return artifactId.equals( that.artifactId ) && groupId.equals( that.groupId ) - && extension.equals( that.extension ) && classifier.equals( that.classifier ); - } - - @Override - public int hashCode() - { - int hash = 17; - hash = hash * 31 + artifactId.hashCode(); - hash = hash * 31 + groupId.hashCode(); - hash = hash * 31 + classifier.hashCode(); - hash = hash * 31 + extension.hashCode(); - return hash; - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/graph/package-info.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/graph/package-info.java b/aether-api/src/main/java/org/eclipse/aether/graph/package-info.java deleted file mode 100644 index c3ba9db..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/graph/package-info.java +++ /dev/null @@ -1,24 +0,0 @@ -// CHECKSTYLE_OFF: RegexpHeader -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -/** - * The representation of a dependency graph by means of connected dependency nodes. - */ -package org.eclipse.aether.graph; - http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/installation/InstallRequest.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/installation/InstallRequest.java b/aether-api/src/main/java/org/eclipse/aether/installation/InstallRequest.java deleted file mode 100644 index f9b3163..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/installation/InstallRequest.java +++ /dev/null @@ -1,177 +0,0 @@ -package org.eclipse.aether.installation; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; - -import org.eclipse.aether.RepositorySystem; -import org.eclipse.aether.RepositorySystemSession; -import org.eclipse.aether.RequestTrace; -import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.metadata.Metadata; - -/** - * A request to install artifacts and their accompanying metadata into the local repository. - * - * @see RepositorySystem#install(RepositorySystemSession, InstallRequest) - */ -public final class InstallRequest -{ - - private Collection<Artifact> artifacts = Collections.emptyList(); - - private Collection<Metadata> metadata = Collections.emptyList(); - - private RequestTrace trace; - - /** - * Creates an uninitialized request. - */ - public InstallRequest() - { - } - - /** - * Gets the artifact to install. - * - * @return The artifacts to install, never {@code null}. - */ - public Collection<Artifact> getArtifacts() - { - return artifacts; - } - - /** - * Sets the artifacts to install. - * - * @param artifacts The artifacts to install, may be {@code null}. - * @return This request for chaining, never {@code null}. - */ - public InstallRequest setArtifacts( Collection<Artifact> artifacts ) - { - if ( artifacts == null ) - { - this.artifacts = Collections.emptyList(); - } - else - { - this.artifacts = artifacts; - } - return this; - } - - /** - * Adds the specified artifacts for installation. - * - * @param artifact The artifact to add, may be {@code null}. - * @return This request for chaining, never {@code null}. - */ - public InstallRequest addArtifact( Artifact artifact ) - { - if ( artifact != null ) - { - if ( artifacts.isEmpty() ) - { - artifacts = new ArrayList<Artifact>(); - } - artifacts.add( artifact ); - } - return this; - } - - /** - * Gets the metadata to install. - * - * @return The metadata to install, never {@code null}. - */ - public Collection<Metadata> getMetadata() - { - return metadata; - } - - /** - * Sets the metadata to install. - * - * @param metadata The metadata to install. - * @return This request for chaining, never {@code null}. - */ - public InstallRequest setMetadata( Collection<Metadata> metadata ) - { - if ( metadata == null ) - { - this.metadata = Collections.emptyList(); - } - else - { - this.metadata = metadata; - } - return this; - } - - /** - * Adds the specified metadata for installation. - * - * @param metadata The metadata to add, may be {@code null}. - * @return This request for chaining, never {@code null}. - */ - public InstallRequest addMetadata( Metadata metadata ) - { - if ( metadata != null ) - { - if ( this.metadata.isEmpty() ) - { - this.metadata = new ArrayList<Metadata>(); - } - this.metadata.add( metadata ); - } - return this; - } - - /** - * Gets the trace information that describes the higher level request/operation in which this request is issued. - * - * @return The trace information about the higher level operation or {@code null} if none. - */ - public RequestTrace getTrace() - { - return trace; - } - - /** - * Sets the trace information that describes the higher level request/operation in which this request is issued. - * - * @param trace The trace information about the higher level operation, may be {@code null}. - * @return This request for chaining, never {@code null}. - */ - public InstallRequest setTrace( RequestTrace trace ) - { - this.trace = trace; - return this; - } - - @Override - public String toString() - { - return getArtifacts() + ", " + getMetadata(); - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/installation/InstallResult.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/installation/InstallResult.java b/aether-api/src/main/java/org/eclipse/aether/installation/InstallResult.java deleted file mode 100644 index 6624585..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/installation/InstallResult.java +++ /dev/null @@ -1,174 +0,0 @@ -package org.eclipse.aether.installation; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; - -import org.eclipse.aether.RepositorySystem; -import org.eclipse.aether.RepositorySystemSession; -import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.metadata.Metadata; - -/** - * The result of installing artifacts and their accompanying metadata into the a remote repository. - * - * @see RepositorySystem#install(RepositorySystemSession, InstallRequest) - */ -public final class InstallResult -{ - - private final InstallRequest request; - - private Collection<Artifact> artifacts; - - private Collection<Metadata> metadata; - - /** - * Creates a new result for the specified request. - * - * @param request The installation request, must not be {@code null}. - */ - public InstallResult( InstallRequest request ) - { - if ( request == null ) - { - throw new IllegalArgumentException( "install request has not been specified" ); - } - this.request = request; - artifacts = Collections.emptyList(); - metadata = Collections.emptyList(); - } - - /** - * Gets the install request that was made. - * - * @return The install request, never {@code null}. - */ - public InstallRequest getRequest() - { - return request; - } - - /** - * Gets the artifacts that got installed. - * - * @return The installed artifacts, never {@code null}. - */ - public Collection<Artifact> getArtifacts() - { - return artifacts; - } - - /** - * Sets the artifacts that got installed. - * - * @param artifacts The installed artifacts, may be {@code null}. - * @return This result for chaining, never {@code null}. - */ - public InstallResult setArtifacts( Collection<Artifact> artifacts ) - { - if ( artifacts == null ) - { - this.artifacts = Collections.emptyList(); - } - else - { - this.artifacts = artifacts; - } - return this; - } - - /** - * Adds the specified artifacts to the result. - * - * @param artifact The installed artifact to add, may be {@code null}. - * @return This result for chaining, never {@code null}. - */ - public InstallResult addArtifact( Artifact artifact ) - { - if ( artifact != null ) - { - if ( artifacts.isEmpty() ) - { - artifacts = new ArrayList<Artifact>(); - } - artifacts.add( artifact ); - } - return this; - } - - /** - * Gets the metadata that got installed. Note that due to automatically generated metadata, there might have been - * more metadata installed than originally specified in the install request. - * - * @return The installed metadata, never {@code null}. - */ - public Collection<Metadata> getMetadata() - { - return metadata; - } - - /** - * Sets the metadata that got installed. - * - * @param metadata The installed metadata, may be {@code null}. - * @return This result for chaining, never {@code null}. - */ - public InstallResult setMetadata( Collection<Metadata> metadata ) - { - if ( metadata == null ) - { - this.metadata = Collections.emptyList(); - } - else - { - this.metadata = metadata; - } - return this; - } - - /** - * Adds the specified metadata to this result. - * - * @param metadata The installed metadata to add, may be {@code null}. - * @return This result for chaining, never {@code null}. - */ - public InstallResult addMetadata( Metadata metadata ) - { - if ( metadata != null ) - { - if ( this.metadata.isEmpty() ) - { - this.metadata = new ArrayList<Metadata>(); - } - this.metadata.add( metadata ); - } - return this; - } - - @Override - public String toString() - { - return getArtifacts() + ", " + getMetadata(); - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/installation/InstallationException.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/installation/InstallationException.java b/aether-api/src/main/java/org/eclipse/aether/installation/InstallationException.java deleted file mode 100644 index 9a556bb..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/installation/InstallationException.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.eclipse.aether.installation; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import org.eclipse.aether.RepositoryException; - -/** - * Thrown in case of an installation error like an IO error. - */ -public class InstallationException - extends RepositoryException -{ - - /** - * Creates a new exception with the specified detail message. - * - * @param message The detail message, may be {@code null}. - */ - public InstallationException( String message ) - { - super( message ); - } - - /** - * Creates a new exception with the specified detail message and cause. - * - * @param message The detail message, may be {@code null}. - * @param cause The exception that caused this one, may be {@code null}. - */ - public InstallationException( String message, Throwable cause ) - { - super( message, cause ); - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/installation/package-info.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/installation/package-info.java b/aether-api/src/main/java/org/eclipse/aether/installation/package-info.java deleted file mode 100644 index d4ac077..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/installation/package-info.java +++ /dev/null @@ -1,24 +0,0 @@ -// CHECKSTYLE_OFF: RegexpHeader -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -/** - * The types supporting the publishing of artifacts to a local repository. - */ -package org.eclipse.aether.installation; - http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/metadata/AbstractMetadata.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/metadata/AbstractMetadata.java b/aether-api/src/main/java/org/eclipse/aether/metadata/AbstractMetadata.java deleted file mode 100644 index 49dab35..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/metadata/AbstractMetadata.java +++ /dev/null @@ -1,160 +0,0 @@ -package org.eclipse.aether.metadata; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.io.File; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * A skeleton class for metadata. - */ -public abstract class AbstractMetadata - implements Metadata -{ - - private Metadata newInstance( Map<String, String> properties, File file ) - { - return new DefaultMetadata( getGroupId(), getArtifactId(), getVersion(), getType(), getNature(), file, - properties ); - } - - public Metadata setFile( File file ) - { - File current = getFile(); - if ( ( current == null ) ? file == null : current.equals( file ) ) - { - return this; - } - return newInstance( getProperties(), file ); - } - - public Metadata setProperties( Map<String, String> properties ) - { - Map<String, String> current = getProperties(); - if ( current.equals( properties ) || ( properties == null && current.isEmpty() ) ) - { - return this; - } - return newInstance( copyProperties( properties ), getFile() ); - } - - public String getProperty( String key, String defaultValue ) - { - String value = getProperties().get( key ); - return ( value != null ) ? value : defaultValue; - } - - /** - * Copies the specified metadata properties. This utility method should be used when creating new metadata instances - * with caller-supplied properties. - * - * @param properties The properties to copy, may be {@code null}. - * @return The copied and read-only properties, never {@code null}. - */ - protected static Map<String, String> copyProperties( Map<String, String> properties ) - { - if ( properties != null && !properties.isEmpty() ) - { - return Collections.unmodifiableMap( new HashMap<String, String>( properties ) ); - } - else - { - return Collections.emptyMap(); - } - } - - @Override - public String toString() - { - StringBuilder buffer = new StringBuilder( 128 ); - if ( getGroupId().length() > 0 ) - { - buffer.append( getGroupId() ); - } - if ( getArtifactId().length() > 0 ) - { - buffer.append( ':' ).append( getArtifactId() ); - } - if ( getVersion().length() > 0 ) - { - buffer.append( ':' ).append( getVersion() ); - } - buffer.append( '/' ).append( getType() ); - return buffer.toString(); - } - - /** - * Compares this metadata with the specified object. - * - * @param obj The object to compare this metadata against, may be {@code null}. - * @return {@code true} if and only if the specified object is another {@link Metadata} with equal coordinates, - * type, nature, properties and file, {@code false} otherwise. - */ - @Override - public boolean equals( Object obj ) - { - if ( obj == this ) - { - return true; - } - else if ( !( obj instanceof Metadata ) ) - { - return false; - } - - Metadata that = (Metadata) obj; - - return getArtifactId().equals( that.getArtifactId() ) && getGroupId().equals( that.getGroupId() ) - && getVersion().equals( that.getVersion() ) && getType().equals( that.getType() ) - && getNature().equals( that.getNature() ) && eq( getFile(), that.getFile() ) - && eq( getProperties(), that.getProperties() ); - } - - private static <T> boolean eq( T s1, T s2 ) - { - return s1 != null ? s1.equals( s2 ) : s2 == null; - } - - /** - * Returns a hash code for this metadata. - * - * @return A hash code for the metadata. - */ - @Override - public int hashCode() - { - int hash = 17; - hash = hash * 31 + getGroupId().hashCode(); - hash = hash * 31 + getArtifactId().hashCode(); - hash = hash * 31 + getType().hashCode(); - hash = hash * 31 + getNature().hashCode(); - hash = hash * 31 + getVersion().hashCode(); - hash = hash * 31 + hash( getFile() ); - return hash; - } - - private static int hash( Object obj ) - { - return ( obj != null ) ? obj.hashCode() : 0; - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/metadata/DefaultMetadata.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/metadata/DefaultMetadata.java b/aether-api/src/main/java/org/eclipse/aether/metadata/DefaultMetadata.java deleted file mode 100644 index 1efbb72..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/metadata/DefaultMetadata.java +++ /dev/null @@ -1,192 +0,0 @@ -package org.eclipse.aether.metadata; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.io.File; -import java.util.Map; - -/** - * A basic metadata instance. <em>Note:</em> Instances of this class are immutable and the exposed mutators return new - * objects rather than changing the current instance. - */ -public final class DefaultMetadata - extends AbstractMetadata -{ - - private final String groupId; - - private final String artifactId; - - private final String version; - - private final String type; - - private final Nature nature; - - private final File file; - - private final Map<String, String> properties; - - /** - * Creates a new metadata for the repository root with the specific type and nature. - * - * @param type The type of the metadata, e.g. "maven-metadata.xml", may be {@code null}. - * @param nature The nature of the metadata, must not be {@code null}. - */ - public DefaultMetadata( String type, Nature nature ) - { - this( "", "", "", type, nature, null, (File) null ); - } - - /** - * Creates a new metadata for the groupId level with the specific type and nature. - * - * @param groupId The group identifier to which this metadata applies, may be {@code null}. - * @param type The type of the metadata, e.g. "maven-metadata.xml", may be {@code null}. - * @param nature The nature of the metadata, must not be {@code null}. - */ - public DefaultMetadata( String groupId, String type, Nature nature ) - { - this( groupId, "", "", type, nature, null, (File) null ); - } - - /** - * Creates a new metadata for the groupId:artifactId level with the specific type and nature. - * - * @param groupId The group identifier to which this metadata applies, may be {@code null}. - * @param artifactId The artifact identifier to which this metadata applies, may be {@code null}. - * @param type The type of the metadata, e.g. "maven-metadata.xml", may be {@code null}. - * @param nature The nature of the metadata, must not be {@code null}. - */ - public DefaultMetadata( String groupId, String artifactId, String type, Nature nature ) - { - this( groupId, artifactId, "", type, nature, null, (File) null ); - } - - /** - * Creates a new metadata for the groupId:artifactId:version level with the specific type and nature. - * - * @param groupId The group identifier to which this metadata applies, may be {@code null}. - * @param artifactId The artifact identifier to which this metadata applies, may be {@code null}. - * @param version The version to which this metadata applies, may be {@code null}. - * @param type The type of the metadata, e.g. "maven-metadata.xml", may be {@code null}. - * @param nature The nature of the metadata, must not be {@code null}. - */ - public DefaultMetadata( String groupId, String artifactId, String version, String type, Nature nature ) - { - this( groupId, artifactId, version, type, nature, null, (File) null ); - } - - /** - * Creates a new metadata for the groupId:artifactId:version level with the specific type and nature. - * - * @param groupId The group identifier to which this metadata applies, may be {@code null}. - * @param artifactId The artifact identifier to which this metadata applies, may be {@code null}. - * @param version The version to which this metadata applies, may be {@code null}. - * @param type The type of the metadata, e.g. "maven-metadata.xml", may be {@code null}. - * @param nature The nature of the metadata, must not be {@code null}. - * @param file The resolved file of the metadata, may be {@code null}. - */ - public DefaultMetadata( String groupId, String artifactId, String version, String type, Nature nature, File file ) - { - this( groupId, artifactId, version, type, nature, null, file ); - } - - /** - * Creates a new metadata for the groupId:artifactId:version level with the specific type and nature. - * - * @param groupId The group identifier to which this metadata applies, may be {@code null}. - * @param artifactId The artifact identifier to which this metadata applies, may be {@code null}. - * @param version The version to which this metadata applies, may be {@code null}. - * @param type The type of the metadata, e.g. "maven-metadata.xml", may be {@code null}. - * @param nature The nature of the metadata, must not be {@code null}. - * @param properties The properties of the metadata, may be {@code null} if none. - * @param file The resolved file of the metadata, may be {@code null}. - */ - public DefaultMetadata( String groupId, String artifactId, String version, String type, Nature nature, - Map<String, String> properties, File file ) - { - this.groupId = emptify( groupId ); - this.artifactId = emptify( artifactId ); - this.version = emptify( version ); - this.type = emptify( type ); - if ( nature == null ) - { - throw new IllegalArgumentException( "metadata nature was not specified" ); - } - this.nature = nature; - this.file = file; - this.properties = copyProperties( properties ); - } - - DefaultMetadata( String groupId, String artifactId, String version, String type, Nature nature, File file, - Map<String, String> properties ) - { - // NOTE: This constructor assumes immutability of the provided properties, for internal use only - this.groupId = emptify( groupId ); - this.artifactId = emptify( artifactId ); - this.version = emptify( version ); - this.type = emptify( type ); - this.nature = nature; - this.file = file; - this.properties = properties; - } - - private static String emptify( String str ) - { - return ( str == null ) ? "" : str; - } - - public String getGroupId() - { - return groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public String getVersion() - { - return version; - } - - public String getType() - { - return type; - } - - public Nature getNature() - { - return nature; - } - - public File getFile() - { - return file; - } - - public Map<String, String> getProperties() - { - return properties; - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/metadata/MergeableMetadata.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/metadata/MergeableMetadata.java b/aether-api/src/main/java/org/eclipse/aether/metadata/MergeableMetadata.java deleted file mode 100644 index deaff70..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/metadata/MergeableMetadata.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.eclipse.aether.metadata; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.io.File; - -import org.eclipse.aether.RepositoryException; - -/** - * A piece of metadata that needs to be merged with any current metadata before installation/deployment. - */ -public interface MergeableMetadata - extends Metadata -{ - - /** - * Merges this metadata into the current metadata (if any). Note that this method will be invoked regardless whether - * metadata currently exists or not. - * - * @param current The path to the current metadata file, may not exist but must not be {@code null}. - * @param result The path to the result file where the merged metadata should be stored, must not be {@code null}. - * @throws RepositoryException If the metadata could not be merged. - */ - void merge( File current, File result ) - throws RepositoryException; - - /** - * Indicates whether this metadata has been merged. - * - * @return {@code true} if the metadata has been merged, {@code false} otherwise. - */ - boolean isMerged(); - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/metadata/Metadata.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/metadata/Metadata.java b/aether-api/src/main/java/org/eclipse/aether/metadata/Metadata.java deleted file mode 100644 index 84e9212..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/metadata/Metadata.java +++ /dev/null @@ -1,138 +0,0 @@ -package org.eclipse.aether.metadata; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.io.File; -import java.util.Map; - -/** - * A piece of repository metadata, e.g. an index of available versions. In contrast to an artifact, which usually exists - * in only one repository, metadata usually exists in multiple repositories and each repository contains a different - * copy of the metadata. <em>Note:</em> Metadata instances are supposed to be immutable, e.g. any exposed mutator method - * returns a new metadata instance and leaves the original instance unchanged. Implementors are strongly advised to obey - * this contract. <em>Note:</em> Implementors are strongly advised to inherit from {@link AbstractMetadata} instead of - * directly implementing this interface. - * - * @noimplement This interface is not intended to be implemented by clients. - * @noextend This interface is not intended to be extended by clients. - */ -public interface Metadata -{ - - /** - * The nature of the metadata. - */ - enum Nature - { - /** - * The metadata refers to release artifacts only. - */ - RELEASE, - - /** - * The metadata refers to snapshot artifacts only. - */ - SNAPSHOT, - - /** - * The metadata refers to either release or snapshot artifacts. - */ - RELEASE_OR_SNAPSHOT - } - - /** - * Gets the group identifier of this metadata. - * - * @return The group identifier or an empty string if the metadata applies to the entire repository, never - * {@code null}. - */ - String getGroupId(); - - /** - * Gets the artifact identifier of this metadata. - * - * @return The artifact identifier or an empty string if the metadata applies to the groupId level only, never - * {@code null}. - */ - String getArtifactId(); - - /** - * Gets the version of this metadata. - * - * @return The version or an empty string if the metadata applies to the groupId:artifactId level only, never - * {@code null}. - */ - String getVersion(); - - /** - * Gets the type of the metadata, e.g. "maven-metadata.xml". - * - * @return The type of the metadata, never {@code null}. - */ - String getType(); - - /** - * Gets the nature of this metadata. The nature indicates to what artifact versions the metadata refers. - * - * @return The nature, never {@code null}. - */ - Nature getNature(); - - /** - * Gets the file of this metadata. Note that only resolved metadata has a file associated with it. - * - * @return The file or {@code null} if none. - */ - File getFile(); - - /** - * Sets the file of the metadata. - * - * @param file The file of the metadata, may be {@code null} - * @return The new metadata, never {@code null}. - */ - Metadata setFile( File file ); - - /** - * Gets the specified property. - * - * @param key The name of the property, must not be {@code null}. - * @param defaultValue The default value to return in case the property is not set, may be {@code null}. - * @return The requested property value or {@code null} if the property is not set and no default value was - * provided. - */ - String getProperty( String key, String defaultValue ); - - /** - * Gets the properties of this metadata. - * - * @return The (read-only) properties, never {@code null}. - */ - Map<String, String> getProperties(); - - /** - * Sets the properties for the metadata. - * - * @param properties The properties for the metadata, may be {@code null}. - * @return The new metadata, never {@code null}. - */ - Metadata setProperties( Map<String, String> properties ); - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/metadata/package-info.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/metadata/package-info.java b/aether-api/src/main/java/org/eclipse/aether/metadata/package-info.java deleted file mode 100644 index e41f98e..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/metadata/package-info.java +++ /dev/null @@ -1,24 +0,0 @@ -// CHECKSTYLE_OFF: RegexpHeader -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -/** - * The definition of metadata, that is an auxiliary entity managed by the repository system to locate artifacts. - */ -package org.eclipse.aether.metadata; - http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/package-info.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/package-info.java b/aether-api/src/main/java/org/eclipse/aether/package-info.java deleted file mode 100644 index 8d11fa8..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/package-info.java +++ /dev/null @@ -1,24 +0,0 @@ -// CHECKSTYLE_OFF: RegexpHeader -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -/** - * The primary API of the {@link org.eclipse.aether.RepositorySystem} and its functionality. - */ -package org.eclipse.aether; - http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/repository/ArtifactRepository.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/ArtifactRepository.java b/aether-api/src/main/java/org/eclipse/aether/repository/ArtifactRepository.java deleted file mode 100644 index c62bf87..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/repository/ArtifactRepository.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.eclipse.aether.repository; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -/** - * A repository hosting artifacts. - * - * @noimplement This interface is not intended to be implemented by clients. - * @noextend This interface is not intended to be extended by clients. - */ -public interface ArtifactRepository -{ - - /** - * Gets the type of the repository, for example "default". - * - * @return The (case-sensitive) type of the repository, never {@code null}. - */ - String getContentType(); - - /** - * Gets the identifier of this repository. - * - * @return The (case-sensitive) identifier, never {@code null}. - */ - String getId(); - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/repository/Authentication.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/Authentication.java b/aether-api/src/main/java/org/eclipse/aether/repository/Authentication.java deleted file mode 100644 index d85c2a2..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/repository/Authentication.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.eclipse.aether.repository; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.util.Map; - -/** - * The authentication to use for accessing a protected resource. This acts basically as an extensible callback mechanism - * from which network operations can request authentication data like username and password when needed. - */ -public interface Authentication -{ - - /** - * Fills the given authentication context with the data from this authentication callback. To do so, implementors - * have to call {@link AuthenticationContext#put(String, Object)}. <br> - * <br> - * The {@code key} parameter supplied to this method acts merely as a hint for interactive callbacks that want to - * prompt the user for only that authentication data which is required. Implementations are free to ignore this - * parameter and put all the data they have into the authentication context at once. - * - * @param context The authentication context to populate, must not be {@code null}. - * @param key The key denoting a specific piece of authentication data that is being requested for a network - * operation, may be {@code null}. - * @param data Any (read-only) extra data in form of key value pairs that might be useful when getting the - * authentication data, may be {@code null}. - */ - void fill( AuthenticationContext context, String key, Map<String, String> data ); - - /** - * Updates the given digest with data from this authentication callback. To do so, implementors have to call the - * {@code update()} methods in {@link AuthenticationDigest}. - * - * @param digest The digest to update, must not be {@code null}. - */ - void digest( AuthenticationDigest digest ); - -}