You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2016/09/03 20:23:24 UTC
[01/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Repository: maven-aether
Updated Branches:
refs/heads/master 468240b70 -> 27f8bd736
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java
new file mode 100644
index 0000000..31259ca
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java
@@ -0,0 +1,582 @@
+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.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * A repository on a remote server.
+ */
+public final class RemoteRepository
+ implements ArtifactRepository
+{
+
+ private static final Pattern URL_PATTERN =
+ Pattern.compile( "([^:/]+(:[^:/]{2,}+(?=://))?):(//([^@/]*@)?([^/:]+))?.*" );
+
+ private final String id;
+
+ private final String type;
+
+ private final String url;
+
+ private final String host;
+
+ private final String protocol;
+
+ private final RepositoryPolicy releasePolicy;
+
+ private final RepositoryPolicy snapshotPolicy;
+
+ private final Proxy proxy;
+
+ private final Authentication authentication;
+
+ private final List<RemoteRepository> mirroredRepositories;
+
+ private final boolean repositoryManager;
+
+ RemoteRepository( Builder builder )
+ {
+ if ( builder.prototype != null )
+ {
+ id = ( builder.delta & Builder.ID ) != 0 ? builder.id : builder.prototype.id;
+ type = ( builder.delta & Builder.TYPE ) != 0 ? builder.type : builder.prototype.type;
+ url = ( builder.delta & Builder.URL ) != 0 ? builder.url : builder.prototype.url;
+ releasePolicy =
+ ( builder.delta & Builder.RELEASES ) != 0 ? builder.releasePolicy : builder.prototype.releasePolicy;
+ snapshotPolicy =
+ ( builder.delta & Builder.SNAPSHOTS ) != 0 ? builder.snapshotPolicy : builder.prototype.snapshotPolicy;
+ proxy = ( builder.delta & Builder.PROXY ) != 0 ? builder.proxy : builder.prototype.proxy;
+ authentication =
+ ( builder.delta & Builder.AUTH ) != 0 ? builder.authentication : builder.prototype.authentication;
+ repositoryManager =
+ ( builder.delta & Builder.REPOMAN ) != 0 ? builder.repositoryManager
+ : builder.prototype.repositoryManager;
+ mirroredRepositories =
+ ( builder.delta & Builder.MIRRORED ) != 0 ? copy( builder.mirroredRepositories )
+ : builder.prototype.mirroredRepositories;
+ }
+ else
+ {
+ id = builder.id;
+ type = builder.type;
+ url = builder.url;
+ releasePolicy = builder.releasePolicy;
+ snapshotPolicy = builder.snapshotPolicy;
+ proxy = builder.proxy;
+ authentication = builder.authentication;
+ repositoryManager = builder.repositoryManager;
+ mirroredRepositories = copy( builder.mirroredRepositories );
+ }
+
+ Matcher m = URL_PATTERN.matcher( url );
+ if ( m.matches() )
+ {
+ protocol = m.group( 1 );
+ String host = m.group( 5 );
+ this.host = ( host != null ) ? host : "";
+ }
+ else
+ {
+ protocol = host = "";
+ }
+ }
+
+ private static List<RemoteRepository> copy( List<RemoteRepository> repos )
+ {
+ if ( repos == null || repos.isEmpty() )
+ {
+ return Collections.emptyList();
+ }
+ return Collections.unmodifiableList( Arrays.asList( repos.toArray( new RemoteRepository[repos.size()] ) ) );
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public String getContentType()
+ {
+ return type;
+ }
+
+ /**
+ * Gets the (base) URL of this repository.
+ *
+ * @return The (base) URL of this repository, never {@code null}.
+ */
+ public String getUrl()
+ {
+ return url;
+ }
+
+ /**
+ * Gets the protocol part from the repository's URL, for example {@code file} or {@code http}. As suggested by RFC
+ * 2396, section 3.1 "Scheme Component", the protocol name should be treated case-insensitively.
+ *
+ * @return The protocol or an empty string if none, never {@code null}.
+ */
+ public String getProtocol()
+ {
+ return protocol;
+ }
+
+ /**
+ * Gets the host part from the repository's URL.
+ *
+ * @return The host or an empty string if none, never {@code null}.
+ */
+ public String getHost()
+ {
+ return host;
+ }
+
+ /**
+ * Gets the policy to apply for snapshot/release artifacts.
+ *
+ * @param snapshot {@code true} to retrieve the snapshot policy, {@code false} to retrieve the release policy.
+ * @return The requested repository policy, never {@code null}.
+ */
+ public RepositoryPolicy getPolicy( boolean snapshot )
+ {
+ return snapshot ? snapshotPolicy : releasePolicy;
+ }
+
+ /**
+ * Gets the proxy that has been selected for this repository.
+ *
+ * @return The selected proxy or {@code null} if none.
+ */
+ public Proxy getProxy()
+ {
+ return proxy;
+ }
+
+ /**
+ * Gets the authentication that has been selected for this repository.
+ *
+ * @return The selected authentication or {@code null} if none.
+ */
+ public Authentication getAuthentication()
+ {
+ return authentication;
+ }
+
+ /**
+ * Gets the repositories that this repository serves as a mirror for.
+ *
+ * @return The (read-only) repositories being mirrored by this repository, never {@code null}.
+ */
+ public List<RemoteRepository> getMirroredRepositories()
+ {
+ return mirroredRepositories;
+ }
+
+ /**
+ * Indicates whether this repository refers to a repository manager or not.
+ *
+ * @return {@code true} if this repository is a repository manager, {@code false} otherwise.
+ */
+ public boolean isRepositoryManager()
+ {
+ return repositoryManager;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuilder buffer = new StringBuilder( 256 );
+ buffer.append( getId() );
+ buffer.append( " (" ).append( getUrl() );
+ buffer.append( ", " ).append( getContentType() );
+ boolean r = getPolicy( false ).isEnabled(), s = getPolicy( true ).isEnabled();
+ if ( r && s )
+ {
+ buffer.append( ", releases+snapshots" );
+ }
+ else if ( r )
+ {
+ buffer.append( ", releases" );
+ }
+ else if ( s )
+ {
+ buffer.append( ", snapshots" );
+ }
+ else
+ {
+ buffer.append( ", disabled" );
+ }
+ if ( isRepositoryManager() )
+ {
+ buffer.append( ", managed" );
+ }
+ buffer.append( ")" );
+ return buffer.toString();
+ }
+
+ @Override
+ public boolean equals( Object obj )
+ {
+ if ( this == obj )
+ {
+ return true;
+ }
+ if ( obj == null || !getClass().equals( obj.getClass() ) )
+ {
+ return false;
+ }
+
+ RemoteRepository that = (RemoteRepository) obj;
+
+ return eq( url, that.url ) && eq( type, that.type ) && eq( id, that.id )
+ && eq( releasePolicy, that.releasePolicy ) && eq( snapshotPolicy, that.snapshotPolicy )
+ && eq( proxy, that.proxy ) && eq( authentication, that.authentication )
+ && eq( mirroredRepositories, that.mirroredRepositories ) && repositoryManager == that.repositoryManager;
+ }
+
+ private static <T> boolean eq( T s1, T s2 )
+ {
+ return s1 != null ? s1.equals( s2 ) : s2 == null;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int hash = 17;
+ hash = hash * 31 + hash( url );
+ hash = hash * 31 + hash( type );
+ hash = hash * 31 + hash( id );
+ hash = hash * 31 + hash( releasePolicy );
+ hash = hash * 31 + hash( snapshotPolicy );
+ hash = hash * 31 + hash( proxy );
+ hash = hash * 31 + hash( authentication );
+ hash = hash * 31 + hash( mirroredRepositories );
+ hash = hash * 31 + ( repositoryManager ? 1 : 0 );
+ return hash;
+ }
+
+ private static int hash( Object obj )
+ {
+ return obj != null ? obj.hashCode() : 0;
+ }
+
+ /**
+ * A builder to create remote repositories.
+ */
+ public static final class Builder
+ {
+
+ private static final RepositoryPolicy DEFAULT_POLICY = new RepositoryPolicy();
+
+ static final int ID = 0x0001, TYPE = 0x0002, URL = 0x0004, RELEASES = 0x0008, SNAPSHOTS = 0x0010,
+ PROXY = 0x0020, AUTH = 0x0040, MIRRORED = 0x0080, REPOMAN = 0x0100;
+
+ int delta;
+
+ RemoteRepository prototype;
+
+ String id;
+
+ String type;
+
+ String url;
+
+ RepositoryPolicy releasePolicy = DEFAULT_POLICY;
+
+ RepositoryPolicy snapshotPolicy = DEFAULT_POLICY;
+
+ Proxy proxy;
+
+ Authentication authentication;
+
+ List<RemoteRepository> mirroredRepositories;
+
+ boolean repositoryManager;
+
+ /**
+ * Creates a new repository builder.
+ *
+ * @param id The identifier of the repository, may be {@code null}.
+ * @param type The type of the repository, may be {@code null}.
+ * @param url The (base) URL of the repository, may be {@code null}.
+ */
+ public Builder( String id, String type, String url )
+ {
+ this.id = ( id != null ) ? id : "";
+ this.type = ( type != null ) ? type : "";
+ this.url = ( url != null ) ? url : "";
+ }
+
+ /**
+ * Creates a new repository builder which uses the specified remote repository as a prototype for the new one.
+ * All properties which have not been set on the builder will be copied from the prototype when building the
+ * repository.
+ *
+ * @param prototype The remote repository to use as prototype, must not be {@code null}.
+ */
+ public Builder( RemoteRepository prototype )
+ {
+ if ( prototype == null )
+ {
+ throw new IllegalArgumentException( "repository prototype missing" );
+ }
+ this.prototype = prototype;
+ }
+
+ /**
+ * Builds a new remote repository from the current values of this builder. The state of the builder itself
+ * remains unchanged.
+ *
+ * @return The remote repository, never {@code null}.
+ */
+ public RemoteRepository build()
+ {
+ if ( prototype != null && delta == 0 )
+ {
+ return prototype;
+ }
+ return new RemoteRepository( this );
+ }
+
+ private <T> void delta( int flag, T builder, T prototype )
+ {
+ boolean equal = ( builder != null ) ? builder.equals( prototype ) : prototype == null;
+ if ( equal )
+ {
+ delta &= ~flag;
+ }
+ else
+ {
+ delta |= flag;
+ }
+ }
+
+ /**
+ * Sets the identifier of the repository.
+ *
+ * @param id The identifier of the repository, may be {@code null}.
+ * @return This builder for chaining, never {@code null}.
+ */
+ public Builder setId( String id )
+ {
+ this.id = ( id != null ) ? id : "";
+ if ( prototype != null )
+ {
+ delta( ID, this.id, prototype.getId() );
+ }
+ return this;
+ }
+
+ /**
+ * Sets the type of the repository, e.g. "default".
+ *
+ * @param type The type of the repository, may be {@code null}.
+ * @return This builder for chaining, never {@code null}.
+ */
+ public Builder setContentType( String type )
+ {
+ this.type = ( type != null ) ? type : "";
+ if ( prototype != null )
+ {
+ delta( TYPE, this.type, prototype.getContentType() );
+ }
+ return this;
+ }
+
+ /**
+ * Sets the (base) URL of the repository.
+ *
+ * @param url The URL of the repository, may be {@code null}.
+ * @return This builder for chaining, never {@code null}.
+ */
+ public Builder setUrl( String url )
+ {
+ this.url = ( url != null ) ? url : "";
+ if ( prototype != null )
+ {
+ delta( URL, this.url, prototype.getUrl() );
+ }
+ return this;
+ }
+
+ /**
+ * Sets the policy to apply for snapshot and release artifacts.
+ *
+ * @param policy The repository policy to set, may be {@code null} to use a default policy.
+ * @return This builder for chaining, never {@code null}.
+ */
+ public Builder setPolicy( RepositoryPolicy policy )
+ {
+ this.releasePolicy = this.snapshotPolicy = ( policy != null ) ? policy : DEFAULT_POLICY;
+ if ( prototype != null )
+ {
+ delta( RELEASES, this.releasePolicy, prototype.getPolicy( false ) );
+ delta( SNAPSHOTS, this.snapshotPolicy, prototype.getPolicy( true ) );
+ }
+ return this;
+ }
+
+ /**
+ * Sets the policy to apply for release artifacts.
+ *
+ * @param releasePolicy The repository policy to set, may be {@code null} to use a default policy.
+ * @return This builder for chaining, never {@code null}.
+ */
+ public Builder setReleasePolicy( RepositoryPolicy releasePolicy )
+ {
+ this.releasePolicy = ( releasePolicy != null ) ? releasePolicy : DEFAULT_POLICY;
+ if ( prototype != null )
+ {
+ delta( RELEASES, this.releasePolicy, prototype.getPolicy( false ) );
+ }
+ return this;
+ }
+
+ /**
+ * Sets the policy to apply for snapshot artifacts.
+ *
+ * @param snapshotPolicy The repository policy to set, may be {@code null} to use a default policy.
+ * @return This builder for chaining, never {@code null}.
+ */
+ public Builder setSnapshotPolicy( RepositoryPolicy snapshotPolicy )
+ {
+ this.snapshotPolicy = ( snapshotPolicy != null ) ? snapshotPolicy : DEFAULT_POLICY;
+ if ( prototype != null )
+ {
+ delta( SNAPSHOTS, this.snapshotPolicy, prototype.getPolicy( true ) );
+ }
+ return this;
+ }
+
+ /**
+ * Sets the proxy to use in order to access the repository.
+ *
+ * @param proxy The proxy to use, may be {@code null}.
+ * @return This builder for chaining, never {@code null}.
+ */
+ public Builder setProxy( Proxy proxy )
+ {
+ this.proxy = proxy;
+ if ( prototype != null )
+ {
+ delta( PROXY, this.proxy, prototype.getProxy() );
+ }
+ return this;
+ }
+
+ /**
+ * Sets the authentication to use in order to access the repository.
+ *
+ * @param authentication The authentication to use, may be {@code null}.
+ * @return This builder for chaining, never {@code null}.
+ */
+ public Builder setAuthentication( Authentication authentication )
+ {
+ this.authentication = authentication;
+ if ( prototype != null )
+ {
+ delta( AUTH, this.authentication, prototype.getAuthentication() );
+ }
+ return this;
+ }
+
+ /**
+ * Sets the repositories being mirrored by the repository.
+ *
+ * @param mirroredRepositories The repositories being mirrored by the repository, may be {@code null}.
+ * @return This builder for chaining, never {@code null}.
+ */
+ public Builder setMirroredRepositories( List<RemoteRepository> mirroredRepositories )
+ {
+ if ( this.mirroredRepositories == null )
+ {
+ this.mirroredRepositories = new ArrayList<RemoteRepository>();
+ }
+ else
+ {
+ this.mirroredRepositories.clear();
+ }
+ if ( mirroredRepositories != null )
+ {
+ this.mirroredRepositories.addAll( mirroredRepositories );
+ }
+ if ( prototype != null )
+ {
+ delta( MIRRORED, this.mirroredRepositories, prototype.getMirroredRepositories() );
+ }
+ return this;
+ }
+
+ /**
+ * Adds the specified repository to the list of repositories being mirrored by the repository. If this builder
+ * was {@link #RemoteRepository.Builder(RemoteRepository) constructed from a prototype}, the given repository
+ * will be added to the list of mirrored repositories from the prototype.
+ *
+ * @param mirroredRepository The repository being mirrored by the repository, may be {@code null}.
+ * @return This builder for chaining, never {@code null}.
+ */
+ public Builder addMirroredRepository( RemoteRepository mirroredRepository )
+ {
+ if ( mirroredRepository != null )
+ {
+ if ( this.mirroredRepositories == null )
+ {
+ this.mirroredRepositories = new ArrayList<RemoteRepository>();
+ if ( prototype != null )
+ {
+ mirroredRepositories.addAll( prototype.getMirroredRepositories() );
+ }
+ }
+ mirroredRepositories.add( mirroredRepository );
+ if ( prototype != null )
+ {
+ delta |= MIRRORED;
+ }
+ }
+ return this;
+ }
+
+ /**
+ * Marks the repository as a repository manager or not.
+ *
+ * @param repositoryManager {@code true} if the repository points at a repository manager, {@code false} if the
+ * repository is just serving static contents.
+ * @return This builder for chaining, never {@code null}.
+ */
+ public Builder setRepositoryManager( boolean repositoryManager )
+ {
+ this.repositoryManager = repositoryManager;
+ if ( prototype != null )
+ {
+ delta( REPOMAN, this.repositoryManager, prototype.isRepositoryManager() );
+ }
+ return this;
+ }
+
+ }
+
+}
[19/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
deleted file mode 100644
index 169bb12..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
+++ /dev/null
@@ -1,651 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.IOException;
-import java.io.InputStream;
-import java.io.InterruptedIOException;
-import java.io.OutputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpHeaders;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.params.AuthParams;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.HttpResponseException;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpHead;
-import org.apache.http.client.methods.HttpOptions;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.utils.URIUtils;
-import org.apache.http.conn.params.ConnRouteParams;
-import org.apache.http.entity.AbstractHttpEntity;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.impl.client.DecompressingHttpClient;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.impl.cookie.DateUtils;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.HttpProtocolParams;
-import org.apache.http.util.EntityUtils;
-import org.eclipse.aether.ConfigurationProperties;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.AbstractTransporter;
-import org.eclipse.aether.spi.connector.transport.GetTask;
-import org.eclipse.aether.spi.connector.transport.PeekTask;
-import org.eclipse.aether.spi.connector.transport.PutTask;
-import org.eclipse.aether.spi.connector.transport.TransportTask;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.transfer.NoTransporterException;
-import org.eclipse.aether.transfer.TransferCancelledException;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- * A transporter for HTTP/HTTPS.
- */
-final class HttpTransporter
- extends AbstractTransporter
-{
-
- private static final Pattern CONTENT_RANGE_PATTERN =
- Pattern.compile( "\\s*bytes\\s+([0-9]+)\\s*-\\s*([0-9]+)\\s*/.*" );
-
- private static final Pattern HOST_SPLIT_PATTERN = Pattern.compile( "\\s*[,]\\s*" );
-
- private final Logger logger;
-
- private final AuthenticationContext repoAuthContext;
-
- private final AuthenticationContext proxyAuthContext;
-
- private final URI baseUri;
-
- private final HttpHost server;
-
- private final HttpHost proxy;
-
- private final HttpClient client;
-
- private final Map<?, ?> headers;
-
- private final LocalState state;
-
- public HttpTransporter( RemoteRepository repository, RepositorySystemSession session, Logger logger )
- throws NoTransporterException
- {
- if ( !"http".equalsIgnoreCase( repository.getProtocol() )
- && !"https".equalsIgnoreCase( repository.getProtocol() ) )
- {
- throw new NoTransporterException( repository );
- }
- this.logger = logger;
- try
- {
- baseUri = new URI( repository.getUrl() ).parseServerAuthority();
- if ( baseUri.isOpaque() )
- {
- throw new URISyntaxException( repository.getUrl(), "URL must not be opaque" );
- }
- server = URIUtils.extractHost( baseUri );
- if ( server == null )
- {
- throw new URISyntaxException( repository.getUrl(), "URL lacks host name" );
- }
- }
- catch ( URISyntaxException e )
- {
- throw new NoTransporterException( repository, e.getMessage(), e );
- }
- proxy = toHost( repository.getProxy() );
-
- repoAuthContext = AuthenticationContext.forRepository( session, repository );
- proxyAuthContext = AuthenticationContext.forProxy( session, repository );
-
- state = new LocalState( session, repository, new SslConfig( session, repoAuthContext ) );
-
- headers =
- ConfigUtils.getMap( session, Collections.emptyMap(), ConfigurationProperties.HTTP_HEADERS + "."
- + repository.getId(), ConfigurationProperties.HTTP_HEADERS );
-
- DefaultHttpClient client = new DefaultHttpClient( state.getConnectionManager() );
-
- configureClient( client.getParams(), session, repository, proxy );
-
- boolean redirectedAuth = getRedirectedAuth( session, repository, server );
- client.setCredentialsProvider( toCredentials( server, repoAuthContext, redirectedAuth, proxy, proxyAuthContext ) );
-
- this.client = new DecompressingHttpClient( client );
- }
-
- private static HttpHost toHost( Proxy proxy )
- {
- HttpHost host = null;
- if ( proxy != null )
- {
- host = new HttpHost( proxy.getHost(), proxy.getPort() );
- }
- return host;
- }
-
- private static void configureClient( HttpParams params, RepositorySystemSession session,
- RemoteRepository repository, HttpHost proxy )
- {
- AuthParams.setCredentialCharset( params,
- ConfigUtils.getString( session,
- ConfigurationProperties.DEFAULT_HTTP_CREDENTIAL_ENCODING,
- ConfigurationProperties.HTTP_CREDENTIAL_ENCODING + "."
- + repository.getId(),
- ConfigurationProperties.HTTP_CREDENTIAL_ENCODING ) );
- ConnRouteParams.setDefaultProxy( params, proxy );
- HttpConnectionParams.setConnectionTimeout( params,
- ConfigUtils.getInteger( session,
- ConfigurationProperties.DEFAULT_CONNECT_TIMEOUT,
- ConfigurationProperties.CONNECT_TIMEOUT
- + "." + repository.getId(),
- ConfigurationProperties.CONNECT_TIMEOUT ) );
- HttpConnectionParams.setSoTimeout( params,
- ConfigUtils.getInteger( session,
- ConfigurationProperties.DEFAULT_REQUEST_TIMEOUT,
- ConfigurationProperties.REQUEST_TIMEOUT + "."
- + repository.getId(),
- ConfigurationProperties.REQUEST_TIMEOUT ) );
- HttpProtocolParams.setUserAgent( params, ConfigUtils.getString( session,
- ConfigurationProperties.DEFAULT_USER_AGENT,
- ConfigurationProperties.USER_AGENT ) );
- }
-
- private static boolean getRedirectedAuth( RepositorySystemSession session, RemoteRepository repo, HttpHost server )
- {
- String mode =
- ConfigUtils.getString( session, ConfigurationProperties.DEFAULT_HTTP_REDIRECTED_AUTHENTICATION,
- ConfigurationProperties.HTTP_REDIRECTED_AUTHENTICATION + '.' + repo.getId(),
- ConfigurationProperties.HTTP_REDIRECTED_AUTHENTICATION );
- if ( "false".equalsIgnoreCase( mode ) )
- {
- return false;
- }
- if ( "true".equalsIgnoreCase( mode ) )
- {
- return true;
- }
- String host = server.getHostName();
- for ( String allowed : HOST_SPLIT_PATTERN.split( mode.trim() ) )
- {
- if ( allowed.equalsIgnoreCase( host ) )
- {
- return true;
- }
- }
- return false;
- }
-
- private static CredentialsProvider toCredentials( HttpHost server, AuthenticationContext serverAuthCtx,
- boolean redirectedAuth, HttpHost proxy,
- AuthenticationContext proxyAuthCtx )
- {
- CredentialsProvider provider =
- toCredentials( redirectedAuth ? AuthScope.ANY_HOST : server.getHostName(), AuthScope.ANY_PORT,
- serverAuthCtx );
- if ( proxy != null )
- {
- CredentialsProvider p = toCredentials( proxy.getHostName(), proxy.getPort(), proxyAuthCtx );
- provider = new DemuxCredentialsProvider( provider, p, proxy );
- }
- return provider;
- }
-
- private static CredentialsProvider toCredentials( String host, int port, AuthenticationContext ctx )
- {
- DeferredCredentialsProvider provider = new DeferredCredentialsProvider();
- if ( ctx != null )
- {
- AuthScope basicScope = new AuthScope( host, port );
- provider.setCredentials( basicScope, new DeferredCredentialsProvider.BasicFactory( ctx ) );
-
- AuthScope ntlmScope = new AuthScope( host, port, AuthScope.ANY_REALM, "ntlm" );
- provider.setCredentials( ntlmScope, new DeferredCredentialsProvider.NtlmFactory( ctx ) );
- }
- return provider;
- }
-
- LocalState getState()
- {
- return state;
- }
-
- private URI resolve( TransportTask task )
- {
- return UriUtils.resolve( baseUri, task.getLocation() );
- }
-
- public int classify( Throwable error )
- {
- if ( error instanceof HttpResponseException
- && ( (HttpResponseException) error ).getStatusCode() == HttpStatus.SC_NOT_FOUND )
- {
- return ERROR_NOT_FOUND;
- }
- return ERROR_OTHER;
- }
-
- @Override
- protected void implPeek( PeekTask task )
- throws Exception
- {
- HttpHead request = commonHeaders( new HttpHead( resolve( task ) ) );
- execute( request, null );
- }
-
- @Override
- protected void implGet( GetTask task )
- throws Exception
- {
- EntityGetter getter = new EntityGetter( task );
- HttpGet request = commonHeaders( new HttpGet( resolve( task ) ) );
- resume( request, task );
- try
- {
- execute( request, getter );
- }
- catch ( HttpResponseException e )
- {
- if ( e.getStatusCode() == HttpStatus.SC_PRECONDITION_FAILED && request.containsHeader( HttpHeaders.RANGE ) )
- {
- request = commonHeaders( new HttpGet( request.getURI() ) );
- execute( request, getter );
- return;
- }
- throw e;
- }
- }
-
- @Override
- protected void implPut( PutTask task )
- throws Exception
- {
- PutTaskEntity entity = new PutTaskEntity( task );
- HttpPut request = commonHeaders( entity( new HttpPut( resolve( task ) ), entity ) );
- try
- {
- execute( request, null );
- }
- catch ( HttpResponseException e )
- {
- if ( e.getStatusCode() == HttpStatus.SC_EXPECTATION_FAILED && request.containsHeader( HttpHeaders.EXPECT ) )
- {
- state.setExpectContinue( false );
- request = commonHeaders( entity( new HttpPut( request.getURI() ), entity ) );
- execute( request, null );
- return;
- }
- throw e;
- }
- }
-
- private void execute( HttpUriRequest request, EntityGetter getter )
- throws Exception
- {
- try
- {
- SharingHttpContext context = new SharingHttpContext( state );
- prepare( request, context );
- HttpResponse response = client.execute( server, request, context );
- try
- {
- context.close();
- handleStatus( response );
- if ( getter != null )
- {
- getter.handle( response );
- }
- }
- finally
- {
- EntityUtils.consumeQuietly( response.getEntity() );
- }
- }
- catch ( IOException e )
- {
- if ( e.getCause() instanceof TransferCancelledException )
- {
- throw (Exception) e.getCause();
- }
- throw e;
- }
- }
-
- private void prepare( HttpUriRequest request, SharingHttpContext context )
- {
- boolean put = HttpPut.METHOD_NAME.equalsIgnoreCase( request.getMethod() );
- if ( ( put || isPayloadPresent( request ) ) && !state.isProbed() )
- {
- synchronized ( state )
- {
- if ( !state.isProbed() )
- {
- probe( request, context );
- state.setProbed();
- }
- }
- }
- if ( put && state.isWebDav() )
- {
- mkdirs( request.getURI(), context );
- }
- }
-
- private void probe( HttpUriRequest request, SharingHttpContext context )
- {
- try
- {
- HttpOptions req = commonHeaders( new HttpOptions( request.getURI() ) );
- HttpResponse response = client.execute( server, req, context );
- state.setWebDav( isWebDav( response ) );
- EntityUtils.consumeQuietly( response.getEntity() );
- }
- catch ( IOException e )
- {
- logger.debug( "Failed to probe HTTP server", e );
- }
- }
-
- private boolean isWebDav( HttpResponse response )
- {
- return response.containsHeader( HttpHeaders.DAV ) && !isWebDavOptional( response );
- }
-
- private boolean isWebDavOptional( HttpResponse response )
- {
- Header header = response.getFirstHeader( HttpHeaders.SERVER );
- String server = ( header != null ) ? header.getValue() : null;
- // repository managers don't need webdav mode and work fine with straight puts
- return server != null && ( server.startsWith( "Artifactory/" ) || server.startsWith( "Nexus/" ) );
- }
-
- private void mkdirs( URI uri, SharingHttpContext context )
- {
- List<URI> dirs = UriUtils.getDirectories( baseUri, uri );
- int index = 0;
- for ( ; index < dirs.size(); index++ )
- {
- try
- {
- HttpResponse response =
- client.execute( server, commonHeaders( new HttpMkCol( dirs.get( index ) ) ), context );
- try
- {
- int status = response.getStatusLine().getStatusCode();
- if ( status < 300 || status == HttpStatus.SC_METHOD_NOT_ALLOWED )
- {
- // directory was created or already existed
- break;
- }
- else if ( status == HttpStatus.SC_CONFLICT )
- {
- // parent directory needs to be created first
- continue;
- }
- handleStatus( response );
- }
- finally
- {
- EntityUtils.consumeQuietly( response.getEntity() );
- }
- }
- catch ( IOException e )
- {
- logger.debug( "Failed to create parent directory " + dirs.get( index ), e );
- return;
- }
- }
- for ( index--; index >= 0; index-- )
- {
- try
- {
- HttpResponse response =
- client.execute( server, commonHeaders( new HttpMkCol( dirs.get( index ) ) ), context );
- try
- {
- handleStatus( response );
- }
- finally
- {
- EntityUtils.consumeQuietly( response.getEntity() );
- }
- }
- catch ( IOException e )
- {
- logger.debug( "Failed to create parent directory " + dirs.get( index ), e );
- return;
- }
- }
- }
-
- private <T extends HttpEntityEnclosingRequest> T entity( T request, HttpEntity entity )
- {
- request.setEntity( entity );
- return request;
- }
-
- private boolean isPayloadPresent( HttpUriRequest request )
- {
- if ( request instanceof HttpEntityEnclosingRequest )
- {
- HttpEntity entity = ( (HttpEntityEnclosingRequest) request ).getEntity();
- return entity != null && entity.getContentLength() != 0;
- }
- return false;
- }
-
- private <T extends HttpUriRequest> T commonHeaders( T request )
- {
- request.setHeader( HttpHeaders.CACHE_CONTROL, "no-cache, no-store" );
- request.setHeader( HttpHeaders.PRAGMA, "no-cache" );
-
- if ( state.isExpectContinue() && isPayloadPresent( request ) )
- {
- request.setHeader( HttpHeaders.EXPECT, "100-continue" );
- }
-
- for ( Map.Entry<?, ?> entry : headers.entrySet() )
- {
- if ( !( entry.getKey() instanceof String ) )
- {
- continue;
- }
- if ( entry.getValue() instanceof String )
- {
- request.setHeader( entry.getKey().toString(), entry.getValue().toString() );
- }
- else
- {
- request.removeHeaders( entry.getKey().toString() );
- }
- }
-
- if ( !state.isExpectContinue() )
- {
- request.removeHeaders( HttpHeaders.EXPECT );
- }
-
- return request;
- }
-
- private <T extends HttpUriRequest> T resume( T request, GetTask task )
- {
- long resumeOffset = task.getResumeOffset();
- if ( resumeOffset > 0 && task.getDataFile() != null )
- {
- request.setHeader( HttpHeaders.RANGE, "bytes=" + Long.toString( resumeOffset ) + '-' );
- request.setHeader( HttpHeaders.IF_UNMODIFIED_SINCE,
- DateUtils.formatDate( new Date( task.getDataFile().lastModified() - 60 * 1000 ) ) );
- request.setHeader( HttpHeaders.ACCEPT_ENCODING, "identity" );
- }
- return request;
- }
-
- private void handleStatus( HttpResponse response )
- throws HttpResponseException
- {
- int status = response.getStatusLine().getStatusCode();
- if ( status >= 300 )
- {
- throw new HttpResponseException( status, response.getStatusLine().getReasonPhrase() + " (" + status + ")" );
- }
- }
-
- @Override
- protected void implClose()
- {
- AuthenticationContext.close( repoAuthContext );
- AuthenticationContext.close( proxyAuthContext );
- state.close();
- }
-
- private class EntityGetter
- {
-
- private final GetTask task;
-
- public EntityGetter( GetTask task )
- {
- this.task = task;
- }
-
- public void handle( HttpResponse response )
- throws IOException, TransferCancelledException
- {
- HttpEntity entity = response.getEntity();
- if ( entity == null )
- {
- entity = new ByteArrayEntity( new byte[0] );
- }
-
- long offset = 0, length = entity.getContentLength();
- String range = getHeader( response, HttpHeaders.CONTENT_RANGE );
- if ( range != null )
- {
- Matcher m = CONTENT_RANGE_PATTERN.matcher( range );
- if ( !m.matches() )
- {
- throw new IOException( "Invalid Content-Range header for partial download: " + range );
- }
- offset = Long.parseLong( m.group( 1 ) );
- length = Long.parseLong( m.group( 2 ) ) + 1;
- if ( offset < 0 || offset >= length || ( offset > 0 && offset != task.getResumeOffset() ) )
- {
- throw new IOException( "Invalid Content-Range header for partial download from offset "
- + task.getResumeOffset() + ": " + range );
- }
- }
-
- InputStream is = entity.getContent();
- utilGet( task, is, true, length, offset > 0 );
- extractChecksums( response );
- }
-
- private void extractChecksums( HttpResponse response )
- {
- // Nexus-style, ETag: "{SHA1{d40d68ba1f88d8e9b0040f175a6ff41928abd5e7}}"
- String etag = getHeader( response, HttpHeaders.ETAG );
- if ( etag != null )
- {
- int start = etag.indexOf( "SHA1{" ), end = etag.indexOf( "}", start + 5 );
- if ( start >= 0 && end > start )
- {
- task.setChecksum( "SHA-1", etag.substring( start + 5, end ) );
- }
- }
- }
-
- private String getHeader( HttpResponse response, String name )
- {
- Header header = response.getFirstHeader( name );
- return ( header != null ) ? header.getValue() : null;
- }
-
- }
-
- private class PutTaskEntity
- extends AbstractHttpEntity
- {
-
- private final PutTask task;
-
- public PutTaskEntity( PutTask task )
- {
- this.task = task;
- }
-
- public boolean isRepeatable()
- {
- return true;
- }
-
- public boolean isStreaming()
- {
- return false;
- }
-
- public long getContentLength()
- {
- return task.getDataLength();
- }
-
- public InputStream getContent()
- throws IOException
- {
- return task.newInputStream();
- }
-
- public void writeTo( OutputStream os )
- throws IOException
- {
- try
- {
- utilPut( task, os, false );
- }
- catch ( TransferCancelledException e )
- {
- throw (IOException) new InterruptedIOException().initCause( e );
- }
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporterFactory.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporterFactory.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporterFactory.java
deleted file mode 100644
index e9a9bfd..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporterFactory.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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 javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.NoTransporterException;
-
-/**
- * A transporter factory for repositories using the {@code http:} or {@code https:} protocol. The provided transporters
- * support uploads to WebDAV servers and resumable downloads.
- */
-@Named( "http" )
-public final class HttpTransporterFactory
- implements TransporterFactory, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private float priority = 5;
-
- /**
- * Creates an (uninitialized) instance of this transporter factory. <em>Note:</em> In case of manual instantiation
- * by clients, the new factory needs to be configured via its various mutators before first use or runtime errors
- * will occur.
- */
- public HttpTransporterFactory()
- {
- // enables default constructor
- }
-
- @Inject
- HttpTransporterFactory( LoggerFactory loggerFactory )
- {
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- }
-
- /**
- * Sets the logger factory to use for this component.
- *
- * @param loggerFactory The logger factory to use, may be {@code null} to disable logging.
- * @return This component for chaining, never {@code null}.
- */
- public HttpTransporterFactory setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, HttpTransporter.class );
- return this;
- }
-
- public float getPriority()
- {
- return priority;
- }
-
- /**
- * Sets the priority of this component.
- *
- * @param priority The priority.
- * @return This component for chaining, never {@code null}.
- */
- public HttpTransporterFactory setPriority( float priority )
- {
- this.priority = priority;
- return this;
- }
-
- public Transporter newInstance( RepositorySystemSession session, RemoteRepository repository )
- throws NoTransporterException
- {
- return new HttpTransporter( repository, session, logger );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/LocalState.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/LocalState.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/LocalState.java
deleted file mode 100644
index 176b895..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/LocalState.java
+++ /dev/null
@@ -1,184 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.Closeable;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import org.apache.http.HttpHost;
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.conn.ClientConnectionManager;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transport.http.GlobalState.CompoundKey;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- * Container for HTTP-related state that can be shared across invocations of the transporter to optimize the
- * communication with server.
- */
-final class LocalState
- implements Closeable
-{
-
- private static final String CONFIG_PROP_WEBDAV = "aether.connector.http.webDav";
-
- private final GlobalState global;
-
- private final ClientConnectionManager connMgr;
-
- private final CompoundKey userTokenKey;
-
- private volatile Object userToken;
-
- private final CompoundKey expectContinueKey;
-
- private volatile boolean probed;
-
- private volatile Boolean expectContinue;
-
- private volatile Boolean webDav;
-
- private final ConcurrentMap<HttpHost, AuthSchemePool> authSchemePools;
-
- public LocalState( RepositorySystemSession session, RemoteRepository repo, SslConfig sslConfig )
- {
- global = GlobalState.get( session );
- userToken = this;
- if ( global == null )
- {
- connMgr = GlobalState.newConnectionManager( sslConfig );
- userTokenKey = null;
- expectContinueKey = null;
- authSchemePools = new ConcurrentHashMap<HttpHost, AuthSchemePool>();
- }
- else
- {
- connMgr = global.getConnectionManager( sslConfig );
- userTokenKey = new CompoundKey( repo.getId(), repo.getUrl(), repo.getAuthentication(), repo.getProxy() );
- expectContinueKey = new CompoundKey( repo.getUrl(), repo.getProxy() );
- authSchemePools = global.getAuthSchemePools();
- }
- if ( !ConfigUtils.getBoolean( session, true, CONFIG_PROP_WEBDAV + '.' + repo.getId(), CONFIG_PROP_WEBDAV ) )
- {
- webDav = false;
- }
- }
-
- public ClientConnectionManager getConnectionManager()
- {
- return connMgr;
- }
-
- public Object getUserToken()
- {
- if ( userToken == this )
- {
- userToken = ( global != null ) ? global.getUserToken( userTokenKey ) : null;
- }
- return userToken;
- }
-
- public void setUserToken( Object userToken )
- {
- this.userToken = userToken;
- if ( global != null )
- {
- global.setUserToken( userTokenKey, userToken );
- }
- }
-
- public boolean isProbed()
- {
- return probed;
- }
-
- public void setProbed()
- {
- probed = true;
- }
-
- public boolean isExpectContinue()
- {
- if ( expectContinue == null )
- {
- expectContinue =
- !Boolean.FALSE.equals( ( global != null ) ? global.getExpectContinue( expectContinueKey ) : null );
- }
- return expectContinue;
- }
-
- public void setExpectContinue( boolean enabled )
- {
- expectContinue = enabled;
- if ( global != null )
- {
- global.setExpectContinue( expectContinueKey, enabled );
- }
- }
-
- public boolean isWebDav()
- {
- return Boolean.TRUE.equals( webDav );
- }
-
- public void setWebDav( boolean webDav )
- {
- if ( this.webDav == null )
- {
- this.webDav = webDav;
- }
- }
-
- public AuthScheme getAuthScheme( HttpHost host )
- {
- AuthSchemePool pool = authSchemePools.get( host );
- if ( pool != null )
- {
- return pool.get();
- }
- return null;
- }
-
- public void setAuthScheme( HttpHost host, AuthScheme authScheme )
- {
- AuthSchemePool pool = authSchemePools.get( host );
- if ( pool == null )
- {
- AuthSchemePool p = new AuthSchemePool();
- pool = authSchemePools.putIfAbsent( host, p );
- if ( pool == null )
- {
- pool = p;
- }
- }
- pool.put( authScheme );
- }
-
- public void close()
- {
- if ( global == null )
- {
- connMgr.shutdown();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingAuthCache.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingAuthCache.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingAuthCache.java
deleted file mode 100644
index 1264d04..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingAuthCache.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.HashMap;
-import java.util.Map;
-
-import org.apache.http.HttpHost;
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.client.AuthCache;
-
-/**
- * Auth scheme cache that upon clearing releases all cached schemes into a pool for future reuse by other requests,
- * thereby reducing challenge-response roundtrips.
- */
-final class SharingAuthCache
- implements AuthCache
-{
-
- private final LocalState state;
-
- private final Map<HttpHost, AuthScheme> authSchemes;
-
- public SharingAuthCache( LocalState state )
- {
- this.state = state;
- authSchemes = new HashMap<HttpHost, AuthScheme>();
- }
-
- private static HttpHost toKey( HttpHost host )
- {
- if ( host.getPort() <= 0 )
- {
- int port = host.getSchemeName().equalsIgnoreCase( "https" ) ? 443 : 80;
- return new HttpHost( host.getHostName(), port, host.getSchemeName() );
- }
- return host;
- }
-
- public AuthScheme get( HttpHost host )
- {
- host = toKey( host );
- AuthScheme authScheme = authSchemes.get( host );
- if ( authScheme == null )
- {
- authScheme = state.getAuthScheme( host );
- authSchemes.put( host, authScheme );
- }
- return authScheme;
- }
-
- public void put( HttpHost host, AuthScheme authScheme )
- {
- if ( authScheme != null )
- {
- authSchemes.put( toKey( host ), authScheme );
- }
- else
- {
- remove( host );
- }
- }
-
- public void remove( HttpHost host )
- {
- authSchemes.remove( toKey( host ) );
- }
-
- public void clear()
- {
- share();
- authSchemes.clear();
- }
-
- private void share()
- {
- for ( Map.Entry<HttpHost, AuthScheme> entry : authSchemes.entrySet() )
- {
- state.setAuthScheme( entry.getKey(), entry.getValue() );
- }
- }
-
- @Override
- public String toString()
- {
- return authSchemes.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingHttpContext.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingHttpContext.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingHttpContext.java
deleted file mode 100644
index 4464c26..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingHttpContext.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.Closeable;
-
-import org.apache.http.client.protocol.ClientContext;
-import org.apache.http.protocol.BasicHttpContext;
-
-/**
- * HTTP context that shares certain attributes among requests to optimize the communication with the server.
- *
- * @see <a href="http://hc.apache.org/httpcomponents-client-ga/tutorial/html/advanced.html#stateful_conn">Stateful HTTP
- * connections</a>
- */
-final class SharingHttpContext
- extends BasicHttpContext
- implements Closeable
-{
-
- private final LocalState state;
-
- private final SharingAuthCache authCache;
-
- public SharingHttpContext( LocalState state )
- {
- this.state = state;
- authCache = new SharingAuthCache( state );
- super.setAttribute( ClientContext.AUTH_CACHE, authCache );
- }
-
- @Override
- public Object getAttribute( String id )
- {
- if ( ClientContext.USER_TOKEN.equals( id ) )
- {
- return state.getUserToken();
- }
- return super.getAttribute( id );
- }
-
- @Override
- public void setAttribute( String id, Object obj )
- {
- if ( ClientContext.USER_TOKEN.equals( id ) )
- {
- state.setUserToken( obj );
- }
- else
- {
- super.setAttribute( id, obj );
- }
- }
-
- @Override
- public Object removeAttribute( String id )
- {
- if ( ClientContext.USER_TOKEN.equals( id ) )
- {
- state.setUserToken( null );
- return null;
- }
- return super.removeAttribute( id );
- }
-
- public void close()
- {
- authCache.clear();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SslConfig.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SslConfig.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SslConfig.java
deleted file mode 100644
index d991796..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SslConfig.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.Arrays;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLContext;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- * SSL-related configuration and cache key for connection pools (whose scheme registries are derived from this config).
- */
-final class SslConfig
-{
-
- private static final String CIPHER_SUITES = "https.cipherSuites";
-
- private static final String PROTOCOLS = "https.protocols";
-
- final SSLContext context;
-
- final HostnameVerifier verifier;
-
- final String[] cipherSuites;
-
- final String[] protocols;
-
- public SslConfig( RepositorySystemSession session, AuthenticationContext authContext )
- {
- context =
- ( authContext != null ) ? authContext.get( AuthenticationContext.SSL_CONTEXT, SSLContext.class ) : null;
- verifier =
- ( authContext != null ) ? authContext.get( AuthenticationContext.SSL_HOSTNAME_VERIFIER,
- HostnameVerifier.class ) : null;
-
- cipherSuites = split( get( session, CIPHER_SUITES ) );
- protocols = split( get( session, PROTOCOLS ) );
- }
-
- private static String get( RepositorySystemSession session, String key )
- {
- String value = ConfigUtils.getString( session, null, "aether.connector." + key, key );
- if ( value == null )
- {
- value = System.getProperty( key );
- }
- return value;
- }
-
- private static String[] split( String value )
- {
- if ( value == null || value.length() <= 0 )
- {
- return null;
- }
- return value.split( ",+" );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- SslConfig that = (SslConfig) obj;
- return eq( context, that.context ) && eq( verifier, that.verifier )
- && Arrays.equals( cipherSuites, that.cipherSuites ) && Arrays.equals( protocols, that.protocols );
- }
-
- private static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + hash( context );
- hash = hash * 31 + hash( verifier );
- hash = hash * 31 + Arrays.hashCode( cipherSuites );
- hash = hash * 31 + Arrays.hashCode( protocols );
- return hash;
- }
-
- private static int hash( Object obj )
- {
- return obj != null ? obj.hashCode() : 0;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SslSocketFactory.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SslSocketFactory.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SslSocketFactory.java
deleted file mode 100644
index 5189c87..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/SslSocketFactory.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.IOException;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocket;
-import javax.net.ssl.SSLSocketFactory;
-
-import org.apache.http.conn.ssl.X509HostnameVerifier;
-
-/**
- * Specialized SSL socket factory to more closely resemble the JRE's HttpsClient and respect well-known SSL-related
- * configuration properties.
- *
- * @see <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#Customization">JSSE
- * Reference Guide, Customization</a>
- */
-final class SslSocketFactory
- extends org.apache.http.conn.ssl.SSLSocketFactory
-{
-
- private final String[] cipherSuites;
-
- private final String[] protocols;
-
- public SslSocketFactory( SslConfig config )
- {
- this( getSocketFactory( config.context ), getHostnameVerifier( config.verifier ), config.cipherSuites,
- config.protocols );
- }
-
- private static SSLSocketFactory getSocketFactory( SSLContext context )
- {
- return ( context != null ) ? context.getSocketFactory() : (SSLSocketFactory) SSLSocketFactory.getDefault();
- }
-
- private static X509HostnameVerifier getHostnameVerifier( HostnameVerifier verifier )
- {
- return ( verifier != null ) ? X509HostnameVerifierAdapter.adapt( verifier )
- : org.apache.http.conn.ssl.SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
- }
-
- private SslSocketFactory( SSLSocketFactory socketfactory, X509HostnameVerifier hostnameVerifier,
- String[] cipherSuites, String[] protocols )
- {
- super( socketfactory, hostnameVerifier );
-
- this.cipherSuites = cipherSuites;
- this.protocols = protocols;
- }
-
- @Override
- protected void prepareSocket( SSLSocket socket )
- throws IOException
- {
- super.prepareSocket( socket );
- if ( cipherSuites != null )
- {
- socket.setEnabledCipherSuites( cipherSuites );
- }
- if ( protocols != null )
- {
- socket.setEnabledProtocols( protocols );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/UriUtils.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/UriUtils.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/UriUtils.java
deleted file mode 100644
index 7bc19da..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/UriUtils.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.http.client.utils.URIUtils;
-
-/**
- * Helps to deal with URIs.
- */
-final class UriUtils
-{
-
- public static URI resolve( URI base, URI ref )
- {
- String path = ref.getRawPath();
- if ( path != null && path.length() > 0 )
- {
- path = base.getRawPath();
- if ( path == null || !path.endsWith( "/" ) )
- {
- try
- {
- base = new URI( base.getScheme(), base.getAuthority(), base.getPath() + '/', null, null );
- }
- catch ( URISyntaxException e )
- {
- throw new IllegalStateException( e );
- }
- }
- }
- return URIUtils.resolve( base, ref );
- }
-
- public static List<URI> getDirectories( URI base, URI uri )
- {
- List<URI> dirs = new ArrayList<URI>();
- for ( URI dir = uri.resolve( "." ); !isBase( base, dir ); dir = dir.resolve( ".." ) )
- {
- dirs.add( dir );
- }
- return dirs;
- }
-
- private static boolean isBase( URI base, URI uri )
- {
- String path = uri.getRawPath();
- if ( path == null || "/".equals( path ) )
- {
- return true;
- }
- if ( base != null )
- {
- URI rel = base.relativize( uri );
- if ( rel.getRawPath() == null || rel.getRawPath().length() <= 0 || rel.equals( uri ) )
- {
- return true;
- }
- }
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/X509HostnameVerifierAdapter.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/X509HostnameVerifierAdapter.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/X509HostnameVerifierAdapter.java
deleted file mode 100644
index 007f660..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/X509HostnameVerifierAdapter.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.IOException;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLException;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocket;
-
-import org.apache.http.conn.ssl.X509HostnameVerifier;
-
-/**
- * Makes a standard hostname verifier compatible with Apache HttpClient's API.
- */
-final class X509HostnameVerifierAdapter
- implements X509HostnameVerifier
-{
-
- private final HostnameVerifier verifier;
-
- public static X509HostnameVerifier adapt( HostnameVerifier verifier )
- {
- if ( verifier instanceof X509HostnameVerifier )
- {
- return (X509HostnameVerifier) verifier;
- }
- return new X509HostnameVerifierAdapter( verifier );
- }
-
- private X509HostnameVerifierAdapter( HostnameVerifier verifier )
- {
- this.verifier = verifier;
- }
-
- public boolean verify( String hostname, SSLSession session )
- {
- return verifier.verify( hostname, session );
- }
-
- public void verify( String host, SSLSocket socket )
- throws IOException
- {
- if ( !verify( host, socket.getSession() ) )
- {
- throw new SSLException( "<" + host + "> does not pass hostname verification" );
- }
- }
-
- public void verify( String host, X509Certificate cert )
- throws SSLException
- {
- throw new UnsupportedOperationException();
- }
-
- public void verify( String host, String[] cns, String[] subjectAlts )
- throws SSLException
- {
- throw new UnsupportedOperationException();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/package-info.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/package-info.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/package-info.java
deleted file mode 100644
index 828299e..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/package-info.java
+++ /dev/null
@@ -1,25 +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.
- */
-/**
- * Support for downloads/uploads via the HTTP and HTTPS protocols. The current implementation is backed by
- * <a href="http://hc.apache.org/httpcomponents-client-ga/" target="_blank">Apache HttpClient</a>.
- */
-package org.eclipse.aether.transport.http;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/site/site.xml
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/site/site.xml b/aether-transport-http/src/site/site.xml
deleted file mode 100644
index 3a16bf9..0000000
--- a/aether-transport-http/src/site/site.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
- <body>
- <menu name="Overview">
- <item name="Introduction" href="index.html"/>
- <item name="JavaDocs" href="apidocs/index.html"/>
- <item name="Source Xref" href="xref/index.html"/>
- <!--item name="FAQ" href="faq.html"/-->
- </menu>
-
- <menu ref="parent"/>
- <menu ref="reports"/>
- </body>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java b/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java
deleted file mode 100644
index 71182b5..0000000
--- a/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java
+++ /dev/null
@@ -1,626 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.eclipse.aether.util.ChecksumUtils;
-import org.eclipse.jetty.http.HttpHeaders;
-import org.eclipse.jetty.http.HttpMethods;
-import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.AbstractHandler;
-import org.eclipse.jetty.server.handler.HandlerList;
-import org.eclipse.jetty.server.nio.SelectChannelConnector;
-import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
-import org.eclipse.jetty.util.B64Code;
-import org.eclipse.jetty.util.IO;
-import org.eclipse.jetty.util.StringUtil;
-import org.eclipse.jetty.util.URIUtil;
-import org.eclipse.jetty.util.ssl.SslContextFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class HttpServer
-{
-
- public static class LogEntry
- {
-
- public final String method;
-
- public final String path;
-
- public final Map<String, String> headers;
-
- public LogEntry( String method, String path, Map<String, String> headers )
- {
- this.method = method;
- this.path = path;
- this.headers = headers;
- }
-
- @Override
- public String toString()
- {
- return method + " " + path;
- }
-
- }
-
- public enum WebDav
- {
- /** DAV header advertised, MKCOL required for missing parent directories */
- REQUIRED,
- /** DAV header advertised, MKCOL supported but not required */
- OPTIONAL
- }
-
- public enum ExpectContinue
- {
- /** reject request with "Expectation Failed" */
- FAIL,
- /** send "Continue" only if request made it past authentication */
- PROPER,
- /** send "Continue" before authentication has been checked */
- BROKEN
- }
-
- public enum ChecksumHeader
- {
- NEXUS
- }
-
- private static final Logger log = LoggerFactory.getLogger( HttpServer.class );
-
- private String serverHeader = "Dummy";
-
- private File repoDir;
-
- private boolean rangeSupport = true;
-
- private WebDav webDav;
-
- private ExpectContinue expectContinue = ExpectContinue.PROPER;
-
- private ChecksumHeader checksumHeader;
-
- private Server server;
-
- private Connector httpConnector;
-
- private Connector httpsConnector;
-
- private String credentialEncoding = StringUtil.__ISO_8859_1;
-
- private String username;
-
- private String password;
-
- private String proxyUsername;
-
- private String proxyPassword;
-
- private List<LogEntry> logEntries = Collections.synchronizedList( new ArrayList<LogEntry>() );
-
- public String getHost()
- {
- return "localhost";
- }
-
- public int getHttpPort()
- {
- return httpConnector != null ? httpConnector.getLocalPort() : -1;
- }
-
- public int getHttpsPort()
- {
- return httpsConnector != null ? httpsConnector.getLocalPort() : -1;
- }
-
- public String getHttpUrl()
- {
- return "http://" + getHost() + ":" + getHttpPort();
- }
-
- public String getHttpsUrl()
- {
- return "https://" + getHost() + ":" + getHttpsPort();
- }
-
- public HttpServer addSslConnector()
- {
- if ( httpsConnector == null )
- {
- SslContextFactory ssl = new SslContextFactory();
- ssl.setKeyStorePath( new File( "src/test/resources/ssl/server-store" ).getAbsolutePath() );
- ssl.setKeyStorePassword( "server-pwd" );
- ssl.setTrustStore( new File( "src/test/resources/ssl/client-store" ).getAbsolutePath() );
- ssl.setTrustStorePassword( "client-pwd" );
- ssl.setNeedClientAuth( true );
- httpsConnector = new SslSelectChannelConnector( ssl );
- if ( server != null )
- {
- server.addConnector( httpsConnector );
- try
- {
- httpsConnector.start();
- }
- catch ( Exception e )
- {
- throw new IllegalStateException( e );
- }
- }
- }
- return this;
- }
-
- public List<LogEntry> getLogEntries()
- {
- return logEntries;
- }
-
- public HttpServer setServer( String server )
- {
- this.serverHeader = server;
- return this;
- }
-
- public HttpServer setRepoDir( File repoDir )
- {
- this.repoDir = repoDir;
- return this;
- }
-
- public HttpServer setRangeSupport( boolean rangeSupport )
- {
- this.rangeSupport = rangeSupport;
- return this;
- }
-
- public HttpServer setWebDav( WebDav webDav )
- {
- this.webDav = webDav;
- return this;
- }
-
- public HttpServer setExpectSupport( ExpectContinue expectContinue )
- {
- this.expectContinue = expectContinue;
- return this;
- }
-
- public HttpServer setChecksumHeader( ChecksumHeader checksumHeader )
- {
- this.checksumHeader = checksumHeader;
- return this;
- }
-
- public HttpServer setCredentialEncoding( String credentialEncoding )
- {
- this.credentialEncoding = ( credentialEncoding != null ) ? credentialEncoding : StringUtil.__ISO_8859_1;
- return this;
- }
-
- public HttpServer setAuthentication( String username, String password )
- {
- this.username = username;
- this.password = password;
- return this;
- }
-
- public HttpServer setProxyAuthentication( String username, String password )
- {
- proxyUsername = username;
- proxyPassword = password;
- return this;
- }
-
- public HttpServer start()
- throws Exception
- {
- if ( server != null )
- {
- return this;
- }
-
- httpConnector = new SelectChannelConnector();
-
- HandlerList handlers = new HandlerList();
- handlers.addHandler( new CommonHandler() );
- handlers.addHandler( new LogHandler() );
- handlers.addHandler( new ProxyAuthHandler() );
- handlers.addHandler( new AuthHandler() );
- handlers.addHandler( new RedirectHandler() );
- handlers.addHandler( new RepoHandler() );
-
- server = new Server();
- server.addConnector( httpConnector );
- if ( httpsConnector != null )
- {
- server.addConnector( httpsConnector );
- }
- server.setHandler( handlers );
- server.start();
-
- return this;
- }
-
- public void stop()
- throws Exception
- {
- if ( server != null )
- {
- server.stop();
- server = null;
- httpConnector = null;
- httpsConnector = null;
- }
- }
-
- private class CommonHandler
- extends AbstractHandler
- {
-
- public void handle( String target, Request req, HttpServletRequest request, HttpServletResponse response )
- throws IOException
- {
- response.setHeader( HttpHeaders.SERVER, serverHeader );
- }
-
- }
-
- private class LogHandler
- extends AbstractHandler
- {
-
- @SuppressWarnings( "unchecked" )
- public void handle( String target, Request req, HttpServletRequest request, HttpServletResponse response )
- throws IOException
- {
- log.info( "{} {}{}", new Object[] { req.getMethod(), req.getRequestURL(),
- req.getQueryString() != null ? "?" + req.getQueryString() : "" } );
-
- Map<String, String> headers = new TreeMap<String, String>( String.CASE_INSENSITIVE_ORDER );
- for ( Enumeration<String> en = req.getHeaderNames(); en.hasMoreElements(); )
- {
- String name = en.nextElement();
- StringBuilder buffer = new StringBuilder( 128 );
- for ( Enumeration<String> ien = req.getHeaders( name ); ien.hasMoreElements(); )
- {
- if ( buffer.length() > 0 )
- {
- buffer.append( ", " );
- }
- buffer.append( ien.nextElement() );
- }
- headers.put( name, buffer.toString() );
- }
- logEntries.add( new LogEntry( req.getMethod(), req.getPathInfo(), Collections.unmodifiableMap( headers ) ) );
- }
-
- }
-
- private class RepoHandler
- extends AbstractHandler
- {
-
- private final Pattern SIMPLE_RANGE = Pattern.compile( "bytes=([0-9])+-" );
-
- public void handle( String target, Request req, HttpServletRequest request, HttpServletResponse response )
- throws IOException
- {
- String path = req.getPathInfo().substring( 1 );
-
- if ( !path.startsWith( "repo/" ) )
- {
- return;
- }
- req.setHandled( true );
-
- if ( ExpectContinue.FAIL.equals( expectContinue ) && request.getHeader( HttpHeaders.EXPECT ) != null )
- {
- response.setStatus( HttpServletResponse.SC_EXPECTATION_FAILED );
- return;
- }
-
- File file = new File( repoDir, path.substring( 5 ) );
- if ( HttpMethods.GET.equals( req.getMethod() ) || HttpMethods.HEAD.equals( req.getMethod() ) )
- {
- if ( !file.isFile() || path.endsWith( URIUtil.SLASH ) )
- {
- response.setStatus( HttpServletResponse.SC_NOT_FOUND );
- return;
- }
- long ifUnmodifiedSince = request.getDateHeader( HttpHeaders.IF_UNMODIFIED_SINCE );
- if ( ifUnmodifiedSince != -1 && file.lastModified() > ifUnmodifiedSince )
- {
- response.setStatus( HttpServletResponse.SC_PRECONDITION_FAILED );
- return;
- }
- long offset = 0;
- String range = request.getHeader( HttpHeaders.RANGE );
- if ( range != null && rangeSupport )
- {
- Matcher m = SIMPLE_RANGE.matcher( range );
- if ( m.matches() )
- {
- offset = Long.parseLong( m.group( 1 ) );
- if ( offset >= file.length() )
- {
- response.setStatus( HttpServletResponse.SC_REQUESTED_RANGE_NOT_SATISFIABLE );
- return;
- }
- }
- String encoding = request.getHeader( HttpHeaders.ACCEPT_ENCODING );
- if ( ( encoding != null && !"identity".equals( encoding ) ) || ifUnmodifiedSince == -1 )
- {
- response.setStatus( HttpServletResponse.SC_BAD_REQUEST );
- return;
- }
- }
- response.setStatus( ( offset > 0 ) ? HttpServletResponse.SC_PARTIAL_CONTENT : HttpServletResponse.SC_OK );
- response.setDateHeader( HttpHeaders.LAST_MODIFIED, file.lastModified() );
- response.setHeader( HttpHeaders.CONTENT_LENGTH, Long.toString( file.length() - offset ) );
- if ( offset > 0 )
- {
- response.setHeader( HttpHeaders.CONTENT_RANGE, "bytes " + offset + "-" + ( file.length() - 1 )
- + "/" + file.length() );
- }
- if ( checksumHeader != null )
- {
- Map<String, Object> checksums = ChecksumUtils.calc( file, Collections.singleton( "SHA-1" ) );
- switch ( checksumHeader )
- {
- case NEXUS:
- response.setHeader( HttpHeaders.ETAG, "{SHA1{" + checksums.get( "SHA-1" ) + "}}" );
- break;
- }
- }
- if ( HttpMethods.HEAD.equals( req.getMethod() ) )
- {
- return;
- }
- FileInputStream is = new FileInputStream( file );
- try
- {
- if ( offset > 0 )
- {
- long skipped = is.skip( offset );
- while ( skipped < offset && is.read() >= 0 )
- {
- skipped++;
- }
- }
- IO.copy( is, response.getOutputStream() );
- }
- finally
- {
- IO.close( is );
- }
- }
- else if ( HttpMethods.PUT.equals( req.getMethod() ) )
- {
- if ( !WebDav.REQUIRED.equals( webDav ) )
- {
- file.getParentFile().mkdirs();
- }
- if ( file.getParentFile().exists() )
- {
- try
- {
- FileOutputStream os = new FileOutputStream( file );
- try
- {
- IO.copy( request.getInputStream(), os );
- }
- finally
- {
- os.close();
- }
- }
- catch ( IOException e )
- {
- file.delete();
- throw e;
- }
- response.setStatus( HttpServletResponse.SC_NO_CONTENT );
- }
- else
- {
- response.setStatus( HttpServletResponse.SC_FORBIDDEN );
- }
- }
- else if ( HttpMethods.OPTIONS.equals( req.getMethod() ) )
- {
- if ( webDav != null )
- {
- response.setHeader( "DAV", "1,2" );
- }
- response.setHeader( HttpHeaders.ALLOW, "GET, PUT, HEAD, OPTIONS" );
- response.setStatus( HttpServletResponse.SC_OK );
- }
- else if ( webDav != null && "MKCOL".equals( req.getMethod() ) )
- {
- if ( file.exists() )
- {
- response.setStatus( HttpServletResponse.SC_METHOD_NOT_ALLOWED );
- }
- else if ( file.mkdir() )
- {
- response.setStatus( HttpServletResponse.SC_CREATED );
- }
- else
- {
- response.setStatus( HttpServletResponse.SC_CONFLICT );
- }
- }
- else
- {
- response.setStatus( HttpServletResponse.SC_METHOD_NOT_ALLOWED );
- }
- }
-
- }
-
- private class RedirectHandler
- extends AbstractHandler
- {
-
- public void handle( String target, Request req, HttpServletRequest request, HttpServletResponse response )
- throws IOException
- {
- String path = req.getPathInfo();
- if ( !path.startsWith( "/redirect/" ) )
- {
- return;
- }
- req.setHandled( true );
- StringBuilder location = new StringBuilder( 128 );
- String scheme = req.getParameter( "scheme" );
- String host = req.getParameter( "host" );
- String port = req.getParameter( "port" );
- location.append( scheme != null ? scheme : req.getScheme() );
- location.append( "://" );
- location.append( host != null ? host : req.getServerName() );
- location.append( ":" );
- if ( port != null )
- {
- location.append( port );
- }
- else if ( "http".equalsIgnoreCase( scheme ) )
- {
- location.append( getHttpPort() );
- }
- else if ( "https".equalsIgnoreCase( scheme ) )
- {
- location.append( getHttpsPort() );
- }
- else
- {
- location.append( req.getServerPort() );
- }
- location.append( "/repo" ).append( path.substring( 9 ) );
- response.setStatus( HttpServletResponse.SC_MOVED_PERMANENTLY );
- response.setHeader( HttpHeaders.LOCATION, location.toString() );
- }
-
- }
-
- private class AuthHandler
- extends AbstractHandler
- {
-
- public void handle( String target, Request req, HttpServletRequest request, HttpServletResponse response )
- throws IOException
- {
- if ( ExpectContinue.BROKEN.equals( expectContinue )
- && "100-continue".equalsIgnoreCase( request.getHeader( HttpHeaders.EXPECT ) ) )
- {
- request.getInputStream();
- }
-
- if ( username != null && password != null )
- {
- if ( checkBasicAuth( request.getHeader( HttpHeaders.AUTHORIZATION ), username, password ) )
- {
- return;
- }
- req.setHandled( true );
- response.setHeader( HttpHeaders.WWW_AUTHENTICATE, "basic realm=\"Test-Realm\"" );
- response.setStatus( HttpServletResponse.SC_UNAUTHORIZED );
- }
- }
-
- }
-
- private class ProxyAuthHandler
- extends AbstractHandler
- {
-
- public void handle( String target, Request req, HttpServletRequest request, HttpServletResponse response )
- throws IOException
- {
- if ( proxyUsername != null && proxyPassword != null )
- {
- if ( checkBasicAuth( request.getHeader( HttpHeaders.PROXY_AUTHORIZATION ), proxyUsername, proxyPassword ) )
- {
- return;
- }
- req.setHandled( true );
- response.setHeader( HttpHeaders.PROXY_AUTHENTICATE, "basic realm=\"Test-Realm\"" );
- response.setStatus( HttpServletResponse.SC_PROXY_AUTHENTICATION_REQUIRED );
- }
- }
-
- }
-
- boolean checkBasicAuth( String credentials, String username, String password )
- {
- if ( credentials != null )
- {
- int space = credentials.indexOf( ' ' );
- if ( space > 0 )
- {
- String method = credentials.substring( 0, space );
- if ( "basic".equalsIgnoreCase( method ) )
- {
- credentials = credentials.substring( space + 1 );
- try
- {
- credentials = B64Code.decode( credentials, credentialEncoding );
- }
- catch ( UnsupportedEncodingException e )
- {
- throw new IllegalStateException( e );
- }
- int i = credentials.indexOf( ':' );
- if ( i > 0 )
- {
- String user = credentials.substring( 0, i );
- String pass = credentials.substring( i + 1 );
- if ( username.equals( user ) && password.equals( pass ) )
- {
- return true;
- }
- }
- }
- }
- }
- return false;
- }
-
-}
[26/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_151_3.7.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_151_3.7.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_151_3.7.1-SNAPSHOT.ini
deleted file mode 100644
index ccd5f42..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_151_3.7.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_153_1.1.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_153_1.1.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_153_1.1.1-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_153_1.1.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_154_3.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_154_3.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_154_3.3-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_154_3.3-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_157_0.0.356_sap.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_157_0.0.356_sap.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_157_0.0.356_sap.1-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_157_0.0.356_sap.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_158_3.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_158_3.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_158_3.5-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_158_3.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_159_2.1_03-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_159_2.1_03-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_159_2.1_03-SNAPSHOT.ini
deleted file mode 100644
index cff07d1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_159_2.1_03-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_15_1.36.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_15_1.36.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_15_1.36.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_15_1.36.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_11.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_11.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_11.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_11.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_7.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_7.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_7.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_7.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_7.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_7.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_7.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_7.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_9.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_9.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_9.3-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_165_9.3-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_166_720-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_166_720-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_166_720-SNAPSHOT.ini
deleted file mode 100644
index f2d19b9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_166_720-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_168_6.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_168_6.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_168_6.0-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_168_6.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_169_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_169_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_169_4.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_169_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_16_1.8.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_16_1.8.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_16_1.8.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_16_1.8.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_170_10.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_170_10.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_170_10.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_170_10.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_171_8.45-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_171_8.45-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_171_8.45-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_171_8.45-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_171_8.46-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_171_8.46-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_171_8.46-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_171_8.46-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_17_1.2.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_17_1.2.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_17_1.2.3-SNAPSHOT.ini
deleted file mode 100644
index 8f93c82..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_17_1.2.3-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_181_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_181_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_181_1.0-SNAPSHOT.ini
deleted file mode 100644
index 5185fdb..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_181_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:182:pom:3.2-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_182_3.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_182_3.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_182_3.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_182_3.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_183_0.9-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_183_0.9-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_183_0.9-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_183_0.9-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_184_20080807-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_184_20080807-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_184_20080807-SNAPSHOT.ini
deleted file mode 100644
index 05b1294..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_184_20080807-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_185_1.0_sap.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_185_1.0_sap.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_185_1.0_sap.1-SNAPSHOT.ini
deleted file mode 100644
index b9f2329..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_185_1.0_sap.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,15 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:140:pom:5.5.28-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_185_1.0_sap.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_185_1.0_sap.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_185_1.0_sap.2-SNAPSHOT.ini
deleted file mode 100644
index 58c3546..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_185_1.0_sap.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,15 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:140:pom:5.5.28-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_186_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_186_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_186_4.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_186_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_187_4.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_187_4.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_187_4.3-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_187_4.3-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_188_1.9-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_188_1.9-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_188_1.9-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_188_1.9-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_18_5.1.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_18_5.1.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_18_5.1.1-SNAPSHOT.ini
deleted file mode 100644
index 0e6ed3a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_18_5.1.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_18_5.1.1.41-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_18_5.1.1.41-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_18_5.1.1.41-SNAPSHOT.ini
deleted file mode 100644
index 0e6ed3a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_18_5.1.1.41-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_190_2.0.8-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_190_2.0.8-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_190_2.0.8-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_190_2.0.8-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_191_3.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_191_3.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_191_3.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_191_3.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_192_1.8.0.7-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_192_1.8.0.7-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_192_1.8.0.7-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_192_1.8.0.7-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_193_0.8.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_193_0.8.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_193_0.8.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_193_0.8.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_194_2.3.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_194_2.3.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_194_2.3.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_194_2.3.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_195_3.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_195_3.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_195_3.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_195_3.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_196_1.2.12-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_196_1.2.12-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_196_1.2.12-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_196_1.2.12-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_197_5.1.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_197_5.1.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_197_5.1.3-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_197_5.1.3-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_198_9.1.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_198_9.1.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_198_9.1.3-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_198_9.1.3-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_199_2.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_199_2.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_199_2.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_199_2.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_19_6.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_19_6.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_19_6.3-SNAPSHOT.ini
deleted file mode 100644
index fd9cb65..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_19_6.3-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_200_3.1.12-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_200_3.1.12-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_200_3.1.12-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_200_3.1.12-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_200_5.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_200_5.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_200_5.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_200_5.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_201_3.5.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_201_3.5.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_201_3.5.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_201_3.5.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_204_1.6.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_204_1.6.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_204_1.6.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_204_1.6.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_208_10.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_208_10.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_208_10.0-SNAPSHOT.ini
deleted file mode 100644
index f334a37..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_208_10.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_209_3.51-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_209_3.51-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_209_3.51-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_209_3.51-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_20_3.3.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_20_3.3.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_20_3.3.2-SNAPSHOT.ini
deleted file mode 100644
index 7ee3cc0..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_20_3.3.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_211_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_211_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_211_1.0-SNAPSHOT.ini
deleted file mode 100644
index c0a2de3..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_211_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_217_1.0_sap.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_217_1.0_sap.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_217_1.0_sap.1-SNAPSHOT.ini
deleted file mode 100644
index 056fb8a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_217_1.0_sap.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_218_2.2.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_218_2.2.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_218_2.2.1-SNAPSHOT.ini
deleted file mode 100644
index 62af74c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_218_2.2.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:68:pom:3.8.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_219_2.3.4-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_219_2.3.4-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_219_2.3.4-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_219_2.3.4-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_21_3.2.1.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_21_3.2.1.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_21_3.2.1.2-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_21_3.2.1.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_221_8.9-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_221_8.9-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_221_8.9-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_221_8.9-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_222_1.1.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_222_1.1.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_222_1.1.1-SNAPSHOT.ini
deleted file mode 100644
index 45e08ca..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_222_1.1.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:5:pom:1.6-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_222_beta8-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_222_beta8-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_222_beta8-SNAPSHOT.ini
deleted file mode 100644
index 45e08ca..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_222_beta8-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:5:pom:1.6-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_223_7.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_223_7.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_223_7.5-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_223_7.5-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_227_7.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_227_7.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_227_7.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_227_7.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_234_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_234_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_234_1.0-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_234_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_239_3.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_239_3.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_239_3.0-SNAPSHOT.ini
deleted file mode 100644
index c151d03..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_239_3.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_23_1.2.6_sap.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_23_1.2.6_sap.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_23_1.2.6_sap.1-SNAPSHOT.ini
deleted file mode 100644
index 76cd884..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_23_1.2.6_sap.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_240_720-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_240_720-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_240_720-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_240_720-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_244_1.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_244_1.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_244_1.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_244_1.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_245_1.0.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_245_1.0.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_245_1.0.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_245_1.0.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_248_5.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_248_5.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_248_5.5-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_248_5.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_249_9.2.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_249_9.2.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_249_9.2.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_249_9.2.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_24_1.2.10-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_24_1.2.10-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_24_1.2.10-SNAPSHOT.ini
deleted file mode 100644
index c0c19c1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_24_1.2.10-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_250_1.0_sap.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_250_1.0_sap.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_250_1.0_sap.1-SNAPSHOT.ini
deleted file mode 100644
index b2947dd..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_250_1.0_sap.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_253_1.3.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_253_1.3.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_253_1.3.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_253_1.3.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_256_3.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_256_3.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_256_3.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_256_3.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_259_2.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_259_2.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_259_2.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_259_2.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_25_0.86-beta1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_25_0.86-beta1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_25_0.86-beta1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_25_0.86-beta1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_260_2.2.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_260_2.2.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_260_2.2.5-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_260_2.2.5-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_260_2.3.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_260_2.3.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_260_2.3.3-SNAPSHOT.ini
deleted file mode 100644
index c22cffc..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_260_2.3.3-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_264_6.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_264_6.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_264_6.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_264_6.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_267_3.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_267_3.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_267_3.0-SNAPSHOT.ini
deleted file mode 100644
index 003ec27..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_267_3.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_3.0.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_3.0.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_3.0.1-SNAPSHOT.ini
deleted file mode 100644
index 8cd878a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_3.0.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:17:pom:1.2.3-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_3.8.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_3.8.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_3.8.1-SNAPSHOT.ini
deleted file mode 100644
index 24e6ee2..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_3.8.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:26:pom:3.0.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_4.2.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_4.2.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_4.2.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_26_4.2.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_270_1.6.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_270_1.6.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_270_1.6.5-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_270_1.6.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_273_1.0.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_273_1.0.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_273_1.0.3-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_273_1.0.3-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_274_1.0.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_274_1.0.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_274_1.0.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_274_1.0.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_278_1.8.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_278_1.8.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_278_1.8.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_278_1.8.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_27_6.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_27_6.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_27_6.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_27_6.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_282_2.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_282_2.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_282_2.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_282_2.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_283_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_283_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_283_1.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_283_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_287_1.1.2.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_287_1.1.2.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_287_1.1.2.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_287_1.1.2.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_287_1.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_287_1.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_287_1.3-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_287_1.3-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_289_2.2.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_289_2.2.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_289_2.2.0-SNAPSHOT.ini
deleted file mode 100644
index 778341f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_289_2.2.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_28_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_28_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_28_4.1-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_28_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_290_8.0.2.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_290_8.0.2.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_290_8.0.2.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_290_8.0.2.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_293_0.2.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_293_0.2.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_293_0.2.5-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_293_0.2.5-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_296_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_296_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_296_1.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_296_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_299_7.20-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_299_7.20-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_299_7.20-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_299_7.20-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_29_3.0.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_29_3.0.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_29_3.0.5-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_29_3.0.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_2_5.50-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_2_5.50-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_2_5.50-SNAPSHOT.ini
deleted file mode 100644
index 5da39fa..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_2_5.50-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:3:pom:1.28-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_300_7.1.8-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_300_7.1.8-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_300_7.1.8-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_300_7.1.8-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_302_1.015-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_302_1.015-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_302_1.015-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_302_1.015-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_304_9.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_304_9.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_304_9.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_304_9.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_308_1.8-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_308_1.8-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_308_1.8-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_308_1.8-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_309_1.15.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_309_1.15.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_309_1.15.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_309_1.15.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_30_0.7.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_30_0.7.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_30_0.7.0-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_30_0.7.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_310_4.2.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_310_4.2.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_310_4.2.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_310_4.2.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_311_2.3.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_311_2.3.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_311_2.3.0-SNAPSHOT.ini
deleted file mode 100644
index 003ec27..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_311_2.3.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_312_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_312_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_312_4.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_312_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_313_2.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_313_2.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_313_2.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_313_2.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_314_6.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_314_6.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_314_6.0-SNAPSHOT.ini
deleted file mode 100644
index 056fb8a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_314_6.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_31_2.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_31_2.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_31_2.2-SNAPSHOT.ini
deleted file mode 100644
index 7efd19e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_31_2.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_323_11.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_323_11.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_323_11.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_323_11.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_324_5.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_324_5.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_324_5.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_324_5.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_326_0.9.7-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_326_0.9.7-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_326_0.9.7-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_326_0.9.7-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_32_720-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_32_720-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_32_720-SNAPSHOT.ini
deleted file mode 100644
index b266200..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_32_720-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_338_2.8-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_338_2.8-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_338_2.8-SNAPSHOT.ini
deleted file mode 100644
index ae14f69..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_338_2.8-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_338_3.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_338_3.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_338_3.0-SNAPSHOT.ini
deleted file mode 100644
index 685c7b4..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_338_3.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_339_8.0.1p5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_339_8.0.1p5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_339_8.0.1p5-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_339_8.0.1p5-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_33_711-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_33_711-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_33_711-SNAPSHOT.ini
deleted file mode 100644
index 003ec27..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_33_711-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_340_2.11-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_340_2.11-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_340_2.11-SNAPSHOT.ini
deleted file mode 100644
index ae14f69..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_340_2.11-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_340_2.9-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_340_2.9-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_340_2.9-SNAPSHOT.ini
deleted file mode 100644
index ae14f69..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_340_2.9-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_341_0.9-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_341_0.9-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_341_0.9-SNAPSHOT.ini
deleted file mode 100644
index ae14f69..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_341_0.9-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_341_1.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_341_1.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_341_1.3-SNAPSHOT.ini
deleted file mode 100644
index ae14f69..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_341_1.3-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_342_1.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_342_1.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_342_1.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_342_1.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_344_1.6.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_344_1.6.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_344_1.6.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_344_1.6.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_348_3.8.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_348_3.8.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_348_3.8.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_348_3.8.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_34_1.13-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_34_1.13-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_34_1.13-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_34_1.13-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_352_6.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_352_6.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_352_6.1-SNAPSHOT.ini
deleted file mode 100644
index 45e08ca..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_352_6.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:5:pom:1.6-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_353_1.2.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_353_1.2.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_353_1.2.3-SNAPSHOT.ini
deleted file mode 100644
index cff07d1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_353_1.2.3-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_354_1.6.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_354_1.6.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_354_1.6.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_354_1.6.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_355_3.0.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_355_3.0.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_355_3.0.5-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_355_3.0.5-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_358_1.1.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_358_1.1.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_358_1.1.2-SNAPSHOT.ini
deleted file mode 100644
index 0b6a100..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_358_1.1.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_35_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_35_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_35_1.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_35_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_365_3.4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_365_3.4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_365_3.4.1-SNAPSHOT.ini
deleted file mode 100644
index 8df1fc0..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_365_3.4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_367_8.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_367_8.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_367_8.0-SNAPSHOT.ini
deleted file mode 100644
index f2d19b9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_367_8.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_368_4.7.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_368_4.7.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_368_4.7.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_368_4.7.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_369_2.4.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_369_2.4.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_369_2.4.5-SNAPSHOT.ini
deleted file mode 100644
index eba920b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_369_2.4.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:368:pom:4.7.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_36_2.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_36_2.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_36_2.0-SNAPSHOT.ini
deleted file mode 100644
index 0e6ed3a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_36_2.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_370_6.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_370_6.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_370_6.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_370_6.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_371_822-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_371_822-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_371_822-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_371_822-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_37_5.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_37_5.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_37_5.5-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_37_5.5-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
[30/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_141_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_141_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_141_4.0-SNAPSHOT.ini
deleted file mode 100644
index 9cac870..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_141_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,32 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:16:pom:1.8.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:142:pom:9.1-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:143:pom:6.0-SNAPSHOT
-1:109:pom:6.0.5-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:138:pom:7.7.06-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:103:pom:6403-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:41:pom:5.0-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:144:pom:15.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:150:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_141_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_141_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_141_4.1-SNAPSHOT.ini
deleted file mode 100644
index c2bbe43..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_141_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,32 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:16:pom:1.8.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:142:pom:9.1-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:143:pom:6.0-SNAPSHOT
-1:109:pom:6.0.5-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:138:pom:7.7.06-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:103:pom:6403-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:41:pom:5.0-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:144:pom:15.0-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:150:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_145_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_145_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_145_4.0-SNAPSHOT.ini
deleted file mode 100644
index 8a533b1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_145_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,19 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:109:pom:6.0.5-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_145_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_145_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_145_4.1-SNAPSHOT.ini
deleted file mode 100644
index 0c746dc..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_145_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,19 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:109:pom:6.0.5-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_146_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_146_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_146_4.0-SNAPSHOT.ini
deleted file mode 100644
index b8eb5de..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_146_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[dependencies]
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_146_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_146_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_146_4.1-SNAPSHOT.ini
deleted file mode 100644
index 0214124..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_146_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[dependencies]
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_147_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_147_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_147_4.0-SNAPSHOT.ini
deleted file mode 100644
index e99272d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_147_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,22 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:16:pom:1.8.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:144:pom:15.0-SNAPSHOT
-1:116:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_147_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_147_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_147_4.1-SNAPSHOT.ini
deleted file mode 100644
index 66c8cf1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_147_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,22 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:16:pom:1.8.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:144:pom:15.0-SNAPSHOT
-1:116:pom:4.0-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_148_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_148_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_148_4.0-SNAPSHOT.ini
deleted file mode 100644
index ad21c3f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_148_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-10:11:pom:4.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:119:pom:1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_148_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_148_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_148_4.1-SNAPSHOT.ini
deleted file mode 100644
index 02ac765..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_148_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-10:11:pom:4.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:119:pom:1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_149_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_149_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_149_4.0-SNAPSHOT.ini
deleted file mode 100644
index 56d68df..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_149_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,22 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:109:pom:6.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_149_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_149_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_149_4.1-SNAPSHOT.ini
deleted file mode 100644
index 821ee3a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_149_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,22 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:109:pom:6.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_150_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_150_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_150_4.0-SNAPSHOT.ini
deleted file mode 100644
index 5c3f4f3..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_150_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,46 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:83:pom:1.10.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:49:pom:6.0.5.25-SNAPSHOT
-1:16:pom:1.8.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:52:pom:1.8-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:35:pom:1.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:41:pom:5.0-SNAPSHOT
-1:151:pom:3.7.1-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:156:pom:4.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:160:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:162:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_150_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_150_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_150_4.1-SNAPSHOT.ini
deleted file mode 100644
index dd9141e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_150_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,45 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:83:pom:1.10.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:49:pom:6.0.5.25-SNAPSHOT
-1:16:pom:1.8.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:35:pom:1.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:41:pom:5.0-SNAPSHOT
-1:151:pom:3.7.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:156:pom:4.1-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
-10:12:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:162:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_152_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_152_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_152_4.0-SNAPSHOT.ini
deleted file mode 100644
index 2fa7c3b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_152_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,32 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:52:pom:1.8-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:155:pom:4.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:160:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
-1:158:pom:3.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_152_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_152_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_152_4.1-SNAPSHOT.ini
deleted file mode 100644
index 945ce3a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_152_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,34 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:357:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:155:pom:4.1-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
-1:158:pom:3.5-SNAPSHOT
-10:363:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_155_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_155_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_155_4.0-SNAPSHOT.ini
deleted file mode 100644
index 3861a88..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_155_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:156:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_155_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_155_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_155_4.1-SNAPSHOT.ini
deleted file mode 100644
index eb76665..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_155_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:156:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_156_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_156_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_156_4.0-SNAPSHOT.ini
deleted file mode 100644
index 66fdca2..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_156_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,35 +0,0 @@
-[dependencies]
-1:30:pom:0.7.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:157:pom:0.0.356_sap.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:158:pom:3.5-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:52:pom:1.8-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
-1:159:pom:2.1_03-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:160:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_156_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_156_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_156_4.1-SNAPSHOT.ini
deleted file mode 100644
index a728a51..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_156_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,34 +0,0 @@
-[dependencies]
-1:30:pom:0.7.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:157:pom:0.0.356_sap.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:158:pom:3.5-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
-1:159:pom:2.1_03-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_160_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_160_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_160_4.0-SNAPSHOT.ini
deleted file mode 100644
index 00a6c60..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_160_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_160_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_160_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_160_4.1-SNAPSHOT.ini
deleted file mode 100644
index 00a6c60..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_160_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_161_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_161_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_161_4.0-SNAPSHOT.ini
deleted file mode 100644
index 09ddcca..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_161_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,14 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:52:pom:1.8-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:160:pom:4.0-SNAPSHOT
-10:162:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_161_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_161_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_161_4.1-SNAPSHOT.ini
deleted file mode 100644
index 8b428a0..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_161_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-10:162:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_162_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_162_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_162_4.0-SNAPSHOT.ini
deleted file mode 100644
index 3c2ea75..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_162_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_162_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_162_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_162_4.1-SNAPSHOT.ini
deleted file mode 100644
index 711a9ef..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_162_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_163_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_163_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_163_4.0-SNAPSHOT.ini
deleted file mode 100644
index 19ce732..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_163_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-1:8:pom:2.1.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:93:pom:10.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:101:pom:1.0_sap.1-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_163_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_163_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_163_4.1-SNAPSHOT.ini
deleted file mode 100644
index dbd663e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_163_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-1:8:pom:2.1.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:93:pom:10.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:101:pom:1.0_sap.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_164_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_164_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_164_4.0-SNAPSHOT.ini
deleted file mode 100644
index 9974406..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_164_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,24 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:165:pom:11.1-SNAPSHOT
-1:165:pom:7.0-SNAPSHOT
-1:165:pom:7.1-SNAPSHOT
-1:165:pom:9.3-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:166:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:103:pom:6403-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:167:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_164_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_164_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_164_4.1-SNAPSHOT.ini
deleted file mode 100644
index 2bdaa0d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_164_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,24 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:165:pom:11.1-SNAPSHOT
-1:165:pom:7.0-SNAPSHOT
-1:165:pom:7.1-SNAPSHOT
-1:165:pom:9.3-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:166:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:103:pom:6403-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:167:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_167_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_167_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_167_4.0-SNAPSHOT.ini
deleted file mode 100644
index 2f03ade..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_167_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,69 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:63:pom:1.1-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:66:pom:0.11-SNAPSHOT
-1:168:pom:6.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:169:pom:4.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:142:pom:9.1-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:94:pom:6.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:170:pom:10.0-SNAPSHOT
-1:95:pom:7.0-SNAPSHOT
-1:97:pom:3.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:10.1.0-SNAPSHOT
-1:69:pom:11.1.0-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:69:pom:9.0.1-SNAPSHOT
-1:171:pom:8.45-SNAPSHOT
-1:171:pom:8.46-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:100:pom:4.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:70:pom:9.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:103:pom:6403-SNAPSHOT
-1:104:pom:70-SNAPSHOT
-1:105:pom:70-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:89:pom:2.3-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:172:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:163:pom:4.0-SNAPSHOT
-10:246:pom:4.0-SNAPSHOT
-10:225:pom:4.0-SNAPSHOT
-10:224:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:266:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_167_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_167_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_167_4.1-SNAPSHOT.ini
deleted file mode 100644
index 8a14bee..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_167_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,69 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:63:pom:1.1-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:66:pom:0.11-SNAPSHOT
-1:168:pom:6.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:169:pom:4.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:142:pom:9.1-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:94:pom:6.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:170:pom:10.0-SNAPSHOT
-1:95:pom:7.0-SNAPSHOT
-1:97:pom:3.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:10.1.0-SNAPSHOT
-1:69:pom:11.1.0-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:69:pom:9.0.1-SNAPSHOT
-1:171:pom:8.45-SNAPSHOT
-1:171:pom:8.46-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:100:pom:4.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:70:pom:9.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:103:pom:6403-SNAPSHOT
-1:104:pom:70-SNAPSHOT
-1:105:pom:70-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:89:pom:2.3-SNAPSHOT
-10:359:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:172:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:163:pom:4.1-SNAPSHOT
-10:246:pom:4.1-SNAPSHOT
-10:225:pom:4.1-SNAPSHOT
-10:224:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:266:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_172_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_172_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_172_4.0-SNAPSHOT.ini
deleted file mode 100644
index 77aefdc..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_172_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,45 +0,0 @@
-[dependencies]
-10:173:pom:4.0-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:174:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:164:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:3:pom:1.28-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:143:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:39:pom:0.9.8l-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:119:pom:1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_172_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_172_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_172_4.1-SNAPSHOT.ini
deleted file mode 100644
index 4d7161e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_172_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,46 +0,0 @@
-[dependencies]
-10:173:pom:4.1-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:164:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:357:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:3:pom:1.28-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:143:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:39:pom:0.9.8l-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:119:pom:1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_173_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_173_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_173_4.0-SNAPSHOT.ini
deleted file mode 100644
index f3fbfc4..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_173_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_173_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_173_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_173_4.1-SNAPSHOT.ini
deleted file mode 100644
index f3fbfc4..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_173_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_174_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_174_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_174_4.0-SNAPSHOT.ini
deleted file mode 100644
index f8b9876..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_174_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,81 +0,0 @@
-[dependencies]
-1:30:pom:0.7.0-SNAPSHOT
-10:175:pom:2.0-SNAPSHOT
-10:173:pom:4.0-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:189:pom:4.0-SNAPSHOT
-10:202:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:172:pom:4.0-SNAPSHOT
-10:203:pom:4.0-SNAPSHOT
-10:176:pom:4.0-SNAPSHOT
-10:177:pom:4.0-SNAPSHOT
-10:345:pom:4.0-SNAPSHOT
-10:178:pom:4.0-SNAPSHOT
-10:179:pom:4.0-SNAPSHOT
-10:346:pom:4.0-SNAPSHOT
-10:347:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:257:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-1:123:pom:3.1.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:348:pom:3.8.0-SNAPSHOT
-1:195:pom:3.2-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:84:pom:2.2.0036-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:188:pom:1.9-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-1:342:pom:1.2-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:318:pom:4.0-SNAPSHOT
-10:320:pom:4.0-SNAPSHOT
-10:319:pom:4.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-1:201:pom:3.5.2-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_174_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_174_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_174_4.1-SNAPSHOT.ini
deleted file mode 100644
index 36fcb41..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_174_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,86 +0,0 @@
-[dependencies]
-1:30:pom:0.7.0-SNAPSHOT
-10:175:pom:2.1-SNAPSHOT
-10:173:pom:4.1-SNAPSHOT
-10:360:pom:1.0-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:359:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:189:pom:4.1-SNAPSHOT
-10:202:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:172:pom:4.1-SNAPSHOT
-10:203:pom:4.1-SNAPSHOT
-10:176:pom:4.1-SNAPSHOT
-10:177:pom:4.1-SNAPSHOT
-10:345:pom:4.1-SNAPSHOT
-10:178:pom:4.1-SNAPSHOT
-10:179:pom:4.1-SNAPSHOT
-10:346:pom:4.1-SNAPSHOT
-10:347:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:257:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:357:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-1:123:pom:3.1.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:348:pom:3.8.0-SNAPSHOT
-1:370:pom:6.0-SNAPSHOT
-1:195:pom:3.2-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:84:pom:2.2.0036-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:188:pom:1.9-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-1:342:pom:1.2-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:318:pom:4.1-SNAPSHOT
-10:320:pom:4.1-SNAPSHOT
-10:319:pom:4.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-1:201:pom:3.5.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_175_2.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_175_2.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_175_2.0-SNAPSHOT.ini
deleted file mode 100644
index 934a1f6..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_175_2.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,23 +0,0 @@
-[dependencies]
-10:11:pom:4.0-SNAPSHOT
-10:176:pom:4.0-SNAPSHOT
-10:177:pom:4.0-SNAPSHOT
-10:178:pom:4.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:75:pom:25-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:47:pom:2.9.1-SNAPSHOT
-1:74:pom:3.5.0-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:55:pom:3.8.1-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_175_2.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_175_2.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_175_2.1-SNAPSHOT.ini
deleted file mode 100644
index 3fa5750..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_175_2.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[dependencies]
-10:11:pom:4.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:47:pom:2.9.1-SNAPSHOT
-1:74:pom:3.5.0-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:55:pom:3.8.1-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_176_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_176_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_176_4.0-SNAPSHOT.ini
deleted file mode 100644
index 0ad7148..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_176_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:177:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_176_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_176_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_176_4.1-SNAPSHOT.ini
deleted file mode 100644
index 9fb6281..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_176_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:177:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_177_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_177_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_177_4.0-SNAPSHOT.ini
deleted file mode 100644
index be70db4..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_177_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_177_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_177_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_177_4.1-SNAPSHOT.ini
deleted file mode 100644
index 2791c06..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_177_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_178_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_178_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_178_4.0-SNAPSHOT.ini
deleted file mode 100644
index 1d22cc9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_178_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,15 +0,0 @@
-[dependencies]
-1:123:pom:3.1.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:177:pom:4.0-SNAPSHOT
-10:179:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_178_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_178_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_178_4.1-SNAPSHOT.ini
deleted file mode 100644
index fe5c632..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_178_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,15 +0,0 @@
-[dependencies]
-1:123:pom:3.1.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:177:pom:4.1-SNAPSHOT
-10:179:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_179_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_179_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_179_4.0-SNAPSHOT.ini
deleted file mode 100644
index f848575..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_179_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-1:123:pom:3.1.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_179_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_179_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_179_4.1-SNAPSHOT.ini
deleted file mode 100644
index 21487ce..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_179_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-1:123:pom:3.1.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_180_3.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_180_3.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_180_3.1-SNAPSHOT.ini
deleted file mode 100644
index 3054e90..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_180_3.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,30 +0,0 @@
-[dependencies]
-1:181:pom:1.0-SNAPSHOT
-1:182:pom:3.2-SNAPSHOT
-1:183:pom:0.9-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:186:pom:4.1-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:187:pom:4.3-SNAPSHOT
-1:188:pom:1.9-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:120:pom:1.0-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_180_3.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_180_3.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_180_3.2-SNAPSHOT.ini
deleted file mode 100644
index 0a52122..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_180_3.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-[dependencies]
-1:181:pom:1.0-SNAPSHOT
-1:182:pom:3.2-SNAPSHOT
-1:183:pom:0.9-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:73:pom:2.4.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:186:pom:4.1-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:187:pom:4.3-SNAPSHOT
-1:188:pom:1.9-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:120:pom:1.0-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_189_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_189_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_189_4.0-SNAPSHOT.ini
deleted file mode 100644
index 8b9b40c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_189_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,44 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:190:pom:2.0.8-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:191:pom:3.2-SNAPSHOT
-1:192:pom:1.8.0.7-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:193:pom:0.8.1-SNAPSHOT
-1:194:pom:2.3.0-SNAPSHOT
-1:195:pom:3.2-SNAPSHOT
-1:196:pom:1.2.12-SNAPSHOT
-1:197:pom:5.1.3-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:84:pom:2.2.0036-SNAPSHOT
-1:56:pom:1.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:10.1.0-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:69:pom:9.0.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:198:pom:9.1.3-SNAPSHOT
-1:199:pom:2.2-SNAPSHOT
-1:187:pom:4.3-SNAPSHOT
-1:89:pom:2.3-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:200:pom:3.1.12-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:201:pom:3.5.2-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_189_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_189_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_189_4.1-SNAPSHOT.ini
deleted file mode 100644
index 1cac10a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_189_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,46 +0,0 @@
-[dependencies]
-1:123:pom:3.1.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:190:pom:2.0.8-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:191:pom:3.2-SNAPSHOT
-1:192:pom:1.8.0.7-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:193:pom:0.8.1-SNAPSHOT
-1:194:pom:2.3.0-SNAPSHOT
-1:195:pom:3.2-SNAPSHOT
-1:196:pom:1.2.12-SNAPSHOT
-1:197:pom:5.1.3-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:84:pom:2.2.0036-SNAPSHOT
-1:56:pom:1.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:10.1.0-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:69:pom:9.0.1-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:198:pom:9.1.3-SNAPSHOT
-1:199:pom:2.2-SNAPSHOT
-1:187:pom:4.3-SNAPSHOT
-1:89:pom:2.3-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:200:pom:3.1.12-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:201:pom:3.5.2-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_202_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_202_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_202_4.0-SNAPSHOT.ini
deleted file mode 100644
index 1329b77..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_202_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:189:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:156:pom:4.0-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_202_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_202_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_202_4.1-SNAPSHOT.ini
deleted file mode 100644
index e5c28b1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_202_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,29 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:359:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:189:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:156:pom:4.1-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_203_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_203_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_203_4.0-SNAPSHOT.ini
deleted file mode 100644
index 3a7a786..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_203_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,27 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:204:pom:1.6.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.2.12-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:275:pom:4.0-SNAPSHOT
-10:276:pom:4.0-SNAPSHOT
-10:177:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:284:pom:2.0-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_203_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_203_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_203_4.1-SNAPSHOT.ini
deleted file mode 100644
index 45824de..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_203_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,27 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:204:pom:1.6.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.2.12-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:275:pom:4.1-SNAPSHOT
-10:276:pom:4.1-SNAPSHOT
-10:177:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:284:pom:2.1-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_205_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_205_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_205_4.0-SNAPSHOT.ini
deleted file mode 100644
index 636848a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_205_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,99 +0,0 @@
-[dependencies]
-10:121:pom:3.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:174:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:172:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:206:pom:4.0-SNAPSHOT
-10:216:pom:4.0-SNAPSHOT
-10:220:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:231:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:156:pom:4.0-SNAPSHOT
-10:235:pom:4.0-SNAPSHOT
-10:261:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:238:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:257:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:287:pom:1.1.2.1-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:87:pom:6b-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:222:pom:beta8-SNAPSHOT
-1:197:pom:5.1.3-SNAPSHOT
-1:338:pom:2.8-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:143:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:339:pom:8.0.1p5-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:112:pom:1.0.30-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:283:pom:1.0-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:340:pom:2.9-SNAPSHOT
-1:341:pom:0.9-SNAPSHOT
-1:114:pom:2.50.28_sap.1-SNAPSHOT
-1:120:pom:1.0-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-1:342:pom:1.2-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:343:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
-1:24:pom:1.2.10-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:240:pom:720-SNAPSHOT
-10:320:pom:4.0-SNAPSHOT
-10:318:pom:4.0-SNAPSHOT
-10:319:pom:4.0-SNAPSHOT
-10:305:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
-1:24:pom:1.2.10-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-1:151:pom:3.7.1-SNAPSHOT
-1:344:pom:1.6.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_205_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_205_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_205_4.1-SNAPSHOT.ini
deleted file mode 100644
index f18be4d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_205_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,104 +0,0 @@
-[dependencies]
-10:121:pom:3.1-SNAPSHOT
-10:359:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:172:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:206:pom:4.1-SNAPSHOT
-10:216:pom:4.1-SNAPSHOT
-10:220:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:231:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:156:pom:4.1-SNAPSHOT
-10:235:pom:4.1-SNAPSHOT
-10:261:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:238:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:257:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:357:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:287:pom:1.1.2.1-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:87:pom:6b-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:222:pom:beta8-SNAPSHOT
-1:197:pom:5.1.3-SNAPSHOT
-1:338:pom:3.0-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:143:pom:6.0-SNAPSHOT
-1:368:pom:4.7.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:339:pom:8.0.1p5-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
-1:369:pom:2.4.5-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:112:pom:1.0.30-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:283:pom:1.0-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:340:pom:2.11-SNAPSHOT
-1:341:pom:1.3-SNAPSHOT
-1:114:pom:2.50.28_sap.1-SNAPSHOT
-1:120:pom:1.0-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-1:342:pom:1.2-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:343:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
-1:24:pom:1.2.10-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:240:pom:720-SNAPSHOT
-10:320:pom:4.1-SNAPSHOT
-10:318:pom:4.1-SNAPSHOT
-10:319:pom:4.1-SNAPSHOT
-10:305:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
-1:24:pom:1.2.10-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
-1:151:pom:3.7.1-SNAPSHOT
-1:344:pom:1.6.0-SNAPSHOT
-1:260:pom:2.3.3-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_206_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_206_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_206_4.0-SNAPSHOT.ini
deleted file mode 100644
index 8860f27..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_206_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[dependencies]
-1:24:pom:1.2.10-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:207:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:214:pom:4.0-SNAPSHOT
-10:215:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_206_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_206_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_206_4.1-SNAPSHOT.ini
deleted file mode 100644
index 0056481..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_206_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[dependencies]
-1:24:pom:1.2.10-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:207:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:214:pom:4.1-SNAPSHOT
-10:215:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_207_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_207_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_207_4.0-SNAPSHOT.ini
deleted file mode 100644
index 34d148b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_207_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,29 +0,0 @@
-[dependencies]
-1:24:pom:1.2.10-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:208:pom:10.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:93:pom:10.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:95:pom:7.1-SNAPSHOT
-1:95:pom:8.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:209:pom:3.51-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:210:pom:4.0-SNAPSHOT
-10:213:pom:4.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_207_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_207_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_207_4.1-SNAPSHOT.ini
deleted file mode 100644
index 913795c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_207_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,29 +0,0 @@
-[dependencies]
-1:24:pom:1.2.10-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:208:pom:10.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:93:pom:10.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:95:pom:7.1-SNAPSHOT
-1:95:pom:8.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:209:pom:3.51-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:210:pom:4.1-SNAPSHOT
-10:213:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_210_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_210_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_210_4.0-SNAPSHOT.ini
deleted file mode 100644
index c846c48..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_210_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:211:pom:1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_210_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_210_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_210_4.1-SNAPSHOT.ini
deleted file mode 100644
index 4498c9a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_210_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:211:pom:1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_212_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_212_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_212_4.0-SNAPSHOT.ini
deleted file mode 100644
index 927422d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_212_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-1:24:pom:1.2.10-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:211:pom:1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_212_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_212_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_212_4.1-SNAPSHOT.ini
deleted file mode 100644
index fd2d466..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_212_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-1:24:pom:1.2.10-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:211:pom:1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_213_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_213_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_213_4.0-SNAPSHOT.ini
deleted file mode 100644
index 5e1bbff..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_213_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:210:pom:4.0-SNAPSHOT
-10:207:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_213_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_213_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_213_4.1-SNAPSHOT.ini
deleted file mode 100644
index 716cc85..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_213_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:210:pom:4.1-SNAPSHOT
-10:207:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_214_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_214_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_214_4.0-SNAPSHOT.ini
deleted file mode 100644
index 337146b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_214_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:210:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_214_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_214_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_214_4.1-SNAPSHOT.ini
deleted file mode 100644
index e4c878d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_214_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:210:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_215_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_215_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_215_4.0-SNAPSHOT.ini
deleted file mode 100644
index cc693b8..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_215_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:214:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_215_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_215_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_215_4.1-SNAPSHOT.ini
deleted file mode 100644
index b576be2..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_215_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:214:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_216_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_216_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_216_4.0-SNAPSHOT.ini
deleted file mode 100644
index 0b37b78..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_216_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,48 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:218:pom:2.2.1-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:220:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:231:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:285:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:298:pom:4.0-SNAPSHOT
-10:238:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:263:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
-10:337:pom:4.0-SNAPSHOT
-10:228:pom:1.0-SNAPSHOT
[06/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java b/maven-resolver-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java
new file mode 100644
index 0000000..f42d15e
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java
@@ -0,0 +1,112 @@
+package org.eclipse.aether;
+
+/*
+ * 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 skeleton implementation for custom repository listeners. The callback methods in this class do nothing.
+ */
+public abstract class AbstractRepositoryListener
+ implements RepositoryListener
+{
+
+ /**
+ * Enables subclassing.
+ */
+ protected AbstractRepositoryListener()
+ {
+ }
+
+ public void artifactDeployed( RepositoryEvent event )
+ {
+ }
+
+ public void artifactDeploying( RepositoryEvent event )
+ {
+ }
+
+ public void artifactDescriptorInvalid( RepositoryEvent event )
+ {
+ }
+
+ public void artifactDescriptorMissing( RepositoryEvent event )
+ {
+ }
+
+ public void artifactDownloaded( RepositoryEvent event )
+ {
+ }
+
+ public void artifactDownloading( RepositoryEvent event )
+ {
+ }
+
+ public void artifactInstalled( RepositoryEvent event )
+ {
+ }
+
+ public void artifactInstalling( RepositoryEvent event )
+ {
+ }
+
+ public void artifactResolved( RepositoryEvent event )
+ {
+ }
+
+ public void artifactResolving( RepositoryEvent event )
+ {
+ }
+
+ public void metadataDeployed( RepositoryEvent event )
+ {
+ }
+
+ public void metadataDeploying( RepositoryEvent event )
+ {
+ }
+
+ public void metadataDownloaded( RepositoryEvent event )
+ {
+ }
+
+ public void metadataDownloading( RepositoryEvent event )
+ {
+ }
+
+ public void metadataInstalled( RepositoryEvent event )
+ {
+ }
+
+ public void metadataInstalling( RepositoryEvent event )
+ {
+ }
+
+ public void metadataInvalid( RepositoryEvent event )
+ {
+ }
+
+ public void metadataResolved( RepositoryEvent event )
+ {
+ }
+
+ public void metadataResolving( RepositoryEvent event )
+ {
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java b/maven-resolver-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java
new file mode 100644
index 0000000..b96a754
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java
@@ -0,0 +1,174 @@
+package org.eclipse.aether;
+
+/*
+ * 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 keys and defaults for common configuration properties.
+ *
+ * @see RepositorySystemSession#getConfigProperties()
+ */
+public final class ConfigurationProperties
+{
+
+ private static final String PREFIX_AETHER = "aether.";
+
+ private static final String PREFIX_CONNECTOR = PREFIX_AETHER + "connector.";
+
+ /**
+ * The prefix for properties that control the priority of pluggable extensions like transporters. For example, for
+ * an extension with the fully qualified class name "org.eclipse.MyExtensionFactory", the configuration properties
+ * "aether.priority.org.eclipse.MyExtensionFactory", "aether.priority.MyExtensionFactory" and
+ * "aether.priority.MyExtension" will be consulted for the priority, in that order (obviously, the last key is only
+ * tried if the class name ends with "Factory"). The corresponding value is a float and the special value
+ * {@link Float#NaN} or "NaN" (case-sensitive) can be used to disable the extension.
+ */
+ public static final String PREFIX_PRIORITY = PREFIX_AETHER + "priority.";
+
+ /**
+ * A flag indicating whether the priorities of pluggable extensions are implicitly given by their iteration order
+ * such that the first extension has the highest priority. If set, an extension's built-in priority as well as any
+ * corresponding {@code aether.priority.*} configuration properties are ignored when searching for a suitable
+ * implementation among the available extensions. This priority mode is meant for cases where the application will
+ * present/inject extensions in the desired search order.
+ *
+ * @see #DEFAULT_IMPLICIT_PRIORITIES
+ */
+ public static final String IMPLICIT_PRIORITIES = PREFIX_PRIORITY + "implicit";
+
+ /**
+ * The default extension priority mode if {@link #IMPLICIT_PRIORITIES} isn't set.
+ */
+ public static final boolean DEFAULT_IMPLICIT_PRIORITIES = false;
+
+ /**
+ * A flag indicating whether interaction with the user is allowed.
+ *
+ * @see #DEFAULT_INTERACTIVE
+ */
+ public static final String INTERACTIVE = PREFIX_AETHER + "interactive";
+
+ /**
+ * The default interactive mode if {@link #INTERACTIVE} isn't set.
+ */
+ public static final boolean DEFAULT_INTERACTIVE = false;
+
+ /**
+ * The user agent that repository connectors should report to servers.
+ *
+ * @see #DEFAULT_USER_AGENT
+ */
+ public static final String USER_AGENT = PREFIX_CONNECTOR + "userAgent";
+
+ /**
+ * The default user agent to use if {@link #USER_AGENT} isn't set.
+ */
+ public static final String DEFAULT_USER_AGENT = "Aether";
+
+ /**
+ * The maximum amount of time (in milliseconds) to wait for a successful connection to a remote server. Non-positive
+ * values indicate no timeout.
+ *
+ * @see #DEFAULT_CONNECT_TIMEOUT
+ */
+ public static final String CONNECT_TIMEOUT = PREFIX_CONNECTOR + "connectTimeout";
+
+ /**
+ * The default connect timeout to use if {@link #CONNECT_TIMEOUT} isn't set.
+ */
+ public static final int DEFAULT_CONNECT_TIMEOUT = 10 * 1000;
+
+ /**
+ * The maximum amount of time (in milliseconds) to wait for remaining data to arrive from a remote server. Note that
+ * this timeout does not restrict the overall duration of a request, it only restricts the duration of inactivity
+ * between consecutive data packets. Non-positive values indicate no timeout.
+ *
+ * @see #DEFAULT_REQUEST_TIMEOUT
+ */
+ public static final String REQUEST_TIMEOUT = PREFIX_CONNECTOR + "requestTimeout";
+
+ /**
+ * The default request timeout to use if {@link #REQUEST_TIMEOUT} isn't set.
+ */
+ public static final int DEFAULT_REQUEST_TIMEOUT = 1800 * 1000;
+
+ /**
+ * The request headers to use for HTTP-based repository connectors. The headers are specified using a
+ * {@code Map<String, String>}, mapping a header name to its value. Besides this general key, clients may also
+ * specify headers for a specific remote repository by appending the suffix {@code .<repoId>} to this key when
+ * storing the headers map. The repository-specific headers map is supposed to be complete, i.e. is not merged with
+ * the general headers map.
+ */
+ public static final String HTTP_HEADERS = PREFIX_CONNECTOR + "http.headers";
+
+ /**
+ * The encoding/charset to use when exchanging credentials with HTTP servers. Besides this general key, clients may
+ * also specify the encoding for a specific remote repository by appending the suffix {@code .<repoId>} to this key
+ * when storing the charset name.
+ *
+ * @see #DEFAULT_HTTP_CREDENTIAL_ENCODING
+ */
+ public static final String HTTP_CREDENTIAL_ENCODING = PREFIX_CONNECTOR + "http.credentialEncoding";
+
+ /**
+ * The default encoding/charset to use if {@link #HTTP_CREDENTIAL_ENCODING} isn't set.
+ */
+ public static final String DEFAULT_HTTP_CREDENTIAL_ENCODING = "ISO-8859-1";
+
+ /**
+ * An option indicating whether authentication configured for a HTTP repository should also be used with any host
+ * that the original server might redirect requests to. Unless enabled, credentials are only exchanged with the
+ * original host from the repository URL and not supplied to different hosts encountered during redirects. The
+ * option value can either be a boolean flag or a comma-separated list of host names denoting the whitelist of
+ * original hosts whose redirects can be trusted and should use the configured authentication no matter the
+ * destination host(s). Alternatively, the suffix {@code .<repoId>} can be appended to this configuration key to
+ * control the behavior for a specific repository id.
+ *
+ * @see #DEFAULT_HTTP_REDIRECTED_AUTHENTICATION
+ * @since 1.1.0
+ */
+ public static final String HTTP_REDIRECTED_AUTHENTICATION = PREFIX_CONNECTOR + "http.redirectedAuthentication";
+
+ /**
+ * The default handling of authentication during HTTP redirects if {@link #HTTP_REDIRECTED_AUTHENTICATION} isn't
+ * set.
+ *
+ * @since 1.1.0
+ */
+ public static final String DEFAULT_HTTP_REDIRECTED_AUTHENTICATION = "false";
+
+ /**
+ * A flag indicating whether checksums which are retrieved during checksum validation should be persisted in the
+ * local filesystem next to the file they provide the checksum for.
+ *
+ * @see #DEFAULT_PERSISTED_CHECKSUMS
+ */
+ public static final String PERSISTED_CHECKSUMS = PREFIX_CONNECTOR + "persistedChecksums";
+
+ /**
+ * The default checksum persistence mode if {@link #PERSISTED_CHECKSUMS} isn't set.
+ */
+ public static final boolean DEFAULT_PERSISTED_CHECKSUMS = true;
+
+ private ConfigurationProperties()
+ {
+ // hide constructor
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java b/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java
new file mode 100644
index 0000000..b645f43
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java
@@ -0,0 +1,52 @@
+package org.eclipse.aether;
+
+/*
+ * 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;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * A simplistic repository cache backed by a thread-safe map. The simplistic nature of this cache makes it only suitable
+ * for use with short-lived repository system sessions where pruning of cache data is not required.
+ */
+public final class DefaultRepositoryCache
+ implements RepositoryCache
+{
+
+ private final Map<Object, Object> cache = new ConcurrentHashMap<Object, Object>( 256 );
+
+ public Object get( RepositorySystemSession session, Object key )
+ {
+ return cache.get( key );
+ }
+
+ public void put( RepositorySystemSession session, Object key, Object data )
+ {
+ if ( data != null )
+ {
+ cache.put( key, data );
+ }
+ else
+ {
+ cache.remove( key );
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java b/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
new file mode 100644
index 0000000..93ebaca
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
@@ -0,0 +1,834 @@
+package org.eclipse.aether;
+
+/*
+ * 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.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.aether.artifact.ArtifactType;
+import org.eclipse.aether.artifact.ArtifactTypeRegistry;
+import org.eclipse.aether.collection.DependencyGraphTransformer;
+import org.eclipse.aether.collection.DependencyManager;
+import org.eclipse.aether.collection.DependencySelector;
+import org.eclipse.aether.collection.DependencyTraverser;
+import org.eclipse.aether.collection.VersionFilter;
+import org.eclipse.aether.repository.Authentication;
+import org.eclipse.aether.repository.AuthenticationSelector;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.LocalRepositoryManager;
+import org.eclipse.aether.repository.MirrorSelector;
+import org.eclipse.aether.repository.Proxy;
+import org.eclipse.aether.repository.ProxySelector;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.repository.RepositoryPolicy;
+import org.eclipse.aether.repository.WorkspaceReader;
+import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
+import org.eclipse.aether.resolution.ResolutionErrorPolicy;
+import org.eclipse.aether.transfer.TransferListener;
+
+/**
+ * A simple repository system session.
+ * <p>
+ * <strong>Note:</strong> This class is not thread-safe. It is assumed that the mutators get only called during an
+ * initialization phase and that the session itself is not changed once initialized and being used by the repository
+ * system. It is recommended to call {@link #setReadOnly()} once the session has been fully initialized to prevent
+ * accidental manipulation of it afterwards.
+ */
+public final class DefaultRepositorySystemSession
+ implements RepositorySystemSession
+{
+
+ private boolean readOnly;
+
+ private boolean offline;
+
+ private boolean ignoreArtifactDescriptorRepositories;
+
+ private ResolutionErrorPolicy resolutionErrorPolicy;
+
+ private ArtifactDescriptorPolicy artifactDescriptorPolicy;
+
+ private String checksumPolicy;
+
+ private String updatePolicy;
+
+ private LocalRepositoryManager localRepositoryManager;
+
+ private WorkspaceReader workspaceReader;
+
+ private RepositoryListener repositoryListener;
+
+ private TransferListener transferListener;
+
+ private Map<String, String> systemProperties;
+
+ private Map<String, String> systemPropertiesView;
+
+ private Map<String, String> userProperties;
+
+ private Map<String, String> userPropertiesView;
+
+ private Map<String, Object> configProperties;
+
+ private Map<String, Object> configPropertiesView;
+
+ private MirrorSelector mirrorSelector;
+
+ private ProxySelector proxySelector;
+
+ private AuthenticationSelector authenticationSelector;
+
+ private ArtifactTypeRegistry artifactTypeRegistry;
+
+ private DependencyTraverser dependencyTraverser;
+
+ private DependencyManager dependencyManager;
+
+ private DependencySelector dependencySelector;
+
+ private VersionFilter versionFilter;
+
+ private DependencyGraphTransformer dependencyGraphTransformer;
+
+ private SessionData data;
+
+ private RepositoryCache cache;
+
+ /**
+ * Creates an uninitialized session. <em>Note:</em> The new session is not ready to use, as a bare minimum,
+ * {@link #setLocalRepositoryManager(LocalRepositoryManager)} needs to be called but usually other settings also
+ * need to be customized to achieve meaningful behavior.
+ */
+ public DefaultRepositorySystemSession()
+ {
+ systemProperties = new HashMap<String, String>();
+ systemPropertiesView = Collections.unmodifiableMap( systemProperties );
+ userProperties = new HashMap<String, String>();
+ userPropertiesView = Collections.unmodifiableMap( userProperties );
+ configProperties = new HashMap<String, Object>();
+ configPropertiesView = Collections.unmodifiableMap( configProperties );
+ mirrorSelector = NullMirrorSelector.INSTANCE;
+ proxySelector = NullProxySelector.INSTANCE;
+ authenticationSelector = NullAuthenticationSelector.INSTANCE;
+ artifactTypeRegistry = NullArtifactTypeRegistry.INSTANCE;
+ data = new DefaultSessionData();
+ }
+
+ /**
+ * Creates a shallow copy of the specified session. Actually, the copy is not completely shallow, all maps holding
+ * system/user/config properties are copied as well. In other words, invoking any mutator on the new session itself
+ * has no effect on the original session. Other mutable objects like the session data and cache (if any) are not
+ * copied and will be shared with the original session unless reconfigured.
+ *
+ * @param session The session to copy, must not be {@code null}.
+ */
+ public DefaultRepositorySystemSession( RepositorySystemSession session )
+ {
+ if ( session == null )
+ {
+ throw new IllegalArgumentException( "repository system session not specified" );
+ }
+
+ setOffline( session.isOffline() );
+ setIgnoreArtifactDescriptorRepositories( session.isIgnoreArtifactDescriptorRepositories() );
+ setResolutionErrorPolicy( session.getResolutionErrorPolicy() );
+ setArtifactDescriptorPolicy( session.getArtifactDescriptorPolicy() );
+ setChecksumPolicy( session.getChecksumPolicy() );
+ setUpdatePolicy( session.getUpdatePolicy() );
+ setLocalRepositoryManager( session.getLocalRepositoryManager() );
+ setWorkspaceReader( session.getWorkspaceReader() );
+ setRepositoryListener( session.getRepositoryListener() );
+ setTransferListener( session.getTransferListener() );
+ setSystemProperties( session.getSystemProperties() );
+ setUserProperties( session.getUserProperties() );
+ setConfigProperties( session.getConfigProperties() );
+ setMirrorSelector( session.getMirrorSelector() );
+ setProxySelector( session.getProxySelector() );
+ setAuthenticationSelector( session.getAuthenticationSelector() );
+ setArtifactTypeRegistry( session.getArtifactTypeRegistry() );
+ setDependencyTraverser( session.getDependencyTraverser() );
+ setDependencyManager( session.getDependencyManager() );
+ setDependencySelector( session.getDependencySelector() );
+ setVersionFilter( session.getVersionFilter() );
+ setDependencyGraphTransformer( session.getDependencyGraphTransformer() );
+ setData( session.getData() );
+ setCache( session.getCache() );
+ }
+
+ public boolean isOffline()
+ {
+ return offline;
+ }
+
+ /**
+ * Controls whether the repository system operates in offline mode and avoids/refuses any access to remote
+ * repositories.
+ *
+ * @param offline {@code true} if the repository system is in offline mode, {@code false} otherwise.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setOffline( boolean offline )
+ {
+ failIfReadOnly();
+ this.offline = offline;
+ return this;
+ }
+
+ public boolean isIgnoreArtifactDescriptorRepositories()
+ {
+ return ignoreArtifactDescriptorRepositories;
+ }
+
+ /**
+ * Controls whether repositories declared in artifact descriptors should be ignored during transitive dependency
+ * collection. If enabled, only the repositories originally provided with the collect request will be considered.
+ *
+ * @param ignoreArtifactDescriptorRepositories {@code true} to ignore additional repositories from artifact
+ * descriptors, {@code false} to merge those with the originally specified repositories.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setIgnoreArtifactDescriptorRepositories( boolean ignoreArtifactDescriptorRepositories )
+ {
+ failIfReadOnly();
+ this.ignoreArtifactDescriptorRepositories = ignoreArtifactDescriptorRepositories;
+ return this;
+ }
+
+ public ResolutionErrorPolicy getResolutionErrorPolicy()
+ {
+ return resolutionErrorPolicy;
+ }
+
+ /**
+ * Sets the policy which controls whether resolutions errors from remote repositories should be cached.
+ *
+ * @param resolutionErrorPolicy The resolution error policy for this session, may be {@code null} if resolution
+ * errors should generally not be cached.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setResolutionErrorPolicy( ResolutionErrorPolicy resolutionErrorPolicy )
+ {
+ failIfReadOnly();
+ this.resolutionErrorPolicy = resolutionErrorPolicy;
+ return this;
+ }
+
+ public ArtifactDescriptorPolicy getArtifactDescriptorPolicy()
+ {
+ return artifactDescriptorPolicy;
+ }
+
+ /**
+ * Sets the policy which controls how errors related to reading artifact descriptors should be handled.
+ *
+ * @param artifactDescriptorPolicy The descriptor error policy for this session, may be {@code null} if descriptor
+ * errors should generally not be tolerated.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setArtifactDescriptorPolicy( ArtifactDescriptorPolicy artifactDescriptorPolicy )
+ {
+ failIfReadOnly();
+ this.artifactDescriptorPolicy = artifactDescriptorPolicy;
+ return this;
+ }
+
+ public String getChecksumPolicy()
+ {
+ return checksumPolicy;
+ }
+
+ /**
+ * Sets the global checksum policy. If set, the global checksum policy overrides the checksum policies of the remote
+ * repositories being used for resolution.
+ *
+ * @param checksumPolicy The global checksum policy, may be {@code null}/empty to apply the per-repository policies.
+ * @return This session for chaining, never {@code null}.
+ * @see RepositoryPolicy#CHECKSUM_POLICY_FAIL
+ * @see RepositoryPolicy#CHECKSUM_POLICY_IGNORE
+ * @see RepositoryPolicy#CHECKSUM_POLICY_WARN
+ */
+ public DefaultRepositorySystemSession setChecksumPolicy( String checksumPolicy )
+ {
+ failIfReadOnly();
+ this.checksumPolicy = checksumPolicy;
+ return this;
+ }
+
+ public String getUpdatePolicy()
+ {
+ return updatePolicy;
+ }
+
+ /**
+ * Sets the global update policy. If set, the global update policy overrides the update policies of the remote
+ * repositories being used for resolution.
+ *
+ * @param updatePolicy The global update policy, may be {@code null}/empty to apply the per-repository policies.
+ * @return This session for chaining, never {@code null}.
+ * @see RepositoryPolicy#UPDATE_POLICY_ALWAYS
+ * @see RepositoryPolicy#UPDATE_POLICY_DAILY
+ * @see RepositoryPolicy#UPDATE_POLICY_NEVER
+ */
+ public DefaultRepositorySystemSession setUpdatePolicy( String updatePolicy )
+ {
+ failIfReadOnly();
+ this.updatePolicy = updatePolicy;
+ return this;
+ }
+
+ public LocalRepository getLocalRepository()
+ {
+ LocalRepositoryManager lrm = getLocalRepositoryManager();
+ return ( lrm != null ) ? lrm.getRepository() : null;
+ }
+
+ public LocalRepositoryManager getLocalRepositoryManager()
+ {
+ return localRepositoryManager;
+ }
+
+ /**
+ * Sets the local repository manager used during this session. <em>Note:</em> Eventually, a valid session must have
+ * a local repository manager set.
+ *
+ * @param localRepositoryManager The local repository manager used during this session, may be {@code null}.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setLocalRepositoryManager( LocalRepositoryManager localRepositoryManager )
+ {
+ failIfReadOnly();
+ this.localRepositoryManager = localRepositoryManager;
+ return this;
+ }
+
+ public WorkspaceReader getWorkspaceReader()
+ {
+ return workspaceReader;
+ }
+
+ /**
+ * Sets the workspace reader used during this session. If set, the workspace reader will usually be consulted first
+ * to resolve artifacts.
+ *
+ * @param workspaceReader The workspace reader for this session, may be {@code null} if none.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setWorkspaceReader( WorkspaceReader workspaceReader )
+ {
+ failIfReadOnly();
+ this.workspaceReader = workspaceReader;
+ return this;
+ }
+
+ public RepositoryListener getRepositoryListener()
+ {
+ return repositoryListener;
+ }
+
+ /**
+ * Sets the listener being notified of actions in the repository system.
+ *
+ * @param repositoryListener The repository listener, may be {@code null} if none.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setRepositoryListener( RepositoryListener repositoryListener )
+ {
+ failIfReadOnly();
+ this.repositoryListener = repositoryListener;
+ return this;
+ }
+
+ public TransferListener getTransferListener()
+ {
+ return transferListener;
+ }
+
+ /**
+ * Sets the listener being notified of uploads/downloads by the repository system.
+ *
+ * @param transferListener The transfer listener, may be {@code null} if none.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setTransferListener( TransferListener transferListener )
+ {
+ failIfReadOnly();
+ this.transferListener = transferListener;
+ return this;
+ }
+
+ private <T> Map<String, T> copySafe( Map<?, ?> table, Class<T> valueType )
+ {
+ Map<String, T> map;
+ if ( table == null || table.isEmpty() )
+ {
+ map = new HashMap<String, T>();
+ }
+ else
+ {
+ map = new HashMap<String, T>( (int) ( table.size() / 0.75f ) + 1 );
+ for ( Map.Entry<?, ?> entry : table.entrySet() )
+ {
+ Object key = entry.getKey();
+ if ( key instanceof String )
+ {
+ Object value = entry.getValue();
+ if ( valueType.isInstance( value ) )
+ {
+ map.put( key.toString(), valueType.cast( value ) );
+ }
+ }
+ }
+ }
+ return map;
+ }
+
+ public Map<String, String> getSystemProperties()
+ {
+ return systemPropertiesView;
+ }
+
+ /**
+ * Sets the system properties to use, e.g. for processing of artifact descriptors. System properties are usually
+ * collected from the runtime environment like {@link System#getProperties()} and environment variables.
+ * <p>
+ * <em>Note:</em> System properties are of type {@code Map<String, String>} and any key-value pair in the input map
+ * that doesn't match this type will be silently ignored.
+ *
+ * @param systemProperties The system properties, may be {@code null} or empty if none.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setSystemProperties( Map<?, ?> systemProperties )
+ {
+ failIfReadOnly();
+ this.systemProperties = copySafe( systemProperties, String.class );
+ systemPropertiesView = Collections.unmodifiableMap( this.systemProperties );
+ return this;
+ }
+
+ /**
+ * Sets the specified system property.
+ *
+ * @param key The property key, must not be {@code null}.
+ * @param value The property value, may be {@code null} to remove/unset the property.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setSystemProperty( String key, String value )
+ {
+ failIfReadOnly();
+ if ( value != null )
+ {
+ systemProperties.put( key, value );
+ }
+ else
+ {
+ systemProperties.remove( key );
+ }
+ return this;
+ }
+
+ public Map<String, String> getUserProperties()
+ {
+ return userPropertiesView;
+ }
+
+ /**
+ * Sets the user properties to use, e.g. for processing of artifact descriptors. User properties are similar to
+ * system properties but are set on the discretion of the user and hence are considered of higher priority than
+ * system properties in case of conflicts.
+ * <p>
+ * <em>Note:</em> User properties are of type {@code Map<String, String>} and any key-value pair in the input map
+ * that doesn't match this type will be silently ignored.
+ *
+ * @param userProperties The user properties, may be {@code null} or empty if none.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setUserProperties( Map<?, ?> userProperties )
+ {
+ failIfReadOnly();
+ this.userProperties = copySafe( userProperties, String.class );
+ userPropertiesView = Collections.unmodifiableMap( this.userProperties );
+ return this;
+ }
+
+ /**
+ * Sets the specified user property.
+ *
+ * @param key The property key, must not be {@code null}.
+ * @param value The property value, may be {@code null} to remove/unset the property.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setUserProperty( String key, String value )
+ {
+ failIfReadOnly();
+ if ( value != null )
+ {
+ userProperties.put( key, value );
+ }
+ else
+ {
+ userProperties.remove( key );
+ }
+ return this;
+ }
+
+ public Map<String, Object> getConfigProperties()
+ {
+ return configPropertiesView;
+ }
+
+ /**
+ * Sets the configuration properties used to tweak internal aspects of the repository system (e.g. thread pooling,
+ * connector-specific behavior, etc.).
+ * <p>
+ * <em>Note:</em> Configuration properties are of type {@code Map<String, Object>} and any key-value pair in the
+ * input map that doesn't match this type will be silently ignored.
+ *
+ * @param configProperties The configuration properties, may be {@code null} or empty if none.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setConfigProperties( Map<?, ?> configProperties )
+ {
+ failIfReadOnly();
+ this.configProperties = copySafe( configProperties, Object.class );
+ configPropertiesView = Collections.unmodifiableMap( this.configProperties );
+ return this;
+ }
+
+ /**
+ * Sets the specified configuration property.
+ *
+ * @param key The property key, must not be {@code null}.
+ * @param value The property value, may be {@code null} to remove/unset the property.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setConfigProperty( String key, Object value )
+ {
+ failIfReadOnly();
+ if ( value != null )
+ {
+ configProperties.put( key, value );
+ }
+ else
+ {
+ configProperties.remove( key );
+ }
+ return this;
+ }
+
+ public MirrorSelector getMirrorSelector()
+ {
+ return mirrorSelector;
+ }
+
+ /**
+ * Sets the mirror selector to use for repositories discovered in artifact descriptors. Note that this selector is
+ * not used for remote repositories which are passed as request parameters to the repository system, those
+ * repositories are supposed to denote the effective repositories.
+ *
+ * @param mirrorSelector The mirror selector to use, may be {@code null}.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setMirrorSelector( MirrorSelector mirrorSelector )
+ {
+ failIfReadOnly();
+ this.mirrorSelector = mirrorSelector;
+ if ( this.mirrorSelector == null )
+ {
+ this.mirrorSelector = NullMirrorSelector.INSTANCE;
+ }
+ return this;
+ }
+
+ public ProxySelector getProxySelector()
+ {
+ return proxySelector;
+ }
+
+ /**
+ * Sets the proxy selector to use for repositories discovered in artifact descriptors. Note that this selector is
+ * not used for remote repositories which are passed as request parameters to the repository system, those
+ * repositories are supposed to have their proxy (if any) already set.
+ *
+ * @param proxySelector The proxy selector to use, may be {@code null}.
+ * @return This session for chaining, never {@code null}.
+ * @see org.eclipse.aether.repository.RemoteRepository#getProxy()
+ */
+ public DefaultRepositorySystemSession setProxySelector( ProxySelector proxySelector )
+ {
+ failIfReadOnly();
+ this.proxySelector = proxySelector;
+ if ( this.proxySelector == null )
+ {
+ this.proxySelector = NullProxySelector.INSTANCE;
+ }
+ return this;
+ }
+
+ public AuthenticationSelector getAuthenticationSelector()
+ {
+ return authenticationSelector;
+ }
+
+ /**
+ * Sets the authentication selector to use for repositories discovered in artifact descriptors. Note that this
+ * selector is not used for remote repositories which are passed as request parameters to the repository system,
+ * those repositories are supposed to have their authentication (if any) already set.
+ *
+ * @param authenticationSelector The authentication selector to use, may be {@code null}.
+ * @return This session for chaining, never {@code null}.
+ * @see org.eclipse.aether.repository.RemoteRepository#getAuthentication()
+ */
+ public DefaultRepositorySystemSession setAuthenticationSelector( AuthenticationSelector authenticationSelector )
+ {
+ failIfReadOnly();
+ this.authenticationSelector = authenticationSelector;
+ if ( this.authenticationSelector == null )
+ {
+ this.authenticationSelector = NullAuthenticationSelector.INSTANCE;
+ }
+ return this;
+ }
+
+ public ArtifactTypeRegistry getArtifactTypeRegistry()
+ {
+ return artifactTypeRegistry;
+ }
+
+ /**
+ * Sets the registry of artifact types recognized by this session.
+ *
+ * @param artifactTypeRegistry The artifact type registry, may be {@code null}.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setArtifactTypeRegistry( ArtifactTypeRegistry artifactTypeRegistry )
+ {
+ failIfReadOnly();
+ this.artifactTypeRegistry = artifactTypeRegistry;
+ if ( this.artifactTypeRegistry == null )
+ {
+ this.artifactTypeRegistry = NullArtifactTypeRegistry.INSTANCE;
+ }
+ return this;
+ }
+
+ public DependencyTraverser getDependencyTraverser()
+ {
+ return dependencyTraverser;
+ }
+
+ /**
+ * Sets the dependency traverser to use for building dependency graphs.
+ *
+ * @param dependencyTraverser The dependency traverser to use for building dependency graphs, may be {@code null}.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setDependencyTraverser( DependencyTraverser dependencyTraverser )
+ {
+ failIfReadOnly();
+ this.dependencyTraverser = dependencyTraverser;
+ return this;
+ }
+
+ public DependencyManager getDependencyManager()
+ {
+ return dependencyManager;
+ }
+
+ /**
+ * Sets the dependency manager to use for building dependency graphs.
+ *
+ * @param dependencyManager The dependency manager to use for building dependency graphs, may be {@code null}.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setDependencyManager( DependencyManager dependencyManager )
+ {
+ failIfReadOnly();
+ this.dependencyManager = dependencyManager;
+ return this;
+ }
+
+ public DependencySelector getDependencySelector()
+ {
+ return dependencySelector;
+ }
+
+ /**
+ * Sets the dependency selector to use for building dependency graphs.
+ *
+ * @param dependencySelector The dependency selector to use for building dependency graphs, may be {@code null}.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setDependencySelector( DependencySelector dependencySelector )
+ {
+ failIfReadOnly();
+ this.dependencySelector = dependencySelector;
+ return this;
+ }
+
+ public VersionFilter getVersionFilter()
+ {
+ return versionFilter;
+ }
+
+ /**
+ * Sets the version filter to use for building dependency graphs.
+ *
+ * @param versionFilter The version filter to use for building dependency graphs, may be {@code null} to not filter
+ * versions.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setVersionFilter( VersionFilter versionFilter )
+ {
+ failIfReadOnly();
+ this.versionFilter = versionFilter;
+ return this;
+ }
+
+ public DependencyGraphTransformer getDependencyGraphTransformer()
+ {
+ return dependencyGraphTransformer;
+ }
+
+ /**
+ * Sets the dependency graph transformer to use for building dependency graphs.
+ *
+ * @param dependencyGraphTransformer The dependency graph transformer to use for building dependency graphs, may be
+ * {@code null}.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setDependencyGraphTransformer( DependencyGraphTransformer dependencyGraphTransformer )
+ {
+ failIfReadOnly();
+ this.dependencyGraphTransformer = dependencyGraphTransformer;
+ return this;
+ }
+
+ public SessionData getData()
+ {
+ return data;
+ }
+
+ /**
+ * Sets the custom data associated with this session.
+ *
+ * @param data The session data, may be {@code null}.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setData( SessionData data )
+ {
+ failIfReadOnly();
+ this.data = data;
+ if ( this.data == null )
+ {
+ this.data = new DefaultSessionData();
+ }
+ return this;
+ }
+
+ public RepositoryCache getCache()
+ {
+ return cache;
+ }
+
+ /**
+ * Sets the cache the repository system may use to save data for future reuse during the session.
+ *
+ * @param cache The repository cache, may be {@code null} if none.
+ * @return This session for chaining, never {@code null}.
+ */
+ public DefaultRepositorySystemSession setCache( RepositoryCache cache )
+ {
+ failIfReadOnly();
+ this.cache = cache;
+ return this;
+ }
+
+ /**
+ * Marks this session as read-only such that any future attempts to call its mutators will fail with an exception.
+ * Marking an already read-only session as read-only has no effect. The session's data and cache remain writable
+ * though.
+ */
+ public void setReadOnly()
+ {
+ readOnly = true;
+ }
+
+ private void failIfReadOnly()
+ {
+ if ( readOnly )
+ {
+ throw new IllegalStateException( "repository system session is read-only" );
+ }
+ }
+
+ static class NullProxySelector
+ implements ProxySelector
+ {
+
+ public static final ProxySelector INSTANCE = new NullProxySelector();
+
+ public Proxy getProxy( RemoteRepository repository )
+ {
+ return repository.getProxy();
+ }
+
+ }
+
+ static class NullMirrorSelector
+ implements MirrorSelector
+ {
+
+ public static final MirrorSelector INSTANCE = new NullMirrorSelector();
+
+ public RemoteRepository getMirror( RemoteRepository repository )
+ {
+ return null;
+ }
+
+ }
+
+ static class NullAuthenticationSelector
+ implements AuthenticationSelector
+ {
+
+ public static final AuthenticationSelector INSTANCE = new NullAuthenticationSelector();
+
+ public Authentication getAuthentication( RemoteRepository repository )
+ {
+ return repository.getAuthentication();
+ }
+
+ }
+
+ static final class NullArtifactTypeRegistry
+ implements ArtifactTypeRegistry
+ {
+
+ public static final ArtifactTypeRegistry INSTANCE = new NullArtifactTypeRegistry();
+
+ public ArtifactType get( String typeId )
+ {
+ return null;
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultSessionData.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultSessionData.java b/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultSessionData.java
new file mode 100644
index 0000000..e78df3a
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultSessionData.java
@@ -0,0 +1,91 @@
+package org.eclipse.aether;
+
+/*
+ * 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.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * A simple session data storage backed by a thread-safe map.
+ */
+public final class DefaultSessionData
+ implements SessionData
+{
+
+ private final ConcurrentMap<Object, Object> data;
+
+ public DefaultSessionData()
+ {
+ data = new ConcurrentHashMap<Object, Object>();
+ }
+
+ public void set( Object key, Object value )
+ {
+ if ( key == null )
+ {
+ throw new IllegalArgumentException( "key must not be null" );
+ }
+
+ if ( value != null )
+ {
+ data.put( key, value );
+ }
+ else
+ {
+ data.remove( key );
+ }
+ }
+
+ public boolean set( Object key, Object oldValue, Object newValue )
+ {
+ if ( key == null )
+ {
+ throw new IllegalArgumentException( "key must not be null" );
+ }
+
+ if ( newValue != null )
+ {
+ if ( oldValue == null )
+ {
+ return data.putIfAbsent( key, newValue ) == null;
+ }
+ return data.replace( key, oldValue, newValue );
+ }
+ else
+ {
+ if ( oldValue == null )
+ {
+ return !data.containsKey( key );
+ }
+ return data.remove( key, oldValue );
+ }
+ }
+
+ public Object get( Object key )
+ {
+ if ( key == null )
+ {
+ throw new IllegalArgumentException( "key must not be null" );
+ }
+
+ return data.get( key );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryCache.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryCache.java b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryCache.java
new file mode 100644
index 0000000..6f9f114
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryCache.java
@@ -0,0 +1,59 @@
+package org.eclipse.aether;
+
+/*
+ * 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.
+ */
+
+/**
+ * Caches auxiliary data used during repository access like already processed metadata. The data in the cache is meant
+ * for exclusive consumption by the repository system and is opaque to the cache implementation. <strong>Note:</strong>
+ * Actual cache implementations must be thread-safe.
+ *
+ * @see RepositorySystemSession#getCache()
+ */
+public interface RepositoryCache
+{
+
+ /**
+ * Puts the specified data into the cache. It is entirely up to the cache implementation how long this data will be
+ * kept before being purged, i.e. callers must not make any assumptions about the lifetime of cached data.
+ * <p>
+ * <em>Warning:</em> The cache will directly save the provided reference. If the cached data is mutable, i.e. could
+ * be modified after being put into the cache, the caller is responsible for creating a copy of the original data
+ * and store the copy in the cache.
+ *
+ * @param session The repository session during which the cache is accessed, must not be {@code null}.
+ * @param key The key to use for lookup of the data, must not be {@code null}.
+ * @param data The data to store in the cache, may be {@code null}.
+ */
+ void put( RepositorySystemSession session, Object key, Object data );
+
+ /**
+ * Gets the specified data from the cache.
+ * <p>
+ * <em>Warning:</em> The cache will directly return the saved reference. If the cached data is to be modified after
+ * its retrieval, the caller is responsible to create a copy of the returned data and use this instead of the cache
+ * record.
+ *
+ * @param session The repository session during which the cache is accessed, must not be {@code null}.
+ * @param key The key to use for lookup of the data, must not be {@code null}.
+ * @return The requested data or {@code null} if none was present in the cache.
+ */
+ Object get( RepositorySystemSession session, Object key );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryEvent.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryEvent.java b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryEvent.java
new file mode 100644
index 0000000..33816ba
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryEvent.java
@@ -0,0 +1,442 @@
+package org.eclipse.aether;
+
+/*
+ * 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.List;
+
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.metadata.Metadata;
+import org.eclipse.aether.repository.ArtifactRepository;
+
+/**
+ * An event describing an action performed by the repository system. Note that events which indicate the end of an
+ * action like {@link EventType#ARTIFACT_RESOLVED} are generally fired in both the success and the failure case. Use
+ * {@link #getException()} to check whether an event denotes success or failure.
+ *
+ * @see RepositoryListener
+ * @see RepositoryEvent.Builder
+ */
+public final class RepositoryEvent
+{
+
+ /**
+ * The type of the repository event.
+ */
+ public enum EventType
+ {
+
+ /**
+ * @see RepositoryListener#artifactDescriptorInvalid(RepositoryEvent)
+ */
+ ARTIFACT_DESCRIPTOR_INVALID,
+
+ /**
+ * @see RepositoryListener#artifactDescriptorMissing(RepositoryEvent)
+ */
+ ARTIFACT_DESCRIPTOR_MISSING,
+
+ /**
+ * @see RepositoryListener#metadataInvalid(RepositoryEvent)
+ */
+ METADATA_INVALID,
+
+ /**
+ * @see RepositoryListener#artifactResolving(RepositoryEvent)
+ */
+ ARTIFACT_RESOLVING,
+
+ /**
+ * @see RepositoryListener#artifactResolved(RepositoryEvent)
+ */
+ ARTIFACT_RESOLVED,
+
+ /**
+ * @see RepositoryListener#metadataResolving(RepositoryEvent)
+ */
+ METADATA_RESOLVING,
+
+ /**
+ * @see RepositoryListener#metadataResolved(RepositoryEvent)
+ */
+ METADATA_RESOLVED,
+
+ /**
+ * @see RepositoryListener#artifactDownloading(RepositoryEvent)
+ */
+ ARTIFACT_DOWNLOADING,
+
+ /**
+ * @see RepositoryListener#artifactDownloaded(RepositoryEvent)
+ */
+ ARTIFACT_DOWNLOADED,
+
+ /**
+ * @see RepositoryListener#metadataDownloading(RepositoryEvent)
+ */
+ METADATA_DOWNLOADING,
+
+ /**
+ * @see RepositoryListener#metadataDownloaded(RepositoryEvent)
+ */
+ METADATA_DOWNLOADED,
+
+ /**
+ * @see RepositoryListener#artifactInstalling(RepositoryEvent)
+ */
+ ARTIFACT_INSTALLING,
+
+ /**
+ * @see RepositoryListener#artifactInstalled(RepositoryEvent)
+ */
+ ARTIFACT_INSTALLED,
+
+ /**
+ * @see RepositoryListener#metadataInstalling(RepositoryEvent)
+ */
+ METADATA_INSTALLING,
+
+ /**
+ * @see RepositoryListener#metadataInstalled(RepositoryEvent)
+ */
+ METADATA_INSTALLED,
+
+ /**
+ * @see RepositoryListener#artifactDeploying(RepositoryEvent)
+ */
+ ARTIFACT_DEPLOYING,
+
+ /**
+ * @see RepositoryListener#artifactDeployed(RepositoryEvent)
+ */
+ ARTIFACT_DEPLOYED,
+
+ /**
+ * @see RepositoryListener#metadataDeploying(RepositoryEvent)
+ */
+ METADATA_DEPLOYING,
+
+ /**
+ * @see RepositoryListener#metadataDeployed(RepositoryEvent)
+ */
+ METADATA_DEPLOYED
+
+ }
+
+ private final EventType type;
+
+ private final RepositorySystemSession session;
+
+ private final Artifact artifact;
+
+ private final Metadata metadata;
+
+ private final ArtifactRepository repository;
+
+ private final File file;
+
+ private final List<Exception> exceptions;
+
+ private final RequestTrace trace;
+
+ RepositoryEvent( Builder builder )
+ {
+ type = builder.type;
+ session = builder.session;
+ artifact = builder.artifact;
+ metadata = builder.metadata;
+ repository = builder.repository;
+ file = builder.file;
+ exceptions = builder.exceptions;
+ trace = builder.trace;
+ }
+
+ /**
+ * Gets the type of the event.
+ *
+ * @return The type of the event, never {@code null}.
+ */
+ public EventType getType()
+ {
+ return type;
+ }
+
+ /**
+ * Gets the repository system session during which the event occurred.
+ *
+ * @return The repository system session during which the event occurred, never {@code null}.
+ */
+ public RepositorySystemSession getSession()
+ {
+ return session;
+ }
+
+ /**
+ * Gets the artifact involved in the event (if any).
+ *
+ * @return The involved artifact or {@code null} if none.
+ */
+ public Artifact getArtifact()
+ {
+ return artifact;
+ }
+
+ /**
+ * Gets the metadata involved in the event (if any).
+ *
+ * @return The involved metadata or {@code null} if none.
+ */
+ public Metadata getMetadata()
+ {
+ return metadata;
+ }
+
+ /**
+ * Gets the file involved in the event (if any).
+ *
+ * @return The involved file or {@code null} if none.
+ */
+ public File getFile()
+ {
+ return file;
+ }
+
+ /**
+ * Gets the repository involved in the event (if any).
+ *
+ * @return The involved repository or {@code null} if none.
+ */
+ public ArtifactRepository getRepository()
+ {
+ return repository;
+ }
+
+ /**
+ * Gets the exception that caused the event (if any). As a rule of thumb, an event accompanied by an exception
+ * indicates a failure of the corresponding action. If multiple exceptions occurred, this method returns the first
+ * exception.
+ *
+ * @return The exception or {@code null} if none.
+ */
+ public Exception getException()
+ {
+ return exceptions.isEmpty() ? null : exceptions.get( 0 );
+ }
+
+ /**
+ * Gets the exceptions that caused the event (if any). As a rule of thumb, an event accompanied by exceptions
+ * indicates a failure of the corresponding action.
+ *
+ * @return The exceptions, never {@code null}.
+ */
+ public List<Exception> getExceptions()
+ {
+ return exceptions;
+ }
+
+ /**
+ * Gets the trace information about the request during which the event occurred.
+ *
+ * @return The trace information or {@code null} if none.
+ */
+ public RequestTrace getTrace()
+ {
+ return trace;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuilder buffer = new StringBuilder( 256 );
+ buffer.append( getType() );
+ if ( getArtifact() != null )
+ {
+ buffer.append( " " ).append( getArtifact() );
+ }
+ if ( getMetadata() != null )
+ {
+ buffer.append( " " ).append( getMetadata() );
+ }
+ if ( getFile() != null )
+ {
+ buffer.append( " (" ).append( getFile() ).append( ")" );
+ }
+ if ( getRepository() != null )
+ {
+ buffer.append( " @ " ).append( getRepository() );
+ }
+ return buffer.toString();
+ }
+
+ /**
+ * A builder to create events.
+ */
+ public static final class Builder
+ {
+
+ EventType type;
+
+ RepositorySystemSession session;
+
+ Artifact artifact;
+
+ Metadata metadata;
+
+ ArtifactRepository repository;
+
+ File file;
+
+ List<Exception> exceptions = Collections.emptyList();
+
+ RequestTrace trace;
+
+ /**
+ * Creates a new event builder for the specified session and event type.
+ *
+ * @param session The repository system session, must not be {@code null}.
+ * @param type The type of the event, must not be {@code null}.
+ */
+ public Builder( RepositorySystemSession session, EventType type )
+ {
+ if ( session == null )
+ {
+ throw new IllegalArgumentException( "session not specified" );
+ }
+ this.session = session;
+ if ( type == null )
+ {
+ throw new IllegalArgumentException( "event type not specified" );
+ }
+ this.type = type;
+ }
+
+ /**
+ * Sets the artifact involved in the event.
+ *
+ * @param artifact The involved artifact, may be {@code null}.
+ * @return This event builder for chaining, never {@code null}.
+ */
+ public Builder setArtifact( Artifact artifact )
+ {
+ this.artifact = artifact;
+ return this;
+ }
+
+ /**
+ * Sets the metadata involved in the event.
+ *
+ * @param metadata The involved metadata, may be {@code null}.
+ * @return This event builder for chaining, never {@code null}.
+ */
+ public Builder setMetadata( Metadata metadata )
+ {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Sets the repository involved in the event.
+ *
+ * @param repository The involved repository, may be {@code null}.
+ * @return This event builder for chaining, never {@code null}.
+ */
+ public Builder setRepository( ArtifactRepository repository )
+ {
+ this.repository = repository;
+ return this;
+ }
+
+ /**
+ * Sets the file involved in the event.
+ *
+ * @param file The involved file, may be {@code null}.
+ * @return This event builder for chaining, never {@code null}.
+ */
+ public Builder setFile( File file )
+ {
+ this.file = file;
+ return this;
+ }
+
+ /**
+ * Sets the exception causing the event.
+ *
+ * @param exception The exception causing the event, may be {@code null}.
+ * @return This event builder for chaining, never {@code null}.
+ */
+ public Builder setException( Exception exception )
+ {
+ if ( exception != null )
+ {
+ this.exceptions = Collections.singletonList( exception );
+ }
+ else
+ {
+ this.exceptions = Collections.emptyList();
+ }
+ return this;
+ }
+
+ /**
+ * Sets the exceptions causing the event.
+ *
+ * @param exceptions The exceptions causing the event, may be {@code null}.
+ * @return This event builder for chaining, never {@code null}.
+ */
+ public Builder setExceptions( List<Exception> exceptions )
+ {
+ if ( exceptions != null )
+ {
+ this.exceptions = exceptions;
+ }
+ else
+ {
+ this.exceptions = Collections.emptyList();
+ }
+ return this;
+ }
+
+ /**
+ * Sets the trace information about the request during which the event occurred.
+ *
+ * @param trace The trace information, may be {@code null}.
+ * @return This event builder for chaining, never {@code null}.
+ */
+ public Builder setTrace( RequestTrace trace )
+ {
+ this.trace = trace;
+ return this;
+ }
+
+ /**
+ * Builds a new event from the current values of this builder. The state of the builder itself remains
+ * unchanged.
+ *
+ * @return The event, never {@code null}.
+ */
+ public RepositoryEvent build()
+ {
+ return new RepositoryEvent( this );
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryException.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryException.java b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryException.java
new file mode 100644
index 0000000..83a6cac
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryException.java
@@ -0,0 +1,72 @@
+package org.eclipse.aether;
+
+/*
+ * 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 base class for exceptions thrown by the repository system. <em>Note:</em> Unless otherwise noted, instances of
+ * this class and its subclasses will not persist fields carrying extended error information during serialization.
+ */
+public class RepositoryException
+ extends Exception
+{
+
+ /**
+ * Creates a new exception with the specified detail message.
+ *
+ * @param message The detail message, may be {@code null}.
+ */
+ public RepositoryException( 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 RepositoryException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ /**
+ * @noreference This method is not intended to be used by clients.
+ * @param prefix A message prefix for the cause.
+ * @param cause The error cause.
+ * @return The error message for the cause.
+ */
+ protected static String getMessage( String prefix, Throwable cause )
+ {
+ String msg = "";
+ if ( cause != null )
+ {
+ msg = cause.getMessage();
+ if ( msg == null || msg.length() <= 0 )
+ {
+ msg = cause.getClass().getSimpleName();
+ }
+ msg = prefix + msg;
+ }
+ return msg;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryListener.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryListener.java b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryListener.java
new file mode 100644
index 0000000..d654630
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositoryListener.java
@@ -0,0 +1,222 @@
+package org.eclipse.aether;
+
+/*
+ * 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 listener being notified of events from the repository system. In general, the system sends events upon termination
+ * of an operation like {@link #artifactResolved(RepositoryEvent)} regardless whether it succeeded or failed so
+ * listeners need to inspect the event details carefully. Also, the listener may be called from an arbitrary thread.
+ * <em>Note:</em> Implementors are strongly advised to inherit from {@link AbstractRepositoryListener} instead of
+ * directly implementing this interface.
+ *
+ * @see org.eclipse.aether.RepositorySystemSession#getRepositoryListener()
+ * @see org.eclipse.aether.transfer.TransferListener
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface RepositoryListener
+{
+
+ /**
+ * Notifies the listener of a syntactically or semantically invalid artifact descriptor.
+ * {@link RepositoryEvent#getArtifact()} indicates the artifact whose descriptor is invalid and
+ * {@link RepositoryEvent#getExceptions()} carries the encountered errors. Depending on the session's
+ * {@link org.eclipse.aether.resolution.ArtifactDescriptorPolicy}, the underlying repository operation might abort
+ * with an exception or ignore the invalid descriptor.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void artifactDescriptorInvalid( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of a missing artifact descriptor. {@link RepositoryEvent#getArtifact()} indicates the
+ * artifact whose descriptor is missing. Depending on the session's
+ * {@link org.eclipse.aether.resolution.ArtifactDescriptorPolicy}, the underlying repository operation might abort
+ * with an exception or ignore the missing descriptor.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void artifactDescriptorMissing( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of syntactically or semantically invalid metadata. {@link RepositoryEvent#getMetadata()}
+ * indicates the invalid metadata and {@link RepositoryEvent#getExceptions()} carries the encountered errors. The
+ * underlying repository operation might still succeed, depending on whether the metadata in question is actually
+ * needed to carry out the resolution process.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void metadataInvalid( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of an artifact that is about to be resolved. {@link RepositoryEvent#getArtifact()} denotes
+ * the artifact in question. Unlike the {@link #artifactDownloading(RepositoryEvent)} event, this event is fired
+ * regardless whether the artifact already exists locally or not.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void artifactResolving( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of an artifact whose resolution has been completed, either successfully or not.
+ * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
+ * {@link RepositoryEvent#getExceptions()} indicates whether the resolution succeeded or failed. Unlike the
+ * {@link #artifactDownloaded(RepositoryEvent)} event, this event is fired regardless whether the artifact already
+ * exists locally or not.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void artifactResolved( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of some metadata that is about to be resolved. {@link RepositoryEvent#getMetadata()}
+ * denotes the metadata in question. Unlike the {@link #metadataDownloading(RepositoryEvent)} event, this event is
+ * fired regardless whether the metadata already exists locally or not.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void metadataResolving( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of some metadata whose resolution has been completed, either successfully or not.
+ * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
+ * {@link RepositoryEvent#getExceptions()} indicates whether the resolution succeeded or failed. Unlike the
+ * {@link #metadataDownloaded(RepositoryEvent)} event, this event is fired regardless whether the metadata already
+ * exists locally or not.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void metadataResolved( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of an artifact that is about to be downloaded from a remote repository.
+ * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
+ * {@link RepositoryEvent#getRepository()} the source repository. Unlike the
+ * {@link #artifactResolving(RepositoryEvent)} event, this event is only fired when the artifact does not already
+ * exist locally.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void artifactDownloading( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of an artifact whose download has been completed, either successfully or not.
+ * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
+ * {@link RepositoryEvent#getExceptions()} indicates whether the download succeeded or failed. Unlike the
+ * {@link #artifactResolved(RepositoryEvent)} event, this event is only fired when the artifact does not already
+ * exist locally.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void artifactDownloaded( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of some metadata that is about to be downloaded from a remote repository.
+ * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
+ * {@link RepositoryEvent#getRepository()} the source repository. Unlike the
+ * {@link #metadataResolving(RepositoryEvent)} event, this event is only fired when the metadata does not already
+ * exist locally.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void metadataDownloading( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of some metadata whose download has been completed, either successfully or not.
+ * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
+ * {@link RepositoryEvent#getExceptions()} indicates whether the download succeeded or failed. Unlike the
+ * {@link #metadataResolved(RepositoryEvent)} event, this event is only fired when the metadata does not already
+ * exist locally.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void metadataDownloaded( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of an artifact that is about to be installed to the local repository.
+ * {@link RepositoryEvent#getArtifact()} denotes the artifact in question.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void artifactInstalling( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of an artifact whose installation to the local repository has been completed, either
+ * successfully or not. {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
+ * {@link RepositoryEvent#getExceptions()} indicates whether the installation succeeded or failed.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void artifactInstalled( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of some metadata that is about to be installed to the local repository.
+ * {@link RepositoryEvent#getMetadata()} denotes the metadata in question.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void metadataInstalling( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of some metadata whose installation to the local repository has been completed, either
+ * successfully or not. {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
+ * {@link RepositoryEvent#getExceptions()} indicates whether the installation succeeded or failed.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void metadataInstalled( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of an artifact that is about to be uploaded to a remote repository.
+ * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
+ * {@link RepositoryEvent#getRepository()} the destination repository.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void artifactDeploying( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of an artifact whose upload to a remote repository has been completed, either successfully
+ * or not. {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
+ * {@link RepositoryEvent#getExceptions()} indicates whether the upload succeeded or failed.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void artifactDeployed( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of some metadata that is about to be uploaded to a remote repository.
+ * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
+ * {@link RepositoryEvent#getRepository()} the destination repository.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void metadataDeploying( RepositoryEvent event );
+
+ /**
+ * Notifies the listener of some metadata whose upload to a remote repository has been completed, either
+ * successfully or not. {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
+ * {@link RepositoryEvent#getExceptions()} indicates whether the upload succeeded or failed.
+ *
+ * @param event The event details, must not be {@code null}.
+ */
+ void metadataDeployed( RepositoryEvent event );
+
+}
[48/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/CollectRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/CollectRequest.java b/aether-api/src/main/java/org/eclipse/aether/collection/CollectRequest.java
deleted file mode 100644
index d9c2527..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/CollectRequest.java
+++ /dev/null
@@ -1,356 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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.Collections;
-import java.util.List;
-
-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.graph.Dependency;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * A request to collect the transitive dependencies and to build a dependency graph from them. There are three ways to
- * create a dependency graph. First, only the root dependency can be given. Second, a root dependency and direct
- * dependencies can be specified in which case the specified direct dependencies are merged with the direct dependencies
- * retrieved from the artifact descriptor of the root dependency. And last, only direct dependencies can be specified in
- * which case the root node of the resulting graph has no associated dependency.
- *
- * @see RepositorySystem#collectDependencies(RepositorySystemSession, CollectRequest)
- */
-public final class CollectRequest
-{
-
- private Artifact rootArtifact;
-
- private Dependency root;
-
- private List<Dependency> dependencies = Collections.emptyList();
-
- private List<Dependency> managedDependencies = Collections.emptyList();
-
- private List<RemoteRepository> repositories = Collections.emptyList();
-
- private String context = "";
-
- private RequestTrace trace;
-
- /**
- * Creates an uninitialized request.
- */
- public CollectRequest()
- {
- // enables default constructor
- }
-
- /**
- * Creates a request with the specified properties.
- *
- * @param root The root dependency whose transitive dependencies should be collected, may be {@code null}.
- * @param repositories The repositories to use for the collection, may be {@code null}.
- */
- public CollectRequest( Dependency root, List<RemoteRepository> repositories )
- {
- setRoot( root );
- setRepositories( repositories );
- }
-
- /**
- * Creates a new request with the specified properties.
- *
- * @param root The root dependency whose transitive dependencies should be collected, may be {@code null}.
- * @param dependencies The direct dependencies to merge with the direct dependencies from the root dependency's
- * artifact descriptor.
- * @param repositories The repositories to use for the collection, may be {@code null}.
- */
- public CollectRequest( Dependency root, List<Dependency> dependencies, List<RemoteRepository> repositories )
- {
- setRoot( root );
- setDependencies( dependencies );
- setRepositories( repositories );
- }
-
- /**
- * Creates a new request with the specified properties.
- *
- * @param dependencies The direct dependencies of some imaginary root, may be {@code null}.
- * @param managedDependencies The dependency management information to apply to the transitive dependencies, may be
- * {@code null}.
- * @param repositories The repositories to use for the collection, may be {@code null}.
- */
- public CollectRequest( List<Dependency> dependencies, List<Dependency> managedDependencies,
- List<RemoteRepository> repositories )
- {
- setDependencies( dependencies );
- setManagedDependencies( managedDependencies );
- setRepositories( repositories );
- }
-
- /**
- * Gets the root artifact for the dependency graph.
- *
- * @return The root artifact for the dependency graph or {@code null} if none.
- */
- public Artifact getRootArtifact()
- {
- return rootArtifact;
- }
-
- /**
- * Sets the root artifact for the dependency graph. This must not be confused with {@link #setRoot(Dependency)}: The
- * root <em>dependency</em>, like any other specified dependency, will be subject to dependency
- * collection/resolution, i.e. should have an artifact descriptor and a corresponding artifact file. The root
- * <em>artifact</em> on the other hand is only used as a label for the root node of the graph in case no root
- * dependency was specified. As such, the configured root artifact is ignored if {@link #getRoot()} does not return
- * {@code null}.
- *
- * @param rootArtifact The root artifact for the dependency graph, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public CollectRequest setRootArtifact( Artifact rootArtifact )
- {
- this.rootArtifact = rootArtifact;
- return this;
- }
-
- /**
- * Gets the root dependency of the graph.
- *
- * @return The root dependency of the graph or {@code null} if none.
- */
- public Dependency getRoot()
- {
- return root;
- }
-
- /**
- * Sets the root dependency of the graph.
- *
- * @param root The root dependency of the graph, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public CollectRequest setRoot( Dependency root )
- {
- this.root = root;
- return this;
- }
-
- /**
- * Gets the direct dependencies.
- *
- * @return The direct dependencies, never {@code null}.
- */
- public List<Dependency> getDependencies()
- {
- return dependencies;
- }
-
- /**
- * Sets the direct dependencies. If both a root dependency and direct dependencies are given in the request, the
- * direct dependencies from the request will be merged with the direct dependencies from the root dependency's
- * artifact descriptor, giving higher priority to the dependencies from the request.
- *
- * @param dependencies The direct dependencies, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public CollectRequest setDependencies( List<Dependency> dependencies )
- {
- if ( dependencies == null )
- {
- this.dependencies = Collections.emptyList();
- }
- else
- {
- this.dependencies = dependencies;
- }
- return this;
- }
-
- /**
- * Adds the specified direct dependency.
- *
- * @param dependency The dependency to add, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public CollectRequest addDependency( Dependency dependency )
- {
- if ( dependency != null )
- {
- if ( this.dependencies.isEmpty() )
- {
- this.dependencies = new ArrayList<Dependency>();
- }
- this.dependencies.add( dependency );
- }
- return this;
- }
-
- /**
- * Gets the dependency management to apply to transitive dependencies.
- *
- * @return The dependency management to apply to transitive dependencies, never {@code null}.
- */
- public List<Dependency> getManagedDependencies()
- {
- return managedDependencies;
- }
-
- /**
- * Sets the dependency management to apply to transitive dependencies. To clarify, this management does not apply to
- * the direct dependencies of the root node.
- *
- * @param managedDependencies The dependency management, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public CollectRequest setManagedDependencies( List<Dependency> managedDependencies )
- {
- if ( managedDependencies == null )
- {
- this.managedDependencies = Collections.emptyList();
- }
- else
- {
- this.managedDependencies = managedDependencies;
- }
- return this;
- }
-
- /**
- * Adds the specified managed dependency.
- *
- * @param managedDependency The managed dependency to add, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public CollectRequest addManagedDependency( Dependency managedDependency )
- {
- if ( managedDependency != null )
- {
- if ( this.managedDependencies.isEmpty() )
- {
- this.managedDependencies = new ArrayList<Dependency>();
- }
- this.managedDependencies.add( managedDependency );
- }
- return this;
- }
-
- /**
- * Gets the repositories to use for the collection.
- *
- * @return The repositories to use for the collection, never {@code null}.
- */
- public List<RemoteRepository> getRepositories()
- {
- return repositories;
- }
-
- /**
- * Sets the repositories to use for the collection.
- *
- * @param repositories The repositories to use for the collection, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public CollectRequest setRepositories( List<RemoteRepository> repositories )
- {
- if ( repositories == null )
- {
- this.repositories = Collections.emptyList();
- }
- else
- {
- this.repositories = repositories;
- }
- return this;
- }
-
- /**
- * Adds the specified repository for collection.
- *
- * @param repository The repository to collect dependency information from, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public CollectRequest addRepository( RemoteRepository repository )
- {
- if ( repository != null )
- {
- if ( this.repositories.isEmpty() )
- {
- this.repositories = new ArrayList<RemoteRepository>();
- }
- this.repositories.add( repository );
- }
- return this;
- }
-
- /**
- * Gets the context in which this request is made.
- *
- * @return The context, never {@code null}.
- */
- public String getRequestContext()
- {
- return context;
- }
-
- /**
- * Sets the context in which this request is made.
- *
- * @param context The context, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public CollectRequest setRequestContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- 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 CollectRequest setTrace( RequestTrace trace )
- {
- this.trace = trace;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getRoot() + " -> " + getDependencies() + " < " + getRepositories();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/CollectResult.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/CollectResult.java b/aether-api/src/main/java/org/eclipse/aether/collection/CollectResult.java
deleted file mode 100644
index dd9f02e..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/CollectResult.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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.Collections;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.graph.DependencyCycle;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * The result of a dependency collection request.
- *
- * @see RepositorySystem#collectDependencies(RepositorySystemSession, CollectRequest)
- */
-public final class CollectResult
-{
-
- private final CollectRequest request;
-
- private List<Exception> exceptions;
-
- private List<DependencyCycle> cycles;
-
- private DependencyNode root;
-
- /**
- * Creates a new result for the specified request.
- *
- * @param request The resolution request, must not be {@code null}.
- */
- public CollectResult( CollectRequest request )
- {
- if ( request == null )
- {
- throw new IllegalArgumentException( "dependency collection request has not been specified" );
- }
- this.request = request;
- exceptions = Collections.emptyList();
- cycles = Collections.emptyList();
- }
-
- /**
- * Gets the collection request that was made.
- *
- * @return The collection request, never {@code null}.
- */
- public CollectRequest getRequest()
- {
- return request;
- }
-
- /**
- * Gets the exceptions that occurred while building the dependency graph.
- *
- * @return The exceptions that occurred, never {@code null}.
- */
- public List<Exception> getExceptions()
- {
- return exceptions;
- }
-
- /**
- * Records the specified exception while building the dependency graph.
- *
- * @param exception The exception to record, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public CollectResult addException( Exception exception )
- {
- if ( exception != null )
- {
- if ( exceptions.isEmpty() )
- {
- exceptions = new ArrayList<Exception>();
- }
- exceptions.add( exception );
- }
- return this;
- }
-
- /**
- * Gets the dependency cycles that were encountered while building the dependency graph.
- *
- * @return The dependency cycles in the (raw) graph, never {@code null}.
- */
- public List<DependencyCycle> getCycles()
- {
- return cycles;
- }
-
- /**
- * Records the specified dependency cycle.
- *
- * @param cycle The dependency cycle to record, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public CollectResult addCycle( DependencyCycle cycle )
- {
- if ( cycle != null )
- {
- if ( cycles.isEmpty() )
- {
- cycles = new ArrayList<DependencyCycle>();
- }
- cycles.add( cycle );
- }
- return this;
- }
-
- /**
- * Gets the root node of the dependency graph.
- *
- * @return The root node of the dependency graph or {@code null} if none.
- */
- public DependencyNode getRoot()
- {
- return root;
- }
-
- /**
- * Sets the root node of the dependency graph.
- *
- * @param root The root node of the dependency graph, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public CollectResult setRoot( DependencyNode root )
- {
- this.root = root;
- return this;
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( getRoot() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionContext.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionContext.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionContext.java
deleted file mode 100644
index 671bd2a..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionContext.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.graph.Dependency;
-
-/**
- * A context used during dependency collection to update the dependency manager, selector and traverser.
- *
- * @see DependencyManager#deriveChildManager(DependencyCollectionContext)
- * @see DependencyTraverser#deriveChildTraverser(DependencyCollectionContext)
- * @see DependencySelector#deriveChildSelector(DependencyCollectionContext)
- * @see VersionFilter#deriveChildFilter(DependencyCollectionContext)
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface DependencyCollectionContext
-{
-
- /**
- * Gets the repository system session during which the dependency collection happens.
- *
- * @return The repository system session, never {@code null}.
- */
- RepositorySystemSession getSession();
-
- /**
- * Gets the artifact whose children are to be processed next during dependency collection. For all nodes but the
- * root, this is simply shorthand for {@code getDependency().getArtifact()}. In case of the root node however,
- * {@link #getDependency()} might be {@code null} while the node still has an artifact which serves as its label and
- * is not to be resolved.
- *
- * @return The artifact whose children are going to be processed or {@code null} in case of the root node without
- * dependency and label.
- */
- Artifact getArtifact();
-
- /**
- * Gets the dependency whose children are to be processed next during dependency collection.
- *
- * @return The dependency whose children are going to be processed or {@code null} in case of the root node without
- * dependency.
- */
- Dependency getDependency();
-
- /**
- * Gets the dependency management information that was contributed by the artifact descriptor of the current
- * dependency.
- *
- * @return The dependency management information, never {@code null}.
- */
- List<Dependency> getManagedDependencies();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionException.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionException.java
deleted file mode 100644
index 8a04d79..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionException.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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 bad artifact descriptors, version ranges or other issues encountered during calculation of the
- * dependency graph.
- */
-public class DependencyCollectionException
- extends RepositoryException
-{
-
- private final transient CollectResult result;
-
- /**
- * Creates a new exception with the specified result.
- *
- * @param result The collection result at the point the exception occurred, may be {@code null}.
- */
- public DependencyCollectionException( CollectResult result )
- {
- super( "Failed to collect dependencies for " + getSource( result ), getCause( result ) );
- this.result = result;
- }
-
- /**
- * Creates a new exception with the specified result and detail message.
- *
- * @param result The collection result at the point the exception occurred, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public DependencyCollectionException( CollectResult result, String message )
- {
- super( message, getCause( result ) );
- this.result = result;
- }
-
- /**
- * Creates a new exception with the specified result, detail message and cause.
- *
- * @param result The collection result at the point the exception occurred, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public DependencyCollectionException( CollectResult result, String message, Throwable cause )
- {
- super( message, cause );
- this.result = result;
- }
-
- /**
- * Gets the collection result at the point the exception occurred. Despite being incomplete, callers might want to
- * use this result to fail gracefully and continue their operation with whatever interim data has been gathered.
- *
- * @return The collection result or {@code null} if unknown.
- */
- public CollectResult getResult()
- {
- return result;
- }
-
- private static String getSource( CollectResult result )
- {
- if ( result == null )
- {
- return "";
- }
-
- CollectRequest request = result.getRequest();
- if ( request.getRoot() != null )
- {
- return request.getRoot().toString();
- }
- if ( request.getRootArtifact() != null )
- {
- return request.getRootArtifact().toString();
- }
-
- return request.getDependencies().toString();
- }
-
- private static Throwable getCause( CollectResult result )
- {
- Throwable cause = null;
- if ( result != null && !result.getExceptions().isEmpty() )
- {
- cause = result.getExceptions().get( 0 );
- }
- return cause;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformationContext.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformationContext.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformationContext.java
deleted file mode 100644
index ba66474..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformationContext.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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.RepositorySystemSession;
-
-/**
- * A context used during dependency collection to exchange information within a chain of dependency graph transformers.
- *
- * @see DependencyGraphTransformer
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface DependencyGraphTransformationContext
-{
-
- /**
- * Gets the repository system session during which the graph transformation happens.
- *
- * @return The repository system session, never {@code null}.
- */
- RepositorySystemSession getSession();
-
- /**
- * Gets a keyed value from the context.
- *
- * @param key The key used to query the value, must not be {@code null}.
- * @return The queried value or {@code null} if none.
- */
- Object get( Object key );
-
- /**
- * Puts a keyed value into the context.
- *
- * @param key The key used to store the value, must not be {@code null}.
- * @param value The value to store, may be {@code null} to remove the mapping.
- * @return The previous value associated with the key or {@code null} if none.
- */
- Object put( Object key, Object value );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java
deleted file mode 100644
index c472500..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * Transforms a given dependency graph.
- * <p>
- * <strong>Note:</strong> Implementations must be stateless.
- * <p>
- * <em>Warning:</em> Dependency graphs may generally contain cycles. As such a graph transformer that cannot assume for
- * sure that cycles have already been eliminated must gracefully handle cyclic graphs, e.g. guard against infinite
- * recursion.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getDependencyGraphTransformer()
- */
-public interface DependencyGraphTransformer
-{
-
- /**
- * Transforms the dependency graph denoted by the specified root node. The transformer may directly change the
- * provided input graph or create a new graph, the former is recommended for performance reasons.
- *
- * @param node The root node of the (possibly cyclic!) graph to transform, must not be {@code null}.
- * @param context The graph transformation context, must not be {@code null}.
- * @return The result graph of the transformation, never {@code null}.
- * @throws RepositoryException If the transformation failed.
- */
- DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
- throws RepositoryException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManagement.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManagement.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManagement.java
deleted file mode 100644
index 054bfe0..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManagement.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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.Map;
-
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.Exclusion;
-
-/**
- * The management updates to apply to a dependency.
- *
- * @see DependencyManager#manageDependency(Dependency)
- */
-public final class DependencyManagement
-{
-
- private String version;
-
- private String scope;
-
- private Boolean optional;
-
- private Collection<Exclusion> exclusions;
-
- private Map<String, String> properties;
-
- /**
- * Creates an empty management update.
- */
- public DependencyManagement()
- {
- // enables default constructor
- }
-
- /**
- * Gets the new version to apply to the dependency.
- *
- * @return The new version or {@code null} if the version is not managed and the existing dependency version should
- * remain unchanged.
- */
- public String getVersion()
- {
- return version;
- }
-
- /**
- * Sets the new version to apply to the dependency.
- *
- * @param version The new version, may be {@code null} if the version is not managed.
- * @return This management update for chaining, never {@code null}.
- */
- public DependencyManagement setVersion( String version )
- {
- this.version = version;
- return this;
- }
-
- /**
- * Gets the new scope to apply to the dependency.
- *
- * @return The new scope or {@code null} if the scope is not managed and the existing dependency scope should remain
- * unchanged.
- */
- public String getScope()
- {
- return scope;
- }
-
- /**
- * Sets the new scope to apply to the dependency.
- *
- * @param scope The new scope, may be {@code null} if the scope is not managed.
- * @return This management update for chaining, never {@code null}.
- */
- public DependencyManagement setScope( String scope )
- {
- this.scope = scope;
- return this;
- }
-
- /**
- * Gets the new optional flag to apply to the dependency.
- *
- * @return The new optional flag or {@code null} if the flag is not managed and the existing optional flag of the
- * dependency should remain unchanged.
- */
- public Boolean getOptional()
- {
- return optional;
- }
-
- /**
- * Sets the new optional flag to apply to the dependency.
- *
- * @param optional The optional flag, may be {@code null} if the flag is not managed.
- * @return This management update for chaining, never {@code null}.
- */
- public DependencyManagement setOptional( Boolean optional )
- {
- this.optional = optional;
- return this;
- }
-
- /**
- * Gets the new exclusions to apply to the dependency. Note that this collection denotes the complete set of
- * exclusions for the dependency, i.e. the dependency manager controls whether any existing exclusions get merged
- * with information from dependency management or overridden by it.
- *
- * @return The new exclusions or {@code null} if the exclusions are not managed and the existing dependency
- * exclusions should remain unchanged.
- */
- public Collection<Exclusion> getExclusions()
- {
- return exclusions;
- }
-
- /**
- * Sets the new exclusions to apply to the dependency. Note that this collection denotes the complete set of
- * exclusions for the dependency, i.e. the dependency manager controls whether any existing exclusions get merged
- * with information from dependency management or overridden by it.
- *
- * @param exclusions The new exclusions, may be {@code null} if the exclusions are not managed.
- * @return This management update for chaining, never {@code null}.
- */
- public DependencyManagement setExclusions( Collection<Exclusion> exclusions )
- {
- this.exclusions = exclusions;
- return this;
- }
-
- /**
- * Gets the new properties to apply to the dependency. Note that this map denotes the complete set of properties,
- * i.e. the dependency manager controls whether any existing properties get merged with the information from
- * dependency management or overridden by it.
- *
- * @return The new artifact properties or {@code null} if the properties are not managed and the existing properties
- * should remain unchanged.
- */
- public Map<String, String> getProperties()
- {
- return properties;
- }
-
- /**
- * Sets the new properties to apply to the dependency. Note that this map denotes the complete set of properties,
- * i.e. the dependency manager controls whether any existing properties get merged with the information from
- * dependency management or overridden by it.
- *
- * @param properties The new artifact properties, may be {@code null} if the properties are not managed.
- * @return This management update for chaining, never {@code null}.
- */
- public DependencyManagement setProperties( Map<String, String> properties )
- {
- this.properties = properties;
- return this;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java
deleted file mode 100644
index 993e388..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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.graph.Dependency;
-
-/**
- * Applies dependency management to the dependencies of a dependency node.
- * <p>
- * <strong>Note:</strong> Implementations must be stateless.
- * <p>
- * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to
- * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getDependencyManager()
- * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession,
- * CollectRequest)
- */
-public interface DependencyManager
-{
-
- /**
- * Applies dependency management to the specified dependency.
- *
- * @param dependency The dependency to manage, must not be {@code null}.
- * @return The management update to apply to the dependency or {@code null} if the dependency is not managed at all.
- */
- DependencyManagement manageDependency( Dependency dependency );
-
- /**
- * Derives a dependency manager for the specified collection context. When calculating the child manager,
- * implementors are strongly advised to simply return the current instance if nothing changed to help save memory.
- *
- * @param context The dependency collection context, must not be {@code null}.
- * @return The dependency manager for the dependencies of the target node or {@code null} if dependency management
- * should no longer be applied.
- */
- DependencyManager deriveChildManager( DependencyCollectionContext context );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java
deleted file mode 100644
index b257ffa..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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.graph.Dependency;
-
-/**
- * Decides what dependencies to include in the dependency graph.
- * <p>
- * <strong>Note:</strong> Implementations must be stateless.
- * <p>
- * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to
- * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getDependencySelector()
- * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession,
- * CollectRequest)
- */
-public interface DependencySelector
-{
-
- /**
- * Decides whether the specified dependency should be included in the dependency graph.
- *
- * @param dependency The dependency to check, must not be {@code null}.
- * @return {@code false} if the dependency should be excluded from the children of the current node, {@code true}
- * otherwise.
- */
- boolean selectDependency( Dependency dependency );
-
- /**
- * Derives a dependency selector for the specified collection context. When calculating the child selector,
- * implementors are strongly advised to simply return the current instance if nothing changed to help save memory.
- *
- * @param context The dependency collection context, must not be {@code null}.
- * @return The dependency selector for the target node or {@code null} if dependencies should be unconditionally
- * included in the sub graph.
- */
- DependencySelector deriveChildSelector( DependencyCollectionContext context );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java
deleted file mode 100644
index be1887b..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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.graph.Dependency;
-
-/**
- * Decides whether the dependencies of a dependency node should be traversed as well.
- * <p>
- * <strong>Note:</strong> Implementations must be stateless.
- * <p>
- * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to
- * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getDependencyTraverser()
- * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession,
- * CollectRequest)
- */
-public interface DependencyTraverser
-{
-
- /**
- * Decides whether the dependencies of the specified dependency should be traversed.
- *
- * @param dependency The dependency to check, must not be {@code null}.
- * @return {@code true} if the dependency graph builder should recurse into the specified dependency and process its
- * dependencies, {@code false} otherwise.
- */
- boolean traverseDependency( Dependency dependency );
-
- /**
- * Derives a dependency traverser that will be used to decide whether the transitive dependencies of the dependency
- * given in the collection context shall be traversed. When calculating the child traverser, implementors are
- * strongly advised to simply return the current instance if nothing changed to help save memory.
- *
- * @param context The dependency collection context, must not be {@code null}.
- * @return The dependency traverser for the target node or {@code null} if dependencies should be unconditionally
- * traversed in the sub graph.
- */
- DependencyTraverser deriveChildTraverser( DependencyCollectionContext context );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/UnsolvableVersionConflictException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/UnsolvableVersionConflictException.java b/aether-api/src/main/java/org/eclipse/aether/collection/UnsolvableVersionConflictException.java
deleted file mode 100644
index 54a7004..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/UnsolvableVersionConflictException.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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.Collections;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.version.VersionConstraint;
-
-/**
- * Thrown in case of an unsolvable conflict between different version constraints for a dependency.
- */
-public class UnsolvableVersionConflictException
- extends RepositoryException
-{
-
- private final transient Collection<String> versions;
-
- private final transient Collection<? extends List<? extends DependencyNode>> paths;
-
- /**
- * Creates a new exception with the specified paths to conflicting nodes in the dependency graph.
- *
- * @param paths The paths to the dependency nodes that participate in the version conflict, may be {@code null}.
- */
- public UnsolvableVersionConflictException( Collection<? extends List<? extends DependencyNode>> paths )
- {
- super( "Could not resolve version conflict among " + toPaths( paths ) );
- if ( paths == null )
- {
- this.paths = Collections.emptyList();
- this.versions = Collections.emptyList();
- }
- else
- {
- this.paths = paths;
- this.versions = new LinkedHashSet<String>();
- for ( List<? extends DependencyNode> path : paths )
- {
- VersionConstraint constraint = path.get( path.size() - 1 ).getVersionConstraint();
- if ( constraint != null && constraint.getRange() != null )
- {
- versions.add( constraint.toString() );
- }
- }
- }
- }
-
- private static String toPaths( Collection<? extends List<? extends DependencyNode>> paths )
- {
- String result = "";
-
- if ( paths != null )
- {
- Collection<String> strings = new LinkedHashSet<String>();
-
- for ( List<? extends DependencyNode> path : paths )
- {
- strings.add( toPath( path ) );
- }
-
- result = strings.toString();
- }
-
- return result;
- }
-
- private static String toPath( List<? extends DependencyNode> path )
- {
- StringBuilder buffer = new StringBuilder( 256 );
-
- for ( Iterator<? extends DependencyNode> it = path.iterator(); it.hasNext(); )
- {
- DependencyNode node = it.next();
- if ( node.getDependency() == null )
- {
- continue;
- }
-
- Artifact artifact = node.getDependency().getArtifact();
- buffer.append( artifact.getGroupId() );
- buffer.append( ':' ).append( artifact.getArtifactId() );
- buffer.append( ':' ).append( artifact.getExtension() );
- if ( artifact.getClassifier().length() > 0 )
- {
- buffer.append( ':' ).append( artifact.getClassifier() );
- }
- buffer.append( ':' ).append( node.getVersionConstraint() );
-
- if ( it.hasNext() )
- {
- buffer.append( " -> " );
- }
- }
-
- return buffer.toString();
- }
-
- /**
- * Gets the paths leading to the conflicting dependencies.
- *
- * @return The (read-only) paths leading to the conflicting dependencies, never {@code null}.
- */
- public Collection<? extends List<? extends DependencyNode>> getPaths()
- {
- return paths;
- }
-
- /**
- * Gets the conflicting version constraints of the dependency.
- *
- * @return The (read-only) conflicting version constraints, never {@code null}.
- */
- public Collection<String> getVersions()
- {
- return versions;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java b/aether-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java
deleted file mode 100644
index fb36747..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package org.eclipse.aether.collection;
-
-/*
- * 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.Iterator;
-import java.util.List;
-
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.repository.ArtifactRepository;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-
-/**
- * Decides which versions matching a version range should actually be considered for the dependency graph. The version
- * filter is not invoked for dependencies that do not declare a version range but a single version.
- * <p>
- * <strong>Note:</strong> Implementations must be stateless.
- * <p>
- * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to
- * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getVersionFilter()
- * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession,
- * CollectRequest)
- */
-public interface VersionFilter
-{
-
- /**
- * A context used during version filtering to hold relevant data.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
- interface VersionFilterContext
- extends Iterable<Version>
- {
-
- /**
- * Gets the repository system session during which the version filtering happens.
- *
- * @return The repository system session, never {@code null}.
- */
- RepositorySystemSession getSession();
-
- /**
- * Gets the dependency whose version range is being filtered.
- *
- * @return The dependency, never {@code null}.
- */
- Dependency getDependency();
-
- /**
- * Gets the total number of available versions. This count reflects any removals made during version filtering.
- *
- * @return The total number of available versions.
- */
- int getCount();
-
- /**
- * Gets an iterator over the available versions of the dependency. The iterator returns versions in ascending
- * order. Use {@link Iterator#remove()} to exclude a version from further consideration in the dependency graph.
- *
- * @return The iterator of available versions, never {@code null}.
- */
- Iterator<Version> iterator();
-
- /**
- * Gets the version constraint that was parsed from the dependency's version string.
- *
- * @return The parsed version constraint, never {@code null}.
- */
- VersionConstraint getVersionConstraint();
-
- /**
- * Gets the repository from which the specified version was resolved.
- *
- * @param version The version whose source repository should be retrieved, must not be {@code null}.
- * @return The repository from which the version was resolved or {@code null} if unknown.
- */
- ArtifactRepository getRepository( Version version );
-
- /**
- * Gets the remote repositories from which the versions were resolved.
- *
- * @return The (read-only) list of repositories, never {@code null}.
- */
- List<RemoteRepository> getRepositories();
-
- }
-
- /**
- * Filters the available versions for a given dependency. Implementations will usually call
- * {@link VersionFilterContext#iterator() context.iterator()} to inspect the available versions and use
- * {@link java.util.Iterator#remove()} to delete unacceptable versions. If no versions remain after all filtering
- * has been performed, the dependency collection process will automatically fail, i.e. implementations need not
- * handle this situation on their own.
- *
- * @param context The version filter context, must not be {@code null}.
- * @throws RepositoryException If the filtering could not be performed.
- */
- void filterVersions( VersionFilterContext context )
- throws RepositoryException;
-
- /**
- * Derives a version filter for the specified collection context. The derived filter will be used to handle version
- * ranges encountered in child dependencies of the current node. When calculating the child filter, implementors are
- * strongly advised to simply return the current instance if nothing changed to help save memory.
- *
- * @param context The dependency collection context, must not be {@code null}.
- * @return The version filter for the target node or {@code null} if versions should not be filtered any more.
- */
- VersionFilter deriveChildFilter( DependencyCollectionContext context );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/collection/package-info.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/package-info.java b/aether-api/src/main/java/org/eclipse/aether/collection/package-info.java
deleted file mode 100644
index 414629f..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/collection/package-info.java
+++ /dev/null
@@ -1,25 +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 and extension points for collecting the transitive dependencies of an artifact and building a dependency
- * graph.
- */
-package org.eclipse.aether.collection;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/deployment/DeployRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/deployment/DeployRequest.java b/aether-api/src/main/java/org/eclipse/aether/deployment/DeployRequest.java
deleted file mode 100644
index 637f47d..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/deployment/DeployRequest.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package org.eclipse.aether.deployment;
-
-/*
- * 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;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * A request to deploy artifacts and their accompanying metadata into the a remote repository.
- *
- * @see RepositorySystem#deploy(RepositorySystemSession, DeployRequest)
- */
-public final class DeployRequest
-{
-
- private Collection<Artifact> artifacts = Collections.emptyList();
-
- private Collection<Metadata> metadata = Collections.emptyList();
-
- private RemoteRepository repository;
-
- private RequestTrace trace;
-
- /**
- * Creates an uninitialized request.
- */
- public DeployRequest()
- {
- }
-
- /**
- * Gets the artifact to deploy.
- *
- * @return The artifacts to deploy, never {@code null}.
- */
- public Collection<Artifact> getArtifacts()
- {
- return artifacts;
- }
-
- /**
- * Sets the artifacts to deploy.
- *
- * @param artifacts The artifacts to deploy, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public DeployRequest setArtifacts( Collection<Artifact> artifacts )
- {
- if ( artifacts == null )
- {
- this.artifacts = Collections.emptyList();
- }
- else
- {
- this.artifacts = artifacts;
- }
- return this;
- }
-
- /**
- * Adds the specified artifacts for deployment.
- *
- * @param artifact The artifact to add, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public DeployRequest addArtifact( Artifact artifact )
- {
- if ( artifact != null )
- {
- if ( artifacts.isEmpty() )
- {
- artifacts = new ArrayList<Artifact>();
- }
- artifacts.add( artifact );
- }
- return this;
- }
-
- /**
- * Gets the metadata to deploy.
- *
- * @return The metadata to deploy, never {@code null}.
- */
- public Collection<Metadata> getMetadata()
- {
- return metadata;
- }
-
- /**
- * Sets the metadata to deploy.
- *
- * @param metadata The metadata to deploy, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public DeployRequest setMetadata( Collection<Metadata> metadata )
- {
- if ( metadata == null )
- {
- this.metadata = Collections.emptyList();
- }
- else
- {
- this.metadata = metadata;
- }
- return this;
- }
-
- /**
- * Adds the specified metadata for deployment.
- *
- * @param metadata The metadata to add, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public DeployRequest addMetadata( Metadata metadata )
- {
- if ( metadata != null )
- {
- if ( this.metadata.isEmpty() )
- {
- this.metadata = new ArrayList<Metadata>();
- }
- this.metadata.add( metadata );
- }
- return this;
- }
-
- /**
- * Gets the repository to deploy to.
- *
- * @return The repository to deploy to or {@code null} if not set.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Sets the repository to deploy to.
- *
- * @param repository The repository to deploy to, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public DeployRequest setRepository( RemoteRepository repository )
- {
- this.repository = repository;
- 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 DeployRequest setTrace( RequestTrace trace )
- {
- this.trace = trace;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getArtifacts() + ", " + getMetadata() + " > " + getRepository();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/deployment/DeployResult.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/deployment/DeployResult.java b/aether-api/src/main/java/org/eclipse/aether/deployment/DeployResult.java
deleted file mode 100644
index f75705e..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/deployment/DeployResult.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package org.eclipse.aether.deployment;
-
-/*
- * 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 deploying artifacts and their accompanying metadata into the a remote repository.
- *
- * @see RepositorySystem#deploy(RepositorySystemSession, DeployRequest)
- */
-public final class DeployResult
-{
-
- private final DeployRequest request;
-
- private Collection<Artifact> artifacts;
-
- private Collection<Metadata> metadata;
-
- /**
- * Creates a new result for the specified request.
- *
- * @param request The deployment request, must not be {@code null}.
- */
- public DeployResult( DeployRequest request )
- {
- if ( request == null )
- {
- throw new IllegalArgumentException( "deploy request has not been specified" );
- }
- this.request = request;
- artifacts = Collections.emptyList();
- metadata = Collections.emptyList();
- }
-
- /**
- * Gets the deploy request that was made.
- *
- * @return The deploy request, never {@code null}.
- */
- public DeployRequest getRequest()
- {
- return request;
- }
-
- /**
- * Gets the artifacts that got deployed.
- *
- * @return The deployed artifacts, never {@code null}.
- */
- public Collection<Artifact> getArtifacts()
- {
- return artifacts;
- }
-
- /**
- * Sets the artifacts that got deployed.
- *
- * @param artifacts The deployed artifacts, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public DeployResult 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 deployed artifact to add, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public DeployResult addArtifact( Artifact artifact )
- {
- if ( artifact != null )
- {
- if ( artifacts.isEmpty() )
- {
- artifacts = new ArrayList<Artifact>();
- }
- artifacts.add( artifact );
- }
- return this;
- }
-
- /**
- * Gets the metadata that got deployed. Note that due to automatically generated metadata, there might have been
- * more metadata deployed than originally specified in the deploy request.
- *
- * @return The deployed metadata, never {@code null}.
- */
- public Collection<Metadata> getMetadata()
- {
- return metadata;
- }
-
- /**
- * Sets the metadata that got deployed.
- *
- * @param metadata The deployed metadata, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public DeployResult 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 deployed metadata to add, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public DeployResult 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-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/deployment/DeploymentException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/deployment/DeploymentException.java b/aether-api/src/main/java/org/eclipse/aether/deployment/DeploymentException.java
deleted file mode 100644
index 53252ba..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/deployment/DeploymentException.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.eclipse.aether.deployment;
-
-/*
- * 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 a deployment error like authentication failure.
- */
-public class DeploymentException
- extends RepositoryException
-{
-
- /**
- * Creates a new exception with the specified detail message.
- *
- * @param message The detail message, may be {@code null}.
- */
- public DeploymentException( 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 DeploymentException( String message, Throwable cause )
- {
- super( message, cause );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/deployment/package-info.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/deployment/package-info.java b/aether-api/src/main/java/org/eclipse/aether/deployment/package-info.java
deleted file mode 100644
index dc50c21..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/deployment/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 remote repository.
- */
-package org.eclipse.aether.deployment;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/graph/DefaultDependencyNode.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/graph/DefaultDependencyNode.java b/aether-api/src/main/java/org/eclipse/aether/graph/DefaultDependencyNode.java
deleted file mode 100644
index a2ffd0c..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/graph/DefaultDependencyNode.java
+++ /dev/null
@@ -1,399 +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.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-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.
- */
-public final class DefaultDependencyNode
- implements DependencyNode
-{
-
- private DependencyNode parent;
-
- private List<DependencyNode> children;
-
- private Dependency dependency;
-
- private Artifact artifact;
-
- private List<? extends Artifact> relocations;
-
- private Collection<? extends Artifact> aliases;
-
- private VersionConstraint versionConstraint;
-
- private Version version;
-
- private byte managedBits;
-
- private List<RemoteRepository> repositories;
-
- private String context;
-
- private Map<Object, Object> data;
-
- /**
- * Creates a new root node with the specified dependency.
- *
- * @param dependency The dependency associated with this node, may be {@code null} for a root node.
- */
- public DefaultDependencyNode( Dependency dependency )
- {
- this( null, dependency );
- }
-
- /**
- * Creates a new root node with the specified artifact as its label. Note that the new node has no dependency, i.e.
- * {@link #getDependency()} will return {@code null}. Put differently, the specified artifact will not be subject to
- * dependency collection/resolution.
- *
- * @param artifact The artifact to use as label for this node, may be {@code null}.
- */
- public DefaultDependencyNode( Artifact artifact )
- {
- super();
- this.parent = null;
- this.artifact = artifact;
- children = new ArrayList<DependencyNode>( 0 );
- aliases = relocations = Collections.emptyList();
- repositories = Collections.emptyList();
- context = "";
- data = Collections.emptyMap();
- }
-
- /**
- * Creates a mostly shallow clone of the specified node. The new node has its own copy of any custom data and
- * initially no children.
- *
- * @param node The node to copy, must not be {@code null}.
- */
- public DefaultDependencyNode( DependencyNode node )
- {
- super();
- parent = node.getParent();
- dependency = node.getDependency();
- artifact = node.getArtifact();
- children = new ArrayList<DependencyNode>( 0 );
- setAliases( node.getAliases() );
- setRequestContext( node.getRequestContext() );
- setManagedBits( node.getManagedBits() );
- setRelocations( node.getRelocations() );
- setRepositories( node.getRepositories() );
- setVersion( node.getVersion() );
- setVersionConstraint( node.getVersionConstraint() );
- Map<?, ?> data = node.getData();
- setData( data.isEmpty() ? null : new HashMap<Object, Object>( data ) );
- }
-
- /**
- * Creates a new node with the specified dependency.
- *
- * @param parent The parent node of the node or {@code null}.
- * @param dependency The dependency associated with this node, may be {@code null} for a root node.
- *
- * @since 1.2
- */
- public DefaultDependencyNode( DependencyNode parent, Dependency dependency )
- {
- super();
- this.parent = parent;
- this.dependency = dependency;
- artifact = ( dependency != null ) ? dependency.getArtifact() : null;
- children = new ArrayList<DependencyNode>( 0 );
- aliases = relocations = Collections.emptyList();
- repositories = Collections.emptyList();
- context = "";
- data = Collections.emptyMap();
- }
-
- public long getDepth()
- {
- return this.getParent() != null ? this.getParent().getDepth() + 1L : 0L;
- }
-
- public DependencyNode getParent()
- {
- return this.parent;
- }
-
- public List<DependencyNode> getChildren()
- {
- return children;
- }
-
- public void setChildren( List<DependencyNode> children )
- {
- if ( children == null )
- {
- this.children = new ArrayList<DependencyNode>( 0 );
- }
- else
- {
- this.children = children;
- }
- }
-
- public Dependency getDependency()
- {
- return dependency;
- }
-
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- public void setArtifact( Artifact artifact )
- {
- if ( dependency == null )
- {
- throw new UnsupportedOperationException( "node does not have a dependency" );
- }
- dependency = dependency.setArtifact( artifact );
- this.artifact = dependency.getArtifact();
- }
-
- public List<? extends Artifact> getRelocations()
- {
- return relocations;
- }
-
- /**
- * Sets the sequence of relocations that was followed to resolve this dependency's artifact.
- *
- * @param relocations The sequence of relocations, may be {@code null}.
- */
- public void setRelocations( List<? extends Artifact> relocations )
- {
- if ( relocations == null || relocations.isEmpty() )
- {
- this.relocations = Collections.emptyList();
- }
- else
- {
- this.relocations = relocations;
- }
- }
-
- public Collection<? extends Artifact> getAliases()
- {
- return aliases;
- }
-
- /**
- * Sets the known aliases for this dependency's artifact.
- *
- * @param aliases The known aliases, may be {@code null}.
- */
- public void setAliases( Collection<? extends Artifact> aliases )
- {
- if ( aliases == null || aliases.isEmpty() )
- {
- this.aliases = Collections.emptyList();
- }
- else
- {
- this.aliases = aliases;
- }
- }
-
- public VersionConstraint getVersionConstraint()
- {
- return versionConstraint;
- }
-
- /**
- * Sets the version constraint that was parsed from the dependency's version declaration.
- *
- * @param versionConstraint The version constraint for this node, may be {@code null}.
- */
- public void setVersionConstraint( VersionConstraint versionConstraint )
- {
- this.versionConstraint = versionConstraint;
- }
-
- public Version getVersion()
- {
- return version;
- }
-
- /**
- * Sets the version that was selected for the dependency's target artifact.
- *
- * @param version The parsed version, may be {@code null}.
- */
- public void setVersion( Version version )
- {
- this.version = version;
- }
-
- public void setScope( String scope )
- {
- if ( dependency == null )
- {
- throw new UnsupportedOperationException( "node does not have a dependency" );
- }
- dependency = dependency.setScope( scope );
- }
-
- public void setOptional( Boolean optional )
- {
- if ( dependency == null )
- {
- throw new UnsupportedOperationException( "node does not have a dependency" );
- }
- dependency = dependency.setOptional( optional );
- }
-
- public int getManagedBits()
- {
- return managedBits;
- }
-
- /**
- * Sets a bit field indicating which attributes of this node were subject to dependency management.
- *
- * @param managedBits The bit field indicating the managed attributes or {@code 0} if dependency management wasn't
- * applied.
- */
- public void setManagedBits( int managedBits )
- {
- this.managedBits = (byte) ( managedBits & 0x1F );
- }
-
- public List<RemoteRepository> getRepositories()
- {
- return repositories;
- }
-
- /**
- * Sets the remote repositories from which this node's artifact shall be resolved.
- *
- * @param repositories The remote repositories to use for artifact resolution, may be {@code null}.
- */
- public void setRepositories( List<RemoteRepository> repositories )
- {
- if ( repositories == null || repositories.isEmpty() )
- {
- this.repositories = Collections.emptyList();
- }
- else
- {
- this.repositories = repositories;
- }
- }
-
- public String getRequestContext()
- {
- return context;
- }
-
- public void setRequestContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- }
-
- public Map<Object, Object> getData()
- {
- return data;
- }
-
- public void setData( Map<Object, Object> data )
- {
- if ( data == null )
- {
- this.data = Collections.emptyMap();
- }
- else
- {
- this.data = data;
- }
- }
-
- public void setData( Object key, Object value )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "key must not be null" );
- }
-
- if ( value == null )
- {
- if ( !data.isEmpty() )
- {
- data.remove( key );
-
- if ( data.isEmpty() )
- {
- data = Collections.emptyMap();
- }
- }
- }
- else
- {
- if ( data.isEmpty() )
- {
- data = new HashMap<Object, Object>( 1, 2 ); // nodes can be numerous so let's be space conservative
- }
- data.put( key, value );
- }
- }
-
- public boolean accept( DependencyVisitor visitor )
- {
- if ( visitor.visitEnter( this ) )
- {
- for ( DependencyNode child : children )
- {
- if ( !child.accept( visitor ) )
- {
- break;
- }
- }
- }
-
- return visitor.visitLeave( this );
- }
-
- @Override
- public String toString()
- {
- Dependency dep = getDependency();
- if ( dep == null )
- {
- return String.valueOf( getArtifact() );
- }
- return dep.toString();
- }
-
-}
[42/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/DefaultRepositorySystemSessionTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/DefaultRepositorySystemSessionTest.java b/aether-api/src/test/java/org/eclipse/aether/DefaultRepositorySystemSessionTest.java
deleted file mode 100644
index 91afeb5..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/DefaultRepositorySystemSessionTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Map;
-
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.AuthenticationDigest;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.junit.Test;
-
-/**
- */
-public class DefaultRepositorySystemSessionTest
-{
-
- @Test
- public void testDefaultProxySelectorUsesExistingProxy()
- {
- DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
-
- RemoteRepository repo = new RemoteRepository.Builder( "id", "default", "void" ).build();
- assertSame( null, session.getProxySelector().getProxy( repo ) );
-
- Proxy proxy = new Proxy( "http", "localhost", 8080, null );
- repo = new RemoteRepository.Builder( repo ).setProxy( proxy ).build();
- assertSame( proxy, session.getProxySelector().getProxy( repo ) );
- }
-
- @Test
- public void testDefaultAuthenticationSelectorUsesExistingAuth()
- {
- DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
-
- RemoteRepository repo = new RemoteRepository.Builder( "id", "default", "void" ).build();
- assertSame( null, session.getAuthenticationSelector().getAuthentication( repo ) );
-
- Authentication auth = new Authentication()
- {
- public void fill( AuthenticationContext context, String key, Map<String, String> data )
- {
- }
-
- public void digest( AuthenticationDigest digest )
- {
- }
- };
- repo = new RemoteRepository.Builder( repo ).setAuthentication( auth ).build();
- assertSame( auth, session.getAuthenticationSelector().getAuthentication( repo ) );
- }
-
- @Test
- public void testCopyConstructorCopiesPropertiesDeep()
- {
- DefaultRepositorySystemSession session1 = new DefaultRepositorySystemSession();
- session1.setUserProperties( System.getProperties() );
- session1.setSystemProperties( System.getProperties() );
- session1.setConfigProperties( System.getProperties() );
-
- DefaultRepositorySystemSession session2 = new DefaultRepositorySystemSession( session1 );
- session2.setUserProperty( "key", "test" );
- session2.setSystemProperty( "key", "test" );
- session2.setConfigProperty( "key", "test" );
-
- assertEquals( null, session1.getUserProperties().get( "key" ) );
- assertEquals( null, session1.getSystemProperties().get( "key" ) );
- assertEquals( null, session1.getConfigProperties().get( "key" ) );
- }
-
- @Test
- public void testReadOnlyProperties()
- {
- DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
-
- try
- {
- session.getUserProperties().put( "key", "test" );
- fail( "user properties are modifiable" );
- }
- catch ( UnsupportedOperationException e )
- {
- // expected
- }
-
- try
- {
- session.getSystemProperties().put( "key", "test" );
- fail( "system properties are modifiable" );
- }
- catch ( UnsupportedOperationException e )
- {
- // expected
- }
-
- try
- {
- session.getConfigProperties().put( "key", "test" );
- fail( "config properties are modifiable" );
- }
- catch ( UnsupportedOperationException e )
- {
- // expected
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/DefaultSessionDataTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/DefaultSessionDataTest.java b/aether-api/src/test/java/org/eclipse/aether/DefaultSessionDataTest.java
deleted file mode 100644
index 58f3649..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/DefaultSessionDataTest.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.UUID;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.junit.Test;
-
-public class DefaultSessionDataTest
-{
-
- private DefaultSessionData data = new DefaultSessionData();
-
- private Object get( Object key )
- {
- return data.get( key );
- }
-
- private void set( Object key, Object value )
- {
- data.set( key, value );
- }
-
- private boolean set( Object key, Object oldValue, Object newValue )
- {
- return data.set( key, oldValue, newValue );
- }
-
- @Test( expected = RuntimeException.class )
- public void testGet_NullKey()
- {
- get( null );
- }
-
- @Test( expected = RuntimeException.class )
- public void testSet_NullKey()
- {
- set( null, "data" );
- }
-
- @Test
- public void testGetSet()
- {
- Object key = "key";
- assertNull( get( key ) );
- set( key, "value" );
- assertEquals( "value", get( key ) );
- set( key, "changed" );
- assertEquals( "changed", get( key ) );
- set( key, null );
- assertNull( get( key ) );
- }
-
- @Test
- public void testGetSafeSet()
- {
- Object key = "key";
- assertNull( get( key ) );
- assertFalse( set( key, "wrong", "value" ) );
- assertNull( get( key ) );
- assertTrue( set( key, null, "value" ) );
- assertEquals( "value", get( key ) );
- assertTrue( set( key, "value", "value" ) );
- assertEquals( "value", get( key ) );
- assertFalse( set( key, "wrong", "changed" ) );
- assertEquals( "value", get( key ) );
- assertTrue( set( key, "value", "changed" ) );
- assertEquals( "changed", get( key ) );
- assertFalse( set( key, "wrong", null ) );
- assertEquals( "changed", get( key ) );
- assertTrue( set( key, "changed", null ) );
- assertNull( get( key ) );
- assertTrue( set( key, null, null ) );
- assertNull( get( key ) );
- }
-
- @Test( timeout = 10000 )
- public void testConcurrency()
- throws Exception
- {
- final AtomicReference<Throwable> error = new AtomicReference<Throwable>();
- Thread threads[] = new Thread[20];
- for ( int i = 0; i < threads.length; i++ )
- {
- threads[i] = new Thread()
- {
- @Override
- public void run()
- {
- for ( int i = 0; i < 100; i++ )
- {
- String key = UUID.randomUUID().toString();
- try
- {
- set( key, Boolean.TRUE );
- assertEquals( Boolean.TRUE, get( key ) );
- }
- catch ( Throwable t )
- {
- error.compareAndSet( null, t );
- t.printStackTrace();
- }
- }
- }
- };
- }
- for ( Thread thread : threads )
- {
- thread.start();
- }
- for ( Thread thread : threads )
- {
- thread.join();
- }
- assertNull( String.valueOf( error.get() ), error.get() );
- }
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/RepositoryExceptionTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/RepositoryExceptionTest.java b/aether-api/src/test/java/org/eclipse/aether/RepositoryExceptionTest.java
deleted file mode 100644
index c3246be..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/RepositoryExceptionTest.java
+++ /dev/null
@@ -1,228 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.util.Arrays;
-import java.util.Collections;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.collection.CollectRequest;
-import org.eclipse.aether.collection.CollectResult;
-import org.eclipse.aether.collection.DependencyCollectionException;
-import org.eclipse.aether.collection.UnsolvableVersionConflictException;
-import org.eclipse.aether.graph.DefaultDependencyNode;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.metadata.DefaultMetadata;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ArtifactDescriptorException;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResolutionException;
-import org.eclipse.aether.resolution.ArtifactResult;
-import org.eclipse.aether.resolution.DependencyRequest;
-import org.eclipse.aether.resolution.DependencyResolutionException;
-import org.eclipse.aether.resolution.DependencyResult;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResolutionException;
-import org.eclipse.aether.resolution.VersionRangeResult;
-import org.eclipse.aether.resolution.VersionRequest;
-import org.eclipse.aether.resolution.VersionResolutionException;
-import org.eclipse.aether.resolution.VersionResult;
-import org.eclipse.aether.transfer.ArtifactNotFoundException;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.transfer.MetadataNotFoundException;
-import org.eclipse.aether.transfer.MetadataTransferException;
-import org.eclipse.aether.transfer.NoRepositoryConnectorException;
-import org.eclipse.aether.transfer.NoRepositoryLayoutException;
-import org.eclipse.aether.transfer.NoTransporterException;
-import org.eclipse.aether.transfer.RepositoryOfflineException;
-import org.junit.Test;
-
-public class RepositoryExceptionTest
-{
-
- private void assertSerializable( RepositoryException e )
- {
- try
- {
- ObjectOutputStream oos = new ObjectOutputStream( new ByteArrayOutputStream() );
- oos.writeObject( e );
- oos.close();
- }
- catch ( IOException ioe )
- {
- throw new IllegalStateException( ioe );
- }
- }
-
- private RequestTrace newTrace()
- {
- return new RequestTrace( "test" );
- }
-
- private Artifact newArtifact()
- {
- return new DefaultArtifact( "gid", "aid", "ext", "1" );
- }
-
- private Metadata newMetadata()
- {
- return new DefaultMetadata( "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT );
- }
-
- private RemoteRepository newRepo()
- {
- Proxy proxy = new Proxy( Proxy.TYPE_HTTP, "localhost", 8080, null );
- return new RemoteRepository.Builder( "id", "test", "http://localhost" ).setProxy( proxy ).build();
- }
-
- @Test
- public void testArtifactDescriptorException_Serializable()
- {
- ArtifactDescriptorRequest request = new ArtifactDescriptorRequest();
- request.setArtifact( newArtifact() ).addRepository( newRepo() ).setTrace( newTrace() );
- ArtifactDescriptorResult result = new ArtifactDescriptorResult( request );
- assertSerializable( new ArtifactDescriptorException( result ) );
- }
-
- @Test
- public void testArtifactResolutionException_Serializable()
- {
- ArtifactRequest request = new ArtifactRequest();
- request.setArtifact( newArtifact() ).addRepository( newRepo() ).setTrace( newTrace() );
- ArtifactResult result = new ArtifactResult( request );
- assertSerializable( new ArtifactResolutionException( Arrays.asList( result ) ) );
- }
-
- @Test
- public void testArtifactTransferException_Serializable()
- {
- assertSerializable( new ArtifactTransferException( newArtifact(), newRepo(), "error" ) );
- }
-
- @Test
- public void testArtifactNotFoundException_Serializable()
- {
- assertSerializable( new ArtifactNotFoundException( newArtifact(), newRepo(), "error" ) );
- }
-
- @Test
- public void testDependencyCollectionException_Serializable()
- {
- CollectRequest request = new CollectRequest();
- request.addDependency( new Dependency( newArtifact(), "compile" ) );
- request.addRepository( newRepo() );
- request.setTrace( newTrace() );
- CollectResult result = new CollectResult( request );
- assertSerializable( new DependencyCollectionException( result ) );
- }
-
- @Test
- public void testDependencyResolutionException_Serializable()
- {
- CollectRequest request = new CollectRequest();
- request.addDependency( new Dependency( newArtifact(), "compile" ) );
- request.addRepository( newRepo() );
- request.setTrace( newTrace() );
- DependencyRequest req = new DependencyRequest();
- req.setTrace( newTrace() );
- req.setCollectRequest( request );
- DependencyResult result = new DependencyResult( req );
- assertSerializable( new DependencyResolutionException( result, null ) );
- }
-
- @Test
- public void testMetadataTransferException_Serializable()
- {
- assertSerializable( new MetadataTransferException( newMetadata(), newRepo(), "error" ) );
- }
-
- @Test
- public void testMetadataNotFoundException_Serializable()
- {
- assertSerializable( new MetadataNotFoundException( newMetadata(), newRepo(), "error" ) );
- }
-
- @Test
- public void testNoLocalRepositoryManagerException_Serializable()
- {
- assertSerializable( new NoLocalRepositoryManagerException( new LocalRepository( "/tmp" ) ) );
- }
-
- @Test
- public void testNoRepositoryConnectorException_Serializable()
- {
- assertSerializable( new NoRepositoryConnectorException( newRepo() ) );
- }
-
- @Test
- public void testNoRepositoryLayoutException_Serializable()
- {
- assertSerializable( new NoRepositoryLayoutException( newRepo() ) );
- }
-
- @Test
- public void testNoTransporterException_Serializable()
- {
- assertSerializable( new NoTransporterException( newRepo() ) );
- }
-
- @Test
- public void testRepositoryOfflineException_Serializable()
- {
- assertSerializable( new RepositoryOfflineException( newRepo() ) );
- }
-
- @Test
- public void testUnsolvableVersionConflictException_Serializable()
- {
- DependencyNode node = new DefaultDependencyNode( new Dependency( newArtifact(), "test" ) );
- assertSerializable( new UnsolvableVersionConflictException( Collections.singleton( Arrays.asList( node ) ) ) );
- }
-
- @Test
- public void testVersionResolutionException_Serializable()
- {
- VersionRequest request = new VersionRequest();
- request.setArtifact( newArtifact() ).addRepository( newRepo() ).setTrace( newTrace() );
- VersionResult result = new VersionResult( request );
- assertSerializable( new VersionResolutionException( result ) );
- }
-
- @Test
- public void testVersionRangeResolutionException_Serializable()
- {
- VersionRangeRequest request = new VersionRangeRequest();
- request.setArtifact( newArtifact() ).addRepository( newRepo() ).setTrace( newTrace() );
- VersionRangeResult result = new VersionRangeResult( request );
- assertSerializable( new VersionRangeResolutionException( result ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/RequestTraceTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/RequestTraceTest.java b/aether-api/src/test/java/org/eclipse/aether/RequestTraceTest.java
deleted file mode 100644
index 63e5877..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/RequestTraceTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.junit.Test;
-
-/**
- */
-public class RequestTraceTest
-{
-
- @Test
- public void testConstructor()
- {
- RequestTrace trace = new RequestTrace( null );
- assertSame( null, trace.getData() );
-
- trace = new RequestTrace( this );
- assertSame( this, trace.getData() );
- }
-
- @Test
- public void testParentChaining()
- {
- RequestTrace trace1 = new RequestTrace( null );
- RequestTrace trace2 = trace1.newChild( this );
-
- assertSame( null, trace1.getParent() );
- assertSame( null, trace1.getData() );
- assertSame( trace1, trace2.getParent() );
- assertSame( this, trace2.getData() );
- }
-
- @Test
- public void testNewChildRequestTrace()
- {
- RequestTrace trace = RequestTrace.newChild( null, this );
- assertNotNull( trace );
- assertSame( null, trace.getParent() );
- assertSame( this, trace.getData() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/artifact/DefaultArtifactTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/artifact/DefaultArtifactTest.java b/aether-api/src/test/java/org/eclipse/aether/artifact/DefaultArtifactTest.java
deleted file mode 100644
index d8ac40c..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/artifact/DefaultArtifactTest.java
+++ /dev/null
@@ -1,188 +0,0 @@
-package org.eclipse.aether.artifact;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.ArtifactProperties;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.junit.Test;
-
-/**
- */
-public class DefaultArtifactTest
-{
-
- @Test
- public void testDefaultArtifactString()
- {
- Artifact a;
-
- a = new DefaultArtifact( "gid:aid:ver" );
- assertEquals( "gid", a.getGroupId() );
- assertEquals( "aid", a.getArtifactId() );
- assertEquals( "ver", a.getVersion() );
- assertEquals( "ver", a.getBaseVersion() );
- assertEquals( "jar", a.getExtension() );
- assertEquals( "", a.getClassifier() );
-
- a = new DefaultArtifact( "gid:aid:ext:ver" );
- assertEquals( "gid", a.getGroupId() );
- assertEquals( "aid", a.getArtifactId() );
- assertEquals( "ver", a.getVersion() );
- assertEquals( "ver", a.getBaseVersion() );
- assertEquals( "ext", a.getExtension() );
- assertEquals( "", a.getClassifier() );
-
- a = new DefaultArtifact( "org.gid:foo-bar:jar:1.1-20101116.150650-3" );
- assertEquals( "org.gid", a.getGroupId() );
- assertEquals( "foo-bar", a.getArtifactId() );
- assertEquals( "1.1-20101116.150650-3", a.getVersion() );
- assertEquals( "1.1-SNAPSHOT", a.getBaseVersion() );
- assertEquals( "jar", a.getExtension() );
- assertEquals( "", a.getClassifier() );
-
- a = new DefaultArtifact( "gid:aid:ext:cls:ver" );
- assertEquals( "gid", a.getGroupId() );
- assertEquals( "aid", a.getArtifactId() );
- assertEquals( "ver", a.getVersion() );
- assertEquals( "ver", a.getBaseVersion() );
- assertEquals( "ext", a.getExtension() );
- assertEquals( "cls", a.getClassifier() );
-
- a = new DefaultArtifact( "gid:aid::cls:ver" );
- assertEquals( "gid", a.getGroupId() );
- assertEquals( "aid", a.getArtifactId() );
- assertEquals( "ver", a.getVersion() );
- assertEquals( "ver", a.getBaseVersion() );
- assertEquals( "jar", a.getExtension() );
- assertEquals( "cls", a.getClassifier() );
-
- a = new DefaultArtifact( new DefaultArtifact( "gid:aid:ext:cls:ver" ).toString() );
- assertEquals( "gid", a.getGroupId() );
- assertEquals( "aid", a.getArtifactId() );
- assertEquals( "ver", a.getVersion() );
- assertEquals( "ver", a.getBaseVersion() );
- assertEquals( "ext", a.getExtension() );
- assertEquals( "cls", a.getClassifier() );
- }
-
- @Test( expected = IllegalArgumentException.class )
- public void testDefaultArtifactBadString()
- {
- new DefaultArtifact( "gid:aid" );
- }
-
- @Test
- public void testImmutability()
- {
- Artifact a = new DefaultArtifact( "gid:aid:ext:cls:ver" );
- assertNotSame( a, a.setFile( new File( "file" ) ) );
- assertNotSame( a, a.setVersion( "otherVersion" ) );
- assertNotSame( a, a.setProperties( Collections.singletonMap( "key", "value" ) ) );
- }
-
- @Test
- public void testArtifactType()
- {
- DefaultArtifactType type = new DefaultArtifactType( "typeId", "typeExt", "typeCls", "typeLang", true, true );
-
- Artifact a = new DefaultArtifact( "gid", "aid", null, null, null, null, type );
- assertEquals( "typeExt", a.getExtension() );
- assertEquals( "typeCls", a.getClassifier() );
- assertEquals( "typeLang", a.getProperties().get( ArtifactProperties.LANGUAGE ) );
- assertEquals( "typeId", a.getProperties().get( ArtifactProperties.TYPE ) );
- assertEquals( "true", a.getProperties().get( ArtifactProperties.INCLUDES_DEPENDENCIES ) );
- assertEquals( "true", a.getProperties().get( ArtifactProperties.CONSTITUTES_BUILD_PATH ) );
-
- a = new DefaultArtifact( "gid", "aid", "cls", "ext", "ver", null, type );
- assertEquals( "ext", a.getExtension() );
- assertEquals( "cls", a.getClassifier() );
- assertEquals( "typeLang", a.getProperties().get( ArtifactProperties.LANGUAGE ) );
- assertEquals( "typeId", a.getProperties().get( ArtifactProperties.TYPE ) );
- assertEquals( "true", a.getProperties().get( ArtifactProperties.INCLUDES_DEPENDENCIES ) );
- assertEquals( "true", a.getProperties().get( ArtifactProperties.CONSTITUTES_BUILD_PATH ) );
-
- Map<String, String> props = new HashMap<String, String>();
- props.put( "someNonStandardProperty", "someNonStandardProperty" );
- a = new DefaultArtifact( "gid", "aid", "cls", "ext", "ver", props, type );
- assertEquals( "ext", a.getExtension() );
- assertEquals( "cls", a.getClassifier() );
- assertEquals( "typeLang", a.getProperties().get( ArtifactProperties.LANGUAGE ) );
- assertEquals( "typeId", a.getProperties().get( ArtifactProperties.TYPE ) );
- assertEquals( "true", a.getProperties().get( ArtifactProperties.INCLUDES_DEPENDENCIES ) );
- assertEquals( "true", a.getProperties().get( ArtifactProperties.CONSTITUTES_BUILD_PATH ) );
- assertEquals( "someNonStandardProperty", a.getProperties().get( "someNonStandardProperty" ) );
-
- props = new HashMap<String, String>();
- props.put( "someNonStandardProperty", "someNonStandardProperty" );
- props.put( ArtifactProperties.CONSTITUTES_BUILD_PATH, "rubbish" );
- props.put( ArtifactProperties.INCLUDES_DEPENDENCIES, "rubbish" );
- a = new DefaultArtifact( "gid", "aid", "cls", "ext", "ver", props, type );
- assertEquals( "ext", a.getExtension() );
- assertEquals( "cls", a.getClassifier() );
- assertEquals( "typeLang", a.getProperties().get( ArtifactProperties.LANGUAGE ) );
- assertEquals( "typeId", a.getProperties().get( ArtifactProperties.TYPE ) );
- assertEquals( "rubbish", a.getProperties().get( ArtifactProperties.INCLUDES_DEPENDENCIES ) );
- assertEquals( "rubbish", a.getProperties().get( ArtifactProperties.CONSTITUTES_BUILD_PATH ) );
- assertEquals( "someNonStandardProperty", a.getProperties().get( "someNonStandardProperty" ) );
- }
-
- @Test
- public void testPropertiesCopied()
- {
- Map<String, String> props = new HashMap<String, String>();
- props.put( "key", "value1" );
-
- Artifact a = new DefaultArtifact( "gid:aid:1", props );
- assertEquals( "value1", a.getProperty( "key", null ) );
- props.clear();
- assertEquals( "value1", a.getProperty( "key", null ) );
-
- props.put( "key", "value2" );
- a = a.setProperties( props );
- assertEquals( "value2", a.getProperty( "key", null ) );
- props.clear();
- assertEquals( "value2", a.getProperty( "key", null ) );
- }
-
- @Test
- public void testIsSnapshot()
- {
- Artifact a = new DefaultArtifact( "gid:aid:ext:cls:1.0" );
- assertFalse( a.getVersion(), a.isSnapshot() );
-
- a = new DefaultArtifact( "gid:aid:ext:cls:1.0-SNAPSHOT" );
- assertTrue( a.getVersion(), a.isSnapshot() );
-
- a = new DefaultArtifact( "gid:aid:ext:cls:1.0-20101116.150650-3" );
- assertTrue( a.getVersion(), a.isSnapshot() );
-
- a = new DefaultArtifact( "gid:aid:ext:cls:1.0-20101116x150650-3" );
- assertFalse( a.getVersion(), a.isSnapshot() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/graph/DependencyTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/graph/DependencyTest.java b/aether-api/src/test/java/org/eclipse/aether/graph/DependencyTest.java
deleted file mode 100644
index c96746d..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/graph/DependencyTest.java
+++ /dev/null
@@ -1,73 +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 static org.junit.Assert.*;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.Exclusion;
-import org.junit.Test;
-
-/**
- */
-public class DependencyTest
-{
-
- @Test
- public void testSetScope()
- {
- Dependency d1 = new Dependency( new DefaultArtifact( "gid:aid:ver" ), "compile" );
-
- Dependency d2 = d1.setScope( null );
- assertNotSame( d2, d1 );
- assertEquals( "", d2.getScope() );
-
- Dependency d3 = d1.setScope( "test" );
- assertNotSame( d3, d1 );
- assertEquals( "test", d3.getScope() );
- }
-
- @Test
- public void testSetExclusions()
- {
- Dependency d1 =
- new Dependency( new DefaultArtifact( "gid:aid:ver" ), "compile", false,
- Collections.singleton( new Exclusion( "g", "a", "c", "e" ) ) );
-
- Dependency d2 = d1.setExclusions( null );
- assertNotSame( d2, d1 );
- assertEquals( 0, d2.getExclusions().size() );
-
- assertSame( d2, d2.setExclusions( null ) );
- assertSame( d2, d2.setExclusions( Collections.<Exclusion> emptyList() ) );
- assertSame( d2, d2.setExclusions( Collections.<Exclusion> emptySet() ) );
- assertSame( d1, d1.setExclusions( Arrays.asList( new Exclusion( "g", "a", "c", "e" ) ) ) );
-
- Dependency d3 =
- d1.setExclusions( Arrays.asList( new Exclusion( "g", "a", "c", "e" ), new Exclusion( "g", "a", "c", "f" ) ) );
- assertNotSame( d3, d1 );
- assertEquals( 2, d3.getExclusions().size() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/repository/AuthenticationContextTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/repository/AuthenticationContextTest.java b/aether-api/src/test/java/org/eclipse/aether/repository/AuthenticationContextTest.java
deleted file mode 100644
index 6d579a1..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/repository/AuthenticationContextTest.java
+++ /dev/null
@@ -1,170 +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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.util.Map;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.junit.Test;
-
-public class AuthenticationContextTest
-{
-
- private RepositorySystemSession newSession()
- {
- return new DefaultRepositorySystemSession();
- }
-
- private RemoteRepository newRepo( Authentication auth, Proxy proxy )
- {
- return new RemoteRepository.Builder( "test", "default", "http://localhost" ) //
- .setAuthentication( auth ).setProxy( proxy ).build();
- }
-
- private Proxy newProxy( Authentication auth )
- {
- return new Proxy( Proxy.TYPE_HTTP, "localhost", 8080, auth );
- }
-
- private Authentication newAuth()
- {
- return new Authentication()
- {
- public void fill( AuthenticationContext context, String key, Map<String, String> data )
- {
- assertNotNull( context );
- assertNotNull( context.getSession() );
- assertNotNull( context.getRepository() );
- assertNull( "fill() should only be called once", context.get( "key" ) );
- context.put( "key", "value" );
- }
-
- public void digest( AuthenticationDigest digest )
- {
- fail( "AuthenticationContext should not call digest()" );
- }
- };
- }
-
- @Test
- public void testForRepository()
- {
- RepositorySystemSession session = newSession();
- RemoteRepository repo = newRepo( newAuth(), newProxy( newAuth() ) );
- AuthenticationContext context = AuthenticationContext.forRepository( session, repo );
- assertNotNull( context );
- assertSame( session, context.getSession() );
- assertSame( repo, context.getRepository() );
- assertNull( context.getProxy() );
- assertEquals( "value", context.get( "key" ) );
- assertEquals( "value", context.get( "key" ) );
- }
-
- @Test
- public void testForRepository_NoAuth()
- {
- RepositorySystemSession session = newSession();
- RemoteRepository repo = newRepo( null, newProxy( newAuth() ) );
- AuthenticationContext context = AuthenticationContext.forRepository( session, repo );
- assertNull( context );
- }
-
- @Test
- public void testForProxy()
- {
- RepositorySystemSession session = newSession();
- Proxy proxy = newProxy( newAuth() );
- RemoteRepository repo = newRepo( newAuth(), proxy );
- AuthenticationContext context = AuthenticationContext.forProxy( session, repo );
- assertNotNull( context );
- assertSame( session, context.getSession() );
- assertSame( repo, context.getRepository() );
- assertSame( proxy, context.getProxy() );
- assertEquals( "value", context.get( "key" ) );
- assertEquals( "value", context.get( "key" ) );
- }
-
- @Test
- public void testForProxy_NoProxy()
- {
- RepositorySystemSession session = newSession();
- Proxy proxy = null;
- RemoteRepository repo = newRepo( newAuth(), proxy );
- AuthenticationContext context = AuthenticationContext.forProxy( session, repo );
- assertNull( context );
- }
-
- @Test
- public void testForProxy_NoProxyAuth()
- {
- RepositorySystemSession session = newSession();
- Proxy proxy = newProxy( null );
- RemoteRepository repo = newRepo( newAuth(), proxy );
- AuthenticationContext context = AuthenticationContext.forProxy( session, repo );
- assertNull( context );
- }
-
- @Test
- public void testGet_StringVsChars()
- {
- AuthenticationContext context = AuthenticationContext.forRepository( newSession(), newRepo( newAuth(), null ) );
- context.put( "key", new char[] { 'v', 'a', 'l', '1' } );
- assertEquals( "val1", context.get( "key" ) );
- context.put( "key", "val2" );
- assertArrayEquals( new char[] { 'v', 'a', 'l', '2' }, context.get( "key", char[].class ) );
- }
-
- @Test
- public void testGet_StringVsFile()
- {
- AuthenticationContext context = AuthenticationContext.forRepository( newSession(), newRepo( newAuth(), null ) );
- context.put( "key", "val1" );
- assertEquals( new File( "val1" ), context.get( "key", File.class ) );
- context.put( "key", new File( "val2" ) );
- assertEquals( "val2", context.get( "key" ) );
- }
-
- @Test
- public void testPut_EraseCharArrays()
- {
- AuthenticationContext context = AuthenticationContext.forRepository( newSession(), newRepo( newAuth(), null ) );
- char[] secret = { 'v', 'a', 'l', 'u', 'e' };
- context.put( "key", secret );
- context.put( "key", secret.clone() );
- assertArrayEquals( new char[] { 0, 0, 0, 0, 0 }, secret );
- }
-
- @Test
- public void testClose_EraseCharArrays()
- {
- AuthenticationContext.close( null );
-
- AuthenticationContext context = AuthenticationContext.forRepository( newSession(), newRepo( newAuth(), null ) );
- char[] secret = { 'v', 'a', 'l', 'u', 'e' };
- context.put( "key", secret );
- AuthenticationContext.close( context );
- assertArrayEquals( new char[] { 0, 0, 0, 0, 0 }, secret );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/repository/AuthenticationDigestTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/repository/AuthenticationDigestTest.java b/aether-api/src/test/java/org/eclipse/aether/repository/AuthenticationDigestTest.java
deleted file mode 100644
index 387a3da..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/repository/AuthenticationDigestTest.java
+++ /dev/null
@@ -1,150 +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 static org.junit.Assert.*;
-
-import java.util.Map;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.junit.Test;
-
-public class AuthenticationDigestTest
-{
-
- private RepositorySystemSession newSession()
- {
- return new DefaultRepositorySystemSession();
- }
-
- private RemoteRepository newRepo( Authentication auth, Proxy proxy )
- {
- return new RemoteRepository.Builder( "test", "default", "http://localhost" ) //
- .setAuthentication( auth ).setProxy( proxy ).build();
- }
-
- private Proxy newProxy( Authentication auth )
- {
- return new Proxy( Proxy.TYPE_HTTP, "localhost", 8080, auth );
- }
-
- @Test
- public void testForRepository()
- {
- final RepositorySystemSession session = newSession();
- final RemoteRepository[] repos = { null };
-
- Authentication auth = new Authentication()
- {
- public void fill( AuthenticationContext context, String key, Map<String, String> data )
- {
- fail( "AuthenticationDigest should not call fill()" );
- }
-
- public void digest( AuthenticationDigest digest )
- {
- assertNotNull( digest );
- assertSame( session, digest.getSession() );
- assertNotNull( digest.getRepository() );
- assertNull( digest.getProxy() );
- assertNull( "digest() should only be called once", repos[0] );
- repos[0] = digest.getRepository();
-
- digest.update( (byte[]) null );
- digest.update( (char[]) null );
- digest.update( (String[]) null );
- digest.update( null, null );
- }
- };
-
- RemoteRepository repo = newRepo( auth, newProxy( null ) );
-
- String digest = AuthenticationDigest.forRepository( session, repo );
- assertSame( repo, repos[0] );
- assertNotNull( digest );
- assertTrue( digest.length() > 0 );
- }
-
- @Test
- public void testForRepository_NoAuth()
- {
- RemoteRepository repo = newRepo( null, null );
-
- String digest = AuthenticationDigest.forRepository( newSession(), repo );
- assertEquals( "", digest );
- }
-
- @Test
- public void testForProxy()
- {
- final RepositorySystemSession session = newSession();
- final Proxy[] proxies = { null };
-
- Authentication auth = new Authentication()
- {
- public void fill( AuthenticationContext context, String key, Map<String, String> data )
- {
- fail( "AuthenticationDigest should not call fill()" );
- }
-
- public void digest( AuthenticationDigest digest )
- {
- assertNotNull( digest );
- assertSame( session, digest.getSession() );
- assertNotNull( digest.getRepository() );
- assertNotNull( digest.getProxy() );
- assertNull( "digest() should only be called once", proxies[0] );
- proxies[0] = digest.getProxy();
-
- digest.update( (byte[]) null );
- digest.update( (char[]) null );
- digest.update( (String[]) null );
- digest.update( null, null );
- }
- };
-
- Proxy proxy = newProxy( auth );
-
- String digest = AuthenticationDigest.forProxy( session, newRepo( null, proxy ) );
- assertSame( proxy, proxies[0] );
- assertNotNull( digest );
- assertTrue( digest.length() > 0 );
- }
-
- @Test
- public void testForProxy_NoProxy()
- {
- RemoteRepository repo = newRepo( null, null );
-
- String digest = AuthenticationDigest.forProxy( newSession(), repo );
- assertEquals( "", digest );
- }
-
- @Test
- public void testForProxy_NoProxyAuth()
- {
- RemoteRepository repo = newRepo( null, newProxy( null ) );
-
- String digest = AuthenticationDigest.forProxy( newSession(), repo );
- assertEquals( "", digest );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/repository/RemoteRepositoryBuilderTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/repository/RemoteRepositoryBuilderTest.java b/aether-api/src/test/java/org/eclipse/aether/repository/RemoteRepositoryBuilderTest.java
deleted file mode 100644
index a384705..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/repository/RemoteRepositoryBuilderTest.java
+++ /dev/null
@@ -1,185 +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 static org.junit.Assert.*;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.repository.RemoteRepository.Builder;
-import org.junit.Before;
-import org.junit.Test;
-
-public class RemoteRepositoryBuilderTest
-{
-
- private RemoteRepository prototype;
-
- @Before
- public void init()
- {
- prototype = new Builder( "id", "type", "file:void" ).build();
- }
-
- @Test
- public void testReusePrototype()
- {
- Builder builder = new Builder( prototype );
- assertSame( prototype, builder.build() );
- }
-
- @Test( expected = IllegalArgumentException.class )
- public void testPrototypeMandatory()
- {
- new Builder( null );
- }
-
- @Test
- public void testSetId()
- {
- Builder builder = new Builder( prototype );
- RemoteRepository repo = builder.setId( prototype.getId() ).build();
- assertSame( prototype, repo );
- repo = builder.setId( "new-id" ).build();
- assertEquals( "new-id", repo.getId() );
- }
-
- @Test
- public void testSetContentType()
- {
- Builder builder = new Builder( prototype );
- RemoteRepository repo = builder.setContentType( prototype.getContentType() ).build();
- assertSame( prototype, repo );
- repo = builder.setContentType( "new-type" ).build();
- assertEquals( "new-type", repo.getContentType() );
- }
-
- @Test
- public void testSetUrl()
- {
- Builder builder = new Builder( prototype );
- RemoteRepository repo = builder.setUrl( prototype.getUrl() ).build();
- assertSame( prototype, repo );
- repo = builder.setUrl( "file:new" ).build();
- assertEquals( "file:new", repo.getUrl() );
- }
-
- @Test
- public void testSetPolicy()
- {
- Builder builder = new Builder( prototype );
- RemoteRepository repo = builder.setPolicy( prototype.getPolicy( false ) ).build();
- assertSame( prototype, repo );
- RepositoryPolicy policy = new RepositoryPolicy( true, "never", "fail" );
- repo = builder.setPolicy( policy ).build();
- assertEquals( policy, repo.getPolicy( true ) );
- assertEquals( policy, repo.getPolicy( false ) );
- }
-
- @Test
- public void testSetReleasePolicy()
- {
- Builder builder = new Builder( prototype );
- RemoteRepository repo = builder.setReleasePolicy( prototype.getPolicy( false ) ).build();
- assertSame( prototype, repo );
- RepositoryPolicy policy = new RepositoryPolicy( true, "never", "fail" );
- repo = builder.setReleasePolicy( policy ).build();
- assertEquals( policy, repo.getPolicy( false ) );
- assertEquals( prototype.getPolicy( true ), repo.getPolicy( true ) );
- }
-
- @Test
- public void testSetSnapshotPolicy()
- {
- Builder builder = new Builder( prototype );
- RemoteRepository repo = builder.setSnapshotPolicy( prototype.getPolicy( true ) ).build();
- assertSame( prototype, repo );
- RepositoryPolicy policy = new RepositoryPolicy( true, "never", "fail" );
- repo = builder.setSnapshotPolicy( policy ).build();
- assertEquals( policy, repo.getPolicy( true ) );
- assertEquals( prototype.getPolicy( false ), repo.getPolicy( false ) );
- }
-
- @Test
- public void testSetProxy()
- {
- Builder builder = new Builder( prototype );
- RemoteRepository repo = builder.setProxy( prototype.getProxy() ).build();
- assertSame( prototype, repo );
- Proxy proxy = new Proxy( "http", "localhost", 8080 );
- repo = builder.setProxy( proxy ).build();
- assertEquals( proxy, repo.getProxy() );
- }
-
- @Test
- public void testSetAuthentication()
- {
- Builder builder = new Builder( prototype );
- RemoteRepository repo = builder.setAuthentication( prototype.getAuthentication() ).build();
- assertSame( prototype, repo );
- Authentication auth = new Authentication()
- {
- public void fill( AuthenticationContext context, String key, Map<String, String> data )
- {
- }
-
- public void digest( AuthenticationDigest digest )
- {
- }
- };
- repo = builder.setAuthentication( auth ).build();
- assertEquals( auth, repo.getAuthentication() );
- }
-
- @Test
- public void testSetMirroredRepositories()
- {
- Builder builder = new Builder( prototype );
- RemoteRepository repo = builder.setMirroredRepositories( prototype.getMirroredRepositories() ).build();
- assertSame( prototype, repo );
- List<RemoteRepository> mirrored = new ArrayList<RemoteRepository>( Arrays.asList( repo ) );
- repo = builder.setMirroredRepositories( mirrored ).build();
- assertEquals( mirrored, repo.getMirroredRepositories() );
- }
-
- @Test
- public void testAddMirroredRepository()
- {
- Builder builder = new Builder( prototype );
- RemoteRepository repo = builder.addMirroredRepository( null ).build();
- assertSame( prototype, repo );
- repo = builder.addMirroredRepository( prototype ).build();
- assertEquals( Arrays.asList( prototype ), repo.getMirroredRepositories() );
- }
-
- @Test
- public void testSetRepositoryManager()
- {
- Builder builder = new Builder( prototype );
- RemoteRepository repo = builder.setRepositoryManager( prototype.isRepositoryManager() ).build();
- assertSame( prototype, repo );
- repo = builder.setRepositoryManager( !prototype.isRepositoryManager() ).build();
- assertEquals( !prototype.isRepositoryManager(), repo.isRepositoryManager() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/repository/RemoteRepositoryTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/repository/RemoteRepositoryTest.java b/aether-api/src/test/java/org/eclipse/aether/repository/RemoteRepositoryTest.java
deleted file mode 100644
index 97f0b3e..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/repository/RemoteRepositoryTest.java
+++ /dev/null
@@ -1,96 +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 static org.junit.Assert.*;
-
-import org.eclipse.aether.repository.RemoteRepository;
-import org.junit.Test;
-
-/**
- */
-public class RemoteRepositoryTest
-{
-
- @Test
- public void testGetProtocol()
- {
- RemoteRepository.Builder builder = new RemoteRepository.Builder( "id", "type", "" );
- RemoteRepository repo = builder.build();
- assertEquals( "", repo.getProtocol() );
-
- repo = builder.setUrl( "http://localhost" ).build();
- assertEquals( "http", repo.getProtocol() );
-
- repo = builder.setUrl( "HTTP://localhost" ).build();
- assertEquals( "HTTP", repo.getProtocol() );
-
- repo = builder.setUrl( "dav+http://www.sonatype.org/" ).build();
- assertEquals( "dav+http", repo.getProtocol() );
-
- repo = builder.setUrl( "dav:http://www.sonatype.org/" ).build();
- assertEquals( "dav:http", repo.getProtocol() );
-
- repo = builder.setUrl( "file:/path" ).build();
- assertEquals( "file", repo.getProtocol() );
-
- repo = builder.setUrl( "file:path" ).build();
- assertEquals( "file", repo.getProtocol() );
-
- repo = builder.setUrl( "file:C:\\dir" ).build();
- assertEquals( "file", repo.getProtocol() );
-
- repo = builder.setUrl( "file:C:/dir" ).build();
- assertEquals( "file", repo.getProtocol() );
- }
-
- @Test
- public void testGetHost()
- {
- RemoteRepository.Builder builder = new RemoteRepository.Builder( "id", "type", "" );
- RemoteRepository repo = builder.build();
- assertEquals( "", repo.getHost() );
-
- repo = builder.setUrl( "http://localhost" ).build();
- assertEquals( "localhost", repo.getHost() );
-
- repo = builder.setUrl( "http://localhost/" ).build();
- assertEquals( "localhost", repo.getHost() );
-
- repo = builder.setUrl( "http://localhost:1234/" ).build();
- assertEquals( "localhost", repo.getHost() );
-
- repo = builder.setUrl( "http://127.0.0.1" ).build();
- assertEquals( "127.0.0.1", repo.getHost() );
-
- repo = builder.setUrl( "http://127.0.0.1/" ).build();
- assertEquals( "127.0.0.1", repo.getHost() );
-
- repo = builder.setUrl( "http://user@localhost/path" ).build();
- assertEquals( "localhost", repo.getHost() );
-
- repo = builder.setUrl( "http://user:pass@localhost/path" ).build();
- assertEquals( "localhost", repo.getHost() );
-
- repo = builder.setUrl( "http://user:pass@localhost:1234/path" ).build();
- assertEquals( "localhost", repo.getHost() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/transfer/AbstractTransferListenerTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/transfer/AbstractTransferListenerTest.java b/aether-api/src/test/java/org/eclipse/aether/transfer/AbstractTransferListenerTest.java
deleted file mode 100644
index 87c1472..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/transfer/AbstractTransferListenerTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.aether.transfer.AbstractTransferListener;
-import org.eclipse.aether.transfer.TransferListener;
-import org.junit.Test;
-
-/**
- */
-public class AbstractTransferListenerTest
-{
-
- @Test
- public void testAllEventTypesHandled()
- throws Exception
- {
- for ( Method method : TransferListener.class.getMethods() )
- {
- assertNotNull( AbstractTransferListener.class.getDeclaredMethod( method.getName(),
- method.getParameterTypes() ) );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/transfer/TransferEventTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/transfer/TransferEventTest.java b/aether-api/src/test/java/org/eclipse/aether/transfer/TransferEventTest.java
deleted file mode 100644
index 0ce6249..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/transfer/TransferEventTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.nio.ByteBuffer;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.transfer.TransferEvent;
-import org.eclipse.aether.transfer.TransferResource;
-import org.junit.Test;
-
-/**
- */
-public class TransferEventTest
-{
-
- private static TransferResource res = new TransferResource( "file://nil", "void", null, null );
-
- private static RepositorySystemSession session = new DefaultRepositorySystemSession();
-
- @Test
- public void testByteArrayConversion()
- {
- byte[] buffer = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- int length = buffer.length - 2;
- int offset = 1;
-
- TransferEvent event = new TransferEvent.Builder( session, res ).setDataBuffer( buffer, offset, length ).build();
-
- ByteBuffer bb = event.getDataBuffer();
- byte[] dst = new byte[bb.remaining()];
- bb.get( dst );
-
- byte[] expected = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
- assertArrayEquals( expected, dst );
- }
-
- @Test
- public void testRepeatableReadingOfDataBuffer()
- {
- byte[] data = { 0, 1, 2, 3, 4, 5, 6, 7 };
- ByteBuffer buffer = ByteBuffer.wrap( data );
-
- TransferEvent event = new TransferEvent.Builder( session, res ).setDataBuffer( buffer ).build();
-
- assertEquals( 8, event.getDataLength() );
-
- ByteBuffer eventBuffer = event.getDataBuffer();
- assertNotNull( eventBuffer );
- assertEquals( 8, eventBuffer.remaining() );
-
- byte[] eventData = new byte[8];
- eventBuffer.get( eventData );
- assertArrayEquals( data, eventData );
- assertEquals( 0, eventBuffer.remaining() );
- assertEquals( 8, event.getDataLength() );
-
- eventBuffer = event.getDataBuffer();
- assertNotNull( eventBuffer );
- assertEquals( 8, eventBuffer.remaining() );
- eventBuffer.get( eventData );
- assertArrayEquals( data, eventData );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/pom.xml
----------------------------------------------------------------------
diff --git a/aether-connector-basic/pom.xml b/aether-connector-basic/pom.xml
deleted file mode 100644
index 578c0d6..0000000
--- a/aether-connector-basic/pom.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- 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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>aether-connector-basic</artifactId>
-
- <name>Aether Connector Basic</name>
- <description>
- A repository connector implementation for repositories using URI-based layouts.
- </description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-spi</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-util</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.sonatype.sisu</groupId>
- <artifactId>sisu-guice</artifactId>
- <classifier>no_aop</classifier>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-test-util</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.sisu</groupId>
- <artifactId>sisu-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-</project>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ArtifactTransportListener.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ArtifactTransportListener.java b/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ArtifactTransportListener.java
deleted file mode 100644
index f8a9b1c..0000000
--- a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ArtifactTransportListener.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * 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.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.ArtifactTransfer;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.transfer.ArtifactNotFoundException;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.transfer.TransferEvent;
-
-final class ArtifactTransportListener
- extends TransferTransportListener<ArtifactTransfer>
-{
-
- private final RemoteRepository repository;
-
- public ArtifactTransportListener( ArtifactTransfer transfer, RemoteRepository repository,
- TransferEvent.Builder eventBuilder )
- {
- super( transfer, eventBuilder );
- this.repository = repository;
- }
-
- @Override
- public void transferFailed( Exception exception, int classification )
- {
- ArtifactTransferException e;
- if ( classification == Transporter.ERROR_NOT_FOUND )
- {
- e = new ArtifactNotFoundException( getTransfer().getArtifact(), repository );
- }
- else
- {
- e = new ArtifactTransferException( getTransfer().getArtifact(), repository, exception );
- }
- getTransfer().setException( e );
- super.transferFailed( e, classification );
- }
-
-}
[31/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/Maven2RepositoryLayoutFactoryTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/Maven2RepositoryLayoutFactoryTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/Maven2RepositoryLayoutFactoryTest.java
deleted file mode 100644
index 7411a1d..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/Maven2RepositoryLayoutFactoryTest.java
+++ /dev/null
@@ -1,241 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.net.URI;
-import java.util.List;
-import java.util.Locale;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.metadata.DefaultMetadata;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayout;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayout.Checksum;
-import org.eclipse.aether.transfer.NoRepositoryLayoutException;
-import org.junit.Before;
-import org.junit.Test;
-
-public class Maven2RepositoryLayoutFactoryTest
-{
-
- private DefaultRepositorySystemSession session;
-
- private Maven2RepositoryLayoutFactory factory;
-
- private RepositoryLayout layout;
-
- private RemoteRepository newRepo( String type )
- {
- return new RemoteRepository.Builder( "test", type, "classpath:/nil" ).build();
- }
-
- private void assertChecksum( Checksum actual, String expectedUri, String expectedAlgo )
- {
- assertEquals( expectedUri, actual.getLocation().toString() );
- assertEquals( expectedAlgo, actual.getAlgorithm() );
- }
-
- private void assertChecksums( List<Checksum> actual, String baseUri, String... algos )
- {
- assertEquals( algos.length, actual.size() );
- for ( int i = 0; i < algos.length; i++ )
- {
- String uri = baseUri + '.' + algos[i].replace( "-", "" ).toLowerCase( Locale.ENGLISH );
- assertChecksum( actual.get( i ), uri, algos[i] );
- }
- }
-
- @Before
- public void setUp()
- throws Exception
- {
- session = TestUtils.newSession();
- factory = new Maven2RepositoryLayoutFactory();
- layout = factory.newInstance( session, newRepo( "default" ) );
- }
-
- @Test( expected = NoRepositoryLayoutException.class )
- public void testBadLayout()
- throws Exception
- {
- factory.newInstance( session, newRepo( "DEFAULT" ) );
- }
-
- @Test
- public void testArtifactLocation_Release()
- {
- DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "ext", "1.0" );
- URI uri = layout.getLocation( artifact, false );
- assertEquals( "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext", uri.toString() );
- uri = layout.getLocation( artifact, true );
- assertEquals( "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext", uri.toString() );
- }
-
- @Test
- public void testArtifactLocation_Snapshot()
- {
- DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "ext", "1.0-20110329.221805-4" );
- URI uri = layout.getLocation( artifact, false );
- assertEquals( "g/i/d/a-i.d/1.0-SNAPSHOT/a-i.d-1.0-20110329.221805-4-cls.ext", uri.toString() );
- uri = layout.getLocation( artifact, true );
- assertEquals( "g/i/d/a-i.d/1.0-SNAPSHOT/a-i.d-1.0-20110329.221805-4-cls.ext", uri.toString() );
- }
-
- @Test
- public void testMetadataLocation_RootLevel()
- {
- DefaultMetadata metadata = new DefaultMetadata( "archetype-catalog.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT );
- URI uri = layout.getLocation( metadata, false );
- assertEquals( "archetype-catalog.xml", uri.toString() );
- uri = layout.getLocation( metadata, true );
- assertEquals( "archetype-catalog.xml", uri.toString() );
- }
-
- @Test
- public void testMetadataLocation_GroupLevel()
- {
- DefaultMetadata metadata =
- new DefaultMetadata( "org.apache.maven.plugins", "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT );
- URI uri = layout.getLocation( metadata, false );
- assertEquals( "org/apache/maven/plugins/maven-metadata.xml", uri.toString() );
- uri = layout.getLocation( metadata, true );
- assertEquals( "org/apache/maven/plugins/maven-metadata.xml", uri.toString() );
- }
-
- @Test
- public void testMetadataLocation_ArtifactLevel()
- {
- DefaultMetadata metadata =
- new DefaultMetadata( "org.apache.maven.plugins", "maven-jar-plugin", "maven-metadata.xml",
- Metadata.Nature.RELEASE_OR_SNAPSHOT );
- URI uri = layout.getLocation( metadata, false );
- assertEquals( "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml", uri.toString() );
- uri = layout.getLocation( metadata, true );
- assertEquals( "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml", uri.toString() );
- }
-
- @Test
- public void testMetadataLocation_VersionLevel()
- {
- DefaultMetadata metadata =
- new DefaultMetadata( "org.apache.maven.plugins", "maven-jar-plugin", "1.0-SNAPSHOT", "maven-metadata.xml",
- Metadata.Nature.RELEASE_OR_SNAPSHOT );
- URI uri = layout.getLocation( metadata, false );
- assertEquals( "org/apache/maven/plugins/maven-jar-plugin/1.0-SNAPSHOT/maven-metadata.xml", uri.toString() );
- uri = layout.getLocation( metadata, true );
- assertEquals( "org/apache/maven/plugins/maven-jar-plugin/1.0-SNAPSHOT/maven-metadata.xml", uri.toString() );
- }
-
- @Test
- public void testArtifactChecksums_Download()
- {
- DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "ext", "1.0" );
- URI uri = layout.getLocation( artifact, false );
- List<Checksum> checksums = layout.getChecksums( artifact, false, uri );
- assertEquals( 2, checksums.size() );
- assertChecksum( checksums.get( 0 ), "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext.sha1", "SHA-1" );
- assertChecksum( checksums.get( 1 ), "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext.md5", "MD5" );
- }
-
- @Test
- public void testArtifactChecksums_Upload()
- {
- DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "ext", "1.0" );
- URI uri = layout.getLocation( artifact, true );
- List<Checksum> checksums = layout.getChecksums( artifact, true, uri );
- assertEquals( 2, checksums.size() );
- assertChecksum( checksums.get( 0 ), "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext.sha1", "SHA-1" );
- assertChecksum( checksums.get( 1 ), "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext.md5", "MD5" );
- }
-
- @Test
- public void testMetadataChecksums_Download()
- {
- DefaultMetadata metadata =
- new DefaultMetadata( "org.apache.maven.plugins", "maven-jar-plugin", "maven-metadata.xml",
- Metadata.Nature.RELEASE_OR_SNAPSHOT );
- URI uri = layout.getLocation( metadata, false );
- List<Checksum> checksums = layout.getChecksums( metadata, false, uri );
- assertEquals( 2, checksums.size() );
- assertChecksum( checksums.get( 0 ), "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml.sha1",
- "SHA-1" );
- assertChecksum( checksums.get( 1 ), "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml.md5", "MD5" );
- }
-
- @Test
- public void testMetadataChecksums_Upload()
- {
- DefaultMetadata metadata =
- new DefaultMetadata( "org.apache.maven.plugins", "maven-jar-plugin", "maven-metadata.xml",
- Metadata.Nature.RELEASE_OR_SNAPSHOT );
- URI uri = layout.getLocation( metadata, true );
- List<Checksum> checksums = layout.getChecksums( metadata, true, uri );
- assertEquals( 2, checksums.size() );
- assertChecksum( checksums.get( 0 ), "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml.sha1",
- "SHA-1" );
- assertChecksum( checksums.get( 1 ), "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml.md5", "MD5" );
- }
-
- @Test
- public void testSignatureChecksums_Download()
- {
- DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "asc", "1.0" );
- URI uri = layout.getLocation( artifact, false );
- List<Checksum> checksums = layout.getChecksums( artifact, false, uri );
- assertChecksums( checksums, "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.asc", "SHA-1", "MD5" );
-
- artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "jar.asc", "1.0" );
- uri = layout.getLocation( artifact, false );
- checksums = layout.getChecksums( artifact, false, uri );
- assertEquals( 0, checksums.size() );
- }
-
- @Test
- public void testSignatureChecksums_Upload()
- {
- DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "asc", "1.0" );
- URI uri = layout.getLocation( artifact, true );
- List<Checksum> checksums = layout.getChecksums( artifact, true, uri );
- assertChecksums( checksums, "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.asc", "SHA-1", "MD5" );
-
- artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "jar.asc", "1.0" );
- uri = layout.getLocation( artifact, true );
- checksums = layout.getChecksums( artifact, true, uri );
- assertEquals( 0, checksums.size() );
- }
-
- @Test
- public void testSignatureChecksums_Force()
- throws Exception
- {
- session.setConfigProperty( Maven2RepositoryLayoutFactory.CONFIG_PROP_SIGNATURE_CHECKSUMS, "true" );
- layout = factory.newInstance( session, newRepo( "default" ) );
- DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "jar.asc", "1.0" );
- URI uri = layout.getLocation( artifact, true );
- List<Checksum> checksums = layout.getChecksums( artifact, true, uri );
- assertChecksums( checksums, "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.jar.asc", "SHA-1", "MD5" );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/PrioritizedComponentTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/PrioritizedComponentTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/PrioritizedComponentTest.java
deleted file mode 100644
index 989c1ad..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/PrioritizedComponentTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.junit.Test;
-
-public class PrioritizedComponentTest
-{
-
- @Test
- public void testIsDisabled()
- {
- assertTrue( new PrioritizedComponent<String>( "", String.class, Float.NaN, 0 ).isDisabled() );
- assertFalse( new PrioritizedComponent<String>( "", String.class, 0, 0 ).isDisabled() );
- assertFalse( new PrioritizedComponent<String>( "", String.class, 1, 0 ).isDisabled() );
- assertFalse( new PrioritizedComponent<String>( "", String.class, -1, 0 ).isDisabled() );
- }
-
- @Test
- public void testCompareTo()
- {
- assertCompare( 0, Float.NaN, Float.NaN );
- assertCompare( 0, 0, 0 );
-
- assertCompare( 1, 0, 1 );
- assertCompare( 1, 2, Float.POSITIVE_INFINITY );
- assertCompare( 1, Float.NEGATIVE_INFINITY, -3 );
-
- assertCompare( 1, Float.NaN, 0 );
- assertCompare( 1, Float.NaN, -1 );
- assertCompare( 1, Float.NaN, Float.NEGATIVE_INFINITY );
- assertCompare( 1, Float.NaN, Float.POSITIVE_INFINITY );
-
- assertCompare( -1, Float.NaN, 0, 1 );
- assertCompare( -1, 10, 0, 1 );
- }
-
- private void assertCompare( int expected, float priority1, float priority2 )
- {
- PrioritizedComponent<?> one = new PrioritizedComponent<String>( "", String.class, priority1, 0 );
- PrioritizedComponent<?> two = new PrioritizedComponent<String>( "", String.class, priority2, 0 );
- assertEquals( expected, one.compareTo( two ) );
- assertEquals( -expected, two.compareTo( one ) );
- }
-
- private void assertCompare( int expected, float priority, int index1, int index2 )
- {
- PrioritizedComponent<?> one = new PrioritizedComponent<String>( "", String.class, priority, index1 );
- PrioritizedComponent<?> two = new PrioritizedComponent<String>( "", String.class, priority, index2 );
- assertEquals( expected, one.compareTo( two ) );
- assertEquals( -expected, two.compareTo( one ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/PrioritizedComponentsTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/PrioritizedComponentsTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/PrioritizedComponentsTest.java
deleted file mode 100644
index 3f5a093..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/PrioritizedComponentsTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ThreadFactory;
-
-import org.eclipse.aether.ConfigurationProperties;
-import org.junit.Test;
-
-public class PrioritizedComponentsTest
-{
-
- @Test
- public void testGetConfigKeys()
- {
- String[] keys =
- { ConfigurationProperties.PREFIX_PRIORITY + "java.lang.String",
- ConfigurationProperties.PREFIX_PRIORITY + "String" };
- assertArrayEquals( keys, PrioritizedComponents.getConfigKeys( String.class ) );
-
- keys =
- new String[] { ConfigurationProperties.PREFIX_PRIORITY + "java.util.concurrent.ThreadFactory",
- ConfigurationProperties.PREFIX_PRIORITY + "ThreadFactory",
- ConfigurationProperties.PREFIX_PRIORITY + "Thread" };
- assertArrayEquals( keys, PrioritizedComponents.getConfigKeys( ThreadFactory.class ) );
- }
-
- @Test
- public void testAdd_PriorityOverride()
- {
- Exception comp1 = new IllegalArgumentException();
- Exception comp2 = new NullPointerException();
- Map<Object, Object> config = new HashMap<Object, Object>();
- config.put( ConfigurationProperties.PREFIX_PRIORITY + comp1.getClass().getName(), 6 );
- config.put( ConfigurationProperties.PREFIX_PRIORITY + comp2.getClass().getName(), 7 );
- PrioritizedComponents<Exception> components = new PrioritizedComponents<Exception>( config );
- components.add( comp1, 1 );
- components.add( comp2, 0 );
- List<PrioritizedComponent<Exception>> sorted = components.getEnabled();
- assertEquals( 2, sorted.size() );
- assertSame( comp2, sorted.get( 0 ).getComponent() );
- assertEquals( 7, sorted.get( 0 ).getPriority(), 0.1f );
- assertSame( comp1, sorted.get( 1 ).getComponent() );
- assertEquals( 6, sorted.get( 1 ).getPriority(), 0.1f );
- }
-
- @Test
- public void testAdd_ImplicitPriority()
- {
- Exception comp1 = new IllegalArgumentException();
- Exception comp2 = new NullPointerException();
- Map<Object, Object> config = new HashMap<Object, Object>();
- config.put( ConfigurationProperties.IMPLICIT_PRIORITIES, true );
- PrioritizedComponents<Exception> components = new PrioritizedComponents<Exception>( config );
- components.add( comp1, 1 );
- components.add( comp2, 2 );
- List<PrioritizedComponent<Exception>> sorted = components.getEnabled();
- assertEquals( 2, sorted.size() );
- assertSame( comp1, sorted.get( 0 ).getComponent() );
- assertSame( comp2, sorted.get( 1 ).getComponent() );
- }
-
- @Test
- public void testAdd_Disabled()
- {
- Exception comp1 = new IllegalArgumentException();
- Exception comp2 = new NullPointerException();
- Map<Object, Object> config = new HashMap<Object, Object>();
- PrioritizedComponents<Exception> components = new PrioritizedComponents<Exception>( config );
-
- components.add( new UnsupportedOperationException(), Float.NaN );
- List<PrioritizedComponent<Exception>> sorted = components.getEnabled();
- assertEquals( 0, sorted.size() );
-
- components.add( comp1, 1 );
- sorted = components.getEnabled();
- assertEquals( 1, sorted.size() );
- assertSame( comp1, sorted.get( 0 ).getComponent() );
-
- components.add( new Exception(), Float.NaN );
- sorted = components.getEnabled();
- assertEquals( 1, sorted.size() );
- assertSame( comp1, sorted.get( 0 ).getComponent() );
-
- components.add( comp2, 0 );
- sorted = components.getEnabled();
- assertEquals( 2, sorted.size() );
- assertSame( comp1, sorted.get( 0 ).getComponent() );
- assertSame( comp2, sorted.get( 1 ).getComponent() );
- }
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryConnector.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryConnector.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryConnector.java
deleted file mode 100644
index bbb78bf..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryConnector.java
+++ /dev/null
@@ -1,298 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.spi.connector.ArtifactDownload;
-import org.eclipse.aether.spi.connector.ArtifactUpload;
-import org.eclipse.aether.spi.connector.MetadataDownload;
-import org.eclipse.aether.spi.connector.MetadataUpload;
-import org.eclipse.aether.spi.connector.RepositoryConnector;
-import org.eclipse.aether.spi.connector.Transfer;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.transfer.MetadataTransferException;
-import org.eclipse.aether.transfer.TransferEvent;
-import org.eclipse.aether.transfer.TransferListener;
-import org.eclipse.aether.transfer.TransferResource;
-
-/**
- * A repository connector recording all get/put-requests and faking the results.
- */
-class RecordingRepositoryConnector
- implements RepositoryConnector
-{
-
- RepositorySystemSession session;
-
- boolean fail;
-
- private Artifact[] expectGet;
-
- private Artifact[] expectPut;
-
- private Metadata[] expectGetMD;
-
- private Metadata[] expectPutMD;
-
- private List<Artifact> actualGet = new ArrayList<Artifact>();
-
- private List<Metadata> actualGetMD = new ArrayList<Metadata>();
-
- private List<Artifact> actualPut = new ArrayList<Artifact>();
-
- private List<Metadata> actualPutMD = new ArrayList<Metadata>();
-
- public RecordingRepositoryConnector( RepositorySystemSession session, Artifact[] expectGet, Artifact[] expectPut,
- Metadata[] expectGetMD, Metadata[] expectPutMD )
- {
- this.session = session;
- this.expectGet = expectGet;
- this.expectPut = expectPut;
- this.expectGetMD = expectGetMD;
- this.expectPutMD = expectPutMD;
- }
-
- public RecordingRepositoryConnector( RepositorySystemSession session )
- {
- this.session = session;
- }
-
- public RecordingRepositoryConnector()
- {
- }
-
- public void get( Collection<? extends ArtifactDownload> artifactDownloads,
- Collection<? extends MetadataDownload> metadataDownloads )
- {
- try
- {
- if ( artifactDownloads != null )
- {
- for ( ArtifactDownload download : artifactDownloads )
- {
- fireInitiated( download );
- Artifact artifact = download.getArtifact();
- this.actualGet.add( artifact );
- if ( fail )
- {
- download.setException( new ArtifactTransferException( artifact, null, "forced failure" ) );
- }
- else
- {
- TestFileUtils.writeString( download.getFile(), artifact.toString() );
- }
- fireDone( download );
- }
- }
- if ( metadataDownloads != null )
- {
- for ( MetadataDownload download : metadataDownloads )
- {
- fireInitiated( download );
- Metadata metadata = download.getMetadata();
- this.actualGetMD.add( metadata );
- if ( fail )
- {
- download.setException( new MetadataTransferException( metadata, null, "forced failure" ) );
- }
- else
- {
- TestFileUtils.writeString( download.getFile(), metadata.toString() );
- }
- fireDone( download );
- }
- }
- }
- catch ( Exception e )
- {
- throw new IllegalStateException( e );
- }
- }
-
- public void put( Collection<? extends ArtifactUpload> artifactUploads,
- Collection<? extends MetadataUpload> metadataUploads )
- {
- try
- {
- if ( artifactUploads != null )
- {
- for ( ArtifactUpload upload : artifactUploads )
- {
- // mimic "real" connector
- fireInitiated( upload );
- if ( upload.getFile() == null )
- {
- upload.setException( new ArtifactTransferException( upload.getArtifact(), null, "no file" ) );
- }
- else if ( fail )
- {
- upload.setException( new ArtifactTransferException( upload.getArtifact(), null,
- "forced failure" ) );
- }
- this.actualPut.add( upload.getArtifact() );
- fireDone( upload );
- }
- }
- if ( metadataUploads != null )
- {
- for ( MetadataUpload upload : metadataUploads )
- {
- // mimic "real" connector
- fireInitiated( upload );
- if ( upload.getFile() == null )
- {
- upload.setException( new MetadataTransferException( upload.getMetadata(), null, "no file" ) );
- }
- else if ( fail )
- {
- upload.setException( new MetadataTransferException( upload.getMetadata(), null,
- "forced failure" ) );
- }
- this.actualPutMD.add( upload.getMetadata() );
- fireDone( upload );
- }
- }
- }
- catch ( Exception e )
- {
- throw new IllegalStateException( e );
- }
- }
-
- private void fireInitiated( Transfer transfer )
- throws Exception
- {
- TransferListener listener = transfer.getListener();
- if ( listener == null )
- {
- return;
- }
- TransferEvent.Builder event =
- new TransferEvent.Builder( session, new TransferResource( null, null, null, transfer.getTrace() ) );
- event.setType( TransferEvent.EventType.INITIATED );
- listener.transferInitiated( event.build() );
- }
-
- private void fireDone( Transfer transfer )
- throws Exception
- {
- TransferListener listener = transfer.getListener();
- if ( listener == null )
- {
- return;
- }
- TransferEvent.Builder event =
- new TransferEvent.Builder( session, new TransferResource( null, null, null, transfer.getTrace() ) );
- event.setException( transfer.getException() );
- if ( transfer.getException() != null )
- {
- listener.transferFailed( event.setType( TransferEvent.EventType.FAILED ).build() );
- }
- else
- {
- listener.transferSucceeded( event.setType( TransferEvent.EventType.SUCCEEDED ).build() );
- }
- }
-
- public void close()
- {
- }
-
- public void assertSeenExpected()
- {
- assertSeenExpected( actualGet, expectGet );
- assertSeenExpected( actualGetMD, expectGetMD );
- assertSeenExpected( actualPut, expectPut );
- assertSeenExpected( actualPutMD, expectPutMD );
- }
-
- private void assertSeenExpected( List<? extends Object> actual, Object[] expected )
- {
- if ( expected == null )
- {
- expected = new Object[0];
- }
-
- assertEquals( "different number of expected and actual elements:\n", expected.length, actual.size() );
- int idx = 0;
- for ( Object actualObject : actual )
- {
- assertEquals( "seen object differs", expected[idx++], actualObject );
- }
- }
-
- public List<Artifact> getActualArtifactGetRequests()
- {
- return actualGet;
- }
-
- public List<Metadata> getActualMetadataGetRequests()
- {
- return actualGetMD;
- }
-
- public List<Artifact> getActualArtifactPutRequests()
- {
- return actualPut;
- }
-
- public List<Metadata> getActualMetadataPutRequests()
- {
- return actualPutMD;
- }
-
- public void setExpectGet( Artifact... expectGet )
- {
- this.expectGet = expectGet;
- }
-
- public void setExpectPut( Artifact... expectPut )
- {
- this.expectPut = expectPut;
- }
-
- public void setExpectGet( Metadata... expectGetMD )
- {
- this.expectGetMD = expectGetMD;
- }
-
- public void setExpectPut( Metadata... expectPutMD )
- {
- this.expectPutMD = expectPutMD;
- }
-
- public void resetActual()
- {
- this.actualGet = new ArrayList<Artifact>();
- this.actualGetMD = new ArrayList<Metadata>();
- this.actualPut = new ArrayList<Artifact>();
- this.actualPutMD = new ArrayList<Metadata>();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryListener.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryListener.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryListener.java
deleted file mode 100644
index a6f91f1..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryListener.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Collections;
-import java.util.List;
-
-import org.eclipse.aether.RepositoryEvent;
-import org.eclipse.aether.RepositoryListener;
-
-/**
- * Collects observed repository events for later inspection.
- */
-class RecordingRepositoryListener
- implements RepositoryListener
-{
-
- private List<RepositoryEvent> events = Collections.synchronizedList( new ArrayList<RepositoryEvent>() );
-
- public List<RepositoryEvent> getEvents()
- {
- return events;
- }
-
- public void clear()
- {
- events.clear();
- }
-
- public void artifactDescriptorInvalid( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void artifactDescriptorMissing( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void metadataInvalid( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void artifactResolving( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void artifactResolved( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void artifactDownloading( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void artifactDownloaded( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void metadataDownloaded( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void metadataDownloading( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void metadataResolving( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void metadataResolved( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void artifactInstalling( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void artifactInstalled( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void metadataInstalling( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void metadataInstalled( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void artifactDeploying( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void artifactDeployed( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void metadataDeploying( RepositoryEvent event )
- {
- events.add( event );
- }
-
- public void metadataDeployed( RepositoryEvent event )
- {
- events.add( event );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/SafeTransferListenerTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/SafeTransferListenerTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/SafeTransferListenerTest.java
deleted file mode 100644
index 6d7a6fe..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/SafeTransferListenerTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.aether.transfer.TransferListener;
-import org.junit.Test;
-
-/**
- */
-public class SafeTransferListenerTest
-{
-
- @Test
- public void testAllEventTypesHandled()
- throws Exception
- {
- Class<?> type = SafeTransferListener.class;
- for ( Method method : TransferListener.class.getMethods() )
- {
- assertNotNull( type.getDeclaredMethod( method.getName(), method.getParameterTypes() ) );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerTest.java
deleted file mode 100644
index a301bd4..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManager;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.repository.LocalArtifactRequest;
-import org.eclipse.aether.repository.LocalArtifactResult;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class SimpleLocalRepositoryManagerTest
-{
-
- private File basedir;
-
- private SimpleLocalRepositoryManager manager;
-
- private RepositorySystemSession session;
-
- @Before
- public void setup()
- throws IOException
- {
- basedir = TestFileUtils.createTempDir( "simple-repo" );
- manager = new SimpleLocalRepositoryManager( basedir );
- session = TestUtils.newSession();
- }
-
- @After
- public void tearDown()
- throws Exception
- {
- TestFileUtils.deleteFile( basedir );
- manager = null;
- session = null;
- }
-
- @Test
- public void testGetPathForLocalArtifact()
- throws Exception
- {
- Artifact artifact = new DefaultArtifact( "g.i.d:a.i.d:1.0-SNAPSHOT" );
- assertEquals( "1.0-SNAPSHOT", artifact.getBaseVersion() );
- assertEquals( "g/i/d/a.i.d/1.0-SNAPSHOT/a.i.d-1.0-SNAPSHOT.jar", manager.getPathForLocalArtifact( artifact ) );
-
- artifact = new DefaultArtifact( "g.i.d:a.i.d:1.0-20110329.221805-4" );
- assertEquals( "1.0-SNAPSHOT", artifact.getBaseVersion() );
- assertEquals( "g/i/d/a.i.d/1.0-SNAPSHOT/a.i.d-1.0-SNAPSHOT.jar", manager.getPathForLocalArtifact( artifact ) );
-
- artifact = new DefaultArtifact( "g.i.d", "a.i.d", "", "", "1.0-SNAPSHOT" );
- assertEquals( "g/i/d/a.i.d/1.0-SNAPSHOT/a.i.d-1.0-SNAPSHOT", manager.getPathForLocalArtifact( artifact ) );
- }
-
- @Test
- public void testGetPathForRemoteArtifact()
- throws Exception
- {
- RemoteRepository remoteRepo = new RemoteRepository.Builder( "repo", "default", "ram:/void" ).build();
-
- Artifact artifact = new DefaultArtifact( "g.i.d:a.i.d:1.0-SNAPSHOT" );
- assertEquals( "1.0-SNAPSHOT", artifact.getBaseVersion() );
- assertEquals( "g/i/d/a.i.d/1.0-SNAPSHOT/a.i.d-1.0-SNAPSHOT.jar",
- manager.getPathForRemoteArtifact( artifact, remoteRepo, "" ) );
-
- artifact = new DefaultArtifact( "g.i.d:a.i.d:1.0-20110329.221805-4" );
- assertEquals( "1.0-SNAPSHOT", artifact.getBaseVersion() );
- assertEquals( "g/i/d/a.i.d/1.0-SNAPSHOT/a.i.d-1.0-20110329.221805-4.jar",
- manager.getPathForRemoteArtifact( artifact, remoteRepo, "" ) );
- }
-
- @Test
- public void testFindArtifactUsesTimestampedVersion()
- throws Exception
- {
- Artifact artifact = new DefaultArtifact( "g.i.d:a.i.d:1.0-SNAPSHOT" );
- File file = new File( basedir, manager.getPathForLocalArtifact( artifact ) );
- TestFileUtils.writeString( file, "test" );
-
- artifact = artifact.setVersion( "1.0-20110329.221805-4" );
- LocalArtifactRequest request = new LocalArtifactRequest();
- request.setArtifact( artifact );
- LocalArtifactResult result = manager.find( session, request );
- assertNull( result.toString(), result.getFile() );
- assertFalse( result.toString(), result.isAvailable() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StaticUpdateCheckManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StaticUpdateCheckManager.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StaticUpdateCheckManager.java
deleted file mode 100644
index 7810089..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StaticUpdateCheckManager.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.impl.UpdateCheck;
-import org.eclipse.aether.impl.UpdateCheckManager;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.transfer.ArtifactNotFoundException;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.transfer.MetadataNotFoundException;
-import org.eclipse.aether.transfer.MetadataTransferException;
-
-class StaticUpdateCheckManager
- implements UpdateCheckManager
-{
-
- private boolean checkRequired;
-
- private boolean localUpToDate;
-
- public StaticUpdateCheckManager( boolean checkRequired )
- {
- this( checkRequired, !checkRequired );
- }
-
- public StaticUpdateCheckManager( boolean checkRequired, boolean localUpToDate )
- {
- this.checkRequired = checkRequired;
- this.localUpToDate = localUpToDate;
- }
-
- public void touchMetadata( RepositorySystemSession session, UpdateCheck<Metadata, MetadataTransferException> check )
- {
- }
-
- public void touchArtifact( RepositorySystemSession session, UpdateCheck<Artifact, ArtifactTransferException> check )
- {
- }
-
- public void checkMetadata( RepositorySystemSession session, UpdateCheck<Metadata, MetadataTransferException> check )
- {
- check.setRequired( checkRequired );
-
- if ( check.getLocalLastUpdated() != 0 && localUpToDate )
- {
- check.setRequired( false );
- }
- if ( !check.isRequired() && !check.getFile().isFile() )
- {
- check.setException( new MetadataNotFoundException( check.getItem(), check.getRepository() ) );
- }
- }
-
- public void checkArtifact( RepositorySystemSession session, UpdateCheck<Artifact, ArtifactTransferException> check )
- {
- check.setRequired( checkRequired );
-
- if ( check.getLocalLastUpdated() != 0 && localUpToDate )
- {
- check.setRequired( false );
- }
- if ( !check.isRequired() && !check.getFile().isFile() )
- {
- check.setException( new ArtifactNotFoundException( check.getItem(), check.getRepository() ) );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRemoteRepositoryManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRemoteRepositoryManager.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRemoteRepositoryManager.java
deleted file mode 100644
index 1836a04..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRemoteRepositoryManager.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.impl.RemoteRepositoryManager;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.util.StringUtils;
-
-class StubRemoteRepositoryManager
- implements RemoteRepositoryManager
-{
-
- public StubRemoteRepositoryManager()
- {
- }
-
- public List<RemoteRepository> aggregateRepositories( RepositorySystemSession session,
- List<RemoteRepository> dominantRepositories,
- List<RemoteRepository> recessiveRepositories,
- boolean recessiveIsRaw )
- {
- return dominantRepositories;
- }
-
- public RepositoryPolicy getPolicy( RepositorySystemSession session, RemoteRepository repository, boolean releases,
- boolean snapshots )
- {
- RepositoryPolicy policy = repository.getPolicy( snapshots );
-
- String checksums = session.getChecksumPolicy();
- if ( StringUtils.isEmpty( checksums ) )
- {
- checksums = policy.getChecksumPolicy();
- }
- String updates = session.getUpdatePolicy();
- if ( StringUtils.isEmpty( updates ) )
- {
- updates = policy.getUpdatePolicy();
- }
-
- policy = new RepositoryPolicy( policy.isEnabled(), updates, checksums );
-
- return policy;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRepositoryConnectorProvider.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRepositoryConnectorProvider.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRepositoryConnectorProvider.java
deleted file mode 100644
index 3cb5e38..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRepositoryConnectorProvider.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.impl.RepositoryConnectorProvider;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.RepositoryConnector;
-import org.eclipse.aether.transfer.NoRepositoryConnectorException;
-
-class StubRepositoryConnectorProvider
- implements RepositoryConnectorProvider
-{
-
- public StubRepositoryConnectorProvider( RepositoryConnector connector )
- {
- setConnector( connector );
- }
-
- public StubRepositoryConnectorProvider()
- {
- }
-
- private RepositoryConnector connector;
-
- public void setConnector( RepositoryConnector connector )
- {
- this.connector = connector;
- }
-
- public RepositoryConnector newRepositoryConnector( RepositorySystemSession session, RemoteRepository repository )
- throws NoRepositoryConnectorException
- {
- return connector;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRepositoryEventDispatcher.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRepositoryEventDispatcher.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRepositoryEventDispatcher.java
deleted file mode 100644
index b5168e4..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubRepositoryEventDispatcher.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.RepositoryEvent;
-import org.eclipse.aether.RepositoryListener;
-import org.eclipse.aether.impl.RepositoryEventDispatcher;
-
-/**
- */
-public class StubRepositoryEventDispatcher
- implements RepositoryEventDispatcher
-{
-
- public void dispatch( RepositoryEvent event )
- {
- RepositoryListener listener = event.getSession().getRepositoryListener();
- if ( listener == null )
- {
- return;
- }
-
- switch ( event.getType() )
- {
- case ARTIFACT_DEPLOYED:
- listener.artifactDeployed( event );
- break;
- case ARTIFACT_DEPLOYING:
- listener.artifactDeploying( event );
- break;
- case ARTIFACT_DESCRIPTOR_INVALID:
- listener.artifactDescriptorInvalid( event );
- break;
- case ARTIFACT_DESCRIPTOR_MISSING:
- listener.artifactDescriptorMissing( event );
- break;
- case ARTIFACT_DOWNLOADED:
- listener.artifactDownloaded( event );
- break;
- case ARTIFACT_DOWNLOADING:
- listener.artifactDownloading( event );
- break;
- case ARTIFACT_INSTALLED:
- listener.artifactInstalled( event );
- break;
- case ARTIFACT_INSTALLING:
- listener.artifactInstalling( event );
- break;
- case ARTIFACT_RESOLVED:
- listener.artifactResolved( event );
- break;
- case ARTIFACT_RESOLVING:
- listener.artifactResolving( event );
- break;
- case METADATA_DEPLOYED:
- listener.metadataDeployed( event );
- break;
- case METADATA_DEPLOYING:
- listener.metadataDeploying( event );
- break;
- case METADATA_DOWNLOADED:
- listener.metadataDownloaded( event );
- break;
- case METADATA_DOWNLOADING:
- listener.metadataDownloading( event );
- break;
- case METADATA_INSTALLED:
- listener.metadataInstalled( event );
- break;
- case METADATA_INSTALLING:
- listener.metadataInstalling( event );
- break;
- case METADATA_INVALID:
- listener.metadataInvalid( event );
- break;
- case METADATA_RESOLVED:
- listener.metadataResolved( event );
- break;
- case METADATA_RESOLVING:
- listener.metadataResolving( event );
- break;
- default:
- throw new IllegalStateException( "unknown repository event type " + event.getType() );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubSyncContextFactory.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubSyncContextFactory.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubSyncContextFactory.java
deleted file mode 100644
index 91d2988..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubSyncContextFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.SyncContext;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.impl.SyncContextFactory;
-import org.eclipse.aether.metadata.Metadata;
-
-/**
- *
- */
-public class StubSyncContextFactory
- implements SyncContextFactory
-{
-
- public SyncContext newInstance( RepositorySystemSession session, boolean shared )
- {
- return new SyncContext()
- {
- public void close()
- {
- }
-
- public void acquire( Collection<? extends Artifact> artifacts, Collection<? extends Metadata> metadatas )
- {
- }
- };
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubVersionRangeResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubVersionRangeResolver.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubVersionRangeResolver.java
deleted file mode 100644
index ae415d7..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubVersionRangeResolver.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.impl.VersionRangeResolver;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResolutionException;
-import org.eclipse.aether.resolution.VersionRangeResult;
-import org.eclipse.aether.util.version.GenericVersionScheme;
-import org.eclipse.aether.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-import org.eclipse.aether.version.VersionScheme;
-
-/**
- */
-public class StubVersionRangeResolver
- implements VersionRangeResolver
-{
-
- private final VersionScheme versionScheme = new GenericVersionScheme();
-
- public VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request )
- throws VersionRangeResolutionException
- {
- VersionRangeResult result = new VersionRangeResult( request );
- try
- {
- VersionConstraint constraint = versionScheme.parseVersionConstraint( request.getArtifact().getVersion() );
- result.setVersionConstraint( constraint );
- if ( constraint.getRange() == null )
- {
- result.addVersion( constraint.getVersion() );
- }
- else
- {
- for ( int i = 1; i < 10; i++ )
- {
- Version ver = versionScheme.parseVersion( Integer.toString( i ) );
- if ( constraint.containsVersion( ver ) )
- {
- result.addVersion( ver );
- if ( !request.getRepositories().isEmpty() )
- {
- result.setRepository( ver, request.getRepositories().get( 0 ) );
- }
- }
- }
- }
- }
- catch ( InvalidVersionSpecificationException e )
- {
- result.addException( e );
- throw new VersionRangeResolutionException( result );
- }
-
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubVersionResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubVersionResolver.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubVersionResolver.java
deleted file mode 100644
index 719e5bc..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/StubVersionResolver.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.impl.VersionResolver;
-import org.eclipse.aether.resolution.VersionRequest;
-import org.eclipse.aether.resolution.VersionResolutionException;
-import org.eclipse.aether.resolution.VersionResult;
-
-/* *
- */
-class StubVersionResolver
- implements VersionResolver
-{
-
- public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
- throws VersionResolutionException
- {
- VersionResult result = new VersionResult( request ).setVersion( request.getArtifact().getVersion() );
- if ( request.getRepositories().size() > 0 )
- {
- result = result.setRepository( request.getRepositories().get( 0 ) );
- }
- return result;
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/TrackingFileManagerTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/TrackingFileManagerTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/TrackingFileManagerTest.java
deleted file mode 100644
index d730d7e..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/TrackingFileManagerTest.java
+++ /dev/null
@@ -1,168 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.eclipse.aether.internal.impl.TrackingFileManager;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.junit.Test;
-
-/**
- */
-public class TrackingFileManagerTest
-{
-
- @Test
- public void testRead()
- throws Exception
- {
- TrackingFileManager tfm = new TrackingFileManager();
-
- File propFile = TestFileUtils.createTempFile( "#COMMENT\nkey1=value1\nkey2 : value2" );
- Properties props = tfm.read( propFile );
-
- assertNotNull( props );
- assertEquals( String.valueOf( props ), 2, props.size() );
- assertEquals( "value1", props.get( "key1" ) );
- assertEquals( "value2", props.get( "key2" ) );
-
- assertTrue( "Leaked file: " + propFile, propFile.delete() );
-
- props = tfm.read( propFile );
- assertNull( String.valueOf( props ), props );
- }
-
- @Test
- public void testReadNoFileLeak()
- throws Exception
- {
- TrackingFileManager tfm = new TrackingFileManager();
-
- for ( int i = 0; i < 1000; i++ )
- {
- File propFile = TestFileUtils.createTempFile( "#COMMENT\nkey1=value1\nkey2 : value2" );
- assertNotNull( tfm.read( propFile ) );
- assertTrue( "Leaked file: " + propFile, propFile.delete() );
- }
- }
-
- @Test
- public void testUpdate()
- throws Exception
- {
- TrackingFileManager tfm = new TrackingFileManager();
-
- // NOTE: The excessive repetitions are to check the update properly truncates the file
- File propFile = TestFileUtils.createTempFile( "key1=value1\nkey2 : value2\n".getBytes( "UTF-8" ), 1000 );
-
- Map<String, String> updates = new HashMap<String, String>();
- updates.put( "key1", "v" );
- updates.put( "key2", null );
-
- tfm.update( propFile, updates );
-
- Properties props = tfm.read( propFile );
-
- assertNotNull( props );
- assertEquals( String.valueOf( props ), 1, props.size() );
- assertEquals( "v", props.get( "key1" ) );
- assertNull( String.valueOf( props.get( "key2" ) ), props.get( "key2" ) );
- }
-
- @Test
- public void testUpdateNoFileLeak()
- throws Exception
- {
- TrackingFileManager tfm = new TrackingFileManager();
-
- Map<String, String> updates = new HashMap<String, String>();
- updates.put( "k", "v" );
-
- for ( int i = 0; i < 1000; i++ )
- {
- File propFile = TestFileUtils.createTempFile( "#COMMENT\nkey1=value1\nkey2 : value2" );
- assertNotNull( tfm.update( propFile, updates ) );
- assertTrue( "Leaked file: " + propFile, propFile.delete() );
- }
- }
-
- @Test
- public void testLockingOnCanonicalPath()
- throws Exception
- {
- final TrackingFileManager tfm = new TrackingFileManager();
-
- final File propFile = TestFileUtils.createTempFile( "#COMMENT\nkey1=value1\nkey2 : value2" );
-
- final List<Throwable> errors = Collections.synchronizedList( new ArrayList<Throwable>() );
-
- Thread[] threads = new Thread[4];
- for ( int i = 0; i < threads.length; i++ )
- {
- String path = propFile.getParent();
- for ( int j = 0; j < i; j++ )
- {
- path += "/.";
- }
- path += "/" + propFile.getName();
- final File file = new File( path );
-
- threads[i] = new Thread()
- {
- public void run()
- {
- try
- {
- for ( int i = 0; i < 1000; i++ )
- {
- assertNotNull( tfm.read( file ) );
- }
- }
- catch ( Throwable e )
- {
- errors.add( e );
- }
- }
- };
- }
-
- for ( Thread thread1 : threads )
- {
- thread1.start();
- }
-
- for ( Thread thread : threads )
- {
- thread.join();
- }
-
- assertEquals( Collections.emptyList(), errors );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java
deleted file mode 100644
index 78fd807..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
-import org.eclipse.aether.transfer.ChecksumFailureException;
-import org.eclipse.aether.transfer.TransferResource;
-import org.junit.Before;
-import org.junit.Test;
-
-public class WarnChecksumPolicyTest
-{
-
- private WarnChecksumPolicy policy;
-
- private ChecksumFailureException exception;
-
- @Before
- public void setup()
- {
- policy = new WarnChecksumPolicy( null, new TransferResource( "file:/dev/null", "file.txt", null, null ) );
- exception = new ChecksumFailureException( "test" );
- }
-
- @Test
- public void testOnTransferChecksumFailure()
- {
- assertTrue( policy.onTransferChecksumFailure( exception ) );
- }
-
- @Test
- public void testOnChecksumMatch()
- {
- assertTrue( policy.onChecksumMatch( "SHA-1", 0 ) );
- assertTrue( policy.onChecksumMatch( "SHA-1", ChecksumPolicy.KIND_UNOFFICIAL ) );
- }
-
- @Test
- public void testOnChecksumMismatch()
- throws Exception
- {
- try
- {
- policy.onChecksumMismatch( "SHA-1", 0, exception );
- fail( "No exception" );
- }
- catch ( ChecksumFailureException e )
- {
- assertSame( exception, e );
- }
- policy.onChecksumMismatch( "SHA-1", ChecksumPolicy.KIND_UNOFFICIAL, exception );
- }
-
- @Test
- public void testOnChecksumError()
- throws Exception
- {
- policy.onChecksumError( "SHA-1", 0, exception );
- }
-
- @Test
- public void testOnNoMoreChecksums()
- {
- try
- {
- policy.onNoMoreChecksums();
- fail( "No exception" );
- }
- catch ( ChecksumFailureException e )
- {
- assertTrue( e.getMessage().contains( "no checksums available" ) );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_117_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_117_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_117_4.0-SNAPSHOT.ini
deleted file mode 100644
index 512f92d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_117_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,56 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:74:pom:3.5.0-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:86:pom:7.13.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:78:pom:2.6-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:119:pom:1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:120:pom:1.0-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:172:pom:4.0-SNAPSHOT
-10:349:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_117_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_117_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_117_4.1-SNAPSHOT.ini
deleted file mode 100644
index 406175c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_117_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,58 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:74:pom:3.5.0-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:86:pom:7.13.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:78:pom:2.6-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:119:pom:1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:120:pom:1.0-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:359:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:172:pom:4.1-SNAPSHOT
-10:349:pom:4.1-SNAPSHOT
-10:357:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_11_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_11_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_11_4.0-SNAPSHOT.ini
deleted file mode 100644
index bb59696..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_11_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-10:12:pom:4.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:208:pom:10.0-SNAPSHOT
-1:264:pom:6.2-SNAPSHOT
-1:371:pom:822-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_11_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_11_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_11_4.1-SNAPSHOT.ini
deleted file mode 100644
index cce6222..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_11_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-10:12:pom:4.1-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:208:pom:10.0-SNAPSHOT
-1:264:pom:6.2-SNAPSHOT
-1:371:pom:822-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_121_3.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_121_3.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_121_3.0-SNAPSHOT.ini
deleted file mode 100644
index 1a99901..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_121_3.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,65 +0,0 @@
-[dependencies]
-1:122:pom:3.1.1-SNAPSHOT
-1:123:pom:3.1.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:3:pom:1.28-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:124:pom:2.2-SNAPSHOT
-1:125:pom:8.1-SNAPSHOT
-1:125:pom:9.1-SNAPSHOT
-1:125:pom:9.5-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:126:pom:2.81-SNAPSHOT
-1:126:pom:2.90-SNAPSHOT
-1:126:pom:3.50-SNAPSHOT
-1:127:pom:6.20-SNAPSHOT
-1:127:pom:6.30-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:128:pom:2006-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:78:pom:2.6-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:129:pom:10.1-SNAPSHOT
-1:130:pom:10.1-SNAPSHOT
-1:130:pom:10.2-SNAPSHOT
-1:130:pom:11.1-SNAPSHOT
-1:130:pom:9.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:131:pom:5.0-SNAPSHOT
-1:131:pom:5.3-SNAPSHOT
-1:131:pom:6.0-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:132:pom:7.7-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:133:pom:12.5-SNAPSHOT
-1:133:pom:15.0-SNAPSHOT
-1:134:pom:12.6-SNAPSHOT
-1:134:pom:12.7-SNAPSHOT
-1:135:pom:10.0-SNAPSHOT
-1:135:pom:11.0-SNAPSHOT
-1:136:pom:3.04-SNAPSHOT
-1:136:pom:3.06-SNAPSHOT
-1:137:pom:2.2.12-SNAPSHOT
-1:138:pom:7.7.06-SNAPSHOT
-1:119:pom:1.0-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:163:pom:4.0-SNAPSHOT
-10:164:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-1:32:pom:720-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_121_3.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_121_3.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_121_3.1-SNAPSHOT.ini
deleted file mode 100644
index 41ae285..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_121_3.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,76 +0,0 @@
-[dependencies]
-1:122:pom:3.1.1-SNAPSHOT
-1:123:pom:3.1.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:3:pom:1.28-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:124:pom:2.2-SNAPSHOT
-1:125:pom:8.1-SNAPSHOT
-1:125:pom:9.1-SNAPSHOT
-1:125:pom:9.5-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:126:pom:2.81-SNAPSHOT
-1:126:pom:2.90-SNAPSHOT
-1:126:pom:3.50-SNAPSHOT
-1:127:pom:6.20-SNAPSHOT
-1:127:pom:6.30-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:128:pom:2006-SNAPSHOT
-1:196:pom:1.2.12-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:78:pom:2.6-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:129:pom:10.1-SNAPSHOT
-1:130:pom:10.1-SNAPSHOT
-1:130:pom:10.2-SNAPSHOT
-1:130:pom:11.1-SNAPSHOT
-1:130:pom:9.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:131:pom:5.0-SNAPSHOT
-1:131:pom:5.3-SNAPSHOT
-1:131:pom:6.0-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:132:pom:7.7-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:133:pom:12.5-SNAPSHOT
-1:133:pom:15.0-SNAPSHOT
-1:133:pom:15.5-SNAPSHOT
-1:134:pom:12.6-SNAPSHOT
-1:134:pom:12.7-SNAPSHOT
-1:135:pom:10.0-SNAPSHOT
-1:135:pom:11.0-SNAPSHOT
-1:136:pom:3.04-SNAPSHOT
-1:136:pom:3.06-SNAPSHOT
-1:137:pom:2.2.12-SNAPSHOT
-1:138:pom:7.7.06-SNAPSHOT
-1:119:pom:1.0-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:164:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:159:pom:2.1_03-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:51:pom:1.6.2-SNAPSHOT
-1:311:pom:2.3.0-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_12_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_12_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_12_4.0-SNAPSHOT.ini
deleted file mode 100644
index eb29c95..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_12_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,32 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:16:pom:1.8.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:35:pom:1.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:7:pom:5.8.9-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:41:pom:5.0-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:261:pom:4.0-SNAPSHOT
-10:263:pom:4.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_12_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_12_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_12_4.1-SNAPSHOT.ini
deleted file mode 100644
index 48a697b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_12_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,33 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:34:pom:1.13-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:16:pom:1.8.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:35:pom:1.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:7:pom:5.8.9-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:41:pom:5.0-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:261:pom:4.1-SNAPSHOT
-10:263:pom:4.1-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_139_3.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_139_3.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_139_3.0-SNAPSHOT.ini
deleted file mode 100644
index 7d05704..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_139_3.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,35 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:3:pom:1.28-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_139_3.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_139_3.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_139_3.1-SNAPSHOT.ini
deleted file mode 100644
index 0f788bd..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_139_3.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,32 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:3:pom:1.28-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:4.2.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
[50/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/pom.xml
----------------------------------------------------------------------
diff --git a/aether-api/pom.xml b/aether-api/pom.xml
deleted file mode 100644
index ff9860c..0000000
--- a/aether-api/pom.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- 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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>aether-api</artifactId>
-
- <name>Aether API</name>
- <description>
- The application programming interface for the repository system.
- </description>
-
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java b/aether-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java
deleted file mode 100644
index 20df431..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java
+++ /dev/null
@@ -1,189 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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;
-
-import org.eclipse.aether.artifact.ArtifactTypeRegistry;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.collection.DependencyManager;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.repository.AuthenticationSelector;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.MirrorSelector;
-import org.eclipse.aether.repository.ProxySelector;
-import org.eclipse.aether.repository.WorkspaceReader;
-import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
-import org.eclipse.aether.resolution.ResolutionErrorPolicy;
-import org.eclipse.aether.transfer.TransferListener;
-
-/**
- * A special repository system session to enable decorating or proxying another session. To do so, clients have to
- * create a subclass and implement {@link #getSession()}.
- */
-public abstract class AbstractForwardingRepositorySystemSession
- implements RepositorySystemSession
-{
-
- /**
- * Creates a new forwarding session.
- */
- protected AbstractForwardingRepositorySystemSession()
- {
- }
-
- /**
- * Gets the repository system session to which this instance forwards calls. It's worth noting that this class does
- * not save/cache the returned reference but queries this method before each forwarding. Hence, the session
- * forwarded to may change over time or depending on the context (e.g. calling thread).
- *
- * @return The repository system session to forward calls to, never {@code null}.
- */
- protected abstract RepositorySystemSession getSession();
-
- public boolean isOffline()
- {
- return getSession().isOffline();
- }
-
- public boolean isIgnoreArtifactDescriptorRepositories()
- {
- return getSession().isIgnoreArtifactDescriptorRepositories();
- }
-
- public ResolutionErrorPolicy getResolutionErrorPolicy()
- {
- return getSession().getResolutionErrorPolicy();
- }
-
- public ArtifactDescriptorPolicy getArtifactDescriptorPolicy()
- {
- return getSession().getArtifactDescriptorPolicy();
- }
-
- public String getChecksumPolicy()
- {
- return getSession().getChecksumPolicy();
- }
-
- public String getUpdatePolicy()
- {
- return getSession().getUpdatePolicy();
- }
-
- public LocalRepository getLocalRepository()
- {
- return getSession().getLocalRepository();
- }
-
- public LocalRepositoryManager getLocalRepositoryManager()
- {
- return getSession().getLocalRepositoryManager();
- }
-
- public WorkspaceReader getWorkspaceReader()
- {
- return getSession().getWorkspaceReader();
- }
-
- public RepositoryListener getRepositoryListener()
- {
- return getSession().getRepositoryListener();
- }
-
- public TransferListener getTransferListener()
- {
- return getSession().getTransferListener();
- }
-
- public Map<String, String> getSystemProperties()
- {
- return getSession().getSystemProperties();
- }
-
- public Map<String, String> getUserProperties()
- {
- return getSession().getUserProperties();
- }
-
- public Map<String, Object> getConfigProperties()
- {
- return getSession().getConfigProperties();
- }
-
- public MirrorSelector getMirrorSelector()
- {
- return getSession().getMirrorSelector();
- }
-
- public ProxySelector getProxySelector()
- {
- return getSession().getProxySelector();
- }
-
- public AuthenticationSelector getAuthenticationSelector()
- {
- return getSession().getAuthenticationSelector();
- }
-
- public ArtifactTypeRegistry getArtifactTypeRegistry()
- {
- return getSession().getArtifactTypeRegistry();
- }
-
- public DependencyTraverser getDependencyTraverser()
- {
- return getSession().getDependencyTraverser();
- }
-
- public DependencyManager getDependencyManager()
- {
- return getSession().getDependencyManager();
- }
-
- public DependencySelector getDependencySelector()
- {
- return getSession().getDependencySelector();
- }
-
- public VersionFilter getVersionFilter()
- {
- return getSession().getVersionFilter();
- }
-
- public DependencyGraphTransformer getDependencyGraphTransformer()
- {
- return getSession().getDependencyGraphTransformer();
- }
-
- public SessionData getData()
- {
- return getSession().getData();
- }
-
- public RepositoryCache getCache()
- {
- return getSession().getCache();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java b/aether-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java
deleted file mode 100644
index f42d15e..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 skeleton implementation for custom repository listeners. The callback methods in this class do nothing.
- */
-public abstract class AbstractRepositoryListener
- implements RepositoryListener
-{
-
- /**
- * Enables subclassing.
- */
- protected AbstractRepositoryListener()
- {
- }
-
- public void artifactDeployed( RepositoryEvent event )
- {
- }
-
- public void artifactDeploying( RepositoryEvent event )
- {
- }
-
- public void artifactDescriptorInvalid( RepositoryEvent event )
- {
- }
-
- public void artifactDescriptorMissing( RepositoryEvent event )
- {
- }
-
- public void artifactDownloaded( RepositoryEvent event )
- {
- }
-
- public void artifactDownloading( RepositoryEvent event )
- {
- }
-
- public void artifactInstalled( RepositoryEvent event )
- {
- }
-
- public void artifactInstalling( RepositoryEvent event )
- {
- }
-
- public void artifactResolved( RepositoryEvent event )
- {
- }
-
- public void artifactResolving( RepositoryEvent event )
- {
- }
-
- public void metadataDeployed( RepositoryEvent event )
- {
- }
-
- public void metadataDeploying( RepositoryEvent event )
- {
- }
-
- public void metadataDownloaded( RepositoryEvent event )
- {
- }
-
- public void metadataDownloading( RepositoryEvent event )
- {
- }
-
- public void metadataInstalled( RepositoryEvent event )
- {
- }
-
- public void metadataInstalling( RepositoryEvent event )
- {
- }
-
- public void metadataInvalid( RepositoryEvent event )
- {
- }
-
- public void metadataResolved( RepositoryEvent event )
- {
- }
-
- public void metadataResolving( RepositoryEvent event )
- {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java b/aether-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java
deleted file mode 100644
index b96a754..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 keys and defaults for common configuration properties.
- *
- * @see RepositorySystemSession#getConfigProperties()
- */
-public final class ConfigurationProperties
-{
-
- private static final String PREFIX_AETHER = "aether.";
-
- private static final String PREFIX_CONNECTOR = PREFIX_AETHER + "connector.";
-
- /**
- * The prefix for properties that control the priority of pluggable extensions like transporters. For example, for
- * an extension with the fully qualified class name "org.eclipse.MyExtensionFactory", the configuration properties
- * "aether.priority.org.eclipse.MyExtensionFactory", "aether.priority.MyExtensionFactory" and
- * "aether.priority.MyExtension" will be consulted for the priority, in that order (obviously, the last key is only
- * tried if the class name ends with "Factory"). The corresponding value is a float and the special value
- * {@link Float#NaN} or "NaN" (case-sensitive) can be used to disable the extension.
- */
- public static final String PREFIX_PRIORITY = PREFIX_AETHER + "priority.";
-
- /**
- * A flag indicating whether the priorities of pluggable extensions are implicitly given by their iteration order
- * such that the first extension has the highest priority. If set, an extension's built-in priority as well as any
- * corresponding {@code aether.priority.*} configuration properties are ignored when searching for a suitable
- * implementation among the available extensions. This priority mode is meant for cases where the application will
- * present/inject extensions in the desired search order.
- *
- * @see #DEFAULT_IMPLICIT_PRIORITIES
- */
- public static final String IMPLICIT_PRIORITIES = PREFIX_PRIORITY + "implicit";
-
- /**
- * The default extension priority mode if {@link #IMPLICIT_PRIORITIES} isn't set.
- */
- public static final boolean DEFAULT_IMPLICIT_PRIORITIES = false;
-
- /**
- * A flag indicating whether interaction with the user is allowed.
- *
- * @see #DEFAULT_INTERACTIVE
- */
- public static final String INTERACTIVE = PREFIX_AETHER + "interactive";
-
- /**
- * The default interactive mode if {@link #INTERACTIVE} isn't set.
- */
- public static final boolean DEFAULT_INTERACTIVE = false;
-
- /**
- * The user agent that repository connectors should report to servers.
- *
- * @see #DEFAULT_USER_AGENT
- */
- public static final String USER_AGENT = PREFIX_CONNECTOR + "userAgent";
-
- /**
- * The default user agent to use if {@link #USER_AGENT} isn't set.
- */
- public static final String DEFAULT_USER_AGENT = "Aether";
-
- /**
- * The maximum amount of time (in milliseconds) to wait for a successful connection to a remote server. Non-positive
- * values indicate no timeout.
- *
- * @see #DEFAULT_CONNECT_TIMEOUT
- */
- public static final String CONNECT_TIMEOUT = PREFIX_CONNECTOR + "connectTimeout";
-
- /**
- * The default connect timeout to use if {@link #CONNECT_TIMEOUT} isn't set.
- */
- public static final int DEFAULT_CONNECT_TIMEOUT = 10 * 1000;
-
- /**
- * The maximum amount of time (in milliseconds) to wait for remaining data to arrive from a remote server. Note that
- * this timeout does not restrict the overall duration of a request, it only restricts the duration of inactivity
- * between consecutive data packets. Non-positive values indicate no timeout.
- *
- * @see #DEFAULT_REQUEST_TIMEOUT
- */
- public static final String REQUEST_TIMEOUT = PREFIX_CONNECTOR + "requestTimeout";
-
- /**
- * The default request timeout to use if {@link #REQUEST_TIMEOUT} isn't set.
- */
- public static final int DEFAULT_REQUEST_TIMEOUT = 1800 * 1000;
-
- /**
- * The request headers to use for HTTP-based repository connectors. The headers are specified using a
- * {@code Map<String, String>}, mapping a header name to its value. Besides this general key, clients may also
- * specify headers for a specific remote repository by appending the suffix {@code .<repoId>} to this key when
- * storing the headers map. The repository-specific headers map is supposed to be complete, i.e. is not merged with
- * the general headers map.
- */
- public static final String HTTP_HEADERS = PREFIX_CONNECTOR + "http.headers";
-
- /**
- * The encoding/charset to use when exchanging credentials with HTTP servers. Besides this general key, clients may
- * also specify the encoding for a specific remote repository by appending the suffix {@code .<repoId>} to this key
- * when storing the charset name.
- *
- * @see #DEFAULT_HTTP_CREDENTIAL_ENCODING
- */
- public static final String HTTP_CREDENTIAL_ENCODING = PREFIX_CONNECTOR + "http.credentialEncoding";
-
- /**
- * The default encoding/charset to use if {@link #HTTP_CREDENTIAL_ENCODING} isn't set.
- */
- public static final String DEFAULT_HTTP_CREDENTIAL_ENCODING = "ISO-8859-1";
-
- /**
- * An option indicating whether authentication configured for a HTTP repository should also be used with any host
- * that the original server might redirect requests to. Unless enabled, credentials are only exchanged with the
- * original host from the repository URL and not supplied to different hosts encountered during redirects. The
- * option value can either be a boolean flag or a comma-separated list of host names denoting the whitelist of
- * original hosts whose redirects can be trusted and should use the configured authentication no matter the
- * destination host(s). Alternatively, the suffix {@code .<repoId>} can be appended to this configuration key to
- * control the behavior for a specific repository id.
- *
- * @see #DEFAULT_HTTP_REDIRECTED_AUTHENTICATION
- * @since 1.1.0
- */
- public static final String HTTP_REDIRECTED_AUTHENTICATION = PREFIX_CONNECTOR + "http.redirectedAuthentication";
-
- /**
- * The default handling of authentication during HTTP redirects if {@link #HTTP_REDIRECTED_AUTHENTICATION} isn't
- * set.
- *
- * @since 1.1.0
- */
- public static final String DEFAULT_HTTP_REDIRECTED_AUTHENTICATION = "false";
-
- /**
- * A flag indicating whether checksums which are retrieved during checksum validation should be persisted in the
- * local filesystem next to the file they provide the checksum for.
- *
- * @see #DEFAULT_PERSISTED_CHECKSUMS
- */
- public static final String PERSISTED_CHECKSUMS = PREFIX_CONNECTOR + "persistedChecksums";
-
- /**
- * The default checksum persistence mode if {@link #PERSISTED_CHECKSUMS} isn't set.
- */
- public static final boolean DEFAULT_PERSISTED_CHECKSUMS = true;
-
- private ConfigurationProperties()
- {
- // hide constructor
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java b/aether-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java
deleted file mode 100644
index b645f43..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * A simplistic repository cache backed by a thread-safe map. The simplistic nature of this cache makes it only suitable
- * for use with short-lived repository system sessions where pruning of cache data is not required.
- */
-public final class DefaultRepositoryCache
- implements RepositoryCache
-{
-
- private final Map<Object, Object> cache = new ConcurrentHashMap<Object, Object>( 256 );
-
- public Object get( RepositorySystemSession session, Object key )
- {
- return cache.get( key );
- }
-
- public void put( RepositorySystemSession session, Object key, Object data )
- {
- if ( data != null )
- {
- cache.put( key, data );
- }
- else
- {
- cache.remove( key );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java b/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
deleted file mode 100644
index 93ebaca..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
+++ /dev/null
@@ -1,834 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.aether.artifact.ArtifactType;
-import org.eclipse.aether.artifact.ArtifactTypeRegistry;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.collection.DependencyManager;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationSelector;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.MirrorSelector;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.ProxySelector;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.repository.WorkspaceReader;
-import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
-import org.eclipse.aether.resolution.ResolutionErrorPolicy;
-import org.eclipse.aether.transfer.TransferListener;
-
-/**
- * A simple repository system session.
- * <p>
- * <strong>Note:</strong> This class is not thread-safe. It is assumed that the mutators get only called during an
- * initialization phase and that the session itself is not changed once initialized and being used by the repository
- * system. It is recommended to call {@link #setReadOnly()} once the session has been fully initialized to prevent
- * accidental manipulation of it afterwards.
- */
-public final class DefaultRepositorySystemSession
- implements RepositorySystemSession
-{
-
- private boolean readOnly;
-
- private boolean offline;
-
- private boolean ignoreArtifactDescriptorRepositories;
-
- private ResolutionErrorPolicy resolutionErrorPolicy;
-
- private ArtifactDescriptorPolicy artifactDescriptorPolicy;
-
- private String checksumPolicy;
-
- private String updatePolicy;
-
- private LocalRepositoryManager localRepositoryManager;
-
- private WorkspaceReader workspaceReader;
-
- private RepositoryListener repositoryListener;
-
- private TransferListener transferListener;
-
- private Map<String, String> systemProperties;
-
- private Map<String, String> systemPropertiesView;
-
- private Map<String, String> userProperties;
-
- private Map<String, String> userPropertiesView;
-
- private Map<String, Object> configProperties;
-
- private Map<String, Object> configPropertiesView;
-
- private MirrorSelector mirrorSelector;
-
- private ProxySelector proxySelector;
-
- private AuthenticationSelector authenticationSelector;
-
- private ArtifactTypeRegistry artifactTypeRegistry;
-
- private DependencyTraverser dependencyTraverser;
-
- private DependencyManager dependencyManager;
-
- private DependencySelector dependencySelector;
-
- private VersionFilter versionFilter;
-
- private DependencyGraphTransformer dependencyGraphTransformer;
-
- private SessionData data;
-
- private RepositoryCache cache;
-
- /**
- * Creates an uninitialized session. <em>Note:</em> The new session is not ready to use, as a bare minimum,
- * {@link #setLocalRepositoryManager(LocalRepositoryManager)} needs to be called but usually other settings also
- * need to be customized to achieve meaningful behavior.
- */
- public DefaultRepositorySystemSession()
- {
- systemProperties = new HashMap<String, String>();
- systemPropertiesView = Collections.unmodifiableMap( systemProperties );
- userProperties = new HashMap<String, String>();
- userPropertiesView = Collections.unmodifiableMap( userProperties );
- configProperties = new HashMap<String, Object>();
- configPropertiesView = Collections.unmodifiableMap( configProperties );
- mirrorSelector = NullMirrorSelector.INSTANCE;
- proxySelector = NullProxySelector.INSTANCE;
- authenticationSelector = NullAuthenticationSelector.INSTANCE;
- artifactTypeRegistry = NullArtifactTypeRegistry.INSTANCE;
- data = new DefaultSessionData();
- }
-
- /**
- * Creates a shallow copy of the specified session. Actually, the copy is not completely shallow, all maps holding
- * system/user/config properties are copied as well. In other words, invoking any mutator on the new session itself
- * has no effect on the original session. Other mutable objects like the session data and cache (if any) are not
- * copied and will be shared with the original session unless reconfigured.
- *
- * @param session The session to copy, must not be {@code null}.
- */
- public DefaultRepositorySystemSession( RepositorySystemSession session )
- {
- if ( session == null )
- {
- throw new IllegalArgumentException( "repository system session not specified" );
- }
-
- setOffline( session.isOffline() );
- setIgnoreArtifactDescriptorRepositories( session.isIgnoreArtifactDescriptorRepositories() );
- setResolutionErrorPolicy( session.getResolutionErrorPolicy() );
- setArtifactDescriptorPolicy( session.getArtifactDescriptorPolicy() );
- setChecksumPolicy( session.getChecksumPolicy() );
- setUpdatePolicy( session.getUpdatePolicy() );
- setLocalRepositoryManager( session.getLocalRepositoryManager() );
- setWorkspaceReader( session.getWorkspaceReader() );
- setRepositoryListener( session.getRepositoryListener() );
- setTransferListener( session.getTransferListener() );
- setSystemProperties( session.getSystemProperties() );
- setUserProperties( session.getUserProperties() );
- setConfigProperties( session.getConfigProperties() );
- setMirrorSelector( session.getMirrorSelector() );
- setProxySelector( session.getProxySelector() );
- setAuthenticationSelector( session.getAuthenticationSelector() );
- setArtifactTypeRegistry( session.getArtifactTypeRegistry() );
- setDependencyTraverser( session.getDependencyTraverser() );
- setDependencyManager( session.getDependencyManager() );
- setDependencySelector( session.getDependencySelector() );
- setVersionFilter( session.getVersionFilter() );
- setDependencyGraphTransformer( session.getDependencyGraphTransformer() );
- setData( session.getData() );
- setCache( session.getCache() );
- }
-
- public boolean isOffline()
- {
- return offline;
- }
-
- /**
- * Controls whether the repository system operates in offline mode and avoids/refuses any access to remote
- * repositories.
- *
- * @param offline {@code true} if the repository system is in offline mode, {@code false} otherwise.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setOffline( boolean offline )
- {
- failIfReadOnly();
- this.offline = offline;
- return this;
- }
-
- public boolean isIgnoreArtifactDescriptorRepositories()
- {
- return ignoreArtifactDescriptorRepositories;
- }
-
- /**
- * Controls whether repositories declared in artifact descriptors should be ignored during transitive dependency
- * collection. If enabled, only the repositories originally provided with the collect request will be considered.
- *
- * @param ignoreArtifactDescriptorRepositories {@code true} to ignore additional repositories from artifact
- * descriptors, {@code false} to merge those with the originally specified repositories.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setIgnoreArtifactDescriptorRepositories( boolean ignoreArtifactDescriptorRepositories )
- {
- failIfReadOnly();
- this.ignoreArtifactDescriptorRepositories = ignoreArtifactDescriptorRepositories;
- return this;
- }
-
- public ResolutionErrorPolicy getResolutionErrorPolicy()
- {
- return resolutionErrorPolicy;
- }
-
- /**
- * Sets the policy which controls whether resolutions errors from remote repositories should be cached.
- *
- * @param resolutionErrorPolicy The resolution error policy for this session, may be {@code null} if resolution
- * errors should generally not be cached.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setResolutionErrorPolicy( ResolutionErrorPolicy resolutionErrorPolicy )
- {
- failIfReadOnly();
- this.resolutionErrorPolicy = resolutionErrorPolicy;
- return this;
- }
-
- public ArtifactDescriptorPolicy getArtifactDescriptorPolicy()
- {
- return artifactDescriptorPolicy;
- }
-
- /**
- * Sets the policy which controls how errors related to reading artifact descriptors should be handled.
- *
- * @param artifactDescriptorPolicy The descriptor error policy for this session, may be {@code null} if descriptor
- * errors should generally not be tolerated.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setArtifactDescriptorPolicy( ArtifactDescriptorPolicy artifactDescriptorPolicy )
- {
- failIfReadOnly();
- this.artifactDescriptorPolicy = artifactDescriptorPolicy;
- return this;
- }
-
- public String getChecksumPolicy()
- {
- return checksumPolicy;
- }
-
- /**
- * Sets the global checksum policy. If set, the global checksum policy overrides the checksum policies of the remote
- * repositories being used for resolution.
- *
- * @param checksumPolicy The global checksum policy, may be {@code null}/empty to apply the per-repository policies.
- * @return This session for chaining, never {@code null}.
- * @see RepositoryPolicy#CHECKSUM_POLICY_FAIL
- * @see RepositoryPolicy#CHECKSUM_POLICY_IGNORE
- * @see RepositoryPolicy#CHECKSUM_POLICY_WARN
- */
- public DefaultRepositorySystemSession setChecksumPolicy( String checksumPolicy )
- {
- failIfReadOnly();
- this.checksumPolicy = checksumPolicy;
- return this;
- }
-
- public String getUpdatePolicy()
- {
- return updatePolicy;
- }
-
- /**
- * Sets the global update policy. If set, the global update policy overrides the update policies of the remote
- * repositories being used for resolution.
- *
- * @param updatePolicy The global update policy, may be {@code null}/empty to apply the per-repository policies.
- * @return This session for chaining, never {@code null}.
- * @see RepositoryPolicy#UPDATE_POLICY_ALWAYS
- * @see RepositoryPolicy#UPDATE_POLICY_DAILY
- * @see RepositoryPolicy#UPDATE_POLICY_NEVER
- */
- public DefaultRepositorySystemSession setUpdatePolicy( String updatePolicy )
- {
- failIfReadOnly();
- this.updatePolicy = updatePolicy;
- return this;
- }
-
- public LocalRepository getLocalRepository()
- {
- LocalRepositoryManager lrm = getLocalRepositoryManager();
- return ( lrm != null ) ? lrm.getRepository() : null;
- }
-
- public LocalRepositoryManager getLocalRepositoryManager()
- {
- return localRepositoryManager;
- }
-
- /**
- * Sets the local repository manager used during this session. <em>Note:</em> Eventually, a valid session must have
- * a local repository manager set.
- *
- * @param localRepositoryManager The local repository manager used during this session, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setLocalRepositoryManager( LocalRepositoryManager localRepositoryManager )
- {
- failIfReadOnly();
- this.localRepositoryManager = localRepositoryManager;
- return this;
- }
-
- public WorkspaceReader getWorkspaceReader()
- {
- return workspaceReader;
- }
-
- /**
- * Sets the workspace reader used during this session. If set, the workspace reader will usually be consulted first
- * to resolve artifacts.
- *
- * @param workspaceReader The workspace reader for this session, may be {@code null} if none.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setWorkspaceReader( WorkspaceReader workspaceReader )
- {
- failIfReadOnly();
- this.workspaceReader = workspaceReader;
- return this;
- }
-
- public RepositoryListener getRepositoryListener()
- {
- return repositoryListener;
- }
-
- /**
- * Sets the listener being notified of actions in the repository system.
- *
- * @param repositoryListener The repository listener, may be {@code null} if none.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setRepositoryListener( RepositoryListener repositoryListener )
- {
- failIfReadOnly();
- this.repositoryListener = repositoryListener;
- return this;
- }
-
- public TransferListener getTransferListener()
- {
- return transferListener;
- }
-
- /**
- * Sets the listener being notified of uploads/downloads by the repository system.
- *
- * @param transferListener The transfer listener, may be {@code null} if none.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setTransferListener( TransferListener transferListener )
- {
- failIfReadOnly();
- this.transferListener = transferListener;
- return this;
- }
-
- private <T> Map<String, T> copySafe( Map<?, ?> table, Class<T> valueType )
- {
- Map<String, T> map;
- if ( table == null || table.isEmpty() )
- {
- map = new HashMap<String, T>();
- }
- else
- {
- map = new HashMap<String, T>( (int) ( table.size() / 0.75f ) + 1 );
- for ( Map.Entry<?, ?> entry : table.entrySet() )
- {
- Object key = entry.getKey();
- if ( key instanceof String )
- {
- Object value = entry.getValue();
- if ( valueType.isInstance( value ) )
- {
- map.put( key.toString(), valueType.cast( value ) );
- }
- }
- }
- }
- return map;
- }
-
- public Map<String, String> getSystemProperties()
- {
- return systemPropertiesView;
- }
-
- /**
- * Sets the system properties to use, e.g. for processing of artifact descriptors. System properties are usually
- * collected from the runtime environment like {@link System#getProperties()} and environment variables.
- * <p>
- * <em>Note:</em> System properties are of type {@code Map<String, String>} and any key-value pair in the input map
- * that doesn't match this type will be silently ignored.
- *
- * @param systemProperties The system properties, may be {@code null} or empty if none.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setSystemProperties( Map<?, ?> systemProperties )
- {
- failIfReadOnly();
- this.systemProperties = copySafe( systemProperties, String.class );
- systemPropertiesView = Collections.unmodifiableMap( this.systemProperties );
- return this;
- }
-
- /**
- * Sets the specified system property.
- *
- * @param key The property key, must not be {@code null}.
- * @param value The property value, may be {@code null} to remove/unset the property.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setSystemProperty( String key, String value )
- {
- failIfReadOnly();
- if ( value != null )
- {
- systemProperties.put( key, value );
- }
- else
- {
- systemProperties.remove( key );
- }
- return this;
- }
-
- public Map<String, String> getUserProperties()
- {
- return userPropertiesView;
- }
-
- /**
- * Sets the user properties to use, e.g. for processing of artifact descriptors. User properties are similar to
- * system properties but are set on the discretion of the user and hence are considered of higher priority than
- * system properties in case of conflicts.
- * <p>
- * <em>Note:</em> User properties are of type {@code Map<String, String>} and any key-value pair in the input map
- * that doesn't match this type will be silently ignored.
- *
- * @param userProperties The user properties, may be {@code null} or empty if none.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setUserProperties( Map<?, ?> userProperties )
- {
- failIfReadOnly();
- this.userProperties = copySafe( userProperties, String.class );
- userPropertiesView = Collections.unmodifiableMap( this.userProperties );
- return this;
- }
-
- /**
- * Sets the specified user property.
- *
- * @param key The property key, must not be {@code null}.
- * @param value The property value, may be {@code null} to remove/unset the property.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setUserProperty( String key, String value )
- {
- failIfReadOnly();
- if ( value != null )
- {
- userProperties.put( key, value );
- }
- else
- {
- userProperties.remove( key );
- }
- return this;
- }
-
- public Map<String, Object> getConfigProperties()
- {
- return configPropertiesView;
- }
-
- /**
- * Sets the configuration properties used to tweak internal aspects of the repository system (e.g. thread pooling,
- * connector-specific behavior, etc.).
- * <p>
- * <em>Note:</em> Configuration properties are of type {@code Map<String, Object>} and any key-value pair in the
- * input map that doesn't match this type will be silently ignored.
- *
- * @param configProperties The configuration properties, may be {@code null} or empty if none.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setConfigProperties( Map<?, ?> configProperties )
- {
- failIfReadOnly();
- this.configProperties = copySafe( configProperties, Object.class );
- configPropertiesView = Collections.unmodifiableMap( this.configProperties );
- return this;
- }
-
- /**
- * Sets the specified configuration property.
- *
- * @param key The property key, must not be {@code null}.
- * @param value The property value, may be {@code null} to remove/unset the property.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setConfigProperty( String key, Object value )
- {
- failIfReadOnly();
- if ( value != null )
- {
- configProperties.put( key, value );
- }
- else
- {
- configProperties.remove( key );
- }
- return this;
- }
-
- public MirrorSelector getMirrorSelector()
- {
- return mirrorSelector;
- }
-
- /**
- * Sets the mirror selector to use for repositories discovered in artifact descriptors. Note that this selector is
- * not used for remote repositories which are passed as request parameters to the repository system, those
- * repositories are supposed to denote the effective repositories.
- *
- * @param mirrorSelector The mirror selector to use, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setMirrorSelector( MirrorSelector mirrorSelector )
- {
- failIfReadOnly();
- this.mirrorSelector = mirrorSelector;
- if ( this.mirrorSelector == null )
- {
- this.mirrorSelector = NullMirrorSelector.INSTANCE;
- }
- return this;
- }
-
- public ProxySelector getProxySelector()
- {
- return proxySelector;
- }
-
- /**
- * Sets the proxy selector to use for repositories discovered in artifact descriptors. Note that this selector is
- * not used for remote repositories which are passed as request parameters to the repository system, those
- * repositories are supposed to have their proxy (if any) already set.
- *
- * @param proxySelector The proxy selector to use, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- * @see org.eclipse.aether.repository.RemoteRepository#getProxy()
- */
- public DefaultRepositorySystemSession setProxySelector( ProxySelector proxySelector )
- {
- failIfReadOnly();
- this.proxySelector = proxySelector;
- if ( this.proxySelector == null )
- {
- this.proxySelector = NullProxySelector.INSTANCE;
- }
- return this;
- }
-
- public AuthenticationSelector getAuthenticationSelector()
- {
- return authenticationSelector;
- }
-
- /**
- * Sets the authentication selector to use for repositories discovered in artifact descriptors. Note that this
- * selector is not used for remote repositories which are passed as request parameters to the repository system,
- * those repositories are supposed to have their authentication (if any) already set.
- *
- * @param authenticationSelector The authentication selector to use, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- * @see org.eclipse.aether.repository.RemoteRepository#getAuthentication()
- */
- public DefaultRepositorySystemSession setAuthenticationSelector( AuthenticationSelector authenticationSelector )
- {
- failIfReadOnly();
- this.authenticationSelector = authenticationSelector;
- if ( this.authenticationSelector == null )
- {
- this.authenticationSelector = NullAuthenticationSelector.INSTANCE;
- }
- return this;
- }
-
- public ArtifactTypeRegistry getArtifactTypeRegistry()
- {
- return artifactTypeRegistry;
- }
-
- /**
- * Sets the registry of artifact types recognized by this session.
- *
- * @param artifactTypeRegistry The artifact type registry, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setArtifactTypeRegistry( ArtifactTypeRegistry artifactTypeRegistry )
- {
- failIfReadOnly();
- this.artifactTypeRegistry = artifactTypeRegistry;
- if ( this.artifactTypeRegistry == null )
- {
- this.artifactTypeRegistry = NullArtifactTypeRegistry.INSTANCE;
- }
- return this;
- }
-
- public DependencyTraverser getDependencyTraverser()
- {
- return dependencyTraverser;
- }
-
- /**
- * Sets the dependency traverser to use for building dependency graphs.
- *
- * @param dependencyTraverser The dependency traverser to use for building dependency graphs, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setDependencyTraverser( DependencyTraverser dependencyTraverser )
- {
- failIfReadOnly();
- this.dependencyTraverser = dependencyTraverser;
- return this;
- }
-
- public DependencyManager getDependencyManager()
- {
- return dependencyManager;
- }
-
- /**
- * Sets the dependency manager to use for building dependency graphs.
- *
- * @param dependencyManager The dependency manager to use for building dependency graphs, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setDependencyManager( DependencyManager dependencyManager )
- {
- failIfReadOnly();
- this.dependencyManager = dependencyManager;
- return this;
- }
-
- public DependencySelector getDependencySelector()
- {
- return dependencySelector;
- }
-
- /**
- * Sets the dependency selector to use for building dependency graphs.
- *
- * @param dependencySelector The dependency selector to use for building dependency graphs, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setDependencySelector( DependencySelector dependencySelector )
- {
- failIfReadOnly();
- this.dependencySelector = dependencySelector;
- return this;
- }
-
- public VersionFilter getVersionFilter()
- {
- return versionFilter;
- }
-
- /**
- * Sets the version filter to use for building dependency graphs.
- *
- * @param versionFilter The version filter to use for building dependency graphs, may be {@code null} to not filter
- * versions.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setVersionFilter( VersionFilter versionFilter )
- {
- failIfReadOnly();
- this.versionFilter = versionFilter;
- return this;
- }
-
- public DependencyGraphTransformer getDependencyGraphTransformer()
- {
- return dependencyGraphTransformer;
- }
-
- /**
- * Sets the dependency graph transformer to use for building dependency graphs.
- *
- * @param dependencyGraphTransformer The dependency graph transformer to use for building dependency graphs, may be
- * {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setDependencyGraphTransformer( DependencyGraphTransformer dependencyGraphTransformer )
- {
- failIfReadOnly();
- this.dependencyGraphTransformer = dependencyGraphTransformer;
- return this;
- }
-
- public SessionData getData()
- {
- return data;
- }
-
- /**
- * Sets the custom data associated with this session.
- *
- * @param data The session data, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setData( SessionData data )
- {
- failIfReadOnly();
- this.data = data;
- if ( this.data == null )
- {
- this.data = new DefaultSessionData();
- }
- return this;
- }
-
- public RepositoryCache getCache()
- {
- return cache;
- }
-
- /**
- * Sets the cache the repository system may use to save data for future reuse during the session.
- *
- * @param cache The repository cache, may be {@code null} if none.
- * @return This session for chaining, never {@code null}.
- */
- public DefaultRepositorySystemSession setCache( RepositoryCache cache )
- {
- failIfReadOnly();
- this.cache = cache;
- return this;
- }
-
- /**
- * Marks this session as read-only such that any future attempts to call its mutators will fail with an exception.
- * Marking an already read-only session as read-only has no effect. The session's data and cache remain writable
- * though.
- */
- public void setReadOnly()
- {
- readOnly = true;
- }
-
- private void failIfReadOnly()
- {
- if ( readOnly )
- {
- throw new IllegalStateException( "repository system session is read-only" );
- }
- }
-
- static class NullProxySelector
- implements ProxySelector
- {
-
- public static final ProxySelector INSTANCE = new NullProxySelector();
-
- public Proxy getProxy( RemoteRepository repository )
- {
- return repository.getProxy();
- }
-
- }
-
- static class NullMirrorSelector
- implements MirrorSelector
- {
-
- public static final MirrorSelector INSTANCE = new NullMirrorSelector();
-
- public RemoteRepository getMirror( RemoteRepository repository )
- {
- return null;
- }
-
- }
-
- static class NullAuthenticationSelector
- implements AuthenticationSelector
- {
-
- public static final AuthenticationSelector INSTANCE = new NullAuthenticationSelector();
-
- public Authentication getAuthentication( RemoteRepository repository )
- {
- return repository.getAuthentication();
- }
-
- }
-
- static final class NullArtifactTypeRegistry
- implements ArtifactTypeRegistry
- {
-
- public static final ArtifactTypeRegistry INSTANCE = new NullArtifactTypeRegistry();
-
- public ArtifactType get( String typeId )
- {
- return null;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/DefaultSessionData.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/DefaultSessionData.java b/aether-api/src/main/java/org/eclipse/aether/DefaultSessionData.java
deleted file mode 100644
index e78df3a..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/DefaultSessionData.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * A simple session data storage backed by a thread-safe map.
- */
-public final class DefaultSessionData
- implements SessionData
-{
-
- private final ConcurrentMap<Object, Object> data;
-
- public DefaultSessionData()
- {
- data = new ConcurrentHashMap<Object, Object>();
- }
-
- public void set( Object key, Object value )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "key must not be null" );
- }
-
- if ( value != null )
- {
- data.put( key, value );
- }
- else
- {
- data.remove( key );
- }
- }
-
- public boolean set( Object key, Object oldValue, Object newValue )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "key must not be null" );
- }
-
- if ( newValue != null )
- {
- if ( oldValue == null )
- {
- return data.putIfAbsent( key, newValue ) == null;
- }
- return data.replace( key, oldValue, newValue );
- }
- else
- {
- if ( oldValue == null )
- {
- return !data.containsKey( key );
- }
- return data.remove( key, oldValue );
- }
- }
-
- public Object get( Object key )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "key must not be null" );
- }
-
- return data.get( key );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java b/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java
deleted file mode 100644
index 6f9f114..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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.
- */
-
-/**
- * Caches auxiliary data used during repository access like already processed metadata. The data in the cache is meant
- * for exclusive consumption by the repository system and is opaque to the cache implementation. <strong>Note:</strong>
- * Actual cache implementations must be thread-safe.
- *
- * @see RepositorySystemSession#getCache()
- */
-public interface RepositoryCache
-{
-
- /**
- * Puts the specified data into the cache. It is entirely up to the cache implementation how long this data will be
- * kept before being purged, i.e. callers must not make any assumptions about the lifetime of cached data.
- * <p>
- * <em>Warning:</em> The cache will directly save the provided reference. If the cached data is mutable, i.e. could
- * be modified after being put into the cache, the caller is responsible for creating a copy of the original data
- * and store the copy in the cache.
- *
- * @param session The repository session during which the cache is accessed, must not be {@code null}.
- * @param key The key to use for lookup of the data, must not be {@code null}.
- * @param data The data to store in the cache, may be {@code null}.
- */
- void put( RepositorySystemSession session, Object key, Object data );
-
- /**
- * Gets the specified data from the cache.
- * <p>
- * <em>Warning:</em> The cache will directly return the saved reference. If the cached data is to be modified after
- * its retrieval, the caller is responsible to create a copy of the returned data and use this instead of the cache
- * record.
- *
- * @param session The repository session during which the cache is accessed, must not be {@code null}.
- * @param key The key to use for lookup of the data, must not be {@code null}.
- * @return The requested data or {@code null} if none was present in the cache.
- */
- Object get( RepositorySystemSession session, Object key );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/RepositoryEvent.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/RepositoryEvent.java b/aether-api/src/main/java/org/eclipse/aether/RepositoryEvent.java
deleted file mode 100644
index 33816ba..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/RepositoryEvent.java
+++ /dev/null
@@ -1,442 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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.List;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.ArtifactRepository;
-
-/**
- * An event describing an action performed by the repository system. Note that events which indicate the end of an
- * action like {@link EventType#ARTIFACT_RESOLVED} are generally fired in both the success and the failure case. Use
- * {@link #getException()} to check whether an event denotes success or failure.
- *
- * @see RepositoryListener
- * @see RepositoryEvent.Builder
- */
-public final class RepositoryEvent
-{
-
- /**
- * The type of the repository event.
- */
- public enum EventType
- {
-
- /**
- * @see RepositoryListener#artifactDescriptorInvalid(RepositoryEvent)
- */
- ARTIFACT_DESCRIPTOR_INVALID,
-
- /**
- * @see RepositoryListener#artifactDescriptorMissing(RepositoryEvent)
- */
- ARTIFACT_DESCRIPTOR_MISSING,
-
- /**
- * @see RepositoryListener#metadataInvalid(RepositoryEvent)
- */
- METADATA_INVALID,
-
- /**
- * @see RepositoryListener#artifactResolving(RepositoryEvent)
- */
- ARTIFACT_RESOLVING,
-
- /**
- * @see RepositoryListener#artifactResolved(RepositoryEvent)
- */
- ARTIFACT_RESOLVED,
-
- /**
- * @see RepositoryListener#metadataResolving(RepositoryEvent)
- */
- METADATA_RESOLVING,
-
- /**
- * @see RepositoryListener#metadataResolved(RepositoryEvent)
- */
- METADATA_RESOLVED,
-
- /**
- * @see RepositoryListener#artifactDownloading(RepositoryEvent)
- */
- ARTIFACT_DOWNLOADING,
-
- /**
- * @see RepositoryListener#artifactDownloaded(RepositoryEvent)
- */
- ARTIFACT_DOWNLOADED,
-
- /**
- * @see RepositoryListener#metadataDownloading(RepositoryEvent)
- */
- METADATA_DOWNLOADING,
-
- /**
- * @see RepositoryListener#metadataDownloaded(RepositoryEvent)
- */
- METADATA_DOWNLOADED,
-
- /**
- * @see RepositoryListener#artifactInstalling(RepositoryEvent)
- */
- ARTIFACT_INSTALLING,
-
- /**
- * @see RepositoryListener#artifactInstalled(RepositoryEvent)
- */
- ARTIFACT_INSTALLED,
-
- /**
- * @see RepositoryListener#metadataInstalling(RepositoryEvent)
- */
- METADATA_INSTALLING,
-
- /**
- * @see RepositoryListener#metadataInstalled(RepositoryEvent)
- */
- METADATA_INSTALLED,
-
- /**
- * @see RepositoryListener#artifactDeploying(RepositoryEvent)
- */
- ARTIFACT_DEPLOYING,
-
- /**
- * @see RepositoryListener#artifactDeployed(RepositoryEvent)
- */
- ARTIFACT_DEPLOYED,
-
- /**
- * @see RepositoryListener#metadataDeploying(RepositoryEvent)
- */
- METADATA_DEPLOYING,
-
- /**
- * @see RepositoryListener#metadataDeployed(RepositoryEvent)
- */
- METADATA_DEPLOYED
-
- }
-
- private final EventType type;
-
- private final RepositorySystemSession session;
-
- private final Artifact artifact;
-
- private final Metadata metadata;
-
- private final ArtifactRepository repository;
-
- private final File file;
-
- private final List<Exception> exceptions;
-
- private final RequestTrace trace;
-
- RepositoryEvent( Builder builder )
- {
- type = builder.type;
- session = builder.session;
- artifact = builder.artifact;
- metadata = builder.metadata;
- repository = builder.repository;
- file = builder.file;
- exceptions = builder.exceptions;
- trace = builder.trace;
- }
-
- /**
- * Gets the type of the event.
- *
- * @return The type of the event, never {@code null}.
- */
- public EventType getType()
- {
- return type;
- }
-
- /**
- * Gets the repository system session during which the event occurred.
- *
- * @return The repository system session during which the event occurred, never {@code null}.
- */
- public RepositorySystemSession getSession()
- {
- return session;
- }
-
- /**
- * Gets the artifact involved in the event (if any).
- *
- * @return The involved artifact or {@code null} if none.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Gets the metadata involved in the event (if any).
- *
- * @return The involved metadata or {@code null} if none.
- */
- public Metadata getMetadata()
- {
- return metadata;
- }
-
- /**
- * Gets the file involved in the event (if any).
- *
- * @return The involved file or {@code null} if none.
- */
- public File getFile()
- {
- return file;
- }
-
- /**
- * Gets the repository involved in the event (if any).
- *
- * @return The involved repository or {@code null} if none.
- */
- public ArtifactRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Gets the exception that caused the event (if any). As a rule of thumb, an event accompanied by an exception
- * indicates a failure of the corresponding action. If multiple exceptions occurred, this method returns the first
- * exception.
- *
- * @return The exception or {@code null} if none.
- */
- public Exception getException()
- {
- return exceptions.isEmpty() ? null : exceptions.get( 0 );
- }
-
- /**
- * Gets the exceptions that caused the event (if any). As a rule of thumb, an event accompanied by exceptions
- * indicates a failure of the corresponding action.
- *
- * @return The exceptions, never {@code null}.
- */
- public List<Exception> getExceptions()
- {
- return exceptions;
- }
-
- /**
- * Gets the trace information about the request during which the event occurred.
- *
- * @return The trace information or {@code null} if none.
- */
- public RequestTrace getTrace()
- {
- return trace;
- }
-
- @Override
- public String toString()
- {
- StringBuilder buffer = new StringBuilder( 256 );
- buffer.append( getType() );
- if ( getArtifact() != null )
- {
- buffer.append( " " ).append( getArtifact() );
- }
- if ( getMetadata() != null )
- {
- buffer.append( " " ).append( getMetadata() );
- }
- if ( getFile() != null )
- {
- buffer.append( " (" ).append( getFile() ).append( ")" );
- }
- if ( getRepository() != null )
- {
- buffer.append( " @ " ).append( getRepository() );
- }
- return buffer.toString();
- }
-
- /**
- * A builder to create events.
- */
- public static final class Builder
- {
-
- EventType type;
-
- RepositorySystemSession session;
-
- Artifact artifact;
-
- Metadata metadata;
-
- ArtifactRepository repository;
-
- File file;
-
- List<Exception> exceptions = Collections.emptyList();
-
- RequestTrace trace;
-
- /**
- * Creates a new event builder for the specified session and event type.
- *
- * @param session The repository system session, must not be {@code null}.
- * @param type The type of the event, must not be {@code null}.
- */
- public Builder( RepositorySystemSession session, EventType type )
- {
- if ( session == null )
- {
- throw new IllegalArgumentException( "session not specified" );
- }
- this.session = session;
- if ( type == null )
- {
- throw new IllegalArgumentException( "event type not specified" );
- }
- this.type = type;
- }
-
- /**
- * Sets the artifact involved in the event.
- *
- * @param artifact The involved artifact, may be {@code null}.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setArtifact( Artifact artifact )
- {
- this.artifact = artifact;
- return this;
- }
-
- /**
- * Sets the metadata involved in the event.
- *
- * @param metadata The involved metadata, may be {@code null}.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setMetadata( Metadata metadata )
- {
- this.metadata = metadata;
- return this;
- }
-
- /**
- * Sets the repository involved in the event.
- *
- * @param repository The involved repository, may be {@code null}.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setRepository( ArtifactRepository repository )
- {
- this.repository = repository;
- return this;
- }
-
- /**
- * Sets the file involved in the event.
- *
- * @param file The involved file, may be {@code null}.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setFile( File file )
- {
- this.file = file;
- return this;
- }
-
- /**
- * Sets the exception causing the event.
- *
- * @param exception The exception causing the event, may be {@code null}.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setException( Exception exception )
- {
- if ( exception != null )
- {
- this.exceptions = Collections.singletonList( exception );
- }
- else
- {
- this.exceptions = Collections.emptyList();
- }
- return this;
- }
-
- /**
- * Sets the exceptions causing the event.
- *
- * @param exceptions The exceptions causing the event, may be {@code null}.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setExceptions( List<Exception> exceptions )
- {
- if ( exceptions != null )
- {
- this.exceptions = exceptions;
- }
- else
- {
- this.exceptions = Collections.emptyList();
- }
- return this;
- }
-
- /**
- * Sets the trace information about the request during which the event occurred.
- *
- * @param trace The trace information, may be {@code null}.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setTrace( RequestTrace trace )
- {
- this.trace = trace;
- return this;
- }
-
- /**
- * Builds a new event from the current values of this builder. The state of the builder itself remains
- * unchanged.
- *
- * @return The event, never {@code null}.
- */
- public RepositoryEvent build()
- {
- return new RepositoryEvent( this );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/RepositoryException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/RepositoryException.java b/aether-api/src/main/java/org/eclipse/aether/RepositoryException.java
deleted file mode 100644
index 83a6cac..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/RepositoryException.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 base class for exceptions thrown by the repository system. <em>Note:</em> Unless otherwise noted, instances of
- * this class and its subclasses will not persist fields carrying extended error information during serialization.
- */
-public class RepositoryException
- extends Exception
-{
-
- /**
- * Creates a new exception with the specified detail message.
- *
- * @param message The detail message, may be {@code null}.
- */
- public RepositoryException( 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 RepositoryException( String message, Throwable cause )
- {
- super( message, cause );
- }
-
- /**
- * @noreference This method is not intended to be used by clients.
- * @param prefix A message prefix for the cause.
- * @param cause The error cause.
- * @return The error message for the cause.
- */
- protected static String getMessage( String prefix, Throwable cause )
- {
- String msg = "";
- if ( cause != null )
- {
- msg = cause.getMessage();
- if ( msg == null || msg.length() <= 0 )
- {
- msg = cause.getClass().getSimpleName();
- }
- msg = prefix + msg;
- }
- return msg;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/RepositoryListener.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/RepositoryListener.java b/aether-api/src/main/java/org/eclipse/aether/RepositoryListener.java
deleted file mode 100644
index d654630..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/RepositoryListener.java
+++ /dev/null
@@ -1,222 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 listener being notified of events from the repository system. In general, the system sends events upon termination
- * of an operation like {@link #artifactResolved(RepositoryEvent)} regardless whether it succeeded or failed so
- * listeners need to inspect the event details carefully. Also, the listener may be called from an arbitrary thread.
- * <em>Note:</em> Implementors are strongly advised to inherit from {@link AbstractRepositoryListener} instead of
- * directly implementing this interface.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getRepositoryListener()
- * @see org.eclipse.aether.transfer.TransferListener
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface RepositoryListener
-{
-
- /**
- * Notifies the listener of a syntactically or semantically invalid artifact descriptor.
- * {@link RepositoryEvent#getArtifact()} indicates the artifact whose descriptor is invalid and
- * {@link RepositoryEvent#getExceptions()} carries the encountered errors. Depending on the session's
- * {@link org.eclipse.aether.resolution.ArtifactDescriptorPolicy}, the underlying repository operation might abort
- * with an exception or ignore the invalid descriptor.
- *
- * @param event The event details, must not be {@code null}.
- */
- void artifactDescriptorInvalid( RepositoryEvent event );
-
- /**
- * Notifies the listener of a missing artifact descriptor. {@link RepositoryEvent#getArtifact()} indicates the
- * artifact whose descriptor is missing. Depending on the session's
- * {@link org.eclipse.aether.resolution.ArtifactDescriptorPolicy}, the underlying repository operation might abort
- * with an exception or ignore the missing descriptor.
- *
- * @param event The event details, must not be {@code null}.
- */
- void artifactDescriptorMissing( RepositoryEvent event );
-
- /**
- * Notifies the listener of syntactically or semantically invalid metadata. {@link RepositoryEvent#getMetadata()}
- * indicates the invalid metadata and {@link RepositoryEvent#getExceptions()} carries the encountered errors. The
- * underlying repository operation might still succeed, depending on whether the metadata in question is actually
- * needed to carry out the resolution process.
- *
- * @param event The event details, must not be {@code null}.
- */
- void metadataInvalid( RepositoryEvent event );
-
- /**
- * Notifies the listener of an artifact that is about to be resolved. {@link RepositoryEvent#getArtifact()} denotes
- * the artifact in question. Unlike the {@link #artifactDownloading(RepositoryEvent)} event, this event is fired
- * regardless whether the artifact already exists locally or not.
- *
- * @param event The event details, must not be {@code null}.
- */
- void artifactResolving( RepositoryEvent event );
-
- /**
- * Notifies the listener of an artifact whose resolution has been completed, either successfully or not.
- * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
- * {@link RepositoryEvent#getExceptions()} indicates whether the resolution succeeded or failed. Unlike the
- * {@link #artifactDownloaded(RepositoryEvent)} event, this event is fired regardless whether the artifact already
- * exists locally or not.
- *
- * @param event The event details, must not be {@code null}.
- */
- void artifactResolved( RepositoryEvent event );
-
- /**
- * Notifies the listener of some metadata that is about to be resolved. {@link RepositoryEvent#getMetadata()}
- * denotes the metadata in question. Unlike the {@link #metadataDownloading(RepositoryEvent)} event, this event is
- * fired regardless whether the metadata already exists locally or not.
- *
- * @param event The event details, must not be {@code null}.
- */
- void metadataResolving( RepositoryEvent event );
-
- /**
- * Notifies the listener of some metadata whose resolution has been completed, either successfully or not.
- * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
- * {@link RepositoryEvent#getExceptions()} indicates whether the resolution succeeded or failed. Unlike the
- * {@link #metadataDownloaded(RepositoryEvent)} event, this event is fired regardless whether the metadata already
- * exists locally or not.
- *
- * @param event The event details, must not be {@code null}.
- */
- void metadataResolved( RepositoryEvent event );
-
- /**
- * Notifies the listener of an artifact that is about to be downloaded from a remote repository.
- * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
- * {@link RepositoryEvent#getRepository()} the source repository. Unlike the
- * {@link #artifactResolving(RepositoryEvent)} event, this event is only fired when the artifact does not already
- * exist locally.
- *
- * @param event The event details, must not be {@code null}.
- */
- void artifactDownloading( RepositoryEvent event );
-
- /**
- * Notifies the listener of an artifact whose download has been completed, either successfully or not.
- * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
- * {@link RepositoryEvent#getExceptions()} indicates whether the download succeeded or failed. Unlike the
- * {@link #artifactResolved(RepositoryEvent)} event, this event is only fired when the artifact does not already
- * exist locally.
- *
- * @param event The event details, must not be {@code null}.
- */
- void artifactDownloaded( RepositoryEvent event );
-
- /**
- * Notifies the listener of some metadata that is about to be downloaded from a remote repository.
- * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
- * {@link RepositoryEvent#getRepository()} the source repository. Unlike the
- * {@link #metadataResolving(RepositoryEvent)} event, this event is only fired when the metadata does not already
- * exist locally.
- *
- * @param event The event details, must not be {@code null}.
- */
- void metadataDownloading( RepositoryEvent event );
-
- /**
- * Notifies the listener of some metadata whose download has been completed, either successfully or not.
- * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
- * {@link RepositoryEvent#getExceptions()} indicates whether the download succeeded or failed. Unlike the
- * {@link #metadataResolved(RepositoryEvent)} event, this event is only fired when the metadata does not already
- * exist locally.
- *
- * @param event The event details, must not be {@code null}.
- */
- void metadataDownloaded( RepositoryEvent event );
-
- /**
- * Notifies the listener of an artifact that is about to be installed to the local repository.
- * {@link RepositoryEvent#getArtifact()} denotes the artifact in question.
- *
- * @param event The event details, must not be {@code null}.
- */
- void artifactInstalling( RepositoryEvent event );
-
- /**
- * Notifies the listener of an artifact whose installation to the local repository has been completed, either
- * successfully or not. {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
- * {@link RepositoryEvent#getExceptions()} indicates whether the installation succeeded or failed.
- *
- * @param event The event details, must not be {@code null}.
- */
- void artifactInstalled( RepositoryEvent event );
-
- /**
- * Notifies the listener of some metadata that is about to be installed to the local repository.
- * {@link RepositoryEvent#getMetadata()} denotes the metadata in question.
- *
- * @param event The event details, must not be {@code null}.
- */
- void metadataInstalling( RepositoryEvent event );
-
- /**
- * Notifies the listener of some metadata whose installation to the local repository has been completed, either
- * successfully or not. {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
- * {@link RepositoryEvent#getExceptions()} indicates whether the installation succeeded or failed.
- *
- * @param event The event details, must not be {@code null}.
- */
- void metadataInstalled( RepositoryEvent event );
-
- /**
- * Notifies the listener of an artifact that is about to be uploaded to a remote repository.
- * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
- * {@link RepositoryEvent#getRepository()} the destination repository.
- *
- * @param event The event details, must not be {@code null}.
- */
- void artifactDeploying( RepositoryEvent event );
-
- /**
- * Notifies the listener of an artifact whose upload to a remote repository has been completed, either successfully
- * or not. {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
- * {@link RepositoryEvent#getExceptions()} indicates whether the upload succeeded or failed.
- *
- * @param event The event details, must not be {@code null}.
- */
- void artifactDeployed( RepositoryEvent event );
-
- /**
- * Notifies the listener of some metadata that is about to be uploaded to a remote repository.
- * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
- * {@link RepositoryEvent#getRepository()} the destination repository.
- *
- * @param event The event details, must not be {@code null}.
- */
- void metadataDeploying( RepositoryEvent event );
-
- /**
- * Notifies the listener of some metadata whose upload to a remote repository has been completed, either
- * successfully or not. {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
- * {@link RepositoryEvent#getExceptions()} indicates whether the upload succeeded or failed.
- *
- * @param event The event details, must not be {@code null}.
- */
- void metadataDeployed( RepositoryEvent event );
-
-}
[43/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/ChecksumFailureException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/ChecksumFailureException.java b/aether-api/src/main/java/org/eclipse/aether/transfer/ChecksumFailureException.java
deleted file mode 100644
index 1dbc6b0..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/ChecksumFailureException.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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 a checksum failure during an artifact/metadata download.
- */
-public class ChecksumFailureException
- extends RepositoryException
-{
-
- private final String expected;
-
- private final String actual;
-
- private final boolean retryWorthy;
-
- /**
- * Creates a new exception with the specified expected and actual checksum. The resulting exception is
- * {@link #isRetryWorthy() retry-worthy}.
- *
- * @param expected The expected checksum as declared by the hosting repository, may be {@code null}.
- * @param actual The actual checksum as computed from the local bytes, may be {@code null}.
- */
- public ChecksumFailureException( String expected, String actual )
- {
- super( "Checksum validation failed, expected " + expected + " but is " + actual );
- this.expected = expected;
- this.actual = actual;
- retryWorthy = true;
- }
-
- /**
- * Creates a new exception with the specified detail message. The resulting exception is not
- * {@link #isRetryWorthy() retry-worthy}.
- *
- * @param message The detail message, may be {@code null}.
- */
- public ChecksumFailureException( String message )
- {
- this( false, message, null );
- }
-
- /**
- * Creates a new exception with the specified cause. The resulting exception is not {@link #isRetryWorthy()
- * retry-worthy}.
- *
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public ChecksumFailureException( Throwable cause )
- {
- this( "Checksum validation failed" + getMessage( ": ", cause ), cause );
- }
-
- /**
- * Creates a new exception with the specified detail message and cause. The resulting exception is not
- * {@link #isRetryWorthy() retry-worthy}.
- *
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public ChecksumFailureException( String message, Throwable cause )
- {
- this( false, message, cause );
- }
-
- /**
- * Creates a new exception with the specified retry flag, detail message and cause.
- *
- * @param retryWorthy {@code true} if the exception is retry-worthy, {@code false} otherwise.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public ChecksumFailureException( boolean retryWorthy, String message, Throwable cause )
- {
- super( message, cause );
- expected = actual = "";
- this.retryWorthy = retryWorthy;
- }
-
- /**
- * Gets the expected checksum for the downloaded artifact/metadata.
- *
- * @return The expected checksum as declared by the hosting repository or {@code null} if unknown.
- */
- public String getExpected()
- {
- return expected;
- }
-
- /**
- * Gets the actual checksum for the downloaded artifact/metadata.
- *
- * @return The actual checksum as computed from the local bytes or {@code null} if unknown.
- */
- public String getActual()
- {
- return actual;
- }
-
- /**
- * Indicates whether the corresponding download is retry-worthy.
- *
- * @return {@code true} if retrying the download might solve the checksum failure, {@code false} if the checksum
- * failure is non-recoverable.
- */
- public boolean isRetryWorthy()
- {
- return retryWorthy;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/MetadataNotFoundException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/MetadataNotFoundException.java b/aether-api/src/main/java/org/eclipse/aether/transfer/MetadataNotFoundException.java
deleted file mode 100644
index 9642621..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/MetadataNotFoundException.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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.metadata.Metadata;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * Thrown when metadata was not found in a particular repository.
- */
-public class MetadataNotFoundException
- extends MetadataTransferException
-{
-
- /**
- * Creates a new exception with the specified metadata and local repository.
- *
- * @param metadata The missing metadata, may be {@code null}.
- * @param repository The involved local repository, may be {@code null}.
- */
- public MetadataNotFoundException( Metadata metadata, LocalRepository repository )
- {
- super( metadata, null, "Could not find metadata " + metadata + getString( " in ", repository ) );
- }
-
- private static String getString( String prefix, LocalRepository repository )
- {
- if ( repository == null )
- {
- return "";
- }
- else
- {
- return prefix + repository.getId() + " (" + repository.getBasedir() + ")";
- }
- }
-
- /**
- * Creates a new exception with the specified metadata and repository.
- *
- * @param metadata The missing metadata, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- */
- public MetadataNotFoundException( Metadata metadata, RemoteRepository repository )
- {
- super( metadata, repository, "Could not find metadata " + metadata + getString( " in ", repository ) );
- }
-
- /**
- * Creates a new exception with the specified metadata, repository and detail message.
- *
- * @param metadata The missing metadata, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public MetadataNotFoundException( Metadata metadata, RemoteRepository repository, String message )
- {
- super( metadata, repository, message );
- }
-
- /**
- * Creates a new exception with the specified metadata, repository and detail message.
- *
- * @param metadata The missing metadata, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param fromCache {@code true} if the exception was played back from the error cache, {@code false} if the
- * exception actually just occurred.
- */
- public MetadataNotFoundException( Metadata metadata, RemoteRepository repository, String message, boolean fromCache )
- {
- super( metadata, repository, message, fromCache );
- }
-
- /**
- * Creates a new exception with the specified metadata, repository, detail message and cause.
- *
- * @param metadata The missing metadata, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public MetadataNotFoundException( Metadata metadata, RemoteRepository repository, String message, Throwable cause )
- {
- super( metadata, repository, message, cause );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/MetadataTransferException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/MetadataTransferException.java b/aether-api/src/main/java/org/eclipse/aether/transfer/MetadataTransferException.java
deleted file mode 100644
index df6374c..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/MetadataTransferException.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * Thrown when metadata could not be uploaded/downloaded to/from a particular remote repository.
- */
-public class MetadataTransferException
- extends RepositoryException
-{
-
- private final transient Metadata metadata;
-
- private final transient RemoteRepository repository;
-
- private final boolean fromCache;
-
- static String getString( String prefix, RemoteRepository repository )
- {
- if ( repository == null )
- {
- return "";
- }
- else
- {
- return prefix + repository.getId() + " (" + repository.getUrl() + ")";
- }
- }
-
- /**
- * Creates a new exception with the specified metadata, repository and detail message.
- *
- * @param metadata The untransferable metadata, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public MetadataTransferException( Metadata metadata, RemoteRepository repository, String message )
- {
- this( metadata, repository, message, false );
- }
-
- /**
- * Creates a new exception with the specified metadata, repository and detail message.
- *
- * @param metadata The untransferable metadata, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param fromCache {@code true} if the exception was played back from the error cache, {@code false} if the
- * exception actually just occurred.
- */
- public MetadataTransferException( Metadata metadata, RemoteRepository repository, String message, boolean fromCache )
- {
- super( message );
- this.metadata = metadata;
- this.repository = repository;
- this.fromCache = fromCache;
- }
-
- /**
- * Creates a new exception with the specified metadata, repository and cause.
- *
- * @param metadata The untransferable metadata, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public MetadataTransferException( Metadata metadata, RemoteRepository repository, Throwable cause )
- {
- this( metadata, repository, "Could not transfer metadata " + metadata + getString( " from/to ", repository )
- + getMessage( ": ", cause ), cause );
- }
-
- /**
- * Creates a new exception with the specified metadata, repository, detail message and cause.
- *
- * @param metadata The untransferable metadata, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public MetadataTransferException( Metadata metadata, RemoteRepository repository, String message, Throwable cause )
- {
- super( message, cause );
- this.metadata = metadata;
- this.repository = repository;
- this.fromCache = false;
- }
-
- /**
- * Gets the metadata that could not be transferred.
- *
- * @return The troublesome metadata or {@code null} if unknown.
- */
- public Metadata getMetadata()
- {
- return metadata;
- }
-
- /**
- * Gets the remote repository involved in the transfer.
- *
- * @return The involved remote repository or {@code null} if unknown.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Indicates whether this exception actually just occurred or was played back from the error cache.
- *
- * @return {@code true} if the exception was played back from the error cache, {@code false} if the exception
- * actually occurred just now.
- */
- public boolean isFromCache()
- {
- return fromCache;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/NoRepositoryConnectorException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/NoRepositoryConnectorException.java b/aether-api/src/main/java/org/eclipse/aether/transfer/NoRepositoryConnectorException.java
deleted file mode 100644
index 3140569..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/NoRepositoryConnectorException.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * Thrown in case of an unsupported remote repository type.
- */
-public class NoRepositoryConnectorException
- extends RepositoryException
-{
-
- private final transient RemoteRepository repository;
-
- /**
- * Creates a new exception with the specified repository.
- *
- * @param repository The remote repository whose content type is not supported, may be {@code null}.
- */
- public NoRepositoryConnectorException( RemoteRepository repository )
- {
- this( repository, toMessage( repository ) );
- }
-
- /**
- * Creates a new exception with the specified repository and detail message.
- *
- * @param repository The remote repository whose content type is not supported, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public NoRepositoryConnectorException( RemoteRepository repository, String message )
- {
- super( message );
- this.repository = repository;
- }
-
- /**
- * Creates a new exception with the specified repository and cause.
- *
- * @param repository The remote repository whose content type is not supported, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public NoRepositoryConnectorException( RemoteRepository repository, Throwable cause )
- {
- this( repository, toMessage( repository ), cause );
- }
-
- /**
- * Creates a new exception with the specified repository, detail message and cause.
- *
- * @param repository The remote repository whose content type is not supported, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public NoRepositoryConnectorException( RemoteRepository repository, String message, Throwable cause )
- {
- super( message, cause );
- this.repository = repository;
- }
-
- private static String toMessage( RemoteRepository repository )
- {
- if ( repository != null )
- {
- return "No connector available to access repository " + repository.getId() + " (" + repository.getUrl()
- + ") of type " + repository.getContentType();
- }
- else
- {
- return "No connector available to access repository";
- }
- }
-
- /**
- * Gets the remote repository whose content type is not supported.
- *
- * @return The unsupported remote repository or {@code null} if unknown.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/NoRepositoryLayoutException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/NoRepositoryLayoutException.java b/aether-api/src/main/java/org/eclipse/aether/transfer/NoRepositoryLayoutException.java
deleted file mode 100644
index 3fc05bb..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/NoRepositoryLayoutException.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * Thrown in case of an unsupported repository layout.
- */
-public class NoRepositoryLayoutException
- extends RepositoryException
-{
-
- private final transient RemoteRepository repository;
-
- /**
- * Creates a new exception with the specified repository.
- *
- * @param repository The remote repository whose layout is not supported, may be {@code null}.
- */
- public NoRepositoryLayoutException( RemoteRepository repository )
- {
- this( repository, toMessage( repository ) );
- }
-
- /**
- * Creates a new exception with the specified repository and detail message.
- *
- * @param repository The remote repository whose layout is not supported, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public NoRepositoryLayoutException( RemoteRepository repository, String message )
- {
- super( message );
- this.repository = repository;
- }
-
- /**
- * Creates a new exception with the specified repository and cause.
- *
- * @param repository The remote repository whose layout is not supported, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public NoRepositoryLayoutException( RemoteRepository repository, Throwable cause )
- {
- this( repository, toMessage( repository ), cause );
- }
-
- /**
- * Creates a new exception with the specified repository, detail message and cause.
- *
- * @param repository The remote repository whose layout is not supported, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public NoRepositoryLayoutException( RemoteRepository repository, String message, Throwable cause )
- {
- super( message, cause );
- this.repository = repository;
- }
-
- private static String toMessage( RemoteRepository repository )
- {
- if ( repository != null )
- {
- return "Unsupported repository layout " + repository.getContentType();
- }
- else
- {
- return "Unsupported repository layout";
- }
- }
-
- /**
- * Gets the remote repository whose layout is not supported.
- *
- * @return The unsupported remote repository or {@code null} if unknown.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/NoTransporterException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/NoTransporterException.java b/aether-api/src/main/java/org/eclipse/aether/transfer/NoTransporterException.java
deleted file mode 100644
index 5d98558..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/NoTransporterException.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * Thrown in case of an unsupported transport protocol.
- */
-public class NoTransporterException
- extends RepositoryException
-{
-
- private final transient RemoteRepository repository;
-
- /**
- * Creates a new exception with the specified repository.
- *
- * @param repository The remote repository whose transport layout is not supported, may be {@code null}.
- */
- public NoTransporterException( RemoteRepository repository )
- {
- this( repository, toMessage( repository ) );
- }
-
- /**
- * Creates a new exception with the specified repository and detail message.
- *
- * @param repository The remote repository whose transport layout is not supported, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public NoTransporterException( RemoteRepository repository, String message )
- {
- super( message );
- this.repository = repository;
- }
-
- /**
- * Creates a new exception with the specified repository and cause.
- *
- * @param repository The remote repository whose transport layout is not supported, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public NoTransporterException( RemoteRepository repository, Throwable cause )
- {
- this( repository, toMessage( repository ), cause );
- }
-
- /**
- * Creates a new exception with the specified repository, detail message and cause.
- *
- * @param repository The remote repository whose transport layout is not supported, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public NoTransporterException( RemoteRepository repository, String message, Throwable cause )
- {
- super( message, cause );
- this.repository = repository;
- }
-
- private static String toMessage( RemoteRepository repository )
- {
- if ( repository != null )
- {
- return "Unsupported transport protocol " + repository.getProtocol();
- }
- else
- {
- return "Unsupported transport protocol";
- }
- }
-
- /**
- * Gets the remote repository whose transport protocol is not supported.
- *
- * @return The unsupported remote repository or {@code null} if unknown.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/RepositoryOfflineException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/RepositoryOfflineException.java b/aether-api/src/main/java/org/eclipse/aether/transfer/RepositoryOfflineException.java
deleted file mode 100644
index 02d4680..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/RepositoryOfflineException.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * Thrown when a transfer could not be performed because a remote repository is not accessible in offline mode.
- */
-public class RepositoryOfflineException
- extends RepositoryException
-{
-
- private final transient RemoteRepository repository;
-
- private static String getMessage( RemoteRepository repository )
- {
- if ( repository == null )
- {
- return "Cannot access remote repositories in offline mode";
- }
- else
- {
- return "Cannot access " + repository.getId() + " (" + repository.getUrl() + ") in offline mode";
- }
- }
-
- /**
- * Creates a new exception with the specified repository.
- *
- * @param repository The inaccessible remote repository, may be {@code null}.
- */
- public RepositoryOfflineException( RemoteRepository repository )
- {
- super( getMessage( repository ) );
- this.repository = repository;
- }
-
- /**
- * Creates a new exception with the specified repository and detail message.
- *
- * @param repository The inaccessible remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public RepositoryOfflineException( RemoteRepository repository, String message )
- {
- super( message );
- this.repository = repository;
- }
-
- /**
- * Gets the remote repository that could not be accessed due to offline mode.
- *
- * @return The inaccessible remote repository or {@code null} if unknown.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/TransferCancelledException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/TransferCancelledException.java b/aether-api/src/main/java/org/eclipse/aether/transfer/TransferCancelledException.java
deleted file mode 100644
index 88caa13..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/TransferCancelledException.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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 an upload/download was cancelled (e.g. due to user request).
- */
-public class TransferCancelledException
- extends RepositoryException
-{
-
- /**
- * Creates a new exception with a stock detail message.
- */
- public TransferCancelledException()
- {
- super( "The operation was cancelled." );
- }
-
- /**
- * Creates a new exception with the specified detail message.
- *
- * @param message The detail message, may be {@code null}.
- */
- public TransferCancelledException( 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 TransferCancelledException( String message, Throwable cause )
- {
- super( message, cause );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/TransferEvent.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/TransferEvent.java b/aether-api/src/main/java/org/eclipse/aether/transfer/TransferEvent.java
deleted file mode 100644
index 1599a82..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/TransferEvent.java
+++ /dev/null
@@ -1,432 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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.nio.ByteBuffer;
-
-import org.eclipse.aether.RepositorySystemSession;
-
-/**
- * An event fired to a transfer listener during an artifact/metadata transfer.
- *
- * @see TransferListener
- * @see TransferEvent.Builder
- */
-public final class TransferEvent
-{
-
- /**
- * The type of the event.
- */
- public enum EventType
- {
-
- /**
- * @see TransferListener#transferInitiated(TransferEvent)
- */
- INITIATED,
-
- /**
- * @see TransferListener#transferStarted(TransferEvent)
- */
- STARTED,
-
- /**
- * @see TransferListener#transferProgressed(TransferEvent)
- */
- PROGRESSED,
-
- /**
- * @see TransferListener#transferCorrupted(TransferEvent)
- */
- CORRUPTED,
-
- /**
- * @see TransferListener#transferSucceeded(TransferEvent)
- */
- SUCCEEDED,
-
- /**
- * @see TransferListener#transferFailed(TransferEvent)
- */
- FAILED
-
- }
-
- /**
- * The type of the request/transfer being performed.
- */
- public enum RequestType
- {
-
- /**
- * Download artifact/metadata.
- */
- GET,
-
- /**
- * Check artifact/metadata existence only.
- */
- GET_EXISTENCE,
-
- /**
- * Upload artifact/metadata.
- */
- PUT,
-
- }
-
- private final EventType type;
-
- private final RequestType requestType;
-
- private final RepositorySystemSession session;
-
- private final TransferResource resource;
-
- private final ByteBuffer dataBuffer;
-
- private final long transferredBytes;
-
- private final Exception exception;
-
- TransferEvent( Builder builder )
- {
- type = builder.type;
- requestType = builder.requestType;
- session = builder.session;
- resource = builder.resource;
- dataBuffer = builder.dataBuffer;
- transferredBytes = builder.transferredBytes;
- exception = builder.exception;
- }
-
- /**
- * Gets the type of the event.
- *
- * @return The type of the event, never {@code null}.
- */
- public EventType getType()
- {
- return type;
- }
-
- /**
- * Gets the type of the request/transfer.
- *
- * @return The type of the request/transfer, never {@code null}.
- */
- public RequestType getRequestType()
- {
- return requestType;
- }
-
- /**
- * Gets the repository system session during which the event occurred.
- *
- * @return The repository system session during which the event occurred, never {@code null}.
- */
- public RepositorySystemSession getSession()
- {
- return session;
- }
-
- /**
- * Gets the resource that is being transferred.
- *
- * @return The resource being transferred, never {@code null}.
- */
- public TransferResource getResource()
- {
- return resource;
- }
-
- /**
- * Gets the total number of bytes that have been transferred since the download/upload of the resource was started.
- * If a download has been resumed, the returned count includes the bytes that were already downloaded during the
- * previous attempt. In other words, the ratio of transferred bytes to the content length of the resource indicates
- * the percentage of transfer completion.
- *
- * @return The total number of bytes that have been transferred since the transfer started, never negative.
- * @see #getDataLength()
- * @see TransferResource#getResumeOffset()
- */
- public long getTransferredBytes()
- {
- return transferredBytes;
- }
-
- /**
- * Gets the byte buffer holding the transferred bytes since the last event. A listener must assume this buffer to be
- * owned by the event source and must not change any byte in this buffer. Also, the buffer is only valid for the
- * duration of the event callback, i.e. the next event might reuse the same buffer (with updated contents).
- * Therefore, if the actual event processing is deferred, the byte buffer would have to be cloned to create an
- * immutable snapshot of its contents.
- *
- * @return The (read-only) byte buffer or {@code null} if not applicable to the event, i.e. if the event type is not
- * {@link EventType#PROGRESSED}.
- */
- public ByteBuffer getDataBuffer()
- {
- return ( dataBuffer != null ) ? dataBuffer.asReadOnlyBuffer() : null;
- }
-
- /**
- * Gets the number of bytes that have been transferred since the last event.
- *
- * @return The number of bytes that have been transferred since the last event, possibly zero but never negative.
- * @see #getTransferredBytes()
- */
- public int getDataLength()
- {
- return ( dataBuffer != null ) ? dataBuffer.remaining() : 0;
- }
-
- /**
- * Gets the error that occurred during the transfer.
- *
- * @return The error that occurred or {@code null} if none.
- */
- public Exception getException()
- {
- return exception;
- }
-
- @Override
- public String toString()
- {
- return getRequestType() + " " + getType() + " " + getResource();
- }
-
- /**
- * A builder to create transfer events.
- */
- public static final class Builder
- {
-
- EventType type;
-
- RequestType requestType;
-
- RepositorySystemSession session;
-
- TransferResource resource;
-
- ByteBuffer dataBuffer;
-
- long transferredBytes;
-
- Exception exception;
-
- /**
- * Creates a new transfer event builder for the specified session and the given resource.
- *
- * @param session The repository system session, must not be {@code null}.
- * @param resource The resource being transferred, must not be {@code null}.
- */
- public Builder( RepositorySystemSession session, TransferResource resource )
- {
- if ( session == null )
- {
- throw new IllegalArgumentException( "session not specified" );
- }
- if ( resource == null )
- {
- throw new IllegalArgumentException( "transfer resource not specified" );
- }
- this.session = session;
- this.resource = resource;
- type = EventType.INITIATED;
- requestType = RequestType.GET;
- }
-
- private Builder( Builder prototype )
- {
- session = prototype.session;
- resource = prototype.resource;
- type = prototype.type;
- requestType = prototype.requestType;
- dataBuffer = prototype.dataBuffer;
- transferredBytes = prototype.transferredBytes;
- exception = prototype.exception;
- }
-
- /**
- * Creates a new transfer event builder from the current values of this builder. The state of this builder
- * remains unchanged.
- *
- * @return The new event builder, never {@code null}.
- */
- public Builder copy()
- {
- return new Builder( this );
- }
-
- /**
- * Sets the type of the event and resets event-specific fields. In more detail, the data buffer and the
- * exception fields are set to {@code null}. Furthermore, the total number of transferred bytes is set to
- * {@code 0} if the event type is {@link EventType#STARTED}.
- *
- * @param type The type of the event, must not be {@code null}.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder resetType( EventType type )
- {
- if ( type == null )
- {
- throw new IllegalArgumentException( "event type not specified" );
- }
- this.type = type;
- dataBuffer = null;
- exception = null;
- switch ( type )
- {
- case INITIATED:
- case STARTED:
- transferredBytes = 0;
- default:
- }
- return this;
- }
-
- /**
- * Sets the type of the event. When re-using the same builder to generate a sequence of events for one transfer,
- * {@link #resetType(TransferEvent.EventType)} might be more handy.
- *
- * @param type The type of the event, must not be {@code null}.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setType( EventType type )
- {
- if ( type == null )
- {
- throw new IllegalArgumentException( "event type not specified" );
- }
- this.type = type;
- return this;
- }
-
- /**
- * Sets the type of the request/transfer.
- *
- * @param requestType The request/transfer type, must not be {@code null}.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setRequestType( RequestType requestType )
- {
- if ( requestType == null )
- {
- throw new IllegalArgumentException( "request type not specified" );
- }
- this.requestType = requestType;
- return this;
- }
-
- /**
- * Sets the total number of bytes that have been transferred so far during the download/upload of the resource.
- * If a download is being resumed, the count must include the bytes that were already downloaded in the previous
- * attempt and from which the current transfer started. In this case, the event type {@link EventType#STARTED}
- * should indicate from what byte the download resumes.
- *
- * @param transferredBytes The total number of bytes that have been transferred so far during the
- * download/upload of the resource, must not be negative.
- * @return This event builder for chaining, never {@code null}.
- * @see TransferResource#setResumeOffset(long)
- */
- public Builder setTransferredBytes( long transferredBytes )
- {
- if ( transferredBytes < 0 )
- {
- throw new IllegalArgumentException( "number of transferred bytes cannot be negative" );
- }
- this.transferredBytes = transferredBytes;
- return this;
- }
-
- /**
- * Increments the total number of bytes that have been transferred so far during the download/upload.
- *
- * @param transferredBytes The number of bytes that have been transferred since the last event, must not be
- * negative.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder addTransferredBytes( long transferredBytes )
- {
- if ( transferredBytes < 0 )
- {
- throw new IllegalArgumentException( "number of transferred bytes cannot be negative" );
- }
- this.transferredBytes += transferredBytes;
- return this;
- }
-
- /**
- * Sets the byte buffer holding the transferred bytes since the last event.
- *
- * @param buffer The byte buffer holding the transferred bytes since the last event, may be {@code null} if not
- * applicable to the event.
- * @param offset The starting point of valid bytes in the array.
- * @param length The number of valid bytes, must not be negative.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setDataBuffer( byte[] buffer, int offset, int length )
- {
- return setDataBuffer( ( buffer != null ) ? ByteBuffer.wrap( buffer, offset, length ) : null );
- }
-
- /**
- * Sets the byte buffer holding the transferred bytes since the last event.
- *
- * @param dataBuffer The byte buffer holding the transferred bytes since the last event, may be {@code null} if
- * not applicable to the event.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setDataBuffer( ByteBuffer dataBuffer )
- {
- this.dataBuffer = dataBuffer;
- return this;
- }
-
- /**
- * Sets the error that occurred during the transfer.
- *
- * @param exception The error that occurred during the transfer, may be {@code null} if none.
- * @return This event builder for chaining, never {@code null}.
- */
- public Builder setException( Exception exception )
- {
- this.exception = exception;
- return this;
- }
-
- /**
- * Builds a new transfer event from the current values of this builder. The state of the builder itself remains
- * unchanged.
- *
- * @return The transfer event, never {@code null}.
- */
- public TransferEvent build()
- {
- return new TransferEvent( this );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/TransferListener.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/TransferListener.java b/aether-api/src/main/java/org/eclipse/aether/transfer/TransferListener.java
deleted file mode 100644
index 18019a9..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/TransferListener.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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 listener being notified of artifact/metadata transfers from/to remote repositories. The listener may be called from
- * an arbitrary thread. Reusing common regular expression syntax, the sequence of events is roughly as follows:
- *
- * <pre>
- * INITIATED ( STARTED PROGRESSED* CORRUPTED? )* ( SUCCEEDED | FAILED )
- * </pre>
- *
- * <em>Note:</em> Implementors are strongly advised to inherit from {@link AbstractTransferListener} instead of directly
- * implementing this interface.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getTransferListener()
- * @see org.eclipse.aether.RepositoryListener
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface TransferListener
-{
-
- /**
- * Notifies the listener about the initiation of a transfer. This event gets fired before any actual network access
- * to the remote repository and usually indicates some thread is now about to perform the transfer. For a given
- * transfer request, this event is the first one being fired and it must be emitted exactly once.
- *
- * @param event The event details, must not be {@code null}.
- * @throws TransferCancelledException If the transfer should be aborted.
- */
- void transferInitiated( TransferEvent event )
- throws TransferCancelledException;
-
- /**
- * Notifies the listener about the start of a data transfer. This event indicates a successful connection to the
- * remote repository. In case of a download, the requested remote resource exists and its size is given by
- * {@link TransferResource#getContentLength()} if possible. This event may be fired multiple times for given
- * transfer request if said transfer needs to be repeated (e.g. in response to an authentication challenge).
- *
- * @param event The event details, must not be {@code null}.
- * @throws TransferCancelledException If the transfer should be aborted.
- */
- void transferStarted( TransferEvent event )
- throws TransferCancelledException;
-
- /**
- * Notifies the listener about some progress in the data transfer. This event may even be fired if actually zero
- * bytes have been transferred since the last event, for instance to enable cancellation.
- *
- * @param event The event details, must not be {@code null}.
- * @throws TransferCancelledException If the transfer should be aborted.
- */
- void transferProgressed( TransferEvent event )
- throws TransferCancelledException;
-
- /**
- * Notifies the listener that a checksum validation failed. {@link TransferEvent#getException()} will be of type
- * {@link ChecksumFailureException} and can be used to query further details about the expected/actual checksums.
- *
- * @param event The event details, must not be {@code null}.
- * @throws TransferCancelledException If the transfer should be aborted.
- */
- void transferCorrupted( TransferEvent event )
- throws TransferCancelledException;
-
- /**
- * Notifies the listener about the successful completion of a transfer. This event must be fired exactly once for a
- * given transfer request unless said request failed.
- *
- * @param event The event details, must not be {@code null}.
- */
- void transferSucceeded( TransferEvent event );
-
- /**
- * Notifies the listener about the unsuccessful termination of a transfer. {@link TransferEvent#getException()} will
- * provide further information about the failure.
- *
- * @param event The event details, must not be {@code null}.
- */
- void transferFailed( TransferEvent event );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/TransferResource.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/TransferResource.java b/aether-api/src/main/java/org/eclipse/aether/transfer/TransferResource.java
deleted file mode 100644
index cbe0230..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/TransferResource.java
+++ /dev/null
@@ -1,201 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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.RequestTrace;
-
-/**
- * Describes a resource being uploaded or downloaded by the repository system.
- */
-public final class TransferResource
-{
-
- private final String repositoryUrl;
-
- private final String resourceName;
-
- private final File file;
-
- private final long startTime;
-
- private final RequestTrace trace;
-
- private long contentLength = -1;
-
- private long resumeOffset;
-
- /**
- * Creates a new transfer resource with the specified properties.
- *
- * @param repositoryUrl The base URL of the repository, may be {@code null} or empty if unknown. If not empty, a
- * trailing slash will automatically be added if missing.
- * @param resourceName The relative path to the resource within the repository, may be {@code null}. A leading slash
- * (if any) will be automatically removed.
- * @param file The source/target file involved in the transfer, may be {@code null}.
- * @param trace The trace information, may be {@code null}.
- */
- public TransferResource( String repositoryUrl, String resourceName, File file, RequestTrace trace )
- {
- if ( repositoryUrl == null || repositoryUrl.length() <= 0 )
- {
- this.repositoryUrl = "";
- }
- else if ( repositoryUrl.endsWith( "/" ) )
- {
- this.repositoryUrl = repositoryUrl;
- }
- else
- {
- this.repositoryUrl = repositoryUrl + '/';
- }
-
- if ( resourceName == null || resourceName.length() <= 0 )
- {
- this.resourceName = "";
- }
- else if ( resourceName.startsWith( "/" ) )
- {
- this.resourceName = resourceName.substring( 1 );
- }
- else
- {
- this.resourceName = resourceName;
- }
-
- this.file = file;
-
- this.trace = trace;
-
- startTime = System.currentTimeMillis();
- }
-
- /**
- * The base URL of the repository, e.g. "http://repo1.maven.org/maven2/". Unless the URL is unknown, it will be
- * terminated by a trailing slash.
- *
- * @return The base URL of the repository or an empty string if unknown, never {@code null}.
- */
- public String getRepositoryUrl()
- {
- return repositoryUrl;
- }
-
- /**
- * The path of the resource relative to the repository's base URL, e.g. "org/apache/maven/maven/3.0/maven-3.0.pom".
- *
- * @return The path of the resource, never {@code null}.
- */
- public String getResourceName()
- {
- return resourceName;
- }
-
- /**
- * Gets the local file being uploaded or downloaded. When the repository system merely checks for the existence of a
- * remote resource, no local file will be involved in the transfer.
- *
- * @return The source/target file involved in the transfer or {@code null} if none.
- */
- public File getFile()
- {
- return file;
- }
-
- /**
- * The size of the resource in bytes. Note that the size of a resource during downloads might be unknown to the
- * client which is usually the case when transfers employ compression like gzip. In general, the content length is
- * not known until the transfer has {@link TransferListener#transferStarted(TransferEvent) started}.
- *
- * @return The size of the resource in bytes or a negative value if unknown.
- */
- public long getContentLength()
- {
- return contentLength;
- }
-
- /**
- * Sets the size of the resource in bytes.
- *
- * @param contentLength The size of the resource in bytes or a negative value if unknown.
- * @return This resource for chaining, never {@code null}.
- */
- public TransferResource setContentLength( long contentLength )
- {
- this.contentLength = contentLength;
- return this;
- }
-
- /**
- * Gets the byte offset within the resource from which the download starts. A positive offset indicates a previous
- * download attempt is being resumed, {@code 0} means the transfer starts at the first byte.
- *
- * @return The zero-based index of the first byte being transferred, never negative.
- */
- public long getResumeOffset()
- {
- return resumeOffset;
- }
-
- /**
- * Sets the byte offset within the resource at which the download starts.
- *
- * @param resumeOffset The zero-based index of the first byte being transferred, must not be negative.
- * @return This resource for chaining, never {@code null}.
- */
- public TransferResource setResumeOffset( long resumeOffset )
- {
- if ( resumeOffset < 0 )
- {
- throw new IllegalArgumentException( "resume offset cannot be negative" );
- }
- this.resumeOffset = resumeOffset;
- return this;
- }
-
- /**
- * Gets the timestamp when the transfer of this resource was started.
- *
- * @return The timestamp when the transfer of this resource was started.
- */
- public long getTransferStartTime()
- {
- return startTime;
- }
-
- /**
- * Gets the trace information that describes the higher level request/operation during which this resource is
- * transferred.
- *
- * @return The trace information about the higher level operation or {@code null} if none.
- */
- public RequestTrace getTrace()
- {
- return trace;
- }
-
- @Override
- public String toString()
- {
- return getRepositoryUrl() + getResourceName() + " <> " + getFile();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/package-info.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/package-info.java b/aether-api/src/main/java/org/eclipse/aether/transfer/package-info.java
deleted file mode 100644
index 541b244..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/package-info.java
+++ /dev/null
@@ -1,25 +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.
- */
-/**
- * A listener and various exception types dealing with the transfer of a resource between the local system and a remote
- * repository.
- */
-package org.eclipse.aether.transfer;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/version/InvalidVersionSpecificationException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/version/InvalidVersionSpecificationException.java b/aether-api/src/main/java/org/eclipse/aether/version/InvalidVersionSpecificationException.java
deleted file mode 100644
index a576844..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/version/InvalidVersionSpecificationException.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.aether.version;
-
-/*
- * 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 when a version or version range could not be parsed.
- */
-public class InvalidVersionSpecificationException
- extends RepositoryException
-{
-
- private final String version;
-
- /**
- * Creates a new exception with the specified version and detail message.
- *
- * @param version The invalid version specification, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public InvalidVersionSpecificationException( String version, String message )
- {
- super( message );
- this.version = version;
- }
-
- /**
- * Creates a new exception with the specified version and cause.
- *
- * @param version The invalid version specification, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public InvalidVersionSpecificationException( String version, Throwable cause )
- {
- super( "Could not parse version specification " + version + getMessage( ": ", cause ), cause );
- this.version = version;
- }
-
- /**
- * Creates a new exception with the specified version, detail message and cause.
- *
- * @param version The invalid version specification, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public InvalidVersionSpecificationException( String version, String message, Throwable cause )
- {
- super( message, cause );
- this.version = version;
- }
-
- /**
- * Gets the version or version range that could not be parsed.
- *
- * @return The invalid version specification or {@code null} if unknown.
- */
- public String getVersion()
- {
- return version;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/version/Version.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/version/Version.java b/aether-api/src/main/java/org/eclipse/aether/version/Version.java
deleted file mode 100644
index 41c02c0..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/version/Version.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.eclipse.aether.version;
-
-/*
- * 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 parsed artifact version.
- */
-public interface Version
- extends Comparable<Version>
-{
-
- /**
- * Gets the original string representation of the version.
- *
- * @return The string representation of the version, never {@code null}.
- */
- String toString();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/version/VersionConstraint.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/version/VersionConstraint.java b/aether-api/src/main/java/org/eclipse/aether/version/VersionConstraint.java
deleted file mode 100644
index 1c68587..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/version/VersionConstraint.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.eclipse.aether.version;
-
-/*
- * 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 constraint on versions for a dependency. A constraint can either consist of a version range (e.g. "[1, ]") or a
- * single version (e.g. "1.1"). In the first case, the constraint expresses a hard requirement on a version matching the
- * range. In the second case, the constraint expresses a soft requirement on a specific version (i.e. a recommendation).
- */
-public interface VersionConstraint
-{
-
- /**
- * Gets the version range of this constraint.
- *
- * @return The version range or {@code null} if none.
- */
- VersionRange getRange();
-
- /**
- * Gets the version recommended by this constraint.
- *
- * @return The recommended version or {@code null} if none.
- */
- Version getVersion();
-
- /**
- * Determines whether the specified version satisfies this constraint. In more detail, a version satisfies this
- * constraint if it matches its version range or if this constraint has no version range and the specified version
- * equals the version recommended by the constraint.
- *
- * @param version The version to test, must not be {@code null}.
- * @return {@code true} if the specified version satisfies this constraint, {@code false} otherwise.
- */
- boolean containsVersion( Version version );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/version/VersionRange.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/version/VersionRange.java b/aether-api/src/main/java/org/eclipse/aether/version/VersionRange.java
deleted file mode 100644
index e355cf5..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/version/VersionRange.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.eclipse.aether.version;
-
-/*
- * 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 range of versions.
- */
-public interface VersionRange
-{
-
- /**
- * Determines whether the specified version is contained within this range.
- *
- * @param version The version to test, must not be {@code null}.
- * @return {@code true} if this range contains the specified version, {@code false} otherwise.
- */
- boolean containsVersion( Version version );
-
- /**
- * Gets a lower bound (if any) for this range. If existent, this range does not contain any version smaller than its
- * lower bound. Note that complex version ranges might exclude some versions even within their bounds.
- *
- * @return A lower bound for this range or {@code null} is there is none.
- */
- Bound getLowerBound();
-
- /**
- * Gets an upper bound (if any) for this range. If existent, this range does not contain any version greater than
- * its upper bound. Note that complex version ranges might exclude some versions even within their bounds.
- *
- * @return An upper bound for this range or {@code null} is there is none.
- */
- Bound getUpperBound();
-
- /**
- * A bound of a version range.
- */
- static final class Bound
- {
-
- private final Version version;
-
- private final boolean inclusive;
-
- /**
- * Creates a new bound with the specified properties.
- *
- * @param version The bounding version, must not be {@code null}.
- * @param inclusive A flag whether the specified version is included in the range or not.
- */
- public Bound( Version version, boolean inclusive )
- {
- if ( version == null )
- {
- throw new IllegalArgumentException( "version missing" );
- }
- this.version = version;
- this.inclusive = inclusive;
- }
-
- /**
- * Gets the bounding version.
- *
- * @return The bounding version, never {@code null}.
- */
- public Version getVersion()
- {
- return version;
- }
-
- /**
- * Indicates whether the bounding version is included in the range or not.
- *
- * @return {@code true} if the bounding version is included in the range, {@code false} if not.
- */
- public boolean isInclusive()
- {
- return inclusive;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
- return true;
- }
- else if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- Bound that = (Bound) obj;
- return inclusive == that.inclusive && version.equals( that.version );
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + version.hashCode();
- hash = hash * 31 + ( inclusive ? 1 : 0 );
- return hash;
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( version );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/version/VersionScheme.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/version/VersionScheme.java b/aether-api/src/main/java/org/eclipse/aether/version/VersionScheme.java
deleted file mode 100644
index c765a03..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/version/VersionScheme.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.eclipse.aether.version;
-
-/*
- * 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 version scheme that handles interpretation of version strings to facilitate their comparison.
- */
-public interface VersionScheme
-{
-
- /**
- * Parses the specified version string, for example "1.0".
- *
- * @param version The version string to parse, must not be {@code null}.
- * @return The parsed version, never {@code null}.
- * @throws InvalidVersionSpecificationException If the string violates the syntax rules of this scheme.
- */
- Version parseVersion( String version )
- throws InvalidVersionSpecificationException;
-
- /**
- * Parses the specified version range specification, for example "[1.0,2.0)".
- *
- * @param range The range specification to parse, must not be {@code null}.
- * @return The parsed version range, never {@code null}.
- * @throws InvalidVersionSpecificationException If the range specification violates the syntax rules of this scheme.
- */
- VersionRange parseVersionRange( String range )
- throws InvalidVersionSpecificationException;
-
- /**
- * Parses the specified version constraint specification, for example "1.0" or "[1.0,2.0),(2.0,)".
- *
- * @param constraint The constraint specification to parse, must not be {@code null}.
- * @return The parsed version constraint, never {@code null}.
- * @throws InvalidVersionSpecificationException If the constraint specification violates the syntax rules of this
- * scheme.
- */
- VersionConstraint parseVersionConstraint( final String constraint )
- throws InvalidVersionSpecificationException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/version/package-info.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/version/package-info.java b/aether-api/src/main/java/org/eclipse/aether/version/package-info.java
deleted file mode 100644
index a16dd64..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/version/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 a version scheme for parsing and comparing versions.
- */
-package org.eclipse.aether.version;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/site/site.xml
----------------------------------------------------------------------
diff --git a/aether-api/src/site/site.xml b/aether-api/src/site/site.xml
deleted file mode 100644
index 3a16bf9..0000000
--- a/aether-api/src/site/site.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
- <body>
- <menu name="Overview">
- <item name="Introduction" href="index.html"/>
- <item name="JavaDocs" href="apidocs/index.html"/>
- <item name="Source Xref" href="xref/index.html"/>
- <!--item name="FAQ" href="faq.html"/-->
- </menu>
-
- <menu ref="parent"/>
- <menu ref="reports"/>
- </body>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/AbstractForwardingRepositorySystemSessionTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/AbstractForwardingRepositorySystemSessionTest.java b/aether-api/src/test/java/org/eclipse/aether/AbstractForwardingRepositorySystemSessionTest.java
deleted file mode 100644
index 5ad2475..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/AbstractForwardingRepositorySystemSessionTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.lang.reflect.Method;
-
-import org.junit.Test;
-
-public class AbstractForwardingRepositorySystemSessionTest
-{
-
- @Test
- public void testAllMethodsImplemented()
- throws Exception
- {
- for ( Method method : RepositorySystemSession.class.getMethods() )
- {
- Method m =
- AbstractForwardingRepositorySystemSession.class.getDeclaredMethod( method.getName(),
- method.getParameterTypes() );
- assertNotNull( method.toString(), m );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/AbstractRepositoryListenerTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/AbstractRepositoryListenerTest.java b/aether-api/src/test/java/org/eclipse/aether/AbstractRepositoryListenerTest.java
deleted file mode 100644
index 74c617f..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/AbstractRepositoryListenerTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.aether.AbstractRepositoryListener;
-import org.eclipse.aether.RepositoryListener;
-import org.junit.Test;
-
-/**
- */
-public class AbstractRepositoryListenerTest
-{
-
- @Test
- public void testAllEventTypesHandled()
- throws Exception
- {
- for ( Method method : RepositoryListener.class.getMethods() )
- {
- assertNotNull( AbstractRepositoryListener.class.getDeclaredMethod( method.getName(),
- method.getParameterTypes() ) );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/test/java/org/eclipse/aether/DefaultRepositoryCacheTest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/test/java/org/eclipse/aether/DefaultRepositoryCacheTest.java b/aether-api/src/test/java/org/eclipse/aether/DefaultRepositoryCacheTest.java
deleted file mode 100644
index ad5dfc5..0000000
--- a/aether-api/src/test/java/org/eclipse/aether/DefaultRepositoryCacheTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.UUID;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.junit.Test;
-
-public class DefaultRepositoryCacheTest
-{
-
- private DefaultRepositoryCache cache = new DefaultRepositoryCache();
-
- private RepositorySystemSession session = new DefaultRepositorySystemSession();
-
- private Object get( Object key )
- {
- return cache.get( session, key );
- }
-
- private void put( Object key, Object value )
- {
- cache.put( session, key, value );
- }
-
- @Test( expected = RuntimeException.class )
- public void testGet_NullKey()
- {
- get( null );
- }
-
- @Test( expected = RuntimeException.class )
- public void testPut_NullKey()
- {
- put( null, "data" );
- }
-
- @Test
- public void testGetPut()
- {
- Object key = "key";
- assertNull( get( key ) );
- put( key, "value" );
- assertEquals( "value", get( key ) );
- put( key, "changed" );
- assertEquals( "changed", get( key ) );
- put( key, null );
- assertNull( get( key ) );
- }
-
- @Test( timeout = 10000 )
- public void testConcurrency()
- throws Exception
- {
- final AtomicReference<Throwable> error = new AtomicReference<Throwable>();
- Thread threads[] = new Thread[20];
- for ( int i = 0; i < threads.length; i++ )
- {
- threads[i] = new Thread()
- {
- @Override
- public void run()
- {
- for ( int i = 0; i < 100; i++ )
- {
- String key = UUID.randomUUID().toString();
- try
- {
- put( key, Boolean.TRUE );
- assertEquals( Boolean.TRUE, get( key ) );
- }
- catch ( Throwable t )
- {
- error.compareAndSet( null, t );
- t.printStackTrace();
- }
- }
- }
- };
- }
- for ( Thread thread : threads )
- {
- thread.start();
- }
- for ( Thread thread : threads )
- {
- thread.join();
- }
- assertNull( String.valueOf( error.get() ), error.get() );
- }
-
-}
[08/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/RootQueueTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/RootQueueTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/RootQueueTest.java
deleted file mode 100644
index f609ed7..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/RootQueueTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.util.graph.transformer.ConflictIdSorter.ConflictId;
-import org.eclipse.aether.util.graph.transformer.ConflictIdSorter.RootQueue;
-import org.junit.Test;
-
-public class RootQueueTest
-{
-
- @Test
- public void testIsEmpty()
- {
- ConflictId id = new ConflictId( "a", 0 );
- RootQueue queue = new RootQueue( 10 );
- assertTrue( queue.isEmpty() );
- queue.add( id );
- assertFalse( queue.isEmpty() );
- assertSame( id, queue.remove() );
- assertTrue( queue.isEmpty() );
- }
-
- @Test
- public void testAddSortsByDepth()
- {
- ConflictId id1 = new ConflictId( "a", 0 );
- ConflictId id2 = new ConflictId( "b", 1 );
- ConflictId id3 = new ConflictId( "c", 2 );
- ConflictId id4 = new ConflictId( "d", 3 );
-
- RootQueue queue = new RootQueue( 10 );
- queue.add( id1 );
- queue.add( id2 );
- queue.add( id3 );
- queue.add( id4 );
- assertSame( id1, queue.remove() );
- assertSame( id2, queue.remove() );
- assertSame( id3, queue.remove() );
- assertSame( id4, queue.remove() );
-
- queue = new RootQueue( 10 );
- queue.add( id4 );
- queue.add( id3 );
- queue.add( id2 );
- queue.add( id1 );
- assertSame( id1, queue.remove() );
- assertSame( id2, queue.remove() );
- assertSame( id3, queue.remove() );
- assertSame( id4, queue.remove() );
- }
-
- @Test
- public void testAddWithArrayCompact()
- {
- ConflictId id = new ConflictId( "a", 0 );
-
- RootQueue queue = new RootQueue( 10 );
- assertTrue( queue.isEmpty() );
- queue.add( id );
- assertFalse( queue.isEmpty() );
- assertSame( id, queue.remove() );
- assertTrue( queue.isEmpty() );
- queue.add( id );
- assertFalse( queue.isEmpty() );
- assertSame( id, queue.remove() );
- assertTrue( queue.isEmpty() );
- }
-
- @Test
- public void testAddMinimumAfterSomeRemoves()
- {
- ConflictId id1 = new ConflictId( "a", 0 );
- ConflictId id2 = new ConflictId( "b", 1 );
- ConflictId id3 = new ConflictId( "c", 2 );
-
- RootQueue queue = new RootQueue( 10 );
- queue.add( id2 );
- queue.add( id3 );
- assertSame( id2, queue.remove() );
- queue.add( id1 );
- assertSame( id1, queue.remove() );
- assertSame( id3, queue.remove() );
- assertTrue( queue.isEmpty() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/SimpleConflictMarker.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/SimpleConflictMarker.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/SimpleConflictMarker.java
deleted file mode 100644
index df30368..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/SimpleConflictMarker.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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.IdentityHashMap;
-import java.util.Map;
-
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.util.graph.transformer.TransformationContextKeys;
-
-/**
- * Set "groupId:artId:classifier:extension" as conflict marker for every node.
- */
-class SimpleConflictMarker
- implements DependencyGraphTransformer
-{
-
- public DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- @SuppressWarnings( "unchecked" )
- Map<DependencyNode, Object> conflictIds =
- (Map<DependencyNode, Object>) context.get( TransformationContextKeys.CONFLICT_IDS );
- if ( conflictIds == null )
- {
- conflictIds = new IdentityHashMap<DependencyNode, Object>();
- context.put( TransformationContextKeys.CONFLICT_IDS, conflictIds );
- }
-
- mark( node, conflictIds );
-
- return node;
- }
-
- private void mark( DependencyNode node, Map<DependencyNode, Object> conflictIds )
- {
- Dependency dependency = node.getDependency();
- if ( dependency != null )
- {
- Artifact artifact = dependency.getArtifact();
-
- String key =
- String.format( "%s:%s:%s:%s", artifact.getGroupId(), artifact.getArtifactId(),
- artifact.getClassifier(), artifact.getExtension() );
-
- if ( conflictIds.put( node, key ) != null )
- {
- return;
- }
- }
-
- for ( DependencyNode child : node.getChildren() )
- {
- mark( child, conflictIds );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/SimpleOptionalitySelectorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/SimpleOptionalitySelectorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/SimpleOptionalitySelectorTest.java
deleted file mode 100644
index f6d268f..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/SimpleOptionalitySelectorTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.junit.Test;
-
-public class SimpleOptionalitySelectorTest
- extends AbstractDependencyGraphTransformerTest
-{
-
- @Override
- protected DependencyGraphTransformer newTransformer()
- {
- return new ConflictResolver( new NearestVersionSelector(), new JavaScopeSelector(),
- new SimpleOptionalitySelector(), new JavaScopeDeriver() );
- }
-
- @Override
- protected DependencyGraphParser newParser()
- {
- return new DependencyGraphParser( "transformer/optionality-selector/" );
- }
-
- @Test
- public void testDeriveOptionality()
- throws Exception
- {
- DependencyNode root = parseResource( "derive.txt" );
- assertSame( root, transform( root ) );
-
- assertEquals( 2, root.getChildren().size() );
- assertEquals( true, root.getChildren().get( 0 ).getDependency().isOptional() );
- assertEquals( true, root.getChildren().get( 0 ).getChildren().get( 0 ).getDependency().isOptional() );
- assertEquals( false, root.getChildren().get( 1 ).getDependency().isOptional() );
- assertEquals( false, root.getChildren().get( 1 ).getChildren().get( 0 ).getDependency().isOptional() );
- }
-
- @Test
- public void testResolveOptionalityConflict_NonOptionalWins()
- throws Exception
- {
- DependencyNode root = parseResource( "conflict.txt" );
- assertSame( root, transform( root ) );
-
- assertEquals( 2, root.getChildren().size() );
- assertEquals( true, root.getChildren().get( 0 ).getDependency().isOptional() );
- assertEquals( false, root.getChildren().get( 0 ).getChildren().get( 0 ).getDependency().isOptional() );
- }
-
- @Test
- public void testResolveOptionalityConflict_DirectDeclarationWins()
- throws Exception
- {
- DependencyNode root = parseResource( "conflict-direct-dep.txt" );
- assertSame( root, transform( root ) );
-
- assertEquals( 2, root.getChildren().size() );
- assertEquals( true, root.getChildren().get( 1 ).getDependency().isOptional() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/AndDependencyTraverserTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/AndDependencyTraverserTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/AndDependencyTraverserTest.java
deleted file mode 100644
index 74d744e..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/AndDependencyTraverserTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package org.eclipse.aether.util.graph.traverser;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.graph.Dependency;
-import org.junit.Test;
-
-public class AndDependencyTraverserTest
-{
-
- static class DummyDependencyTraverser
- implements DependencyTraverser
- {
-
- private final boolean traverse;
-
- private final DependencyTraverser child;
-
- public DummyDependencyTraverser()
- {
- this( true );
- }
-
- public DummyDependencyTraverser( boolean traverse )
- {
- this.traverse = traverse;
- this.child = this;
- }
-
- public DummyDependencyTraverser( boolean traverse, DependencyTraverser child )
- {
- this.traverse = traverse;
- this.child = child;
- }
-
- public boolean traverseDependency( Dependency dependency )
- {
- return traverse;
- }
-
- public DependencyTraverser deriveChildTraverser( DependencyCollectionContext context )
- {
- return child;
- }
-
- }
-
- @Test
- public void testNewInstance()
- {
- assertNull( AndDependencyTraverser.newInstance( null, null ) );
- DependencyTraverser traverser = new DummyDependencyTraverser();
- assertSame( traverser, AndDependencyTraverser.newInstance( traverser, null ) );
- assertSame( traverser, AndDependencyTraverser.newInstance( null, traverser ) );
- assertSame( traverser, AndDependencyTraverser.newInstance( traverser, traverser ) );
- assertNotNull( AndDependencyTraverser.newInstance( traverser, new DummyDependencyTraverser() ) );
- }
-
- @Test
- public void testTraverseDependency()
- {
- Dependency dependency = new Dependency( new DefaultArtifact( "g:a:v:1" ), "runtime" );
-
- DependencyTraverser traverser = new AndDependencyTraverser();
- assertTrue( traverser.traverseDependency( dependency ) );
-
- traverser =
- new AndDependencyTraverser( new DummyDependencyTraverser( false ), new DummyDependencyTraverser( false ) );
- assertFalse( traverser.traverseDependency( dependency ) );
-
- traverser =
- new AndDependencyTraverser( new DummyDependencyTraverser( true ), new DummyDependencyTraverser( false ) );
- assertFalse( traverser.traverseDependency( dependency ) );
-
- traverser =
- new AndDependencyTraverser( new DummyDependencyTraverser( true ), new DummyDependencyTraverser( true ) );
- assertTrue( traverser.traverseDependency( dependency ) );
- }
-
- @Test
- public void testDeriveChildTraverser_Unchanged()
- {
- DependencyTraverser other1 = new DummyDependencyTraverser( true );
- DependencyTraverser other2 = new DummyDependencyTraverser( false );
- DependencyTraverser traverser = new AndDependencyTraverser( other1, other2 );
- assertSame( traverser, traverser.deriveChildTraverser( null ) );
- }
-
- @Test
- public void testDeriveChildTraverser_OneRemaining()
- {
- DependencyTraverser other1 = new DummyDependencyTraverser( true );
- DependencyTraverser other2 = new DummyDependencyTraverser( false, null );
- DependencyTraverser traverser = new AndDependencyTraverser( other1, other2 );
- assertSame( other1, traverser.deriveChildTraverser( null ) );
- }
-
- @Test
- public void testDeriveChildTraverser_ZeroRemaining()
- {
- DependencyTraverser other1 = new DummyDependencyTraverser( true, null );
- DependencyTraverser other2 = new DummyDependencyTraverser( false, null );
- DependencyTraverser traverser = new AndDependencyTraverser( other1, other2 );
- assertNull( traverser.deriveChildTraverser( null ) );
- }
-
- @Test
- public void testEquals()
- {
- DependencyTraverser other1 = new DummyDependencyTraverser( true );
- DependencyTraverser other2 = new DummyDependencyTraverser( false );
- DependencyTraverser traverser1 = new AndDependencyTraverser( other1, other2 );
- DependencyTraverser traverser2 = new AndDependencyTraverser( other2, other1 );
- DependencyTraverser traverser3 = new AndDependencyTraverser( other1 );
- assertEquals( traverser1, traverser1 );
- assertEquals( traverser1, traverser2 );
- assertNotEquals( traverser1, traverser3 );
- assertNotEquals( traverser1, this );
- assertNotEquals( traverser1, null );
- }
-
- @Test
- public void testHashCode()
- {
- DependencyTraverser other1 = new DummyDependencyTraverser( true );
- DependencyTraverser other2 = new DummyDependencyTraverser( false );
- DependencyTraverser traverser1 = new AndDependencyTraverser( other1, other2 );
- DependencyTraverser traverser2 = new AndDependencyTraverser( other2, other1 );
- assertEquals( traverser1.hashCode(), traverser2.hashCode() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverserTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverserTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverserTest.java
deleted file mode 100644
index 641e593..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverserTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.eclipse.aether.util.graph.traverser;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.eclipse.aether.artifact.ArtifactProperties;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.graph.Dependency;
-import org.junit.Test;
-
-public class FatArtifactTraverserTest
-{
-
- @Test
- public void testTraverseDependency()
- {
- DependencyTraverser traverser = new FatArtifactTraverser();
- Map<String, String> props = null;
- assertTrue( traverser.traverseDependency( new Dependency( new DefaultArtifact( "g:a:v:1", props ), "test" ) ) );
- props = Collections.singletonMap( ArtifactProperties.INCLUDES_DEPENDENCIES, "false" );
- assertTrue( traverser.traverseDependency( new Dependency( new DefaultArtifact( "g:a:v:1", props ), "test" ) ) );
- props = Collections.singletonMap( ArtifactProperties.INCLUDES_DEPENDENCIES, "unrecognized" );
- assertTrue( traverser.traverseDependency( new Dependency( new DefaultArtifact( "g:a:v:1", props ), "test" ) ) );
- props = Collections.singletonMap( ArtifactProperties.INCLUDES_DEPENDENCIES, "true" );
- assertFalse( traverser.traverseDependency( new Dependency( new DefaultArtifact( "g:a:v:1", props ), "test" ) ) );
- }
-
- @Test
- public void testDeriveChildTraverser()
- {
- DependencyTraverser traverser = new FatArtifactTraverser();
- assertSame( traverser, traverser.deriveChildTraverser( null ) );
- }
-
- @Test
- public void testEquals()
- {
- DependencyTraverser traverser1 = new FatArtifactTraverser();
- DependencyTraverser traverser2 = new FatArtifactTraverser();
- assertEquals( traverser1, traverser1 );
- assertEquals( traverser1, traverser2 );
- assertNotEquals( traverser1, this );
- assertNotEquals( traverser1, null );
- }
-
- @Test
- public void testHashCode()
- {
- DependencyTraverser traverser1 = new FatArtifactTraverser();
- DependencyTraverser traverser2 = new FatArtifactTraverser();
- assertEquals( traverser1.hashCode(), traverser2.hashCode() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/StaticDependencyTraverserTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/StaticDependencyTraverserTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/StaticDependencyTraverserTest.java
deleted file mode 100644
index 0ac1d91..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/traverser/StaticDependencyTraverserTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.aether.util.graph.traverser;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.graph.Dependency;
-import org.junit.Test;
-
-public class StaticDependencyTraverserTest
-{
-
- @Test
- public void testTraverseDependency()
- {
- Dependency dependency = new Dependency( new DefaultArtifact( "g:a:v:1" ), "runtime" );
- DependencyTraverser traverser = new StaticDependencyTraverser( true );
- assertTrue( traverser.traverseDependency( dependency ) );
- traverser = new StaticDependencyTraverser( false );
- assertFalse( traverser.traverseDependency( dependency ) );
- }
-
- @Test
- public void testDeriveChildTraverser()
- {
- DependencyTraverser traverser = new StaticDependencyTraverser( true );
- assertSame( traverser, traverser.deriveChildTraverser( null ) );
- }
-
- @Test
- public void testEquals()
- {
- DependencyTraverser traverser1 = new StaticDependencyTraverser( true );
- DependencyTraverser traverser2 = new StaticDependencyTraverser( true );
- DependencyTraverser traverser3 = new StaticDependencyTraverser( false );
- assertEquals( traverser1, traverser1 );
- assertEquals( traverser1, traverser2 );
- assertNotEquals( traverser1, traverser3 );
- assertNotEquals( traverser1, this );
- assertNotEquals( traverser1, null );
- }
-
- @Test
- public void testHashCode()
- {
- DependencyTraverser traverser1 = new StaticDependencyTraverser( true );
- DependencyTraverser traverser2 = new StaticDependencyTraverser( true );
- assertEquals( traverser1.hashCode(), traverser2.hashCode() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/AbstractVersionFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/AbstractVersionFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/AbstractVersionFilterTest.java
deleted file mode 100644
index 13fd4b0..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/AbstractVersionFilterTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package org.eclipse.aether.util.graph.versions;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Iterator;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResult;
-import org.eclipse.aether.util.version.GenericVersionScheme;
-import org.eclipse.aether.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionScheme;
-import org.junit.After;
-import org.junit.Before;
-
-public abstract class AbstractVersionFilterTest
-{
-
- protected DefaultRepositorySystemSession session;
-
- @Before
- public void setUp()
- {
- session = TestUtils.newSession();
- }
-
- @After
- public void tearDown()
- {
- session = null;
- }
-
- protected VersionFilter.VersionFilterContext newContext( String gav, String... versions )
- {
- VersionRangeRequest request = new VersionRangeRequest();
- request.setArtifact( new DefaultArtifact( gav ) );
- VersionRangeResult result = new VersionRangeResult( request );
- VersionScheme scheme = new GenericVersionScheme();
- try
- {
- result.setVersionConstraint( scheme.parseVersionConstraint( request.getArtifact().getVersion() ) );
- for ( String version : versions )
- {
- result.addVersion( scheme.parseVersion( version ) );
- }
- }
- catch ( InvalidVersionSpecificationException e )
- {
- throw new IllegalArgumentException( e );
- }
- return TestUtils.newVersionFilterContext( session, result );
- }
-
- protected VersionFilter derive( VersionFilter filter, String gav )
- {
- return filter.deriveChildFilter( TestUtils.newCollectionContext( session,
- new Dependency( new DefaultArtifact( gav ), "" ),
- null ) );
- }
-
- protected void assertVersions( VersionFilter.VersionFilterContext context, String... versions )
- {
- assertEquals( versions.length, context.getCount() );
- Iterator<Version> it = context.iterator();
- for ( String version : versions )
- {
- assertTrue( it.hasNext() );
- assertEquals( version, it.next().toString() );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/ChainedVersionFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/ChainedVersionFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/ChainedVersionFilterTest.java
deleted file mode 100644
index 1e8a5bd..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/ChainedVersionFilterTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.eclipse.aether.util.graph.versions;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.collection.VersionFilter.VersionFilterContext;
-import org.eclipse.aether.util.graph.version.ChainedVersionFilter;
-import org.eclipse.aether.util.graph.version.HighestVersionFilter;
-import org.eclipse.aether.util.graph.version.SnapshotVersionFilter;
-import org.junit.Test;
-
-public class ChainedVersionFilterTest
- extends AbstractVersionFilterTest
-{
-
- @Test
- public void testFilterVersions()
- throws Exception
- {
- VersionFilter filter =
- ChainedVersionFilter.newInstance( new SnapshotVersionFilter(), new HighestVersionFilter() );
- VersionFilterContext ctx = newContext( "g:a:[1,9]", "1", "2", "3-SNAPSHOT" );
- filter.filterVersions( ctx );
- assertVersions( ctx, "2" );
- }
-
- @Test
- public void testDeriveChildFilter()
- {
- VersionFilter filter1 = new HighestVersionFilter();
- VersionFilter filter2 = new VersionFilter()
- {
- public void filterVersions( VersionFilterContext context )
- {
- }
-
- public VersionFilter deriveChildFilter( DependencyCollectionContext context )
- {
- return null;
- }
- };
-
- VersionFilter filter = ChainedVersionFilter.newInstance( filter1 );
- assertSame( filter, derive( filter, "g:a:1" ) );
-
- filter = ChainedVersionFilter.newInstance( filter2 );
- assertSame( null, derive( filter, "g:a:1" ) );
-
- filter = ChainedVersionFilter.newInstance( filter1, filter2 );
- assertSame( filter1, derive( filter, "g:a:1" ) );
-
- filter = ChainedVersionFilter.newInstance( filter2, filter1 );
- assertSame( filter1, derive( filter, "g:a:1" ) );
- }
-
- @Test
- public void testEquals()
- {
- VersionFilter filter = ChainedVersionFilter.newInstance( new HighestVersionFilter() );
- assertFalse( filter.equals( null ) );
- assertTrue( filter.equals( filter ) );
- assertTrue( filter.equals( ChainedVersionFilter.newInstance( new HighestVersionFilter() ) ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/ContextualSnapshotVersionFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/ContextualSnapshotVersionFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/ContextualSnapshotVersionFilterTest.java
deleted file mode 100644
index dd88a66..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/ContextualSnapshotVersionFilterTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.eclipse.aether.util.graph.versions;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.collection.VersionFilter.VersionFilterContext;
-import org.eclipse.aether.util.graph.version.ContextualSnapshotVersionFilter;
-import org.eclipse.aether.util.graph.version.SnapshotVersionFilter;
-import org.junit.Test;
-
-public class ContextualSnapshotVersionFilterTest
- extends AbstractVersionFilterTest
-{
-
- @Test
- public void testFilterVersions()
- throws Exception
- {
- VersionFilter filter = new ContextualSnapshotVersionFilter();
- VersionFilterContext ctx = newContext( "g:a:[1,9]", "1", "2-SNAPSHOT" );
- filter.filterVersions( ctx );
- assertVersions( ctx, "1", "2-SNAPSHOT" );
-
- ctx = newContext( "g:a:[1,9]", "1", "2-SNAPSHOT" );
- derive( filter, "g:a:1" ).filterVersions( ctx );
- assertVersions( ctx, "1" );
-
- ctx = newContext( "g:a:[1,9]", "1", "2-SNAPSHOT" );
- session.setConfigProperty( ContextualSnapshotVersionFilter.CONFIG_PROP_ENABLE, "true" );
- derive( filter, "g:a:1-SNAPSHOT" ).filterVersions( ctx );
- assertVersions( ctx, "1" );
- }
-
- @Test
- public void testDeriveChildFilter()
- {
- ContextualSnapshotVersionFilter filter = new ContextualSnapshotVersionFilter();
- assertTrue( derive( filter, "g:a:1" ) instanceof SnapshotVersionFilter );
- assertSame( null, derive( filter, "g:a:1-SNAPSHOT" ) );
- session.setConfigProperty( ContextualSnapshotVersionFilter.CONFIG_PROP_ENABLE, "true" );
- assertTrue( derive( filter, "g:a:1-SNAPSHOT" ) instanceof SnapshotVersionFilter );
- }
-
- @Test
- public void testEquals()
- {
- ContextualSnapshotVersionFilter filter = new ContextualSnapshotVersionFilter();
- assertFalse( filter.equals( null ) );
- assertTrue( filter.equals( filter ) );
- assertTrue( filter.equals( new ContextualSnapshotVersionFilter() ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/HighestVersionFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/HighestVersionFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/HighestVersionFilterTest.java
deleted file mode 100644
index 3926c66..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/HighestVersionFilterTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.eclipse.aether.util.graph.versions;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.collection.VersionFilter.VersionFilterContext;
-import org.eclipse.aether.util.graph.version.HighestVersionFilter;
-import org.junit.Test;
-
-public class HighestVersionFilterTest
- extends AbstractVersionFilterTest
-{
-
- @Test
- public void testFilterVersions()
- {
- HighestVersionFilter filter = new HighestVersionFilter();
- VersionFilterContext ctx = newContext( "g:a:[1,9]", "1", "2", "3", "4", "5", "6", "7", "8", "9" );
- filter.filterVersions( ctx );
- assertVersions( ctx, "9" );
- }
-
- @Test
- public void testDeriveChildFilter()
- {
- HighestVersionFilter filter = new HighestVersionFilter();
- assertSame( filter, derive( filter, "g:a:1" ) );
- }
-
- @Test
- public void testEquals()
- {
- HighestVersionFilter filter = new HighestVersionFilter();
- assertFalse( filter.equals( null ) );
- assertTrue( filter.equals( filter ) );
- assertTrue( filter.equals( new HighestVersionFilter() ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/SnapshotVersionFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/SnapshotVersionFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/SnapshotVersionFilterTest.java
deleted file mode 100644
index 70c26f9..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/versions/SnapshotVersionFilterTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.eclipse.aether.util.graph.versions;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.collection.VersionFilter.VersionFilterContext;
-import org.eclipse.aether.util.graph.version.SnapshotVersionFilter;
-import org.junit.Test;
-
-public class SnapshotVersionFilterTest
- extends AbstractVersionFilterTest
-{
-
- @Test
- public void testFilterVersions()
- {
- SnapshotVersionFilter filter = new SnapshotVersionFilter();
- VersionFilterContext ctx = newContext( "g:a:[1,9]", "1", "2-SNAPSHOT", "3.1", "4.0-SNAPSHOT", "5.0.0" );
- filter.filterVersions( ctx );
- assertVersions( ctx, "1", "3.1", "5.0.0" );
- }
-
- @Test
- public void testDeriveChildFilter()
- {
- SnapshotVersionFilter filter = new SnapshotVersionFilter();
- assertSame( filter, derive( filter, "g:a:1" ) );
- }
-
- @Test
- public void testEquals()
- {
- SnapshotVersionFilter filter = new SnapshotVersionFilter();
- assertFalse( filter.equals( null ) );
- assertTrue( filter.equals( filter ) );
- assertTrue( filter.equals( new SnapshotVersionFilter() ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/FilteringDependencyVisitorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/FilteringDependencyVisitorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/FilteringDependencyVisitorTest.java
deleted file mode 100644
index 65a02a8..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/FilteringDependencyVisitorTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.List;
-
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.junit.Test;
-
-public class FilteringDependencyVisitorTest
-{
-
- private DependencyNode parse( String resource )
- throws Exception
- {
- return new DependencyGraphParser( "visitor/filtering/" ).parseResource( resource );
- }
-
- @Test
- public void testFilterCalledWithProperParentStack()
- throws Exception
- {
- DependencyNode root = parse( "parents.txt" );
-
- final StringBuilder buffer = new StringBuilder( 256 );
- DependencyFilter filter = new DependencyFilter()
- {
- public boolean accept( DependencyNode node, List<DependencyNode> parents )
- {
- for ( DependencyNode parent : parents )
- {
- buffer.append( parent.getDependency().getArtifact().getArtifactId() );
- }
- buffer.append( "," );
- return false;
- }
- };
-
- FilteringDependencyVisitor visitor = new FilteringDependencyVisitor( new PreorderNodeListGenerator(), filter );
- root.accept( visitor );
-
- assertEquals( ",a,ba,cba,a,ea,", buffer.toString() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PathRecordingDependencyVisitorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PathRecordingDependencyVisitorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PathRecordingDependencyVisitorTest.java
deleted file mode 100644
index cd766a0..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PathRecordingDependencyVisitorTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.List;
-
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.junit.Test;
-
-public class PathRecordingDependencyVisitorTest
-{
-
- private DependencyNode parse( String resource )
- throws Exception
- {
- return new DependencyGraphParser( "visitor/path-recorder/" ).parseResource( resource );
- }
-
- private void assertPath( List<DependencyNode> actual, String... expected )
- {
- assertEquals( actual.toString(), expected.length, actual.size() );
- for ( int i = 0; i < expected.length; i++ )
- {
- DependencyNode node = actual.get( i );
- assertEquals( actual.toString(), expected[i], node.getDependency().getArtifact().getArtifactId() );
- }
- }
-
- @Test
- public void testGetPaths_RecordsMatchesBeneathUnmatchedParents()
- throws Exception
- {
- DependencyNode root = parse( "simple.txt" );
-
- PathRecordingDependencyVisitor visitor = new PathRecordingDependencyVisitor( new ArtifactMatcher() );
- root.accept( visitor );
-
- List<List<DependencyNode>> paths = visitor.getPaths();
- assertEquals( paths.toString(), 2, paths.size() );
- assertPath( paths.get( 0 ), "a", "b", "x" );
- assertPath( paths.get( 1 ), "a", "x" );
- }
-
- @Test
- public void testGetPaths_DoesNotRecordMatchesBeneathMatchedParents()
- throws Exception
- {
- DependencyNode root = parse( "nested.txt" );
-
- PathRecordingDependencyVisitor visitor = new PathRecordingDependencyVisitor( new ArtifactMatcher() );
- root.accept( visitor );
-
- List<List<DependencyNode>> paths = visitor.getPaths();
- assertEquals( paths.toString(), 1, paths.size() );
- assertPath( paths.get( 0 ), "x" );
- }
-
- @Test
- public void testGetPaths_RecordsMatchesBeneathMatchedParentsIfRequested()
- throws Exception
- {
- DependencyNode root = parse( "nested.txt" );
-
- PathRecordingDependencyVisitor visitor = new PathRecordingDependencyVisitor( new ArtifactMatcher(), false );
- root.accept( visitor );
-
- List<List<DependencyNode>> paths = visitor.getPaths();
- assertEquals( paths.toString(), 3, paths.size() );
- assertPath( paths.get( 0 ), "x" );
- assertPath( paths.get( 1 ), "x", "a", "y" );
- assertPath( paths.get( 2 ), "x", "y" );
- }
-
- @Test
- public void testFilterCalledWithProperParentStack()
- throws Exception
- {
- DependencyNode root = parse( "parents.txt" );
-
- final StringBuilder buffer = new StringBuilder( 256 );
- DependencyFilter filter = new DependencyFilter()
- {
- public boolean accept( DependencyNode node, List<DependencyNode> parents )
- {
- for ( DependencyNode parent : parents )
- {
- buffer.append( parent.getDependency().getArtifact().getArtifactId() );
- }
- buffer.append( "," );
- return false;
- }
- };
-
- PathRecordingDependencyVisitor visitor = new PathRecordingDependencyVisitor( filter );
- root.accept( visitor );
-
- assertEquals( ",a,ba,cba,a,ea,", buffer.toString() );
- }
-
- @Test
- public void testGetPaths_HandlesCycles()
- throws Exception
- {
- DependencyNode root = parse( "cycle.txt" );
-
- PathRecordingDependencyVisitor visitor = new PathRecordingDependencyVisitor( new ArtifactMatcher(), false );
- root.accept( visitor );
-
- List<List<DependencyNode>> paths = visitor.getPaths();
- assertEquals( paths.toString(), 4, paths.size() );
- assertPath( paths.get( 0 ), "a", "b", "x" );
- assertPath( paths.get( 1 ), "a", "x" );
- assertPath( paths.get( 2 ), "a", "x", "b", "x" );
- assertPath( paths.get( 3 ), "a", "x", "x" );
- }
-
- private static class ArtifactMatcher
- implements DependencyFilter
- {
- public boolean accept( DependencyNode node, List<DependencyNode> parents )
- {
- return node.getDependency() != null && node.getDependency().getArtifact().getGroupId().equals( "match" );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGeneratorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGeneratorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGeneratorTest.java
deleted file mode 100644
index 8d6f525..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGeneratorTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.List;
-
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.junit.Test;
-
-public class PostorderNodeListGeneratorTest
-{
-
- private DependencyNode parse( String resource )
- throws Exception
- {
- return new DependencyGraphParser( "visitor/ordered-list/" ).parseResource( resource );
- }
-
- private void assertSequence( List<DependencyNode> actual, String... expected )
- {
- assertEquals( actual.toString(), expected.length, actual.size() );
- for ( int i = 0; i < expected.length; i++ )
- {
- DependencyNode node = actual.get( i );
- assertEquals( actual.toString(), expected[i], node.getDependency().getArtifact().getArtifactId() );
- }
- }
-
- @Test
- public void testOrdering()
- throws Exception
- {
- DependencyNode root = parse( "simple.txt" );
-
- PostorderNodeListGenerator visitor = new PostorderNodeListGenerator();
- root.accept( visitor );
-
- assertSequence( visitor.getNodes(), "c", "b", "e", "d", "a" );
- }
-
- @Test
- public void testDuplicateSuppression()
- throws Exception
- {
- DependencyNode root = parse( "cycles.txt" );
-
- PostorderNodeListGenerator visitor = new PostorderNodeListGenerator();
- root.accept( visitor );
-
- assertSequence( visitor.getNodes(), "c", "b", "e", "d", "a" );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGeneratorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGeneratorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGeneratorTest.java
deleted file mode 100644
index 200dd3b..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGeneratorTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.List;
-
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.junit.Test;
-
-public class PreorderNodeListGeneratorTest
-{
-
- private DependencyNode parse( String resource )
- throws Exception
- {
- return new DependencyGraphParser( "visitor/ordered-list/" ).parseResource( resource );
- }
-
- private void assertSequence( List<DependencyNode> actual, String... expected )
- {
- assertEquals( actual.toString(), expected.length, actual.size() );
- for ( int i = 0; i < expected.length; i++ )
- {
- DependencyNode node = actual.get( i );
- assertEquals( actual.toString(), expected[i], node.getDependency().getArtifact().getArtifactId() );
- }
- }
-
- @Test
- public void testOrdering()
- throws Exception
- {
- DependencyNode root = parse( "simple.txt" );
-
- PreorderNodeListGenerator visitor = new PreorderNodeListGenerator();
- root.accept( visitor );
-
- assertSequence( visitor.getNodes(), "a", "b", "c", "d", "e" );
- }
-
- @Test
- public void testDuplicateSuppression()
- throws Exception
- {
- DependencyNode root = parse( "cycles.txt" );
-
- PreorderNodeListGenerator visitor = new PreorderNodeListGenerator();
- root.accept( visitor );
-
- assertSequence( visitor.getNodes(), "a", "b", "c", "d", "e" );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/TreeDependencyVisitorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/TreeDependencyVisitorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/TreeDependencyVisitorTest.java
deleted file mode 100644
index 36cb6ac..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/visitor/TreeDependencyVisitorTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.graph.DependencyVisitor;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.junit.Test;
-
-public class TreeDependencyVisitorTest
-{
-
- private DependencyNode parse( String resource )
- throws Exception
- {
- return new DependencyGraphParser( "visitor/tree/" ).parseResource( resource );
- }
-
- @Test
- public void testDuplicateSuppression()
- throws Exception
- {
- DependencyNode root = parse( "cycles.txt" );
-
- RecordingVisitor rec = new RecordingVisitor();
- TreeDependencyVisitor visitor = new TreeDependencyVisitor( rec );
- root.accept( visitor );
-
- assertEquals( ">a >b >c <c <b >d <d <a ", rec.buffer.toString() );
- }
-
- private static class RecordingVisitor
- implements DependencyVisitor
- {
-
- StringBuilder buffer = new StringBuilder( 256 );
-
- public boolean visitEnter( DependencyNode node )
- {
- buffer.append( '>' ).append( node.getDependency().getArtifact().getArtifactId() ).append( ' ' );
- return true;
- }
-
- public boolean visitLeave( DependencyNode node )
- {
- buffer.append( '<' ).append( node.getDependency().getArtifact().getArtifactId() ).append( ' ' );
- return true;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/listener/ChainedRepositoryListenerTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/listener/ChainedRepositoryListenerTest.java b/aether-util/src/test/java/org/eclipse/aether/util/listener/ChainedRepositoryListenerTest.java
deleted file mode 100644
index 6eaa25b..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/listener/ChainedRepositoryListenerTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.eclipse.aether.util.listener;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.aether.RepositoryListener;
-import org.eclipse.aether.util.listener.ChainedRepositoryListener;
-import org.junit.Test;
-
-/**
- */
-public class ChainedRepositoryListenerTest
-{
-
- @Test
- public void testAllEventTypesHandled()
- throws Exception
- {
- for ( Method method : RepositoryListener.class.getMethods() )
- {
- assertNotNull( ChainedRepositoryListener.class.getDeclaredMethod( method.getName(),
- method.getParameterTypes() ) );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/listener/ChainedTransferListenerTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/listener/ChainedTransferListenerTest.java b/aether-util/src/test/java/org/eclipse/aether/util/listener/ChainedTransferListenerTest.java
deleted file mode 100644
index 7e7e969..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/listener/ChainedTransferListenerTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.eclipse.aether.util.listener;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.aether.transfer.TransferListener;
-import org.eclipse.aether.util.listener.ChainedTransferListener;
-import org.junit.Test;
-
-/**
- */
-public class ChainedTransferListenerTest
-{
-
- @Test
- public void testAllEventTypesHandled()
- throws Exception
- {
- for ( Method method : TransferListener.class.getMethods() )
- {
- assertNotNull( ChainedTransferListener.class.getDeclaredMethod( method.getName(),
- method.getParameterTypes() ) );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/repository/ComponentAuthenticationTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/repository/ComponentAuthenticationTest.java b/aether-util/src/test/java/org/eclipse/aether/util/repository/ComponentAuthenticationTest.java
deleted file mode 100644
index 25d53f2..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/repository/ComponentAuthenticationTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.eclipse.aether.util.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 static org.junit.Assert.*;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.AuthenticationDigest;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.junit.Test;
-
-public class ComponentAuthenticationTest
-{
-
- private static class Component
- {
- }
-
- private RepositorySystemSession newSession()
- {
- return new DefaultRepositorySystemSession();
- }
-
- private RemoteRepository newRepo( Authentication auth )
- {
- return new RemoteRepository.Builder( "test", "default", "http://localhost" ).setAuthentication( auth ).build();
- }
-
- private AuthenticationContext newContext( Authentication auth )
- {
- return AuthenticationContext.forRepository( newSession(), newRepo( auth ) );
- }
-
- private String newDigest( Authentication auth )
- {
- return AuthenticationDigest.forRepository( newSession(), newRepo( auth ) );
- }
-
- @Test
- public void testFill()
- {
- Component comp = new Component();
- Authentication auth = new ComponentAuthentication( "key", comp );
- AuthenticationContext context = newContext( auth );
- assertEquals( null, context.get( "another-key" ) );
- assertSame( comp, context.get( "key", Component.class ) );
- }
-
- @Test
- public void testDigest()
- {
- Authentication auth1 = new ComponentAuthentication( "key", new Component() );
- Authentication auth2 = new ComponentAuthentication( "key", new Component() );
- String digest1 = newDigest( auth1 );
- String digest2 = newDigest( auth2 );
- assertEquals( digest1, digest2 );
-
- Authentication auth3 = new ComponentAuthentication( "key", new Object() );
- String digest3 = newDigest( auth3 );
- assertFalse( digest3.equals( digest1 ) );
-
- Authentication auth4 = new ComponentAuthentication( "Key", new Component() );
- String digest4 = newDigest( auth4 );
- assertFalse( digest4.equals( digest1 ) );
- }
-
- @Test
- public void testEquals()
- {
- Authentication auth1 = new ComponentAuthentication( "key", new Component() );
- Authentication auth2 = new ComponentAuthentication( "key", new Component() );
- Authentication auth3 = new ComponentAuthentication( "key", new Object() );
- assertEquals( auth1, auth2 );
- assertFalse( auth1.equals( auth3 ) );
- assertFalse( auth1.equals( null ) );
- }
-
- @Test
- public void testHashCode()
- {
- Authentication auth1 = new ComponentAuthentication( "key", new Component() );
- Authentication auth2 = new ComponentAuthentication( "key", new Component() );
- assertEquals( auth1.hashCode(), auth2.hashCode() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/repository/DefaultMirrorSelectorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/repository/DefaultMirrorSelectorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/repository/DefaultMirrorSelectorTest.java
deleted file mode 100644
index d436658..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/repository/DefaultMirrorSelectorTest.java
+++ /dev/null
@@ -1,194 +0,0 @@
-package org.eclipse.aether.util.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 static org.junit.Assert.*;
-
-import java.util.Arrays;
-
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.util.repository.DefaultMirrorSelector.*;
-import org.junit.Test;
-
-/**
- */
-public class DefaultMirrorSelectorTest
-{
-
- private RemoteRepository newRepo( String id, String type, String url )
- {
- return new RemoteRepository.Builder( id, type, url ).build();
- }
-
- private static boolean matchesType( String repoType, String mirrorType )
- {
- return new TypeMatcher( DefaultMirrorSelector.split( mirrorType ) ).isMatch( repoType );
- }
-
- private boolean matchesPattern( RemoteRepository repository, String pattern )
- {
- return new IdMatcher( DefaultMirrorSelector.split( pattern ) ).isMatch( repository );
- }
-
- private static boolean isExternalRepo( RemoteRepository repository )
- {
- return IdMatcher.isExternalRepo( repository );
- }
-
- @Test
- public void testIsExternalRepo()
- {
- assertEquals( false, isExternalRepo( newRepo( "", "", "http://localhost/path" ) ) );
- assertEquals( false, isExternalRepo( newRepo( "", "", "http://127.0.0.1/path" ) ) );
- assertEquals( false, isExternalRepo( newRepo( "", "", "file:/path" ) ) );
- assertEquals( true, isExternalRepo( newRepo( "", "", "http://eclipse.org/" ) ) );
- assertEquals( true, isExternalRepo( newRepo( "", "", "" ) ) );
- }
-
- @Test
- public void testMatchesType()
- {
- assertEquals( true, matchesType( null, null ) );
- assertEquals( true, matchesType( "any", null ) );
- assertEquals( true, matchesType( "any", "" ) );
- assertEquals( true, matchesType( "any", "*" ) );
-
- assertEquals( false, matchesType( null, "default" ) );
- assertEquals( false, matchesType( "", "default" ) );
- assertEquals( false, matchesType( "any", "default" ) );
-
- assertEquals( true, matchesType( "default", "default" ) );
-
- assertEquals( false, matchesType( "default", "DEFAULT" ) );
- assertEquals( false, matchesType( "DEFAULT", "default" ) );
-
- assertEquals( true, matchesType( "default", "default,foo" ) );
- assertEquals( true, matchesType( "default", "foo,default" ) );
-
- assertEquals( true, matchesType( "default", "*,foo" ) );
- assertEquals( true, matchesType( "default", "foo,*" ) );
-
- assertEquals( false, matchesType( "p2", "*,!p2" ) );
- assertEquals( false, matchesType( "p2", "!p2,*" ) );
- }
-
- @Test
- public void testMatchesType_Trimming()
- {
- assertEquals( true, matchesType( "any", " " ) );
- assertEquals( true, matchesType( "default", " default " ) );
- assertEquals( true, matchesType( "default", "foo, default ,bar" ) );
- assertEquals( true, matchesType( "default", " default ,bar" ) );
- assertEquals( true, matchesType( "default", "foo, default " ) );
- }
-
- @Test
- public void testMatchesPattern()
- {
- assertEquals( false, matchesPattern( newRepo( "id", "type", "url" ), null ) );
- assertEquals( false, matchesPattern( newRepo( "id", "type", "url" ), "" ) );
- assertEquals( false, matchesPattern( newRepo( "id", "type", "url" ), "central" ) );
-
- assertEquals( true, matchesPattern( newRepo( "central", "type", "url" ), "central" ) );
-
- assertEquals( false, matchesPattern( newRepo( "central", "type", "url" ), "CENTRAL" ) );
- assertEquals( false, matchesPattern( newRepo( "CENTRAL", "type", "url" ), "central" ) );
-
- assertEquals( true, matchesPattern( newRepo( "central", "type", "url" ), "central,foo" ) );
- assertEquals( true, matchesPattern( newRepo( "central", "type", "url" ), "foo,central" ) );
-
- assertEquals( true, matchesPattern( newRepo( "central", "type", "url" ), "*,foo" ) );
- assertEquals( true, matchesPattern( newRepo( "central", "type", "url" ), "foo,*" ) );
-
- assertEquals( false, matchesPattern( newRepo( "central", "type", "url" ), "*,!central" ) );
- assertEquals( false, matchesPattern( newRepo( "central", "type", "url" ), "!central,*" ) );
- }
-
- @Test
- public void testMatchesPattern_Trimming()
- {
- assertEquals( false, matchesPattern( newRepo( "central", "type", "url" ), " " ) );
- assertEquals( true, matchesPattern( newRepo( "central", "type", "url" ), " central " ) );
- assertEquals( true, matchesPattern( newRepo( "central", "type", "url" ), "foo, central ,bar" ) );
- assertEquals( true, matchesPattern( newRepo( "central", "type", "url" ), " central ,bar" ) );
- assertEquals( true, matchesPattern( newRepo( "central", "type", "url" ), "foo, central " ) );
- }
-
- @Test
- public void testGetMirror_FirstMatchWins()
- {
- DefaultMirrorSelector selector = new DefaultMirrorSelector();
- selector.add( "mirror1", "http://host1", "default", false, "*", "*" );
- selector.add( "mirror2", "http://host2", "default", false, "*", "*" );
- RemoteRepository mirror = selector.getMirror( newRepo( "central", "default", "http://localhost" ) );
- assertNotNull( mirror );
- assertEquals( "mirror1", mirror.getId() );
- assertEquals( "http://host1", mirror.getUrl() );
- }
-
- @Test
- public void testGetMirror_ExactMatchWins()
- {
- DefaultMirrorSelector selector = new DefaultMirrorSelector();
- selector.add( "mirror1", "http://host1", "default", false, "*", "*" );
- selector.add( "mirror2", "http://host2", "default", false, "central", "*" );
- selector.add( "mirror3", "http://host3", "default", false, "*", "*" );
- RemoteRepository mirror = selector.getMirror( newRepo( "central", "default", "http://localhost" ) );
- assertNotNull( mirror );
- assertEquals( "mirror2", mirror.getId() );
- assertEquals( "http://host2", mirror.getUrl() );
- }
-
- @Test
- public void testGetMirror_WithoutMirrorLayout()
- {
- DefaultMirrorSelector selector = new DefaultMirrorSelector();
- selector.add( "mirror", "http://host", "", false, "*", "*" );
- RemoteRepository mirror = selector.getMirror( newRepo( "central", "default", "http://localhost" ) );
- assertNotNull( mirror );
- assertEquals( "mirror", mirror.getId() );
- assertEquals( "http://host", mirror.getUrl() );
- assertEquals( "default", mirror.getContentType() );
- }
-
- @Test
- public void testGetMirror_WithMirrorLayout()
- {
- DefaultMirrorSelector selector = new DefaultMirrorSelector();
- selector.add( "mirror", "http://host", "layout", false, "*", "*" );
- RemoteRepository mirror = selector.getMirror( newRepo( "central", "default", "http://localhost" ) );
- assertNotNull( mirror );
- assertEquals( "mirror", mirror.getId() );
- assertEquals( "http://host", mirror.getUrl() );
- assertEquals( "layout", mirror.getContentType() );
- }
-
- @Test
- public void testGetMirror_MirroredRepos()
- {
- DefaultMirrorSelector selector = new DefaultMirrorSelector();
- selector.add( "mirror", "http://host", "layout", false, "*", "*" );
- RemoteRepository repo = newRepo( "central", "default", "http://localhost" );
- RemoteRepository mirror = selector.getMirror( repo );
- assertNotNull( mirror );
- assertEquals( Arrays.asList( repo ), mirror.getMirroredRepositories() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/repository/DefaultProxySelectorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/repository/DefaultProxySelectorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/repository/DefaultProxySelectorTest.java
deleted file mode 100644
index 02a665a..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/repository/DefaultProxySelectorTest.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package org.eclipse.aether.util.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 static org.junit.Assert.*;
-
-import java.util.Arrays;
-
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.util.repository.DefaultProxySelector.NonProxyHosts;
-import org.junit.Test;
-
-/**
- */
-public class DefaultProxySelectorTest
-{
-
- private RemoteRepository newRepo( String url )
- {
- return new RemoteRepository.Builder( "id", "type", url ).build();
- }
-
- private boolean isNonProxyHost( String host, String nonProxyHosts )
- {
- return new NonProxyHosts( NonProxyHosts.split( nonProxyHosts ) ).isNonProxyHost( host );
- }
-
- private boolean isNonProxyHost( String host, String... nonProxyHosts )
- {
- return new NonProxyHosts( nonProxyHosts != null ? Arrays.asList( nonProxyHosts ) : null ).isNonProxyHost( host );
- }
-
- @Test
- public void testIsNonProxyHost_Blank()
- {
- assertFalse( isNonProxyHost( "www.eclipse.org", (String) null ) );
- assertFalse( isNonProxyHost( "www.eclipse.org", "" ) );
- assertFalse( isNonProxyHost( "", "" ) );
-
- assertFalse( isNonProxyHost( "www.eclipse.org", (String[]) null ) );
- assertFalse( isNonProxyHost( "www.eclipse.org", new String[0] ) );
- assertFalse( isNonProxyHost( "", new String[0] ) );
- assertFalse( isNonProxyHost( "", new String[] { null } ) );
- assertFalse( isNonProxyHost( "", new String[] { "" } ) );
- }
-
- @Test
- public void testIsNonProxyHost_Wildcard()
- {
- assertTrue( isNonProxyHost( "www.eclipse.org", "*" ) );
- assertTrue( isNonProxyHost( "www.eclipse.org", "*.org" ) );
- assertFalse( isNonProxyHost( "www.eclipse.org", "*.com" ) );
- assertTrue( isNonProxyHost( "www.eclipse.org", "www.*" ) );
- assertTrue( isNonProxyHost( "www.eclipse.org", "www.*.org" ) );
- }
-
- @Test
- public void testIsNonProxyHost_Multiple()
- {
- assertTrue( isNonProxyHost( "eclipse.org", "eclipse.org|host2" ) );
- assertTrue( isNonProxyHost( "eclipse.org", "host1|eclipse.org" ) );
- assertTrue( isNonProxyHost( "eclipse.org", "host1|eclipse.org|host2" ) );
-
- assertTrue( isNonProxyHost( "eclipse.org", "eclipse.org,host2" ) );
- assertTrue( isNonProxyHost( "eclipse.org", "host1,eclipse.org" ) );
- assertTrue( isNonProxyHost( "eclipse.org", "host1,eclipse.org,host2" ) );
-
- assertFalse( isNonProxyHost( "", "||host||" ) );
- assertFalse( isNonProxyHost( "", ",,host,," ) );
- }
-
- @Test
- public void testIsNonProxyHost_Trimming()
- {
- assertFalse( isNonProxyHost( "", " " ) );
- assertTrue( isNonProxyHost( "eclipse.org", " eclipse.org " ) );
- assertTrue( isNonProxyHost( "eclipse.org", "host1| eclipse.org |host2" ) );
- assertTrue( isNonProxyHost( "eclipse.org", "host1|eclipse.org " ) );
- assertTrue( isNonProxyHost( "eclipse.org", " eclipse.org|host2" ) );
- }
-
- @Test
- public void testIsNonProxyHost_Misc()
- {
- assertFalse( isNonProxyHost( "www.eclipse.org", "www.eclipse.com" ) );
- assertFalse( isNonProxyHost( "www.eclipse.org", "eclipse.org" ) );
- }
-
- @Test
- public void testIsNonProxyHost_CaseInsensitivity()
- {
- assertTrue( isNonProxyHost( "www.eclipse.org", "www.ECLIPSE.org" ) );
- assertTrue( isNonProxyHost( "www.ECLIPSE.org", "www.eclipse.org" ) );
- }
-
- @Test
- public void testGetProxy_FirstMatchWins()
- {
- DefaultProxySelector selector = new DefaultProxySelector();
- Proxy proxy1 = new Proxy( Proxy.TYPE_HTTP, "proxy", 88 );
- selector.add( proxy1, "localhost" );
- Proxy proxy2 = new Proxy( Proxy.TYPE_HTTP, "other", 8888 );
- selector.add( proxy2, "" );
-
- assertSame( proxy1, selector.getProxy( newRepo( "http://eclipse.org/" ) ) );
- assertSame( proxy2, selector.getProxy( newRepo( "http://localhost/" ) ) );
- }
-
- @Test
- public void testGetProxy_Http()
- {
- DefaultProxySelector selector = new DefaultProxySelector();
- Proxy proxy1 = new Proxy( Proxy.TYPE_HTTP, "proxy", 88 );
- selector.add( proxy1, "localhost" );
-
- assertSame( proxy1, selector.getProxy( newRepo( "http://eclipse.org/" ) ) );
- assertSame( proxy1, selector.getProxy( newRepo( "HTTP://eclipse.org/" ) ) );
-
- assertSame( proxy1, selector.getProxy( newRepo( "https://eclipse.org/" ) ) );
- assertSame( proxy1, selector.getProxy( newRepo( "HTTPS://eclipse.org/" ) ) );
-
- assertNull( selector.getProxy( newRepo( "http://localhost/" ) ) );
-
- Proxy proxy2 = new Proxy( Proxy.TYPE_HTTPS, "sproxy", 888 );
- selector.add( proxy2, "localhost" );
-
- assertSame( proxy1, selector.getProxy( newRepo( "http://eclipse.org/" ) ) );
- assertSame( proxy1, selector.getProxy( newRepo( "HTTP://eclipse.org/" ) ) );
-
- assertSame( proxy2, selector.getProxy( newRepo( "https://eclipse.org/" ) ) );
- assertSame( proxy2, selector.getProxy( newRepo( "HTTPS://eclipse.org/" ) ) );
- }
-
- @Test
- public void testGetProxy_WebDav()
- {
- DefaultProxySelector selector = new DefaultProxySelector();
- Proxy proxy1 = new Proxy( Proxy.TYPE_HTTP, "proxy", 88 );
- selector.add( proxy1, "localhost" );
-
- assertSame( proxy1, selector.getProxy( newRepo( "dav://eclipse.org/" ) ) );
- assertSame( proxy1, selector.getProxy( newRepo( "dav:http://eclipse.org/" ) ) );
-
- assertSame( proxy1, selector.getProxy( newRepo( "davs://eclipse.org/" ) ) );
- assertSame( proxy1, selector.getProxy( newRepo( "dav:https://eclipse.org/" ) ) );
-
- assertNull( selector.getProxy( newRepo( "dav://localhost/" ) ) );
-
- Proxy proxy2 = new Proxy( Proxy.TYPE_HTTPS, "sproxy", 888 );
- selector.add( proxy2, "localhost" );
-
- assertSame( proxy1, selector.getProxy( newRepo( "dav://eclipse.org/" ) ) );
- assertSame( proxy1, selector.getProxy( newRepo( "dav:http://eclipse.org/" ) ) );
-
- assertSame( proxy2, selector.getProxy( newRepo( "davs://eclipse.org/" ) ) );
- assertSame( proxy2, selector.getProxy( newRepo( "dav:https://eclipse.org/" ) ) );
- }
-
-}
[11/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/listener/ChainedTransferListener.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/listener/ChainedTransferListener.java b/aether-util/src/main/java/org/eclipse/aether/util/listener/ChainedTransferListener.java
deleted file mode 100644
index d943105..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/listener/ChainedTransferListener.java
+++ /dev/null
@@ -1,234 +0,0 @@
-package org.eclipse.aether.util.listener;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import org.eclipse.aether.transfer.AbstractTransferListener;
-import org.eclipse.aether.transfer.TransferCancelledException;
-import org.eclipse.aether.transfer.TransferEvent;
-import org.eclipse.aether.transfer.TransferListener;
-
-/**
- * A transfer listener that delegates to zero or more other listeners (multicast). The list of target listeners is
- * thread-safe, i.e. target listeners can be added or removed by any thread at any time.
- */
-public final class ChainedTransferListener
- extends AbstractTransferListener
-{
-
- private final List<TransferListener> listeners = new CopyOnWriteArrayList<TransferListener>();
-
- /**
- * Creates a new multicast listener that delegates to the specified listeners. In contrast to the constructor, this
- * factory method will avoid creating an actual chained listener if one of the specified readers is actually
- * {@code null}.
- *
- * @param listener1 The first listener, may be {@code null}.
- * @param listener2 The second listener, may be {@code null}.
- * @return The chained listener or {@code null} if no listener was supplied.
- */
- public static TransferListener newInstance( TransferListener listener1, TransferListener listener2 )
- {
- if ( listener1 == null )
- {
- return listener2;
- }
- else if ( listener2 == null )
- {
- return listener1;
- }
- return new ChainedTransferListener( listener1, listener2 );
- }
-
- /**
- * Creates a new multicast listener that delegates to the specified listeners.
- *
- * @param listeners The listeners to delegate to, may be {@code null} or empty.
- */
- public ChainedTransferListener( TransferListener... listeners )
- {
- if ( listeners != null )
- {
- add( Arrays.asList( listeners ) );
- }
- }
-
- /**
- * Creates a new multicast listener that delegates to the specified listeners.
- *
- * @param listeners The listeners to delegate to, may be {@code null} or empty.
- */
- public ChainedTransferListener( Collection<? extends TransferListener> listeners )
- {
- add( listeners );
- }
-
- /**
- * Adds the specified listeners to the end of the multicast chain.
- *
- * @param listeners The listeners to add, may be {@code null} or empty.
- */
- public void add( Collection<? extends TransferListener> listeners )
- {
- if ( listeners != null )
- {
- for ( TransferListener listener : listeners )
- {
- add( listener );
- }
- }
- }
-
- /**
- * Adds the specified listener to the end of the multicast chain.
- *
- * @param listener The listener to add, may be {@code null}.
- */
- public void add( TransferListener listener )
- {
- if ( listener != null )
- {
- listeners.add( listener );
- }
- }
-
- /**
- * Removes the specified listener from the multicast chain. Trying to remove a non-existing listener has no effect.
- *
- * @param listener The listener to remove, may be {@code null}.
- */
- public void remove( TransferListener listener )
- {
- if ( listener != null )
- {
- listeners.remove( listener );
- }
- }
-
- protected void handleError( TransferEvent event, TransferListener listener, RuntimeException error )
- {
- // default just swallows errors
- }
-
- @Override
- public void transferInitiated( TransferEvent event )
- throws TransferCancelledException
- {
- for ( TransferListener listener : listeners )
- {
- try
- {
- listener.transferInitiated( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void transferStarted( TransferEvent event )
- throws TransferCancelledException
- {
- for ( TransferListener listener : listeners )
- {
- try
- {
- listener.transferStarted( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void transferProgressed( TransferEvent event )
- throws TransferCancelledException
- {
- for ( TransferListener listener : listeners )
- {
- try
- {
- listener.transferProgressed( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void transferCorrupted( TransferEvent event )
- throws TransferCancelledException
- {
- for ( TransferListener listener : listeners )
- {
- try
- {
- listener.transferCorrupted( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void transferSucceeded( TransferEvent event )
- {
- for ( TransferListener listener : listeners )
- {
- try
- {
- listener.transferSucceeded( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void transferFailed( TransferEvent event )
- {
- for ( TransferListener listener : listeners )
- {
- try
- {
- listener.transferFailed( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/listener/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/listener/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/listener/package-info.java
deleted file mode 100644
index 9f0be58..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/listener/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.
- */
-/**
- * Utilities to build repository and transfer listeners.
- */
-package org.eclipse.aether.util.listener;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/package-info.java
deleted file mode 100644
index 605e777..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/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.
- */
-/**
- * Miscellaneous utility classes.
- */
-package org.eclipse.aether.util;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/AuthenticationBuilder.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/AuthenticationBuilder.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/AuthenticationBuilder.java
deleted file mode 100644
index bc69e85..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/AuthenticationBuilder.java
+++ /dev/null
@@ -1,231 +0,0 @@
-package org.eclipse.aether.util.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.ArrayList;
-import java.util.List;
-
-import javax.net.ssl.HostnameVerifier;
-
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationContext;
-
-/**
- * A utility class to build authentication info for repositories and proxies.
- */
-public final class AuthenticationBuilder
-{
-
- private final List<Authentication> authentications;
-
- /**
- * Creates a new authentication builder.
- */
- public AuthenticationBuilder()
- {
- authentications = new ArrayList<Authentication>();
- }
-
- /**
- * Builds a new authentication object from the current data of this builder. The state of the builder itself remains
- * unchanged.
- *
- * @return The authentication or {@code null} if no authentication data was supplied to the builder.
- */
- public Authentication build()
- {
- if ( authentications.isEmpty() )
- {
- return null;
- }
- if ( authentications.size() == 1 )
- {
- return authentications.get( 0 );
- }
- return new ChainedAuthentication( authentications );
- }
-
- /**
- * Adds username data to the authentication.
- *
- * @param username The username, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public AuthenticationBuilder addUsername( String username )
- {
- return addString( AuthenticationContext.USERNAME, username );
- }
-
- /**
- * Adds password data to the authentication.
- *
- * @param password The password, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public AuthenticationBuilder addPassword( String password )
- {
- return addSecret( AuthenticationContext.PASSWORD, password );
- }
-
- /**
- * Adds password data to the authentication. The resulting authentication object uses an encrypted copy of the
- * supplied character data and callers are advised to clear the input array soon after this method returns.
- *
- * @param password The password, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public AuthenticationBuilder addPassword( char[] password )
- {
- return addSecret( AuthenticationContext.PASSWORD, password );
- }
-
- /**
- * Adds NTLM data to the authentication.
- *
- * @param workstation The NTLM workstation name, may be {@code null}.
- * @param domain The NTLM domain name, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public AuthenticationBuilder addNtlm( String workstation, String domain )
- {
- addString( AuthenticationContext.NTLM_WORKSTATION, workstation );
- return addString( AuthenticationContext.NTLM_DOMAIN, domain );
- }
-
- /**
- * Adds private key data to the authentication.
- *
- * @param pathname The (absolute) path to the private key file, may be {@code null}.
- * @param passphrase The passphrase protecting the private key, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public AuthenticationBuilder addPrivateKey( String pathname, String passphrase )
- {
- if ( pathname != null )
- {
- addString( AuthenticationContext.PRIVATE_KEY_PATH, pathname );
- addSecret( AuthenticationContext.PRIVATE_KEY_PASSPHRASE, passphrase );
- }
- return this;
- }
-
- /**
- * Adds private key data to the authentication. The resulting authentication object uses an encrypted copy of the
- * supplied character data and callers are advised to clear the input array soon after this method returns.
- *
- * @param pathname The (absolute) path to the private key file, may be {@code null}.
- * @param passphrase The passphrase protecting the private key, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public AuthenticationBuilder addPrivateKey( String pathname, char[] passphrase )
- {
- if ( pathname != null )
- {
- addString( AuthenticationContext.PRIVATE_KEY_PATH, pathname );
- addSecret( AuthenticationContext.PRIVATE_KEY_PASSPHRASE, passphrase );
- }
- return this;
- }
-
- /**
- * Adds a hostname verifier for SSL. <strong>Note:</strong> This method assumes that all possible instances of the
- * verifier's runtime type exhibit the exact same behavior, i.e. the behavior of the verifier depends solely on the
- * runtime type and not on any configuration. For verifiers that do not fit this assumption, use
- * {@link #addCustom(Authentication)} with a suitable implementation instead.
- *
- * @param verifier The hostname verifier, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public AuthenticationBuilder addHostnameVerifier( HostnameVerifier verifier )
- {
- if ( verifier != null )
- {
- authentications.add( new ComponentAuthentication( AuthenticationContext.SSL_HOSTNAME_VERIFIER, verifier ) );
- }
- return this;
- }
-
- /**
- * Adds custom string data to the authentication. <em>Note:</em> If the string data is confidential, use
- * {@link #addSecret(String, char[])} instead.
- *
- * @param key The key for the authentication data, must not be {@code null}.
- * @param value The value for the authentication data, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public AuthenticationBuilder addString( String key, String value )
- {
- if ( value != null )
- {
- authentications.add( new StringAuthentication( key, value ) );
- }
- return this;
- }
-
- /**
- * Adds sensitive custom string data to the authentication.
- *
- * @param key The key for the authentication data, must not be {@code null}.
- * @param value The value for the authentication data, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public AuthenticationBuilder addSecret( String key, String value )
- {
- if ( value != null )
- {
- authentications.add( new SecretAuthentication( key, value ) );
- }
- return this;
- }
-
- /**
- * Adds sensitive custom string data to the authentication. The resulting authentication object uses an encrypted
- * copy of the supplied character data and callers are advised to clear the input array soon after this method
- * returns.
- *
- * @param key The key for the authentication data, must not be {@code null}.
- * @param value The value for the authentication data, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public AuthenticationBuilder addSecret( String key, char[] value )
- {
- if ( value != null )
- {
- authentications.add( new SecretAuthentication( key, value ) );
- }
- return this;
- }
-
- /**
- * Adds custom authentication data to the authentication.
- *
- * @param authentication The authentication to add, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public AuthenticationBuilder addCustom( Authentication authentication )
- {
- if ( authentication != null )
- {
- authentications.add( authentication );
- }
- return this;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/ChainedAuthentication.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/ChainedAuthentication.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/ChainedAuthentication.java
deleted file mode 100644
index 40dae3f..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/ChainedAuthentication.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package org.eclipse.aether.util.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.Arrays;
-import java.util.Collection;
-import java.util.Map;
-
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.AuthenticationDigest;
-
-/**
- * Authentication that aggregates other authentication blocks. When multiple input authentication blocks provide the
- * same authentication key, the last written value wins.
- */
-final class ChainedAuthentication
- implements Authentication
-{
-
- private final Authentication[] authentications;
-
- public ChainedAuthentication( Authentication... authentications )
- {
- if ( authentications != null && authentications.length > 0 )
- {
- this.authentications = authentications.clone();
- }
- else
- {
- this.authentications = new Authentication[0];
- }
- }
-
- public ChainedAuthentication( Collection<? extends Authentication> authentications )
- {
- if ( authentications != null && !authentications.isEmpty() )
- {
- this.authentications = authentications.toArray( new Authentication[authentications.size()] );
- }
- else
- {
- this.authentications = new Authentication[0];
- }
- }
-
- public void fill( AuthenticationContext context, String key, Map<String, String> data )
- {
- for ( Authentication authentication : authentications )
- {
- authentication.fill( context, key, data );
- }
- }
-
- public void digest( AuthenticationDigest digest )
- {
- for ( Authentication authentication : authentications )
- {
- authentication.digest( digest );
- }
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- ChainedAuthentication that = (ChainedAuthentication) obj;
- return Arrays.equals( authentications, that.authentications );
- }
-
- @Override
- public int hashCode()
- {
- return Arrays.hashCode( authentications );
- }
-
- @Override
- public String toString()
- {
- StringBuilder buffer = new StringBuilder( 256 );
- for ( Authentication authentication : authentications )
- {
- if ( buffer.length() > 0 )
- {
- buffer.append( ", " );
- }
- buffer.append( authentication );
- }
- return buffer.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/ChainedWorkspaceReader.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/ChainedWorkspaceReader.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/ChainedWorkspaceReader.java
deleted file mode 100644
index 0a9b8f6..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/ChainedWorkspaceReader.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package org.eclipse.aether.util.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.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.List;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.repository.WorkspaceReader;
-import org.eclipse.aether.repository.WorkspaceRepository;
-
-/**
- * A workspace reader that delegates to a chain of other readers, effectively aggregating their contents.
- */
-public final class ChainedWorkspaceReader
- implements WorkspaceReader
-{
-
- private List<WorkspaceReader> readers = new ArrayList<WorkspaceReader>();
-
- private WorkspaceRepository repository;
-
- /**
- * Creates a new workspace reader by chaining the specified readers.
- *
- * @param readers The readers to chain, may be {@code null}.
- * @see #newInstance(WorkspaceReader, WorkspaceReader)
- */
- public ChainedWorkspaceReader( WorkspaceReader... readers )
- {
- if ( readers != null )
- {
- Collections.addAll( this.readers, readers );
- }
-
- StringBuilder buffer = new StringBuilder();
- for ( WorkspaceReader reader : this.readers )
- {
- if ( buffer.length() > 0 )
- {
- buffer.append( '+' );
- }
- buffer.append( reader.getRepository().getContentType() );
- }
-
- repository = new WorkspaceRepository( buffer.toString(), new Key( this.readers ) );
- }
-
- /**
- * Creates a new workspace reader by chaining the specified readers. In contrast to the constructor, this factory
- * method will avoid creating an actual chained reader if one of the specified readers is actually {@code null}.
- *
- * @param reader1 The first workspace reader, may be {@code null}.
- * @param reader2 The second workspace reader, may be {@code null}.
- * @return The chained reader or {@code null} if no workspace reader was supplied.
- */
- public static WorkspaceReader newInstance( WorkspaceReader reader1, WorkspaceReader reader2 )
- {
- if ( reader1 == null )
- {
- return reader2;
- }
- else if ( reader2 == null )
- {
- return reader1;
- }
- return new ChainedWorkspaceReader( reader1, reader2 );
- }
-
- public File findArtifact( Artifact artifact )
- {
- File file = null;
-
- for ( WorkspaceReader reader : readers )
- {
- file = reader.findArtifact( artifact );
- if ( file != null )
- {
- break;
- }
- }
-
- return file;
- }
-
- public List<String> findVersions( Artifact artifact )
- {
- Collection<String> versions = new LinkedHashSet<String>();
-
- for ( WorkspaceReader reader : readers )
- {
- versions.addAll( reader.findVersions( artifact ) );
- }
-
- return Collections.unmodifiableList( new ArrayList<String>( versions ) );
- }
-
- public WorkspaceRepository getRepository()
- {
- Key key = new Key( readers );
- if ( !key.equals( repository.getKey() ) )
- {
- repository = new WorkspaceRepository( repository.getContentType(), key );
- }
- return repository;
- }
-
- private static class Key
- {
-
- private final List<Object> keys = new ArrayList<Object>();
-
- public Key( List<WorkspaceReader> readers )
- {
- for ( WorkspaceReader reader : readers )
- {
- keys.add( reader.getRepository().getKey() );
- }
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- return keys.equals( ( (Key) obj ).keys );
- }
-
- @Override
- public int hashCode()
- {
- return keys.hashCode();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/ComponentAuthentication.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/ComponentAuthentication.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/ComponentAuthentication.java
deleted file mode 100644
index af83c9d..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/ComponentAuthentication.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package org.eclipse.aether.util.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;
-
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.AuthenticationDigest;
-
-/**
- * Authentication block that manages a single authentication key and its component value. In this context, component
- * refers to an object whose behavior is solely dependent on its implementation class.
- */
-final class ComponentAuthentication
- implements Authentication
-{
-
- private final String key;
-
- private final Object value;
-
- public ComponentAuthentication( String key, Object value )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "authentication key missing" );
- }
- this.key = key;
- this.value = value;
- }
-
- public void fill( AuthenticationContext context, String key, Map<String, String> data )
- {
- context.put( this.key, value );
- }
-
- public void digest( AuthenticationDigest digest )
- {
- if ( value != null )
- {
- digest.update( key, value.getClass().getName() );
- }
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- ComponentAuthentication that = (ComponentAuthentication) obj;
- return key.equals( that.key ) && eqClass( value, that.value );
- }
-
- private static <T> boolean eqClass( T s1, T s2 )
- {
- return ( s1 == null ) ? s2 == null : s2 != null && s1.getClass().equals( s2.getClass() );
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + key.hashCode();
- hash = hash * 31 + ( ( value != null ) ? value.getClass().hashCode() : 0 );
- return hash;
- }
-
- @Override
- public String toString()
- {
- return key + "=" + value;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/ConservativeAuthenticationSelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/ConservativeAuthenticationSelector.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/ConservativeAuthenticationSelector.java
deleted file mode 100644
index 6e727e5..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/ConservativeAuthenticationSelector.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.eclipse.aether.util.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 org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationSelector;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * An authentication selector that delegates to another selector but only if a repository has no authentication data
- * yet. If authentication has already been assigned to a repository, that is selected.
- */
-public final class ConservativeAuthenticationSelector
- implements AuthenticationSelector
-{
-
- private final AuthenticationSelector selector;
-
- /**
- * Creates a new selector that delegates to the specified selector.
- *
- * @param selector The selector to delegate to in case a repository has no authentication yet, must not be
- * {@code null}.
- */
- public ConservativeAuthenticationSelector( AuthenticationSelector selector )
- {
- if ( selector == null )
- {
- throw new IllegalArgumentException( "no authentication selector specified" );
- }
- this.selector = selector;
- }
-
- public Authentication getAuthentication( RemoteRepository repository )
- {
- Authentication auth = repository.getAuthentication();
- if ( auth != null )
- {
- return auth;
- }
- return selector.getAuthentication( repository );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/ConservativeProxySelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/ConservativeProxySelector.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/ConservativeProxySelector.java
deleted file mode 100644
index 437c719..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/ConservativeProxySelector.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.aether.util.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 org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.ProxySelector;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * A proxy selector that delegates to another selector but only if a repository has no proxy yet. If a proxy has already
- * been assigned to a repository, that is selected.
- */
-public final class ConservativeProxySelector
- implements ProxySelector
-{
-
- private final ProxySelector selector;
-
- /**
- * Creates a new selector that delegates to the specified selector.
- *
- * @param selector The selector to delegate to in case a repository has no proxy yet, must not be {@code null}.
- */
- public ConservativeProxySelector( ProxySelector selector )
- {
- if ( selector == null )
- {
- throw new IllegalArgumentException( "no proxy selector specified" );
- }
- this.selector = selector;
- }
-
- public Proxy getProxy( RemoteRepository repository )
- {
- Proxy proxy = repository.getProxy();
- if ( proxy != null )
- {
- return proxy;
- }
- return selector.getProxy( repository );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultAuthenticationSelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultAuthenticationSelector.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultAuthenticationSelector.java
deleted file mode 100644
index a5d4ce3..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultAuthenticationSelector.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.eclipse.aether.util.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.HashMap;
-import java.util.Map;
-
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationSelector;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * A simple authentication selector that selects authentication based on repository identifiers.
- */
-public final class DefaultAuthenticationSelector
- implements AuthenticationSelector
-{
-
- private final Map<String, Authentication> repos = new HashMap<String, Authentication>();
-
- /**
- * Adds the specified authentication info for the given repository identifier.
- *
- * @param id The identifier of the repository to add the authentication for, must not be {@code null}.
- * @param auth The authentication to add, may be {@code null}.
- * @return This selector for chaining, never {@code null}.
- */
- public DefaultAuthenticationSelector add( String id, Authentication auth )
- {
- if ( auth != null )
- {
- repos.put( id, auth );
- }
- else
- {
- repos.remove( id );
- }
-
- return this;
- }
-
- public Authentication getAuthentication( RemoteRepository repository )
- {
- return repos.get( repository.getId() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultMirrorSelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultMirrorSelector.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultMirrorSelector.java
deleted file mode 100644
index 7a77599..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultMirrorSelector.java
+++ /dev/null
@@ -1,300 +0,0 @@
-package org.eclipse.aether.util.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.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.aether.repository.MirrorSelector;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * A simple mirror selector that selects mirrors based on repository identifiers.
- */
-public final class DefaultMirrorSelector
- implements MirrorSelector
-{
-
- private static final String WILDCARD = "*";
-
- private static final String EXTERNAL_WILDCARD = "external:*";
-
- private final List<MirrorDef> mirrors = new ArrayList<MirrorDef>();
-
- /**
- * Adds the specified mirror to this selector.
- *
- * @param id The identifier of the mirror, may be {@code null}.
- * @param url The URL of the mirror, may be {@code null}.
- * @param type The content type of the mirror, may be {@code null}.
- * @param repositoryManager A flag whether the mirror is a repository manager or a simple server.
- * @param mirrorOfIds The identifier(s) of remote repositories to mirror, may be {@code null}. Multiple identifiers
- * can be separated by comma (',') and surrounding whitespace is trimmed. Additionally the wildcards "*"
- * and "external:*" can be used to match all (external) repositories, prefixing a repo id with an
- * exclamation mark allows to express an exclusion. For example "external:*,!central".
- * @param mirrorOfTypes The content type(s) of remote repositories to mirror, may be {@code null} or empty to match
- * any content type. Multiple types can be separated by comma (',') and surrounding whitespace is
- * trimmed. The wildcard "*" and the "!" negation syntax are also supported. For example "*,!p2".
- * @return This selector for chaining, never {@code null}.
- */
- public DefaultMirrorSelector add( String id, String url, String type, boolean repositoryManager,
- String mirrorOfIds, String mirrorOfTypes )
- {
- return add( id, url, type, repositoryManager, split( mirrorOfIds ), split( mirrorOfTypes ) );
- }
-
- /**
- * Adds the specified mirror to this selector.
- *
- * @param id The identifier of the mirror, may be {@code null}.
- * @param url The URL of the mirror, may be {@code null}.
- * @param type The content type of the mirror, may be {@code null}.
- * @param repositoryManager A flag whether the mirror is a repository manager or a simple server.
- * @param mirrorOfIds The identifier(s) of remote repositories to mirror, may be {@code null}. The wildcards "*" and
- * "external:*" can be used to match all (external) repositories, prefixing a repo id with an exclamation
- * mark allows to express an exclusion. For example "external:*", "!central".
- * @param mirrorOfTypes The content type(s) of remote repositories to mirror, may be {@code null} or empty to match
- * any content type. The wildcard "*" and the "!" negation syntax are also supported. For example "*",
- * "!p2".
- * @return This selector for chaining, never {@code null}.
- * @since 1.1.0
- */
- public DefaultMirrorSelector add( String id, String url, String type, boolean repositoryManager,
- Collection<String> mirrorOfIds, Collection<String> mirrorOfTypes )
- {
- mirrors.add( new MirrorDef( id, url, type, repositoryManager, mirrorOfIds, mirrorOfTypes ) );
-
- return this;
- }
-
- public RemoteRepository getMirror( RemoteRepository repository )
- {
- MirrorDef mirror = findMirror( repository );
-
- if ( mirror == null )
- {
- return null;
- }
-
- RemoteRepository.Builder builder =
- new RemoteRepository.Builder( mirror.id, repository.getContentType(), mirror.url );
-
- builder.setRepositoryManager( mirror.repositoryManager );
-
- if ( mirror.type != null && mirror.type.length() > 0 )
- {
- builder.setContentType( mirror.type );
- }
-
- builder.setSnapshotPolicy( repository.getPolicy( true ) );
- builder.setReleasePolicy( repository.getPolicy( false ) );
-
- builder.setMirroredRepositories( Collections.singletonList( repository ) );
-
- return builder.build();
- }
-
- private MirrorDef findMirror( RemoteRepository repository )
- {
- if ( !mirrors.isEmpty() )
- {
- String repoId = repository.getId();
- String repoType = repository.getContentType();
-
- for ( MirrorDef mirror : mirrors )
- {
- if ( mirror.idMatcher.isExactMatch( repoId ) && mirror.typeMatcher.isMatch( repoType ) )
- {
- return mirror;
- }
- }
-
- for ( MirrorDef mirror : mirrors )
- {
- if ( mirror.idMatcher.isMatch( repository ) && mirror.typeMatcher.isMatch( repoType ) )
- {
- return mirror;
- }
- }
- }
-
- return null;
- }
-
- static List<String> split( String list )
- {
- List<String> tokens = null;
- if ( list != null )
- {
- tokens = Arrays.asList( list.trim().split( "\\s*,\\s*" ) );
- }
- return tokens;
- }
-
- static String[] clean( Collection<String> tokens )
- {
- List<String> cleaned = new ArrayList<String>();
- if ( tokens != null )
- {
- for ( String token : tokens )
- {
- if ( token != null && token.length() > 0 )
- {
- cleaned.add( token );
- }
- }
- }
- return cleaned.toArray( new String[cleaned.size()] );
- }
-
- static final class IdMatcher
- {
-
- final String[] mirrorOfIds;
-
- public IdMatcher( Collection<String> mirrorOfIds )
- {
- this.mirrorOfIds = clean( mirrorOfIds );
- }
-
- boolean isExactMatch( String repoId )
- {
- return mirrorOfIds.length == 1 && mirrorOfIds[0].equals( repoId );
- }
-
- boolean isMatch( RemoteRepository repository )
- {
- boolean result = false;
- if ( mirrorOfIds.length <= 0 )
- {
- result = false;
- }
- else
- {
- String repoId = repository.getId();
- for ( String mirrorOfId : mirrorOfIds )
- {
- if ( mirrorOfId.equals( repoId ) )
- {
- result = true;
- break;
- }
- else if ( mirrorOfId.startsWith( "!" ) && mirrorOfId.substring( 1 ).equals( repoId ) )
- {
- result = false;
- break;
- }
- else if ( EXTERNAL_WILDCARD.equals( mirrorOfId ) && isExternalRepo( repository ) )
- {
- result = true;
- }
- else if ( WILDCARD.equals( mirrorOfId ) )
- {
- result = true;
- }
- }
- }
- return result;
- }
-
- static boolean isExternalRepo( RemoteRepository repository )
- {
- boolean local =
- "localhost".equals( repository.getHost() ) || "127.0.0.1".equals( repository.getHost() )
- || "file".equalsIgnoreCase( repository.getProtocol() );
- return !local;
- }
-
- }
-
- static final class TypeMatcher
- {
-
- final String[] mirrorOfTypes;
-
- public TypeMatcher( Collection<String> mirrorOfTypes )
- {
- this.mirrorOfTypes = clean( mirrorOfTypes );
- }
-
- boolean isMatch( String repoType )
- {
- boolean result = false;
- if ( mirrorOfTypes.length <= 0 )
- {
- result = true;
- }
- else
- {
- for ( String mirrorOfType : mirrorOfTypes )
- {
- if ( mirrorOfType.equals( repoType ) )
- {
- result = true;
- break;
- }
- else if ( mirrorOfType.startsWith( "!" ) && mirrorOfType.substring( 1 ).equals( repoType ) )
- {
- result = false;
- break;
- }
- else if ( WILDCARD.equals( mirrorOfType ) )
- {
- result = true;
- }
- }
- }
- return result;
- }
-
- }
-
- static final class MirrorDef
- {
-
- final String id;
-
- final String url;
-
- final String type;
-
- final boolean repositoryManager;
-
- final IdMatcher idMatcher;
-
- final TypeMatcher typeMatcher;
-
- public MirrorDef( String id, String url, String type, boolean repositoryManager,
- Collection<String> mirrorOfIds, Collection<String> mirrorOfTypes )
- {
- this.id = id;
- this.url = url;
- this.type = type;
- this.repositoryManager = repositoryManager;
- this.idMatcher = new IdMatcher( mirrorOfIds );
- this.typeMatcher = new TypeMatcher( mirrorOfTypes );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultProxySelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultProxySelector.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultProxySelector.java
deleted file mode 100644
index 522b0d7..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultProxySelector.java
+++ /dev/null
@@ -1,188 +0,0 @@
-package org.eclipse.aether.util.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.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.regex.Pattern;
-
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.ProxySelector;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * A simple proxy selector that selects the first matching proxy from a list of configured proxies.
- */
-public final class DefaultProxySelector
- implements ProxySelector
-{
-
- private List<ProxyDef> proxies = new ArrayList<ProxyDef>();
-
- /**
- * Adds the specified proxy definition to the selector. Proxy definitions are ordered, the first matching proxy for
- * a given repository will be used.
- *
- * @param proxy The proxy definition to add, must not be {@code null}.
- * @param nonProxyHosts The list of (case-insensitive) host names to exclude from proxying, may be {@code null}. The
- * syntax of this list resembles that of the property "http.nonProxyHosts" from the JRE, i.e. the
- * asterisk character ('*') serves as a wildcard for pattern matching. Multiple entries are separated by
- * the pipe character ('|') or comma (',') and surrounding whitespace is trimmed.
- * @return This proxy selector for chaining, never {@code null}.
- */
- public DefaultProxySelector add( Proxy proxy, String nonProxyHosts )
- {
- return add( proxy, NonProxyHosts.split( nonProxyHosts ) );
- }
-
- /**
- * Adds the specified proxy definition to the selector. Proxy definitions are ordered, the first matching proxy for
- * a given repository will be used.
- *
- * @param proxy The proxy definition to add, must not be {@code null}.
- * @param nonProxyHosts The list of (case-insensitive) host names to exclude from proxying, may be {@code null}. The
- * asterisk character ('*') may be used as wildcard in a host name.
- * @return This proxy selector for chaining, never {@code null}.
- * @since 1.1.0
- */
- public DefaultProxySelector add( Proxy proxy, Collection<String> nonProxyHosts )
- {
- if ( proxy == null )
- {
- throw new IllegalArgumentException( "proxy not specified" );
- }
- proxies.add( new ProxyDef( proxy, nonProxyHosts ) );
-
- return this;
- }
-
- public Proxy getProxy( RemoteRepository repository )
- {
- Map<String, ProxyDef> candidates = new HashMap<String, ProxyDef>();
-
- String host = repository.getHost();
- for ( ProxyDef proxy : proxies )
- {
- if ( !proxy.nonProxyHosts.isNonProxyHost( host ) )
- {
- String key = proxy.proxy.getType().toLowerCase( Locale.ENGLISH );
- if ( !candidates.containsKey( key ) )
- {
- candidates.put( key, proxy );
- }
- }
- }
-
- String protocol = repository.getProtocol().toLowerCase( Locale.ENGLISH );
-
- if ( "davs".equals( protocol ) )
- {
- protocol = "https";
- }
- else if ( "dav".equals( protocol ) )
- {
- protocol = "http";
- }
- else if ( protocol.startsWith( "dav:" ) )
- {
- protocol = protocol.substring( "dav:".length() );
- }
-
- ProxyDef proxy = candidates.get( protocol );
- if ( proxy == null && "https".equals( protocol ) )
- {
- proxy = candidates.get( "http" );
- }
-
- return ( proxy != null ) ? proxy.proxy : null;
- }
-
- static class NonProxyHosts
- {
-
- private final Pattern[] patterns;
-
- public NonProxyHosts( Collection<String> nonProxyHosts )
- {
- List<Pattern> patterns = new ArrayList<Pattern>();
- if ( nonProxyHosts != null )
- {
- for ( String nonProxyHost : nonProxyHosts )
- {
- if ( nonProxyHost == null || nonProxyHost.length() <= 0 )
- {
- continue;
- }
- String pattern = nonProxyHost;
- pattern = pattern.replace( ".", "\\." ).replace( "*", ".*" );
- patterns.add( Pattern.compile( pattern, Pattern.CASE_INSENSITIVE ) );
- }
- }
- this.patterns = patterns.toArray( new Pattern[patterns.size()] );
- }
-
- static List<String> split( String nonProxyHosts )
- {
- List<String> hosts = null;
- if ( nonProxyHosts != null )
- {
- hosts = Arrays.asList( nonProxyHosts.trim().split( "\\s*[|,]\\s*" ) );
- }
- return hosts;
- }
-
- boolean isNonProxyHost( String host )
- {
- if ( host != null )
- {
- for ( Pattern pattern : patterns )
- {
- if ( pattern.matcher( host ).matches() )
- {
- return true;
- }
- }
- }
- return false;
- }
-
- }
-
- static class ProxyDef
- {
-
- final Proxy proxy;
-
- final NonProxyHosts nonProxyHosts;
-
- public ProxyDef( Proxy proxy, Collection<String> nonProxyHosts )
- {
- this.proxy = proxy;
- this.nonProxyHosts = new NonProxyHosts( nonProxyHosts );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/JreProxySelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/JreProxySelector.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/JreProxySelector.java
deleted file mode 100644
index a09b435..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/JreProxySelector.java
+++ /dev/null
@@ -1,182 +0,0 @@
-package org.eclipse.aether.util.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.net.Authenticator;
-import java.net.InetSocketAddress;
-import java.net.PasswordAuthentication;
-import java.net.SocketAddress;
-import java.net.URI;
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.AuthenticationDigest;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.ProxySelector;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * A proxy selector that uses the {@link java.net.ProxySelector#getDefault() JRE's global proxy selector}. In
- * combination with the system property {@code java.net.useSystemProxies}, this proxy selector can be employed to pick
- * up the proxy configuration from the operating system, see <a
- * href="http://docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html">Java Networking and Proxies</a> for
- * details. The {@link java.net.Authenticator JRE's global authenticator} is used to look up credentials for a proxy
- * when needed.
- */
-public final class JreProxySelector
- implements ProxySelector
-{
-
- /**
- * Creates a new proxy selector that delegates to {@link java.net.ProxySelector#getDefault()}.
- */
- public JreProxySelector()
- {
- }
-
- public Proxy getProxy( RemoteRepository repository )
- {
- List<java.net.Proxy> proxies = null;
- try
- {
- URI uri = new URI( repository.getUrl() ).parseServerAuthority();
- proxies = java.net.ProxySelector.getDefault().select( uri );
- }
- catch ( Exception e )
- {
- // URL invalid or not accepted by selector or no selector at all, simply use no proxy
- }
- if ( proxies != null )
- {
- for ( java.net.Proxy proxy : proxies )
- {
- if ( java.net.Proxy.Type.DIRECT.equals( proxy.type() ) )
- {
- break;
- }
- if ( java.net.Proxy.Type.HTTP.equals( proxy.type() ) && isValid( proxy.address() ) )
- {
- InetSocketAddress addr = (InetSocketAddress) proxy.address();
- return new Proxy( Proxy.TYPE_HTTP, addr.getHostName(), addr.getPort(),
- JreProxyAuthentication.INSTANCE );
- }
- }
- }
- return null;
- }
-
- private static boolean isValid( SocketAddress address )
- {
- if ( address instanceof InetSocketAddress )
- {
- /*
- * NOTE: On some platforms with java.net.useSystemProxies=true, unconfigured proxies show up as proxy
- * objects with empty host and port 0.
- */
- InetSocketAddress addr = (InetSocketAddress) address;
- if ( addr.getPort() <= 0 )
- {
- return false;
- }
- if ( addr.getHostName() == null || addr.getHostName().length() <= 0 )
- {
- return false;
- }
- return true;
- }
- return false;
- }
-
- private static final class JreProxyAuthentication
- implements Authentication
- {
-
- public static final Authentication INSTANCE = new JreProxyAuthentication();
-
- public void fill( AuthenticationContext context, String key, Map<String, String> data )
- {
- Proxy proxy = context.getProxy();
- if ( proxy == null )
- {
- return;
- }
- if ( !AuthenticationContext.USERNAME.equals( key ) && !AuthenticationContext.PASSWORD.equals( key ) )
- {
- return;
- }
-
- try
- {
- URL url;
- try
- {
- url = new URL( context.getRepository().getUrl() );
- }
- catch ( Exception e )
- {
- url = null;
- }
-
- PasswordAuthentication auth =
- Authenticator.requestPasswordAuthentication( proxy.getHost(), null, proxy.getPort(), "http",
- "Credentials for proxy " + proxy, null, url,
- Authenticator.RequestorType.PROXY );
- if ( auth != null )
- {
- context.put( AuthenticationContext.USERNAME, auth.getUserName() );
- context.put( AuthenticationContext.PASSWORD, auth.getPassword() );
- }
- else
- {
- context.put( AuthenticationContext.USERNAME, System.getProperty( "http.proxyUser" ) );
- context.put( AuthenticationContext.PASSWORD, System.getProperty( "http.proxyPassword" ) );
- }
- }
- catch ( SecurityException e )
- {
- // oh well, let's hope the proxy can do without auth
- }
- }
-
- public void digest( AuthenticationDigest digest )
- {
- // we don't know anything about the JRE's current authenticator, assume the worst (i.e. interactive)
- digest.update( UUID.randomUUID().toString() );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- return this == obj || ( obj != null && getClass().equals( obj.getClass() ) );
- }
-
- @Override
- public int hashCode()
- {
- return getClass().hashCode();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/SecretAuthentication.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/SecretAuthentication.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/SecretAuthentication.java
deleted file mode 100644
index 8b3b095..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/SecretAuthentication.java
+++ /dev/null
@@ -1,181 +0,0 @@
-package org.eclipse.aether.util.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.Arrays;
-import java.util.Map;
-
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.AuthenticationDigest;
-
-/**
- * Authentication block that manages a single authentication key and its secret string value (password, passphrase).
- * Unlike {@link StringAuthentication}, the string value is kept in an encrypted buffer and only decrypted when needed
- * to reduce the potential of leaking the secret in a heap dump.
- */
-final class SecretAuthentication
- implements Authentication
-{
-
- private static final Object[] KEYS;
-
- static
- {
- KEYS = new Object[16];
- for ( int i = 0; i < KEYS.length; i++ )
- {
- KEYS[i] = new Object();
- }
- }
-
- private final String key;
-
- private final char[] value;
-
- private final int secretHash;
-
- public SecretAuthentication( String key, String value )
- {
- this( ( value != null ) ? value.toCharArray() : null, key );
- }
-
- public SecretAuthentication( String key, char[] value )
- {
- this( copy( value ), key );
- }
-
- private SecretAuthentication( char[] value, String key )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "authentication key missing" );
- }
- this.key = key;
- this.secretHash = Arrays.hashCode( value ) ^ KEYS[0].hashCode();
- this.value = xor( value );
- }
-
- private static char[] copy( char[] chars )
- {
- return ( chars != null ) ? chars.clone() : null;
- }
-
- private char[] xor( char[] chars )
- {
- if ( chars != null )
- {
- int mask = System.identityHashCode( this );
- for ( int i = 0; i < chars.length; i++ )
- {
- int key = KEYS[( i >> 1 ) % KEYS.length].hashCode();
- key ^= mask;
- chars[i] ^= ( ( i & 1 ) == 0 ) ? ( key & 0xFFFF ) : ( key >>> 16 );
- }
- }
- return chars;
- }
-
- private static void clear( char[] chars )
- {
- if ( chars != null )
- {
- for ( int i = 0; i < chars.length; i++ )
- {
- chars[i] = '\0';
- }
- }
- }
-
- public void fill( AuthenticationContext context, String key, Map<String, String> data )
- {
- char[] secret = copy( value );
- xor( secret );
- context.put( this.key, secret );
- // secret will be cleared upon AuthenticationContext.close()
- }
-
- public void digest( AuthenticationDigest digest )
- {
- char[] secret = copy( value );
- try
- {
- xor( secret );
- digest.update( key );
- digest.update( secret );
- }
- finally
- {
- clear( secret );
- }
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- SecretAuthentication that = (SecretAuthentication) obj;
- if ( !eq( key, that.key ) || secretHash != that.secretHash )
- {
- return false;
- }
- char[] secret = copy( value );
- char[] thatSecret = copy( that.value );
- try
- {
- xor( secret );
- that.xor( thatSecret );
- return Arrays.equals( secret, thatSecret );
- }
- finally
- {
- clear( secret );
- clear( thatSecret );
- }
- }
-
- private static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + key.hashCode();
- hash = hash * 31 + secretHash;
- return hash;
- }
-
- @Override
- public String toString()
- {
- return key + "=" + ( ( value != null ) ? "***" : "null" );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/SimpleArtifactDescriptorPolicy.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/SimpleArtifactDescriptorPolicy.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/SimpleArtifactDescriptorPolicy.java
deleted file mode 100644
index ccf1ba8..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/SimpleArtifactDescriptorPolicy.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.eclipse.aether.util.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 org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
-import org.eclipse.aether.resolution.ArtifactDescriptorPolicyRequest;
-
-/**
- * An artifact descriptor error policy that allows to control error handling at a global level.
- */
-public final class SimpleArtifactDescriptorPolicy
- implements ArtifactDescriptorPolicy
-{
-
- private final int policy;
-
- /**
- * Creates a new error policy with the specified behavior.
- *
- * @param ignoreMissing {@code true} to ignore missing descriptors, {@code false} to fail resolution.
- * @param ignoreInvalid {@code true} to ignore invalid descriptors, {@code false} to fail resolution.
- */
- public SimpleArtifactDescriptorPolicy( boolean ignoreMissing, boolean ignoreInvalid )
- {
- this( ( ignoreMissing ? IGNORE_MISSING : 0 ) | ( ignoreInvalid ? IGNORE_INVALID : 0 ) );
- }
-
- /**
- * Creates a new error policy with the specified bit mask.
- *
- * @param policy The bit mask describing the policy.
- */
- public SimpleArtifactDescriptorPolicy( int policy )
- {
- this.policy = policy;
- }
-
- public int getPolicy( RepositorySystemSession session, ArtifactDescriptorPolicyRequest request )
- {
- return policy;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/SimpleResolutionErrorPolicy.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/SimpleResolutionErrorPolicy.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/SimpleResolutionErrorPolicy.java
deleted file mode 100644
index 4fa9059..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/SimpleResolutionErrorPolicy.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.eclipse.aether.util.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 org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.resolution.ResolutionErrorPolicy;
-import org.eclipse.aether.resolution.ResolutionErrorPolicyRequest;
-
-/**
- * A resolution error policy that allows to control caching for artifacts and metadata at a global level.
- */
-public final class SimpleResolutionErrorPolicy
- implements ResolutionErrorPolicy
-{
-
- private final int artifactPolicy;
-
- private final int metadataPolicy;
-
- /**
- * Creates a new error policy with the specified behavior for both artifacts and metadata.
- *
- * @param cacheNotFound {@code true} to enable caching of missing items, {@code false} to disable it.
- * @param cacheTransferErrors {@code true} to enable chaching of transfer errors, {@code false} to disable it.
- */
- public SimpleResolutionErrorPolicy( boolean cacheNotFound, boolean cacheTransferErrors )
- {
- this( ( cacheNotFound ? CACHE_NOT_FOUND : 0 ) | ( cacheTransferErrors ? CACHE_TRANSFER_ERROR : 0 ) );
- }
-
- /**
- * Creates a new error policy with the specified bit mask for both artifacts and metadata.
- *
- * @param policy The bit mask describing the policy for artifacts and metadata.
- */
- public SimpleResolutionErrorPolicy( int policy )
- {
- this( policy, policy );
- }
-
- /**
- * Creates a new error policy with the specified bit masks for artifacts and metadata.
- *
- * @param artifactPolicy The bit mask describing the policy for artifacts.
- * @param metadataPolicy The bit mask describing the policy for metadata.
- */
- public SimpleResolutionErrorPolicy( int artifactPolicy, int metadataPolicy )
- {
- this.artifactPolicy = artifactPolicy;
- this.metadataPolicy = metadataPolicy;
- }
-
- public int getArtifactPolicy( RepositorySystemSession session, ResolutionErrorPolicyRequest<Artifact> request )
- {
- return artifactPolicy;
- }
-
- public int getMetadataPolicy( RepositorySystemSession session, ResolutionErrorPolicyRequest<Metadata> request )
- {
- return metadataPolicy;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/StringAuthentication.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/StringAuthentication.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/StringAuthentication.java
deleted file mode 100644
index 8438082..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/StringAuthentication.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package org.eclipse.aether.util.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;
-
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.AuthenticationDigest;
-
-/**
- * Authentication block that manages a single authentication key and its string value.
- */
-final class StringAuthentication
- implements Authentication
-{
-
- private final String key;
-
- private final String value;
-
- public StringAuthentication( String key, String value )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "authentication key missing" );
- }
- this.key = key;
- this.value = value;
- }
-
- public void fill( AuthenticationContext context, String key, Map<String, String> data )
- {
- context.put( this.key, value );
- }
-
- public void digest( AuthenticationDigest digest )
- {
- digest.update( key, value );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- StringAuthentication that = (StringAuthentication) obj;
- return eq( key, that.key ) && eq( value, that.value );
- }
-
- private static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + key.hashCode();
- hash = hash * 31 + ( ( value != null ) ? value.hashCode() : 0 );
- return hash;
- }
-
- @Override
- public String toString()
- {
- return key + "=" + value;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/repository/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/repository/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/repository/package-info.java
deleted file mode 100644
index 1c0a194..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/repository/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.
- */
-/**
- * Ready-to-use selectors for authentication, proxies and mirrors and a few other repository related utilities.
- */
-package org.eclipse.aether.util.repository;
-
[29/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_216_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_216_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_216_4.1-SNAPSHOT.ini
deleted file mode 100644
index ea48715..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_216_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,48 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:218:pom:2.2.1-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:220:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:231:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:285:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:298:pom:4.1-SNAPSHOT
-10:238:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:263:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
-10:337:pom:4.1-SNAPSHOT
-10:228:pom:1.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_220_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_220_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_220_4.0-SNAPSHOT.ini
deleted file mode 100644
index 3bfab2b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_220_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,53 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:221:pom:8.9-SNAPSHOT
-1:222:pom:1.1.1-SNAPSHOT
-1:84:pom:2.2.0036-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:223:pom:7.5-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:218:pom:2.2.1-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:224:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:229:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:231:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:156:pom:4.0-SNAPSHOT
-10:261:pom:4.0-SNAPSHOT
-10:262:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
-10:228:pom:1.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_220_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_220_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_220_4.1-SNAPSHOT.ini
deleted file mode 100644
index 0e34cad..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_220_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,54 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:221:pom:8.9-SNAPSHOT
-1:222:pom:1.1.1-SNAPSHOT
-1:84:pom:2.2.0036-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:223:pom:7.5-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:218:pom:2.2.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:357:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:224:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:229:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:231:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:156:pom:4.1-SNAPSHOT
-10:261:pom:4.1-SNAPSHOT
-10:262:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
-10:228:pom:1.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_224_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_224_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_224_4.0-SNAPSHOT.ini
deleted file mode 100644
index 74fdf31..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_224_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:221:pom:8.9-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:223:pom:7.5-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:225:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_224_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_224_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_224_4.1-SNAPSHOT.ini
deleted file mode 100644
index 4323e85..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_224_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:221:pom:8.9-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:223:pom:7.5-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:225:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_225_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_225_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_225_4.0-SNAPSHOT.ini
deleted file mode 100644
index 241db59..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_225_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,25 +0,0 @@
-[dependencies]
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:104:pom:70-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:104:pom:70-SNAPSHOT
-1:105:pom:70-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:163:pom:4.0-SNAPSHOT
-10:167:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_225_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_225_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_225_4.1-SNAPSHOT.ini
deleted file mode 100644
index bb96add..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_225_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,25 +0,0 @@
-[dependencies]
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:104:pom:70-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:104:pom:70-SNAPSHOT
-1:105:pom:70-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:163:pom:4.1-SNAPSHOT
-10:167:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_226_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_226_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_226_4.0-SNAPSHOT.ini
deleted file mode 100644
index e1ef8cd..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_226_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,35 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:227:pom:7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
-10:228:pom:1.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_226_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_226_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_226_4.1-SNAPSHOT.ini
deleted file mode 100644
index 71fe698..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_226_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,36 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:227:pom:7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
-10:12:pom:4.1-SNAPSHOT
-10:228:pom:1.0-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_228_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_228_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_228_1.0-SNAPSHOT.ini
deleted file mode 100644
index 59958f6..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_228_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-10:139:pom:3.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_229_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_229_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_229_4.0-SNAPSHOT.ini
deleted file mode 100644
index 7172d1c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_229_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:230:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_229_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_229_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_229_4.1-SNAPSHOT.ini
deleted file mode 100644
index 0ae9cd0..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_229_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:230:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_22_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_22_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_22_4.0-SNAPSHOT.ini
deleted file mode 100644
index 2e07aa7..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_22_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,23 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:24:pom:1.2.10-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:3:pom:1.28-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_22_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_22_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_22_4.1-SNAPSHOT.ini
deleted file mode 100644
index 61d2cfd..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_22_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,24 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:24:pom:1.2.10-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:3:pom:1.28-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_230_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_230_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_230_4.0-SNAPSHOT.ini
deleted file mode 100644
index 65e3aa0..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_230_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,41 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:227:pom:7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:218:pom:2.2.1-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:216:pom:4.0-SNAPSHOT
-10:220:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:231:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:233:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
-10:337:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_230_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_230_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_230_4.1-SNAPSHOT.ini
deleted file mode 100644
index 9b5668f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_230_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,41 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:227:pom:7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:218:pom:2.2.1-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:216:pom:4.1-SNAPSHOT
-10:220:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:231:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:233:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
-10:337:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_231_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_231_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_231_4.0-SNAPSHOT.ini
deleted file mode 100644
index 7b06419..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_231_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_231_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_231_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_231_4.1-SNAPSHOT.ini
deleted file mode 100644
index c0a8f5d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_231_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_232_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_232_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_232_4.0-SNAPSHOT.ini
deleted file mode 100644
index bb701f4..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_232_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:231:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:233:pom:4.0-SNAPSHOT
-10:238:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:263:pom:4.0-SNAPSHOT
-10:228:pom:1.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_232_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_232_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_232_4.1-SNAPSHOT.ini
deleted file mode 100644
index 3c4f0d3..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_232_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:231:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:233:pom:4.1-SNAPSHOT
-10:238:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:263:pom:4.1-SNAPSHOT
-10:228:pom:1.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_233_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_233_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_233_4.0-SNAPSHOT.ini
deleted file mode 100644
index a0e0ab1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_233_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,27 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:73:pom:2.4.1-SNAPSHOT
-1:74:pom:3.5.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:78:pom:2.6-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:79:pom:0.7.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:234:pom:1.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:174:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:235:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_233_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_233_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_233_4.1-SNAPSHOT.ini
deleted file mode 100644
index a260894..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_233_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,27 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:73:pom:2.4.1-SNAPSHOT
-1:74:pom:3.5.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:78:pom:2.6-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:79:pom:0.7.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:234:pom:1.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:235:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_235_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_235_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_235_4.0-SNAPSHOT.ini
deleted file mode 100644
index c494dca..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_235_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,36 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:52:pom:1.8-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:155:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:150:pom:4.0-SNAPSHOT
-10:236:pom:4.0-SNAPSHOT
-10:156:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:160:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_235_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_235_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_235_4.1-SNAPSHOT.ini
deleted file mode 100644
index b1b930e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_235_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,35 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:155:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:150:pom:4.1-SNAPSHOT
-10:236:pom:4.1-SNAPSHOT
-10:156:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_236_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_236_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_236_4.0-SNAPSHOT.ini
deleted file mode 100644
index f927516..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_236_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,20 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:237:pom:4.0-SNAPSHOT
-10:150:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:162:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_236_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_236_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_236_4.1-SNAPSHOT.ini
deleted file mode 100644
index 36996ed..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_236_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,20 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:237:pom:4.1-SNAPSHOT
-10:150:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:162:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_237_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_237_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_237_4.0-SNAPSHOT.ini
deleted file mode 100644
index 8654840..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_237_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_237_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_237_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_237_4.1-SNAPSHOT.ini
deleted file mode 100644
index d356e0b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_237_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_238_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_238_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_238_4.0-SNAPSHOT.ini
deleted file mode 100644
index 62b1d93..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_238_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,39 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:52:pom:1.8-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:240:pom:720-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:241:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:155:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:150:pom:4.0-SNAPSHOT
-10:235:pom:4.0-SNAPSHOT
-10:298:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:160:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
-10:317:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_238_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_238_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_238_4.1-SNAPSHOT.ini
deleted file mode 100644
index 02f56fc..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_238_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,39 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:240:pom:720-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:241:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:155:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:150:pom:4.1-SNAPSHOT
-10:235:pom:4.1-SNAPSHOT
-10:298:pom:4.1-SNAPSHOT
-10:363:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
-10:317:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_241_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_241_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_241_4.0-SNAPSHOT.ini
deleted file mode 100644
index 05973bb..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_241_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_241_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_241_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_241_4.1-SNAPSHOT.ini
deleted file mode 100644
index 2c1e64d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_241_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_242_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_242_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_242_4.0-SNAPSHOT.ini
deleted file mode 100644
index b05a852..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_242_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:150:pom:4.0-SNAPSHOT
-10:261:pom:4.0-SNAPSHOT
-10:262:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_242_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_242_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_242_4.1-SNAPSHOT.ini
deleted file mode 100644
index 9fad2e3..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_242_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,30 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:150:pom:4.1-SNAPSHOT
-10:261:pom:4.1-SNAPSHOT
-10:262:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_243_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_243_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_243_4.0-SNAPSHOT.ini
deleted file mode 100644
index d979d16..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_243_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,30 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:244:pom:1.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:3.8.1-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:245:pom:1.0.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:246:pom:4.0-SNAPSHOT
-10:247:pom:4.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_243_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_243_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_243_4.1-SNAPSHOT.ini
deleted file mode 100644
index 9b97a57..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_243_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,34 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:358:pom:1.1.2-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:260:pom:2.3.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:244:pom:1.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:3.8.1-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:245:pom:1.0.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:246:pom:4.1-SNAPSHOT
-10:247:pom:4.1-SNAPSHOT
-10:363:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:364:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_246_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_246_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_246_4.0-SNAPSHOT.ini
deleted file mode 100644
index 2bcf940..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_246_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,15 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_246_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_246_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_246_4.1-SNAPSHOT.ini
deleted file mode 100644
index f71da7a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_246_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,15 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_247_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_247_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_247_4.0-SNAPSHOT.ini
deleted file mode 100644
index 7100a80..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_247_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,54 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:63:pom:1.1-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:244:pom:1.2-SNAPSHOT
-1:248:pom:5.5-SNAPSHOT
-1:249:pom:9.2.2-SNAPSHOT
-1:66:pom:0.11-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:53:pom:2.3.0.677-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:222:pom:beta8-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:84:pom:2.2.0036-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:56:pom:1.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:10.1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:70:pom:9.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:200:pom:5.1-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:250:pom:1.0_sap.1-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:174:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:246:pom:4.0-SNAPSHOT
-10:167:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:251:pom:4.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:257:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_247_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_247_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_247_4.1-SNAPSHOT.ini
deleted file mode 100644
index b37cc1f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_247_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,55 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:63:pom:1.1-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:244:pom:1.2-SNAPSHOT
-1:248:pom:5.5-SNAPSHOT
-1:249:pom:9.2.2-SNAPSHOT
-1:66:pom:0.11-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:53:pom:2.3.0.677-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:222:pom:beta8-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:84:pom:2.2.0036-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:56:pom:1.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:10.1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:70:pom:9.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:200:pom:5.1-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:250:pom:1.0_sap.1-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:359:pom:4.1-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:246:pom:4.1-SNAPSHOT
-10:167:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:251:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:257:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_251_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_251_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_251_4.0-SNAPSHOT.ini
deleted file mode 100644
index 611fe39..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_251_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,23 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:246:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:252:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_251_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_251_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_251_4.1-SNAPSHOT.ini
deleted file mode 100644
index b90b8dc..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_251_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,25 +0,0 @@
-[dependencies]
-1:358:pom:1.1.2-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:260:pom:2.3.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:246:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:252:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_252_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_252_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_252_4.0-SNAPSHOT.ini
deleted file mode 100644
index 6911906..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_252_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:253:pom:1.3.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:247:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:254:pom:4.0-SNAPSHOT
-10:255:pom:4.0-SNAPSHOT
-10:251:pom:4.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:160:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_252_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_252_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_252_4.1-SNAPSHOT.ini
deleted file mode 100644
index d4b3bef..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_252_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,29 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:253:pom:1.3.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:361:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:247:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:254:pom:4.1-SNAPSHOT
-10:255:pom:4.1-SNAPSHOT
-10:251:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_254_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_254_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_254_4.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_254_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_254_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_254_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_254_4.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_254_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_255_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_255_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_255_4.0-SNAPSHOT.ini
deleted file mode 100644
index 92db689..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_255_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:181:pom:1.0-SNAPSHOT
-1:256:pom:3.2-SNAPSHOT
-1:182:pom:3.2-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_255_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_255_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_255_4.1-SNAPSHOT.ini
deleted file mode 100644
index 92db689..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_255_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:181:pom:1.0-SNAPSHOT
-1:256:pom:3.2-SNAPSHOT
-1:182:pom:3.2-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_257_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_257_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_257_4.0-SNAPSHOT.ini
deleted file mode 100644
index dea2f0e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_257_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:258:pom:4.0-SNAPSHOT
-1:259:pom:2.0-SNAPSHOT
-1:260:pom:2.2.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_257_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_257_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_257_4.1-SNAPSHOT.ini
deleted file mode 100644
index cae030f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_257_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:258:pom:4.1-SNAPSHOT
-1:259:pom:2.0-SNAPSHOT
-1:260:pom:2.3.3-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_258_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_258_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_258_4.0-SNAPSHOT.ini
deleted file mode 100644
index df77fce..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_258_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-10:212:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_258_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_258_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_258_4.1-SNAPSHOT.ini
deleted file mode 100644
index d3c0466..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_258_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-10:212:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_261_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_261_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_261_4.0-SNAPSHOT.ini
deleted file mode 100644
index 80b0949..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_261_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,25 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_261_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_261_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_261_4.1-SNAPSHOT.ini
deleted file mode 100644
index b4e12a9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_261_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,25 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
-10:12:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_262_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_262_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_262_4.0-SNAPSHOT.ini
deleted file mode 100644
index 825bfdc..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_262_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,44 +0,0 @@
-[dependencies]
-10:42:pom:4.0-SNAPSHOT
-10:263:pom:4.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:7:pom:5.8.9-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:261:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:264:pom:6.2-SNAPSHOT
-1:166:pom:720-SNAPSHOT
-10:265:pom:4.0-SNAPSHOT
-1:267:pom:3.0-SNAPSHOT
-10:268:pom:4.0-SNAPSHOT
-1:104:pom:70-SNAPSHOT
-1:270:pom:1.6.5-SNAPSHOT
-10:225:pom:4.0-SNAPSHOT
-10:271:pom:4.0-SNAPSHOT
-10:297:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_262_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_262_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_262_4.1-SNAPSHOT.ini
deleted file mode 100644
index 79099d0..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_262_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,45 +0,0 @@
-[dependencies]
-10:42:pom:4.1-SNAPSHOT
-10:263:pom:4.1-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:7:pom:5.8.9-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:261:pom:4.1-SNAPSHOT
-10:12:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:264:pom:6.2-SNAPSHOT
-1:166:pom:720-SNAPSHOT
-10:265:pom:4.1-SNAPSHOT
-1:267:pom:3.0-SNAPSHOT
-10:268:pom:4.1-SNAPSHOT
-1:104:pom:70-SNAPSHOT
-1:270:pom:1.6.5-SNAPSHOT
-10:225:pom:4.1-SNAPSHOT
-10:271:pom:4.1-SNAPSHOT
-10:297:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_263_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_263_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_263_4.0-SNAPSHOT.ini
deleted file mode 100644
index 6097205..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_263_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:41:pom:5.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_263_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_263_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_263_4.1-SNAPSHOT.ini
deleted file mode 100644
index 64997c1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_263_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:41:pom:5.0-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
-10:12:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_265_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_265_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_265_4.0-SNAPSHOT.ini
deleted file mode 100644
index 157eaf5..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_265_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,22 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:165:pom:7.0-SNAPSHOT
-1:165:pom:7.1-SNAPSHOT
-1:165:pom:9.3-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:103:pom:6403-SNAPSHOT
-1:105:pom:70-SNAPSHOT
-1:114:pom:2.50.16.busObj.1-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:167:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:266:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_265_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_265_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_265_4.1-SNAPSHOT.ini
deleted file mode 100644
index 081169f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_265_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,22 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:165:pom:7.0-SNAPSHOT
-1:165:pom:7.1-SNAPSHOT
-1:165:pom:9.3-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:103:pom:6403-SNAPSHOT
-1:105:pom:70-SNAPSHOT
-1:114:pom:2.50.16.busObj.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:167:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:266:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_266_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_266_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_266_4.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_266_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_266_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_266_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_266_4.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_266_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_268_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_268_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_268_4.0-SNAPSHOT.ini
deleted file mode 100644
index 6ec73f2..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_268_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:269:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_268_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_268_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_268_4.1-SNAPSHOT.ini
deleted file mode 100644
index 3dc7ebc..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_268_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:269:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_269_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_269_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_269_4.0-SNAPSHOT.ini
deleted file mode 100644
index 499dbac..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_269_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,16 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:218:pom:2.2.1-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_269_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_269_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_269_4.1-SNAPSHOT.ini
deleted file mode 100644
index 342874a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_269_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,16 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:218:pom:2.2.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_271_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_271_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_271_4.0-SNAPSHOT.ini
deleted file mode 100644
index 005e05e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_271_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,62 +0,0 @@
-[dependencies]
-10:174:pom:4.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:167:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:203:pom:4.0-SNAPSHOT
-10:272:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:285:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:235:pom:4.0-SNAPSHOT
-10:238:pom:4.0-SNAPSHOT
-10:286:pom:4.0-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:197:pom:5.1.3-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:290:pom:8.0.2.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:189:pom:4.0-SNAPSHOT
-10:202:pom:4.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-10:291:pom:4.0-SNAPSHOT
-10:292:pom:4.0-SNAPSHOT
-1:188:pom:1.9-SNAPSHOT
-1:296:pom:1.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_271_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_271_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_271_4.1-SNAPSHOT.ini
deleted file mode 100644
index b84bd73..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_271_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,65 +0,0 @@
-[dependencies]
-10:174:pom:4.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:167:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:203:pom:4.1-SNAPSHOT
-10:272:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:285:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:235:pom:4.1-SNAPSHOT
-10:238:pom:4.1-SNAPSHOT
-10:286:pom:4.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:197:pom:5.1.3-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:290:pom:8.0.2.0-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:359:pom:4.1-SNAPSHOT
-10:189:pom:4.1-SNAPSHOT
-10:202:pom:4.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-10:291:pom:4.1-SNAPSHOT
-10:292:pom:4.1-SNAPSHOT
-1:188:pom:1.9-SNAPSHOT
-1:296:pom:1.0-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_272_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_272_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_272_4.0-SNAPSHOT.ini
deleted file mode 100644
index f0a6411..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_272_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,41 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:273:pom:1.0.3-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:204:pom:1.6.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:274:pom:1.0.0-SNAPSHOT
-1:55:pom:3.8.1-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.2.12-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:275:pom:4.0-SNAPSHOT
-10:203:pom:4.0-SNAPSHOT
-10:276:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:216:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_272_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_272_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_272_4.1-SNAPSHOT.ini
deleted file mode 100644
index e6265b8..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_272_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,41 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:273:pom:1.0.3-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:204:pom:1.6.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:274:pom:1.0.0-SNAPSHOT
-1:55:pom:3.8.1-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.2.12-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:275:pom:4.1-SNAPSHOT
-10:203:pom:4.1-SNAPSHOT
-10:276:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:216:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_275_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_275_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_275_4.0-SNAPSHOT.ini
deleted file mode 100644
index 9af9506..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_275_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:204:pom:1.6.1-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.2.12-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:276:pom:4.0-SNAPSHOT
-10:216:pom:4.0-SNAPSHOT
-10:220:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
-10:284:pom:2.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_275_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_275_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_275_4.1-SNAPSHOT.ini
deleted file mode 100644
index 78b02f7..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_275_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,19 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:204:pom:1.6.1-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.2.12-SNAPSHOT
-1:55:pom:3.8.1-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:276:pom:4.1-SNAPSHOT
-10:216:pom:4.1-SNAPSHOT
-10:220:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
-10:284:pom:2.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_276_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_276_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_276_4.0-SNAPSHOT.ini
deleted file mode 100644
index f3215b8..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_276_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:74:pom:3.5.0-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:175:pom:2.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:175:pom:2.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:277:pom:4.0-SNAPSHOT
-10:280:pom:4.0-SNAPSHOT
-10:281:pom:4.0-SNAPSHOT
-10:177:pom:4.0-SNAPSHOT
[40/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java b/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java
deleted file mode 100644
index 6d67768..0000000
--- a/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java
+++ /dev/null
@@ -1,465 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.internal.test.util.TestFileProcessor;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayout;
-import org.eclipse.aether.transfer.ChecksumFailureException;
-import org.junit.Before;
-import org.junit.Test;
-
-public class ChecksumValidatorTest
-{
-
- private static class StubChecksumPolicy
- implements ChecksumPolicy
- {
-
- boolean inspectAll;
-
- boolean tolerateFailure;
-
- private List<String> callbacks = new ArrayList<String>();
-
- private Object conclusion;
-
- public boolean onChecksumMatch( String algorithm, int kind )
- {
- callbacks.add( String.format( "match(%s, %04x)", algorithm, kind ) );
- if ( inspectAll )
- {
- if ( conclusion == null )
- {
- conclusion = true;
- }
- return false;
- }
- return true;
- }
-
- public void onChecksumMismatch( String algorithm, int kind, ChecksumFailureException exception )
- throws ChecksumFailureException
- {
- callbacks.add( String.format( "mismatch(%s, %04x)", algorithm, kind ) );
- if ( inspectAll )
- {
- conclusion = exception;
- return;
- }
- throw exception;
- }
-
- public void onChecksumError( String algorithm, int kind, ChecksumFailureException exception )
- throws ChecksumFailureException
- {
- callbacks.add( String.format( "error(%s, %04x, %s)", algorithm, kind, exception.getCause().getMessage() ) );
- }
-
- public void onNoMoreChecksums()
- throws ChecksumFailureException
- {
- callbacks.add( String.format( "noMore()" ) );
- if ( conclusion instanceof ChecksumFailureException )
- {
- throw (ChecksumFailureException) conclusion;
- }
- else if ( !Boolean.TRUE.equals( conclusion ) )
- {
- throw new ChecksumFailureException( "no checksums" );
- }
- }
-
- public void onTransferRetry()
- {
- callbacks.add( String.format( "retry()" ) );
- }
-
- public boolean onTransferChecksumFailure( ChecksumFailureException exception )
- {
- callbacks.add( String.format( "fail(%s)", exception.getMessage() ) );
- return tolerateFailure;
- }
-
- void assertCallbacks( String... callbacks )
- {
- assertEquals( Arrays.asList( callbacks ), this.callbacks );
- }
-
- }
-
- private static class StubChecksumFetcher
- implements ChecksumValidator.ChecksumFetcher
- {
-
- Map<URI, Object> checksums = new HashMap<URI, Object>();
-
- List<File> checksumFiles = new ArrayList<File>();
-
- private List<URI> fetchedFiles = new ArrayList<URI>();
-
- public boolean fetchChecksum( URI remote, File local )
- throws Exception
- {
- fetchedFiles.add( remote );
- Object checksum = checksums.get( remote );
- if ( checksum == null )
- {
- return false;
- }
- if ( checksum instanceof Exception )
- {
- throw (Exception) checksum;
- }
- TestFileUtils.writeString( local, checksum.toString() );
- checksumFiles.add( local );
- return true;
- }
-
- void mock( String algo, Object value )
- {
- checksums.put( toUri( algo ), value );
- }
-
- void assertFetchedFiles( String... algos )
- {
- List<URI> expected = new ArrayList<URI>();
- for ( String algo : algos )
- {
- expected.add( toUri( algo ) );
- }
- assertEquals( expected, fetchedFiles );
- }
-
- private static URI toUri( String algo )
- {
- return newChecksum( algo ).getLocation();
- }
-
- }
-
- private static final String SHA1 = "SHA-1";
-
- private static final String MD5 = "MD5";
-
- private StubChecksumPolicy policy;
-
- private StubChecksumFetcher fetcher;
-
- private File dataFile;
-
- private static RepositoryLayout.Checksum newChecksum( String algo )
- {
- return RepositoryLayout.Checksum.forLocation( URI.create( "file" ), algo );
- }
-
- private List<RepositoryLayout.Checksum> newChecksums( String... algos )
- {
- List<RepositoryLayout.Checksum> checksums = new ArrayList<RepositoryLayout.Checksum>();
- for ( String algo : algos )
- {
- checksums.add( newChecksum( algo ) );
- }
- return checksums;
- }
-
- private ChecksumValidator newValidator( String... algos )
- {
- return new ChecksumValidator( new TestLoggerFactory().getLogger( "" ), dataFile, new TestFileProcessor(),
- fetcher, policy, newChecksums( algos ) );
- }
-
- private Map<String, ?> checksums( String... algoDigestPairs )
- {
- Map<String, Object> checksums = new LinkedHashMap<String, Object>();
- for ( int i = 0; i < algoDigestPairs.length; i += 2 )
- {
- String algo = algoDigestPairs[i];
- String digest = algoDigestPairs[i + 1];
- if ( digest == null )
- {
- checksums.put( algo, new IOException( "error" ) );
- }
- else
- {
- checksums.put( algo, digest );
- }
- }
- return checksums;
- }
-
- @Before
- public void init()
- throws Exception
- {
- dataFile = TestFileUtils.createTempFile( "" );
- dataFile.delete();
- policy = new StubChecksumPolicy();
- fetcher = new StubChecksumFetcher();
- }
-
- @Test
- public void testValidate_NullPolicy()
- throws Exception
- {
- policy = null;
- ChecksumValidator validator = newValidator( SHA1 );
- validator.validate( checksums( SHA1, "ignored" ), null );
- fetcher.assertFetchedFiles();
- }
-
- @Test
- public void testValidate_AcceptOnFirstMatch()
- throws Exception
- {
- ChecksumValidator validator = newValidator( SHA1 );
- fetcher.mock( SHA1, "foo" );
- validator.validate( checksums( SHA1, "foo" ), null );
- fetcher.assertFetchedFiles( SHA1 );
- policy.assertCallbacks( "match(SHA-1, 0000)" );
- }
-
- @Test
- public void testValidate_FailOnFirstMismatch()
- throws Exception
- {
- ChecksumValidator validator = newValidator( SHA1 );
- fetcher.mock( SHA1, "foo" );
- try
- {
- validator.validate( checksums( SHA1, "not-foo" ), null );
- fail( "expected exception" );
- }
- catch ( ChecksumFailureException e )
- {
- assertEquals( "foo", e.getExpected() );
- assertEquals( "not-foo", e.getActual() );
- assertTrue( e.isRetryWorthy() );
- }
- fetcher.assertFetchedFiles( SHA1 );
- policy.assertCallbacks( "mismatch(SHA-1, 0000)" );
- }
-
- @Test
- public void testValidate_AcceptOnEnd()
- throws Exception
- {
- policy.inspectAll = true;
- ChecksumValidator validator = newValidator( SHA1, MD5 );
- fetcher.mock( SHA1, "foo" );
- fetcher.mock( MD5, "bar" );
- validator.validate( checksums( SHA1, "foo", MD5, "bar" ), null );
- fetcher.assertFetchedFiles( SHA1, MD5 );
- policy.assertCallbacks( "match(SHA-1, 0000)", "match(MD5, 0000)", "noMore()" );
- }
-
- @Test
- public void testValidate_FailOnEnd()
- throws Exception
- {
- policy.inspectAll = true;
- ChecksumValidator validator = newValidator( SHA1, MD5 );
- fetcher.mock( SHA1, "foo" );
- fetcher.mock( MD5, "bar" );
- try
- {
- validator.validate( checksums( SHA1, "not-foo", MD5, "bar" ), null );
- fail( "expected exception" );
- }
- catch ( ChecksumFailureException e )
- {
- assertEquals( "foo", e.getExpected() );
- assertEquals( "not-foo", e.getActual() );
- assertTrue( e.isRetryWorthy() );
- }
- fetcher.assertFetchedFiles( SHA1, MD5 );
- policy.assertCallbacks( "mismatch(SHA-1, 0000)", "match(MD5, 0000)", "noMore()" );
- }
-
- @Test
- public void testValidate_InlinedBeforeExternal()
- throws Exception
- {
- policy.inspectAll = true;
- ChecksumValidator validator = newValidator( SHA1, MD5 );
- fetcher.mock( SHA1, "foo" );
- fetcher.mock( MD5, "bar" );
- validator.validate( checksums( SHA1, "foo", MD5, "bar" ), checksums( SHA1, "foo", MD5, "bar" ) );
- fetcher.assertFetchedFiles( SHA1, MD5 );
- policy.assertCallbacks( "match(SHA-1, 0001)", "match(MD5, 0001)", "match(SHA-1, 0000)", "match(MD5, 0000)",
- "noMore()" );
- }
-
- @Test
- public void testValidate_CaseInsensitive()
- throws Exception
- {
- policy.inspectAll = true;
- ChecksumValidator validator = newValidator( SHA1 );
- fetcher.mock( SHA1, "FOO" );
- validator.validate( checksums( SHA1, "foo" ), checksums( SHA1, "foo" ) );
- policy.assertCallbacks( "match(SHA-1, 0001)", "match(SHA-1, 0000)", "noMore()" );
- }
-
- @Test
- public void testValidate_MissingRemoteChecksum()
- throws Exception
- {
- ChecksumValidator validator = newValidator( SHA1, MD5 );
- fetcher.mock( MD5, "bar" );
- validator.validate( checksums( MD5, "bar" ), null );
- fetcher.assertFetchedFiles( SHA1, MD5 );
- policy.assertCallbacks( "match(MD5, 0000)" );
- }
-
- @Test
- public void testValidate_InaccessibleRemoteChecksum()
- throws Exception
- {
- ChecksumValidator validator = newValidator( SHA1, MD5 );
- fetcher.mock( SHA1, new IOException( "inaccessible" ) );
- fetcher.mock( MD5, "bar" );
- validator.validate( checksums( MD5, "bar" ), null );
- fetcher.assertFetchedFiles( SHA1, MD5 );
- policy.assertCallbacks( "error(SHA-1, 0000, inaccessible)", "match(MD5, 0000)" );
- }
-
- @Test
- public void testValidate_InaccessibleLocalChecksum()
- throws Exception
- {
- ChecksumValidator validator = newValidator( SHA1, MD5 );
- fetcher.mock( SHA1, "foo" );
- fetcher.mock( MD5, "bar" );
- validator.validate( checksums( SHA1, null, MD5, "bar" ), null );
- fetcher.assertFetchedFiles( MD5 );
- policy.assertCallbacks( "error(SHA-1, 0000, error)", "match(MD5, 0000)" );
- }
-
- @Test
- public void testHandle_Accept()
- throws Exception
- {
- policy.tolerateFailure = true;
- ChecksumValidator validator = newValidator( SHA1 );
- assertEquals( true, validator.handle( new ChecksumFailureException( "accept" ) ) );
- policy.assertCallbacks( "fail(accept)" );
- }
-
- @Test
- public void testHandle_Reject()
- throws Exception
- {
- policy.tolerateFailure = false;
- ChecksumValidator validator = newValidator( SHA1 );
- assertEquals( false, validator.handle( new ChecksumFailureException( "reject" ) ) );
- policy.assertCallbacks( "fail(reject)" );
- }
-
- @Test
- public void testRetry_ResetPolicy()
- throws Exception
- {
- ChecksumValidator validator = newValidator( SHA1 );
- validator.retry();
- policy.assertCallbacks( "retry()" );
- }
-
- @Test
- public void testRetry_RemoveTempFiles()
- throws Exception
- {
- ChecksumValidator validator = newValidator( SHA1 );
- fetcher.mock( SHA1, "foo" );
- validator.validate( checksums( SHA1, "foo" ), null );
- fetcher.assertFetchedFiles( SHA1 );
- assertEquals( 1, fetcher.checksumFiles.size() );
- for ( File file : fetcher.checksumFiles )
- {
- assertTrue( file.getAbsolutePath(), file.isFile() );
- }
- validator.retry();
- for ( File file : fetcher.checksumFiles )
- {
- assertFalse( file.getAbsolutePath(), file.exists() );
- }
- }
-
- @Test
- public void testCommit_SaveChecksumFiles()
- throws Exception
- {
- policy.inspectAll = true;
- ChecksumValidator validator = newValidator( SHA1, MD5 );
- fetcher.mock( MD5, "bar" );
- validator.validate( checksums( SHA1, "foo", MD5, "bar" ), checksums( SHA1, "foo" ) );
- assertEquals( 1, fetcher.checksumFiles.size() );
- for ( File file : fetcher.checksumFiles )
- {
- assertTrue( file.getAbsolutePath(), file.isFile() );
- }
- validator.commit();
- File checksumFile = new File( dataFile.getPath() + ".sha1" );
- assertTrue( checksumFile.getAbsolutePath(), checksumFile.isFile() );
- assertEquals( "foo", TestFileUtils.readString( checksumFile ) );
- checksumFile = new File( dataFile.getPath() + ".md5" );
- assertTrue( checksumFile.getAbsolutePath(), checksumFile.isFile() );
- assertEquals( "bar", TestFileUtils.readString( checksumFile ) );
- for ( File file : fetcher.checksumFiles )
- {
- assertFalse( file.getAbsolutePath(), file.exists() );
- }
- }
-
- @Test
- public void testClose_RemoveTempFiles()
- throws Exception
- {
- ChecksumValidator validator = newValidator( SHA1 );
- fetcher.mock( SHA1, "foo" );
- validator.validate( checksums( SHA1, "foo" ), null );
- fetcher.assertFetchedFiles( SHA1 );
- assertEquals( 1, fetcher.checksumFiles.size() );
- for ( File file : fetcher.checksumFiles )
- {
- assertTrue( file.getAbsolutePath(), file.isFile() );
- }
- validator.close();
- for ( File file : fetcher.checksumFiles )
- {
- assertFalse( file.getAbsolutePath(), file.exists() );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java b/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java
deleted file mode 100644
index edfeee9..0000000
--- a/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java
+++ /dev/null
@@ -1,327 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * 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 static org.junit.Assert.*;
-import static org.junit.Assume.*;
-
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.nio.channels.FileLock;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.concurrent.CountDownLatch;
-
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class PartialFileTest
-{
-
- private static class StubRemoteAccessChecker
- implements PartialFile.RemoteAccessChecker
- {
-
- Exception exception;
-
- int invocations;
-
- public void checkRemoteAccess()
- throws Exception
- {
- invocations++;
- if ( exception != null )
- {
- throw exception;
- }
- }
-
- }
-
- private static class ConcurrentWriter
- extends Thread
- {
-
- private final File dstFile;
-
- private final File partFile;
-
- private final File lockFile;
-
- private final CountDownLatch locked;
-
- private final int sleep;
-
- volatile int length;
-
- Exception error;
-
- public ConcurrentWriter( File dstFile, int sleep, int length )
- throws InterruptedException
- {
- super( "ConcurrentWriter-" + dstFile.getAbsolutePath() );
- this.dstFile = dstFile;
- partFile = new File( dstFile.getPath() + PartialFile.EXT_PART );
- lockFile = new File( partFile.getPath() + PartialFile.EXT_LOCK );
- this.sleep = sleep;
- this.length = length;
- locked = new CountDownLatch( 1 );
- start();
- locked.await();
- }
-
- @Override
- public void run()
- {
- try
- {
- RandomAccessFile raf = new RandomAccessFile( lockFile, "rw" );
- try
- {
- FileLock lock = raf.getChannel().lock( 0, 1, false );
- locked.countDown();
- FileOutputStream fos = new FileOutputStream( partFile );
- try
- {
- for ( int i = 0, n = Math.abs( length ); i < n; i++ )
- {
- for ( long start = System.currentTimeMillis(); System.currentTimeMillis() - start < sleep; )
- {
- Thread.sleep( 10 );
- }
- fos.write( 65 );
- fos.flush();
- System.out.println( " " + System.currentTimeMillis() + " Wrote byte " + ( i + 1 ) + "/"
- + n );
- }
- if ( length >= 0 && !dstFile.setLastModified( System.currentTimeMillis() ) )
- {
- throw new IOException( "Could not update destination file" );
- }
- }
- finally
- {
- fos.close();
- }
- lock.release();
- }
- finally
- {
- raf.close();
- lockFile.delete();
- }
- }
- catch ( Exception e )
- {
- error = e;
- }
- }
-
- }
-
- private static final boolean PROPER_LOCK_SUPPORT;
-
- static
- {
- String javaVersion = System.getProperty( "java.version" ).trim();
- boolean notJava5 = !javaVersion.startsWith( "1.5." );
- String osName = System.getProperty( "os.name" ).toLowerCase( Locale.ENGLISH );
- boolean windows = osName.contains( "windows" );
- PROPER_LOCK_SUPPORT = notJava5 || windows;
- }
-
- private StubRemoteAccessChecker remoteAccessChecker;
-
- private File dstFile;
-
- private File partFile;
-
- private File lockFile;
-
- private List<Closeable> closeables;
-
- private PartialFile newPartialFile( long resumeThreshold, int requestTimeout )
- throws Exception
- {
- PartialFile.Factory factory =
- new PartialFile.Factory( resumeThreshold >= 0, resumeThreshold, requestTimeout,
- new TestLoggerFactory().getLogger( "" ) );
- PartialFile partFile = factory.newInstance( dstFile, remoteAccessChecker );
- if ( partFile != null )
- {
- closeables.add( partFile );
- }
- return partFile;
- }
-
- @Before
- public void init()
- throws Exception
- {
- closeables = new ArrayList<Closeable>();
- remoteAccessChecker = new StubRemoteAccessChecker();
- dstFile = TestFileUtils.createTempFile( "Hello World!" );
- partFile = new File( dstFile.getPath() + PartialFile.EXT_PART );
- lockFile = new File( partFile.getPath() + PartialFile.EXT_LOCK );
- }
-
- @After
- public void exit()
- {
- for ( Closeable closeable : closeables )
- {
- try
- {
- closeable.close();
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- }
- }
- }
-
- @Test
- public void testCloseNonResumableFile()
- throws Exception
- {
- PartialFile partialFile = newPartialFile( -1, 100 );
- assertNotNull( partialFile );
- assertNotNull( partialFile.getFile() );
- assertTrue( partialFile.getFile().getAbsolutePath(), partialFile.getFile().isFile() );
- partialFile.close();
- assertFalse( partialFile.getFile().getAbsolutePath(), partialFile.getFile().exists() );
- }
-
- @Test
- public void testCloseResumableFile()
- throws Exception
- {
- PartialFile partialFile = newPartialFile( 0, 100 );
- assertNotNull( partialFile );
- assertNotNull( partialFile.getFile() );
- assertTrue( partialFile.getFile().getAbsolutePath(), partialFile.getFile().isFile() );
- assertEquals( partFile, partialFile.getFile() );
- assertTrue( lockFile.getAbsolutePath(), lockFile.isFile() );
- partialFile.close();
- assertTrue( partialFile.getFile().getAbsolutePath(), partialFile.getFile().isFile() );
- assertFalse( lockFile.getAbsolutePath(), lockFile.exists() );
- }
-
- @Test
- public void testResumableFileCreationError()
- throws Exception
- {
- assertTrue( partFile.getAbsolutePath(), partFile.mkdirs() );
- PartialFile partialFile = newPartialFile( 0, 100 );
- assertNotNull( partialFile );
- assertFalse( partialFile.isResume() );
- assertFalse( lockFile.getAbsolutePath(), lockFile.exists() );
- }
-
- @Test
- public void testResumeThreshold()
- throws Exception
- {
- PartialFile partialFile = newPartialFile( 0, 100 );
- assertNotNull( partialFile );
- assertTrue( partialFile.isResume() );
- partialFile.close();
- partialFile = newPartialFile( 1, 100 );
- assertNotNull( partialFile );
- assertFalse( partialFile.isResume() );
- partialFile.close();
- }
-
- @Test( timeout = 10000 )
- public void testResumeConcurrently_RequestTimeout()
- throws Exception
- {
- assumeTrue( PROPER_LOCK_SUPPORT );
- ConcurrentWriter writer = new ConcurrentWriter( dstFile, 5 * 1000, 1 );
- try
- {
- newPartialFile( 0, 1000 );
- fail( "expected exception" );
- }
- catch ( Exception e )
- {
- assertTrue( e.getMessage().contains( "Timeout" ) );
- }
- writer.interrupt();
- writer.join();
- }
-
- @Test( timeout = 10000 )
- public void testResumeConcurrently_AwaitCompletion_ConcurrentWriterSucceeds()
- throws Exception
- {
- assumeTrue( PROPER_LOCK_SUPPORT );
- assertTrue( dstFile.setLastModified( System.currentTimeMillis() - 60 * 1000 ) );
- ConcurrentWriter writer = new ConcurrentWriter( dstFile, 100, 10 );
- assertNull( newPartialFile( 0, 500 ) );
- writer.join();
- assertNull( writer.error );
- assertEquals( 1, remoteAccessChecker.invocations );
- }
-
- @Test( timeout = 10000 )
- public void testResumeConcurrently_AwaitCompletion_ConcurrentWriterFails()
- throws Exception
- {
- assumeTrue( PROPER_LOCK_SUPPORT );
- assertTrue( dstFile.setLastModified( System.currentTimeMillis() - 60 * 1000 ) );
- ConcurrentWriter writer = new ConcurrentWriter( dstFile, 100, -10 );
- PartialFile partialFile = newPartialFile( 0, 500 );
- assertNotNull( partialFile );
- assertTrue( partialFile.isResume() );
- writer.join();
- assertNull( writer.error );
- assertEquals( 1, remoteAccessChecker.invocations );
- }
-
- @Test( timeout = 10000 )
- public void testResumeConcurrently_CheckRemoteAccess()
- throws Exception
- {
- assumeTrue( PROPER_LOCK_SUPPORT );
- remoteAccessChecker.exception = new IOException( "missing" );
- ConcurrentWriter writer = new ConcurrentWriter( dstFile, 1000, 1 );
- try
- {
- newPartialFile( 0, 1000 );
- fail( "expected exception" );
- }
- catch ( Exception e )
- {
- assertSame( remoteAccessChecker.exception, e );
- }
- writer.interrupt();
- writer.join();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/pom.xml
----------------------------------------------------------------------
diff --git a/aether-impl/pom.xml b/aether-impl/pom.xml
deleted file mode 100644
index eb7c83a..0000000
--- a/aether-impl/pom.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- 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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>aether-impl</artifactId>
-
- <name>Aether Implementation</name>
- <description>
- An implementation of the repository system.
- </description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-spi</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-util</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.eclipse.sisu</groupId>
- <artifactId>org.eclipse.sisu.inject</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.sonatype.sisu</groupId>
- <artifactId>sisu-guice</artifactId>
- <classifier>no_aop</classifier>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-test-util</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.sisu</groupId>
- <artifactId>sisu-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-</project>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/AetherModule.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/AetherModule.java b/aether-impl/src/main/java/org/eclipse/aether/impl/AetherModule.java
deleted file mode 100644
index 4e05ec2..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/AetherModule.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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 ready-made Guice module that sets up bindings for all components from this library. To acquire a complete
- * repository system, clients need to bind an artifact descriptor reader, a version resolver, a version range resolver,
- * zero or more metadata generator factories, some repository connector and transporter factories to access remote
- * repositories.
- *
- * @deprecated Use {@link org.eclipse.aether.impl.guice.AetherModule} instead.
- */
-@Deprecated
-public final class AetherModule
- extends org.eclipse.aether.impl.guice.AetherModule
-{
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactDescriptorReader.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactDescriptorReader.java b/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactDescriptorReader.java
deleted file mode 100644
index 66f3528..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactDescriptorReader.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.resolution.ArtifactDescriptorException;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-
-/**
- * Provides information about an artifact that is relevant to transitive dependency resolution. Each artifact is expected
- * to have an accompanying <em>artifact descriptor</em> that among others lists the direct dependencies of the artifact.
- *
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface ArtifactDescriptorReader
-{
-
- /**
- * Gets information about an artifact like its direct dependencies and potential relocations. Implementations must
- * respect the {@link RepositorySystemSession#getArtifactDescriptorPolicy() artifact descriptor policy} of the
- * session when dealing with certain error cases.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The descriptor request, must not be {@code null}
- * @return The descriptor result, never {@code null}.
- * @throws ArtifactDescriptorException If the artifact descriptor could not be read.
- * @see RepositorySystem#readArtifactDescriptor(RepositorySystemSession, ArtifactDescriptorRequest)
- */
- ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session, ArtifactDescriptorRequest request )
- throws ArtifactDescriptorException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactResolver.java b/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactResolver.java
deleted file mode 100644
index 3b43592..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactResolver.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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 org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResolutionException;
-import org.eclipse.aether.resolution.ArtifactResult;
-
-/**
- * Resolves artifacts, that is gets a local filesystem path to their binary contents.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface ArtifactResolver
-{
-
- /**
- * Resolves the path for an artifact. The artifact will be downloaded to the local repository if necessary. An
- * artifact that is already resolved will be skipped and is not re-resolved. Note that this method assumes that any
- * relocations have already been processed and the artifact coordinates are used as-is.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The resolution request, must not be {@code null}.
- * @return The resolution result, never {@code null}.
- * @throws ArtifactResolutionException If the artifact could not be resolved.
- * @see Artifact#getFile()
- * @see RepositorySystem#resolveArtifact(RepositorySystemSession, ArtifactRequest)
- */
- ArtifactResult resolveArtifact( RepositorySystemSession session, ArtifactRequest request )
- throws ArtifactResolutionException;
-
- /**
- * Resolves the paths for a collection of artifacts. Artifacts will be downloaded to the local repository if
- * necessary. Artifacts that are already resolved will be skipped and are not re-resolved. Note that this method
- * assumes that any relocations have already been processed and the artifact coordinates are used as-is.
- *
- * @param session The repository session, must not be {@code null}.
- * @param requests The resolution requests, must not be {@code null}.
- * @return The resolution results (in request order), never {@code null}.
- * @throws ArtifactResolutionException If any artifact could not be resolved.
- * @see Artifact#getFile()
- * @see RepositorySystem#resolveArtifacts(RepositorySystemSession, Collection)
- */
- List<ArtifactResult> resolveArtifacts( RepositorySystemSession session,
- Collection<? extends ArtifactRequest> requests )
- throws ArtifactResolutionException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java b/aether-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java
deleted file mode 100644
index 4d71b88..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java
+++ /dev/null
@@ -1,347 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.lang.reflect.Constructor;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.internal.impl.DefaultArtifactResolver;
-import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
-import org.eclipse.aether.internal.impl.DefaultDependencyCollector;
-import org.eclipse.aether.internal.impl.DefaultDeployer;
-import org.eclipse.aether.internal.impl.DefaultFileProcessor;
-import org.eclipse.aether.internal.impl.DefaultInstaller;
-import org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider;
-import org.eclipse.aether.internal.impl.DefaultMetadataResolver;
-import org.eclipse.aether.internal.impl.DefaultOfflineController;
-import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
-import org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider;
-import org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher;
-import org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider;
-import org.eclipse.aether.internal.impl.DefaultRepositorySystem;
-import org.eclipse.aether.internal.impl.DefaultSyncContextFactory;
-import org.eclipse.aether.internal.impl.DefaultTransporterProvider;
-import org.eclipse.aether.internal.impl.DefaultUpdateCheckManager;
-import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
-import org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory;
-import org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory;
-import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
-import org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayoutFactory;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
-import org.eclipse.aether.spi.connector.transport.TransporterProvider;
-import org.eclipse.aether.spi.io.FileProcessor;
-import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.LoggerFactory;
-
-/**
- * A simple service locator that is already setup with all components from this library. To acquire a complete
- * repository system, clients need to add an artifact descriptor reader, a version resolver, a version range resolver
- * and optionally some repository connector and transporter factories to access remote repositories. Once the locator is
- * fully populated, the repository system can be created like this:
- *
- * <pre>
- * RepositorySystem repoSystem = serviceLocator.getService( RepositorySystem.class );
- * </pre>
- *
- * <em>Note:</em> This class is not thread-safe. Clients are expected to create the service locator and the repository
- * system on a single thread.
- */
-public final class DefaultServiceLocator
- implements ServiceLocator
-{
-
- private class Entry<T>
- {
-
- private final Class<T> type;
-
- private final Collection<Object> providers;
-
- private List<T> instances;
-
- public Entry( Class<T> type )
- {
- if ( type == null )
- {
- throw new IllegalArgumentException( "service type not specified" );
- }
- this.type = type;
- providers = new LinkedHashSet<Object>( 8 );
- }
-
- public synchronized void setServices( T... services )
- {
- providers.clear();
- if ( services != null )
- {
- for ( T service : services )
- {
- if ( service == null )
- {
- throw new IllegalArgumentException( "service instance not specified" );
- }
- providers.add( service );
- }
- }
- instances = null;
- }
-
- public synchronized void setService( Class<? extends T> impl )
- {
- providers.clear();
- addService( impl );
- }
-
- public synchronized void addService( Class<? extends T> impl )
- {
- if ( impl == null )
- {
- throw new IllegalArgumentException( "implementation class not specified" );
- }
- providers.add( impl );
- instances = null;
- }
-
- public T getInstance()
- {
- List<T> instances = getInstances();
- return instances.isEmpty() ? null : instances.get( 0 );
- }
-
- public synchronized List<T> getInstances()
- {
- if ( instances == null )
- {
- instances = new ArrayList<T>( providers.size() );
- for ( Object provider : providers )
- {
- T instance;
- if ( provider instanceof Class )
- {
- instance = newInstance( (Class<?>) provider );
- }
- else
- {
- instance = type.cast( provider );
- }
- if ( instance != null )
- {
- instances.add( instance );
- }
- }
- instances = Collections.unmodifiableList( instances );
- }
- return instances;
- }
-
- private T newInstance( Class<?> impl )
- {
- try
- {
- Constructor<?> constr = impl.getDeclaredConstructor();
- if ( !Modifier.isPublic( constr.getModifiers() ) )
- {
- constr.setAccessible( true );
- }
- Object obj = constr.newInstance();
-
- T instance = type.cast( obj );
- if ( instance instanceof Service )
- {
- ( (Service) instance ).initService( DefaultServiceLocator.this );
- }
- return instance;
- }
- catch ( Exception e )
- {
- serviceCreationFailed( type, impl, e );
- }
- catch ( LinkageError e )
- {
- serviceCreationFailed( type, impl, e );
- }
- return null;
- }
-
- }
-
- private final Map<Class<?>, Entry<?>> entries;
-
- private ErrorHandler errorHandler;
-
- /**
- * Creates a new service locator that already knows about all service implementations included this library.
- */
- public DefaultServiceLocator()
- {
- entries = new HashMap<Class<?>, Entry<?>>();
-
- addService( RepositorySystem.class, DefaultRepositorySystem.class );
- addService( ArtifactResolver.class, DefaultArtifactResolver.class );
- addService( DependencyCollector.class, DefaultDependencyCollector.class );
- addService( Deployer.class, DefaultDeployer.class );
- addService( Installer.class, DefaultInstaller.class );
- addService( MetadataResolver.class, DefaultMetadataResolver.class );
- addService( RepositoryLayoutProvider.class, DefaultRepositoryLayoutProvider.class );
- addService( RepositoryLayoutFactory.class, Maven2RepositoryLayoutFactory.class );
- addService( TransporterProvider.class, DefaultTransporterProvider.class );
- addService( ChecksumPolicyProvider.class, DefaultChecksumPolicyProvider.class );
- addService( RepositoryConnectorProvider.class, DefaultRepositoryConnectorProvider.class );
- addService( RemoteRepositoryManager.class, DefaultRemoteRepositoryManager.class );
- addService( UpdateCheckManager.class, DefaultUpdateCheckManager.class );
- addService( UpdatePolicyAnalyzer.class, DefaultUpdatePolicyAnalyzer.class );
- addService( FileProcessor.class, DefaultFileProcessor.class );
- addService( SyncContextFactory.class, DefaultSyncContextFactory.class );
- addService( RepositoryEventDispatcher.class, DefaultRepositoryEventDispatcher.class );
- addService( OfflineController.class, DefaultOfflineController.class );
- addService( LocalRepositoryProvider.class, DefaultLocalRepositoryProvider.class );
- addService( LocalRepositoryManagerFactory.class, SimpleLocalRepositoryManagerFactory.class );
- addService( LocalRepositoryManagerFactory.class, EnhancedLocalRepositoryManagerFactory.class );
- if ( Slf4jLoggerFactory.isSlf4jAvailable() )
- {
- addService( LoggerFactory.class, Slf4jLoggerFactory.class );
- }
- }
-
- private <T> Entry<T> getEntry( Class<T> type, boolean create )
- {
- if ( type == null )
- {
- throw new IllegalArgumentException( "service type not specified" );
- }
- @SuppressWarnings( "unchecked" )
- Entry<T> entry = (Entry<T>) entries.get( type );
- if ( entry == null && create )
- {
- entry = new Entry<T>( type );
- entries.put( type, entry );
- }
- return entry;
- }
-
- /**
- * Sets the implementation class for a service. The specified class must have a no-arg constructor (of any
- * visibility). If the service implementation itself requires other services for its operation, it should implement
- * {@link Service} to gain access to this service locator.
- *
- * @param <T> The service type.
- * @param type The interface describing the service, must not be {@code null}.
- * @param impl The implementation class of the service, must not be {@code null}.
- * @return This locator for chaining, never {@code null}.
- */
- public <T> DefaultServiceLocator setService( Class<T> type, Class<? extends T> impl )
- {
- getEntry( type, true ).setService( impl );
- return this;
- }
-
- /**
- * Adds an implementation class for a service. The specified class must have a no-arg constructor (of any
- * visibility). If the service implementation itself requires other services for its operation, it should implement
- * {@link Service} to gain access to this service locator.
- *
- * @param <T> The service type.
- * @param type The interface describing the service, must not be {@code null}.
- * @param impl The implementation class of the service, must not be {@code null}.
- * @return This locator for chaining, never {@code null}.
- */
- public <T> DefaultServiceLocator addService( Class<T> type, Class<? extends T> impl )
- {
- getEntry( type, true ).addService( impl );
- return this;
- }
-
- /**
- * Sets the instances for a service.
- *
- * @param <T> The service type.
- * @param type The interface describing the service, must not be {@code null}.
- * @param services The instances of the service, may be {@code null} but must not contain {@code null} elements.
- * @return This locator for chaining, never {@code null}.
- */
- public <T> DefaultServiceLocator setServices( Class<T> type, T... services )
- {
- getEntry( type, true ).setServices( services );
- return this;
- }
-
- public <T> T getService( Class<T> type )
- {
- Entry<T> entry = getEntry( type, false );
- return ( entry != null ) ? entry.getInstance() : null;
- }
-
- public <T> List<T> getServices( Class<T> type )
- {
- Entry<T> entry = getEntry( type, false );
- return ( entry != null ) ? entry.getInstances() : null;
- }
-
- private void serviceCreationFailed( Class<?> type, Class<?> impl, Throwable exception )
- {
- if ( errorHandler != null )
- {
- errorHandler.serviceCreationFailed( type, impl, exception );
- }
- }
-
- /**
- * Sets the error handler to use.
- *
- * @param errorHandler The error handler to use, may be {@code null} to ignore/swallow errors.
- */
- public void setErrorHandler( ErrorHandler errorHandler )
- {
- this.errorHandler = errorHandler;
- }
-
- /**
- * A hook to customize the handling of errors encountered while locating a service implementation.
- */
- public abstract static class ErrorHandler
- {
-
- /**
- * Handles errors during creation of a service. The default implemention does nothing.
- *
- * @param type The interface describing the service, must not be {@code null}.
- * @param impl The implementation class of the service, must not be {@code null}.
- * @param exception The error that occurred while trying to instantiate the implementation class, must not be
- * {@code null}.
- */
- public void serviceCreationFailed( Class<?> type, Class<?> impl, Throwable exception )
- {
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/DependencyCollector.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/DependencyCollector.java b/aether-impl/src/main/java/org/eclipse/aether/impl/DependencyCollector.java
deleted file mode 100644
index 9fa5817..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/DependencyCollector.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.collection.CollectRequest;
-import org.eclipse.aether.collection.CollectResult;
-import org.eclipse.aether.collection.DependencyCollectionException;
-
-/**
- * Given a collection of direct dependencies, recursively gathers their transitive dependencies and calculates the
- * dependency graph.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface DependencyCollector
-{
-
- /**
- * Collects the transitive dependencies of some artifacts and builds a dependency graph. Note that this operation is
- * only concerned about determining the coordinates of the transitive dependencies and does not actually resolve the
- * artifact files. The supplied session carries various hooks to customize the dependency graph that must be invoked
- * throughout the operation.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The collection request, must not be {@code null}.
- * @return The collection result, never {@code null}.
- * @throws DependencyCollectionException If the dependency tree could not be built.
- * @see RepositorySystemSession#getDependencyTraverser()
- * @see RepositorySystemSession#getDependencyManager()
- * @see RepositorySystemSession#getDependencySelector()
- * @see RepositorySystemSession#getVersionFilter()
- * @see RepositorySystemSession#getDependencyGraphTransformer()
- * @see RepositorySystem#collectDependencies(RepositorySystemSession, CollectRequest)
- */
- CollectResult collectDependencies( RepositorySystemSession session, CollectRequest request )
- throws DependencyCollectionException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/Deployer.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/Deployer.java b/aether-impl/src/main/java/org/eclipse/aether/impl/Deployer.java
deleted file mode 100644
index 8f6b8fc..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/Deployer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.deployment.DeployRequest;
-import org.eclipse.aether.deployment.DeployResult;
-import org.eclipse.aether.deployment.DeploymentException;
-
-/**
- * Publishes artifacts to a remote repository.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface Deployer
-{
-
- /**
- * Uploads a collection of artifacts and their accompanying metadata to a remote repository.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The deployment request, must not be {@code null}.
- * @return The deployment result, never {@code null}.
- * @throws DeploymentException If any artifact/metadata from the request could not be deployed.
- * @see RepositorySystem#deploy(RepositorySystemSession, DeployRequest)
- * @see MetadataGeneratorFactory#newInstance(RepositorySystemSession, DeployRequest)
- */
- DeployResult deploy( RepositorySystemSession session, DeployRequest request )
- throws DeploymentException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/Installer.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/Installer.java b/aether-impl/src/main/java/org/eclipse/aether/impl/Installer.java
deleted file mode 100644
index a9ebed6..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/Installer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.installation.InstallRequest;
-import org.eclipse.aether.installation.InstallResult;
-import org.eclipse.aether.installation.InstallationException;
-
-/**
- * Publishes artifacts to the local repository.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface Installer
-{
-
- /**
- * Installs a collection of artifacts and their accompanying metadata to the local repository.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The installation request, must not be {@code null}.
- * @return The installation result, never {@code null}.
- * @throws InstallationException If any artifact/metadata from the request could not be installed.
- * @see RepositorySystem#install(RepositorySystemSession, InstallRequest)
- * @see MetadataGeneratorFactory#newInstance(RepositorySystemSession, InstallRequest)
- */
- InstallResult install( RepositorySystemSession session, InstallRequest request )
- throws InstallationException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/LocalRepositoryProvider.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/LocalRepositoryProvider.java b/aether-impl/src/main/java/org/eclipse/aether/impl/LocalRepositoryProvider.java
deleted file mode 100644
index d5f4be2..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/LocalRepositoryProvider.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
-
-/**
- * Retrieves a local repository manager from the installed local repository manager factories.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface LocalRepositoryProvider
-{
-
- /**
- * Creates a new manager for the specified local repository. If the specified local repository has no type, the
- * default local repository type of the system will be used. <em>Note:</em> It is expected that this method
- * invocation is one of the last steps of setting up a new session, in particular any configuration properties
- * should have been set already.
- *
- * @param session The repository system session from which to configure the manager, must not be {@code null}.
- * @param localRepository The local repository to create a manager for, must not be {@code null}.
- * @return The local repository manager, never {@code null}.
- * @throws NoLocalRepositoryManagerException If the specified repository type is not recognized or no base directory
- * is given.
- * @see RepositorySystem#newLocalRepositoryManager(RepositorySystemSession, LocalRepository)
- */
- LocalRepositoryManager newLocalRepositoryManager( RepositorySystemSession session, LocalRepository localRepository )
- throws NoLocalRepositoryManagerException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGenerator.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGenerator.java b/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGenerator.java
deleted file mode 100644
index b4356cc..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGenerator.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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 org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-
-/**
- * A metadata generator that participates in the installation/deployment of artifacts.
- *
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface MetadataGenerator
-{
-
- /**
- * Prepares the generator to transform artifacts.
- *
- * @param artifacts The artifacts to install/deploy, must not be {@code null}.
- * @return The metadata to process (e.g. merge with existing metadata) before artifact transformations, never
- * {@code null}.
- */
- Collection<? extends Metadata> prepare( Collection<? extends Artifact> artifacts );
-
- /**
- * Enables the metadata generator to transform the specified artifact.
- *
- * @param artifact The artifact to transform, must not be {@code null}.
- * @return The transformed artifact (or just the input artifact), never {@code null}.
- */
- Artifact transformArtifact( Artifact artifact );
-
- /**
- * Allows for metadata generation based on the transformed artifacts.
- *
- * @param artifacts The (transformed) artifacts to install/deploy, must not be {@code null}.
- * @return The additional metadata to process after artifact transformations, never {@code null}.
- */
- Collection<? extends Metadata> finish( Collection<? extends Artifact> artifacts );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGeneratorFactory.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGeneratorFactory.java b/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGeneratorFactory.java
deleted file mode 100644
index 5f2b740..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGeneratorFactory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.deployment.DeployRequest;
-import org.eclipse.aether.installation.InstallRequest;
-
-/**
- * A factory to create metadata generators. Metadata generators can contribute additional metadata during the
- * installation/deployment of artifacts.
- *
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface MetadataGeneratorFactory
-{
-
- /**
- * Creates a new metadata generator for the specified install request.
- *
- * @param session The repository system session from which to configure the generator, must not be {@code null}.
- * @param request The install request the metadata generator is used for, must not be {@code null}.
- * @return The metadata generator for the request or {@code null} if none.
- */
- MetadataGenerator newInstance( RepositorySystemSession session, InstallRequest request );
-
- /**
- * Creates a new metadata generator for the specified deploy request.
- *
- * @param session The repository system session from which to configure the generator, must not be {@code null}.
- * @param request The deploy request the metadata generator is used for, must not be {@code null}.
- * @return The metadata generator for the request or {@code null} if none.
- */
- MetadataGenerator newInstance( RepositorySystemSession session, DeployRequest request );
-
- /**
- * The priority of this factory. Factories with higher priority are invoked before those with lower priority.
- *
- * @return The priority of this factory.
- */
- float getPriority();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataResolver.java b/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataResolver.java
deleted file mode 100644
index 886e856..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataResolver.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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 org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.resolution.MetadataRequest;
-import org.eclipse.aether.resolution.MetadataResult;
-
-/**
- * Resolves metadata, that is gets a local filesystem path to their binary contents.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface MetadataResolver
-{
-
- /**
- * Resolves the paths for a collection of metadata. Metadata will be downloaded to the local repository if
- * necessary, e.g. because it hasn't been cached yet or the cache is deemed outdated.
- *
- * @param session The repository session, must not be {@code null}.
- * @param requests The resolution requests, must not be {@code null}.
- * @return The resolution results (in request order), never {@code null}.
- * @see Metadata#getFile()
- * @see RepositorySystem#resolveMetadata(RepositorySystemSession, Collection)
- */
- List<MetadataResult> resolveMetadata( RepositorySystemSession session,
- Collection<? extends MetadataRequest> requests );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/OfflineController.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/OfflineController.java b/aether-impl/src/main/java/org/eclipse/aether/impl/OfflineController.java
deleted file mode 100644
index 22f5a4b..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/OfflineController.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transfer.RepositoryOfflineException;
-
-/**
- * Determines whether a remote repository is accessible in offline mode.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface OfflineController
-{
-
- /**
- * Determines whether the specified repository is accessible if the system was in offline mode. A simple
- * implementation might unconditionally throw {@link RepositoryOfflineException} to block all remote repository
- * access when in offline mode. More sophisticated implementations might inspect
- * {@link RepositorySystemSession#getConfigProperties() configuration properties} of the session to check for some
- * kind of whitelist that allows certain remote repositories even when offline. At any rate, the session's current
- * {@link RepositorySystemSession#isOffline() offline state} is irrelevant to the outcome of the check.
- *
- * @param session The repository session during which the check is made, must not be {@code null}.
- * @param repository The remote repository to check for offline access, must not be {@code null}.
- * @throws RepositoryOfflineException If the repository is not accessible in offline mode. If the method returns
- * normally, the repository is considered accessible even in offline mode.
- * @see RepositorySystemSession#isOffline()
- */
- void checkOffline( RepositorySystemSession session, RemoteRepository repository )
- throws RepositoryOfflineException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java b/aether-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java
deleted file mode 100644
index 23685e7..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-
-/**
- * Helps dealing with remote repository definitions.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface RemoteRepositoryManager
-{
-
- /**
- * Aggregates repository definitions by merging duplicate repositories and optionally applies mirror, proxy and
- * authentication settings from the supplied session.
- *
- * @param session The repository session during which the repositories will be accessed, must not be {@code null}.
- * @param dominantRepositories The current list of remote repositories to merge the new definitions into, must not
- * be {@code null}.
- * @param recessiveRepositories The remote repositories to merge into the existing list, must not be {@code null}.
- * @param recessiveIsRaw {@code true} if the recessive repository definitions have not yet been subjected to mirror,
- * proxy and authentication settings, {@code false} otherwise.
- * @return The aggregated list of remote repositories, never {@code null}.
- * @see RepositorySystemSession#getMirrorSelector()
- * @see RepositorySystemSession#getProxySelector()
- * @see RepositorySystemSession#getAuthenticationSelector()
- */
- List<RemoteRepository> aggregateRepositories( RepositorySystemSession session,
- List<RemoteRepository> dominantRepositories,
- List<RemoteRepository> recessiveRepositories, boolean recessiveIsRaw );
-
- /**
- * Gets the effective repository policy for the specified remote repository by merging the applicable
- * snapshot/release policy of the repository with global settings from the supplied session.
- *
- * @param session The repository session during which the repository will be accessed, must not be {@code null}.
- * @param repository The remote repository to determine the effective policy for, must not be {@code null}.
- * @param releases {@code true} if the policy for release artifacts needs to be considered, {@code false} if not.
- * @param snapshots {@code true} if the policy for snapshot artifacts needs to be considered, {@code false} if not.
- * @return The effective repository policy, never {@code null}.
- * @see RepositorySystemSession#getChecksumPolicy()
- * @see RepositorySystemSession#getUpdatePolicy()
- */
- RepositoryPolicy getPolicy( RepositorySystemSession session, RemoteRepository repository, boolean releases,
- boolean snapshots );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryConnectorProvider.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryConnectorProvider.java b/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryConnectorProvider.java
deleted file mode 100644
index 8d665c0..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryConnectorProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.RepositoryConnector;
-import org.eclipse.aether.transfer.NoRepositoryConnectorException;
-
-/**
- * Retrieves a repository connector from the installed repository connector factories.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface RepositoryConnectorProvider
-{
-
- /**
- * Tries to create a repository connector for the specified remote repository.
- *
- * @param session The repository system session from which to configure the connector, must not be {@code null}.
- * @param repository The remote repository to create a connector for, must not be {@code null}.
- * @return The connector for the given repository, never {@code null}.
- * @throws NoRepositoryConnectorException If no available factory can create a connector for the specified remote
- * repository.
- */
- RepositoryConnector newRepositoryConnector( RepositorySystemSession session, RemoteRepository repository )
- throws NoRepositoryConnectorException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryEventDispatcher.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryEventDispatcher.java b/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryEventDispatcher.java
deleted file mode 100644
index 2d29eb7..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryEventDispatcher.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositoryEvent;
-
-/**
- * Dispatches repository events to registered listeners.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface RepositoryEventDispatcher
-{
-
- /**
- * Dispatches the specified repository event to all registered listeners.
- *
- * @param event The event to dispatch, must not be {@code null}.
- */
- void dispatch( RepositoryEvent event );
-
-}
[21/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionFilterContext.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionFilterContext.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionFilterContext.java
deleted file mode 100644
index 2647c56..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionFilterContext.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.repository.ArtifactRepository;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.VersionRangeResult;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-
-/**
- */
-class TestVersionFilterContext
- implements VersionFilter.VersionFilterContext
-{
-
- private final RepositorySystemSession session;
-
- private final Dependency dependency;
-
- private final VersionRangeResult result;
-
- private final List<Version> versions;
-
- public TestVersionFilterContext( RepositorySystemSession session, VersionRangeResult result )
- {
- this.session = session;
- this.result = result;
- dependency = new Dependency( result.getRequest().getArtifact(), "" );
- versions = new ArrayList<Version>( result.getVersions() );
- }
-
- public RepositorySystemSession getSession()
- {
- return session;
- }
-
- public Dependency getDependency()
- {
- return dependency;
- }
-
- public int getCount()
- {
- return versions.size();
- }
-
- public Iterator<Version> iterator()
- {
- return versions.iterator();
- }
-
- public VersionConstraint getVersionConstraint()
- {
- return result.getVersionConstraint();
- }
-
- public ArtifactRepository getRepository( Version version )
- {
- return result.getRepository( version );
- }
-
- public List<RemoteRepository> getRepositories()
- {
- return Collections.unmodifiableList( result.getRequest().getRepositories() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionRange.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionRange.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionRange.java
deleted file mode 100644
index dd5950e..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionRange.java
+++ /dev/null
@@ -1,247 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionRange;
-
-/**
- * A version range inspired by mathematical range syntax. For example, "[1.0,2.0)", "[1.0,)" or "[1.0]".
- */
-final class TestVersionRange
- implements VersionRange
-{
-
- private final Version lowerBound;
-
- private final boolean lowerBoundInclusive;
-
- private final Version upperBound;
-
- private final boolean upperBoundInclusive;
-
- /**
- * Creates a version range from the specified range specification.
- *
- * @param range The range specification to parse, must not be {@code null}.
- * @throws InvalidVersionSpecificationException If the range could not be parsed.
- */
- public TestVersionRange( String range )
- throws InvalidVersionSpecificationException
- {
- String process = range;
-
- if ( range.startsWith( "[" ) )
- {
- lowerBoundInclusive = true;
- }
- else if ( range.startsWith( "(" ) )
- {
- lowerBoundInclusive = false;
- }
- else
- {
- throw new InvalidVersionSpecificationException( range, "Invalid version range " + range
- + ", a range must start with either [ or (" );
- }
-
- if ( range.endsWith( "]" ) )
- {
- upperBoundInclusive = true;
- }
- else if ( range.endsWith( ")" ) )
- {
- upperBoundInclusive = false;
- }
- else
- {
- throw new InvalidVersionSpecificationException( range, "Invalid version range " + range
- + ", a range must end with either [ or (" );
- }
-
- process = process.substring( 1, process.length() - 1 );
-
- int index = process.indexOf( "," );
-
- if ( index < 0 )
- {
- if ( !lowerBoundInclusive || !upperBoundInclusive )
- {
- throw new InvalidVersionSpecificationException( range, "Invalid version range " + range
- + ", single version must be surrounded by []" );
- }
-
- lowerBound = upperBound = new TestVersion( process.trim() );
- }
- else
- {
- String parsedLowerBound = process.substring( 0, index ).trim();
- String parsedUpperBound = process.substring( index + 1 ).trim();
-
- // more than two bounds, e.g. (1,2,3)
- if ( parsedUpperBound.contains( "," ) )
- {
- throw new InvalidVersionSpecificationException( range, "Invalid version range " + range
- + ", bounds may not contain additional ','" );
- }
-
- lowerBound = parsedLowerBound.length() > 0 ? new TestVersion( parsedLowerBound ) : null;
- upperBound = parsedUpperBound.length() > 0 ? new TestVersion( parsedUpperBound ) : null;
-
- if ( upperBound != null && lowerBound != null )
- {
- if ( upperBound.compareTo( lowerBound ) < 0 )
- {
- throw new InvalidVersionSpecificationException( range, "Invalid version range " + range
- + ", lower bound must not be greater than upper bound" );
- }
- }
- }
- }
-
- public Bound getLowerBound()
- {
- return new Bound( lowerBound, lowerBoundInclusive );
- }
-
- public Bound getUpperBound()
- {
- return new Bound( upperBound, upperBoundInclusive );
- }
-
- public boolean acceptsSnapshots()
- {
- return isSnapshot( lowerBound ) || isSnapshot( upperBound );
- }
-
- public boolean containsVersion( Version version )
- {
- boolean snapshot = isSnapshot( version );
-
- if ( lowerBound != null )
- {
- int comparison = lowerBound.compareTo( version );
-
- if ( snapshot && comparison == 0 )
- {
- return true;
- }
-
- if ( comparison == 0 && !lowerBoundInclusive )
- {
- return false;
- }
- if ( comparison > 0 )
- {
- return false;
- }
- }
-
- if ( upperBound != null )
- {
- int comparison = upperBound.compareTo( version );
-
- if ( snapshot && comparison == 0 )
- {
- return true;
- }
-
- if ( comparison == 0 && !upperBoundInclusive )
- {
- return false;
- }
- if ( comparison < 0 )
- {
- return false;
- }
- }
-
- if ( lowerBound != null || upperBound != null )
- {
- return !snapshot;
- }
-
- return true;
- }
-
- private boolean isSnapshot( Version version )
- {
- return version != null && version.toString().endsWith( "SNAPSHOT" );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
- return true;
- }
- else if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- TestVersionRange that = (TestVersionRange) obj;
-
- return upperBoundInclusive == that.upperBoundInclusive && lowerBoundInclusive == that.lowerBoundInclusive
- && eq( upperBound, that.upperBound ) && eq( lowerBound, that.lowerBound );
- }
-
- private static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + hash( upperBound );
- hash = hash * 31 + ( upperBoundInclusive ? 1 : 0 );
- hash = hash * 31 + hash( lowerBound );
- hash = hash * 31 + ( lowerBoundInclusive ? 1 : 0 );
- return hash;
- }
-
- private static int hash( Object obj )
- {
- return obj != null ? obj.hashCode() : 0;
- }
-
- @Override
- public String toString()
- {
- StringBuilder buffer = new StringBuilder( 64 );
- buffer.append( lowerBoundInclusive ? '[' : '(' );
- if ( lowerBound != null )
- {
- buffer.append( lowerBound );
- }
- buffer.append( ',' );
- if ( upperBound != null )
- {
- buffer.append( upperBound );
- }
- buffer.append( upperBoundInclusive ? ']' : ')' );
- return buffer.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionScheme.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionScheme.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionScheme.java
deleted file mode 100644
index 5865f6c..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionScheme.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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 org.eclipse.aether.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-import org.eclipse.aether.version.VersionRange;
-import org.eclipse.aether.version.VersionScheme;
-
-/**
- * A version scheme using a generic version syntax.
- */
-final class TestVersionScheme
- implements VersionScheme
-{
-
- public Version parseVersion( final String version )
- throws InvalidVersionSpecificationException
- {
- return new TestVersion( version );
- }
-
- public VersionRange parseVersionRange( final String range )
- throws InvalidVersionSpecificationException
- {
- return new TestVersionRange( range );
- }
-
- public VersionConstraint parseVersionConstraint( final String constraint )
- throws InvalidVersionSpecificationException
- {
- Collection<VersionRange> ranges = new ArrayList<VersionRange>();
-
- String process = constraint;
-
- while ( process.startsWith( "[" ) || process.startsWith( "(" ) )
- {
- int index1 = process.indexOf( ')' );
- int index2 = process.indexOf( ']' );
-
- int index = index2;
- if ( index2 < 0 || ( index1 >= 0 && index1 < index2 ) )
- {
- index = index1;
- }
-
- if ( index < 0 )
- {
- throw new InvalidVersionSpecificationException( constraint, "Unbounded version range " + constraint );
- }
-
- VersionRange range = parseVersionRange( process.substring( 0, index + 1 ) );
- ranges.add( range );
-
- process = process.substring( index + 1 ).trim();
-
- if ( process.length() > 0 && process.startsWith( "," ) )
- {
- process = process.substring( 1 ).trim();
- }
- }
-
- if ( process.length() > 0 && !ranges.isEmpty() )
- {
- throw new InvalidVersionSpecificationException( constraint, "Invalid version range " + constraint
- + ", expected [ or ( but got " + process );
- }
-
- VersionConstraint result;
- if ( ranges.isEmpty() )
- {
- result = new TestVersionConstraint( parseVersion( constraint ) );
- }
- else
- {
- result = new TestVersionConstraint( ranges.iterator().next() );
- }
-
- return result;
- }
-
- @Override
- public boolean equals( final Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
-
- return obj != null && getClass().equals( obj.getClass() );
- }
-
- @Override
- public int hashCode()
- {
- return getClass().hashCode();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/package-info.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/package-info.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/package-info.java
deleted file mode 100644
index 4d874da..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-/**
- * Utility classes to ease unit testing. This package supports the needs of Aether's own codebase but implementors of
- * extensions might find some of these classes useful, too, as long as they understand that these classes do not denote
- * a stable API and are subject to change without prior notice.
- */
-package org.eclipse.aether.internal.test.util;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/site/site.xml
----------------------------------------------------------------------
diff --git a/aether-test-util/src/site/site.xml b/aether-test-util/src/site/site.xml
deleted file mode 100644
index 3a16bf9..0000000
--- a/aether-test-util/src/site/site.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
- <body>
- <menu name="Overview">
- <item name="Introduction" href="index.html"/>
- <item name="JavaDocs" href="apidocs/index.html"/>
- <item name="Source Xref" href="xref/index.html"/>
- <!--item name="FAQ" href="faq.html"/-->
- </menu>
-
- <menu ref="parent"/>
- <menu ref="reports"/>
- </body>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/DependencyGraphParserTest.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/DependencyGraphParserTest.java b/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/DependencyGraphParserTest.java
deleted file mode 100644
index 86e8a77..0000000
--- a/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/DependencyGraphParserTest.java
+++ /dev/null
@@ -1,300 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class DependencyGraphParserTest
-{
-
- private DependencyGraphParser parser;
-
- @Before
- public void setup()
- {
- this.parser = new DependencyGraphParser();
- }
-
- @Test
- public void testOnlyRoot()
- throws IOException
- {
- String def = "gid:aid:jar:1 scope";
-
- DependencyNode node = parser.parseLiteral( def );
-
- assertNotNull( node );
- assertEquals( 0, node.getChildren().size() );
-
- Dependency dependency = node.getDependency();
- assertNotNull( dependency );
- assertEquals( "scope", dependency.getScope() );
-
- Artifact artifact = dependency.getArtifact();
- assertNotNull( artifact );
-
- assertEquals( "gid", artifact.getGroupId() );
- assertEquals( "aid", artifact.getArtifactId() );
- assertEquals( "jar", artifact.getExtension() );
- assertEquals( "1", artifact.getVersion() );
- }
-
- @Test
- public void testOptionalScope()
- throws IOException
- {
- String def = "gid:aid:jar:1";
-
- DependencyNode node = parser.parseLiteral( def );
-
- assertNotNull( node );
- assertEquals( 0, node.getChildren().size() );
-
- Dependency dependency = node.getDependency();
- assertNotNull( dependency );
- assertEquals( "", dependency.getScope() );
- }
-
- @Test
- public void testWithChildren()
- throws IOException
- {
- String def =
- "gid1:aid1:ext1:ver1 scope1\n" + "+- gid2:aid2:ext2:ver2 scope2\n" + "\\- gid3:aid3:ext3:ver3 scope3\n";
-
- DependencyNode node = parser.parseLiteral( def );
- assertNotNull( node );
-
- int idx = 1;
-
- assertNodeProperties( node, idx++ );
-
- List<DependencyNode> children = node.getChildren();
- assertEquals( 2, children.size() );
-
- for ( DependencyNode child : children )
- {
- assertNodeProperties( child, idx++ );
- }
-
- }
-
- @Test
- public void testDeepChildren()
- throws IOException
- {
- String def =
- "gid1:aid1:ext1:ver1\n" + "+- gid2:aid2:ext2:ver2 scope2\n" + "| \\- gid3:aid3:ext3:ver3\n"
- + "\\- gid4:aid4:ext4:ver4 scope4";
-
- DependencyNode node = parser.parseLiteral( def );
- assertNodeProperties( node, 1 );
-
- assertEquals( 2, node.getChildren().size() );
- assertNodeProperties( node.getChildren().get( 1 ), 4 );
- DependencyNode lvl1Node = node.getChildren().get( 0 );
- assertNodeProperties( lvl1Node, 2 );
-
- assertEquals( 1, lvl1Node.getChildren().size() );
- assertNodeProperties( lvl1Node.getChildren().get( 0 ), 3 );
- }
-
- private void assertNodeProperties( DependencyNode node, int idx )
- {
- assertNodeProperties( node, String.valueOf( idx ) );
- }
-
- private void assertNodeProperties( DependencyNode node, String suffix )
- {
- assertNotNull( node );
- Dependency dependency = node.getDependency();
- assertNotNull( dependency );
- if ( !"".equals( dependency.getScope() ) )
- {
- assertEquals( "scope" + suffix, dependency.getScope() );
- }
-
- Artifact artifact = dependency.getArtifact();
- assertNotNull( artifact );
-
- assertEquals( "gid" + suffix, artifact.getGroupId() );
- assertEquals( "aid" + suffix, artifact.getArtifactId() );
- assertEquals( "ext" + suffix, artifact.getExtension() );
- assertEquals( "ver" + suffix, artifact.getVersion() );
- }
-
- @Test
- public void testComments()
- throws IOException
- {
- String def = "# first line\n#second line\ngid:aid:ext:ver # root artifact asdf:qwer:zcxv:uip";
-
- DependencyNode node = parser.parseLiteral( def );
-
- assertNodeProperties( node, "" );
- }
-
- @Test
- public void testId()
- throws IOException
- {
- String def = "gid:aid:ext:ver (id)\n\\- ^id";
- DependencyNode node = parser.parseLiteral( def );
- assertNodeProperties( node, "" );
-
- assertNotNull( node.getChildren() );
- assertEquals( 1, node.getChildren().size() );
-
- assertSame( node, node.getChildren().get( 0 ) );
- }
-
- @Test
- public void testResourceLoading()
- throws UnsupportedEncodingException, IOException
- {
- String prefix = "org/eclipse/aether/internal/test/util/";
- String name = "testResourceLoading.txt";
-
- DependencyNode node = parser.parseResource( prefix + name );
- assertEquals( 0, node.getChildren().size() );
- assertNodeProperties( node, "" );
- }
-
- @Test
- public void testResourceLoadingWithPrefix()
- throws UnsupportedEncodingException, IOException
- {
- String prefix = "org/eclipse/aether/internal/test/util/";
- parser = new DependencyGraphParser( prefix );
-
- String name = "testResourceLoading.txt";
-
- DependencyNode node = parser.parseResource( name );
- assertEquals( 0, node.getChildren().size() );
- assertNodeProperties( node, "" );
- }
-
- @Test
- public void testProperties()
- throws IOException
- {
- String def = "gid:aid:ext:ver props=test:foo,test2:fizzle";
- DependencyNode node = parser.parseLiteral( def );
-
- assertNodeProperties( node, "" );
-
- Map<String, String> properties = node.getDependency().getArtifact().getProperties();
- assertNotNull( properties );
- assertEquals( 2, properties.size() );
-
- assertTrue( properties.containsKey( "test" ) );
- assertEquals( "foo", properties.get( "test" ) );
- assertTrue( properties.containsKey( "test2" ) );
- assertEquals( "fizzle", properties.get( "test2" ) );
- }
-
- @Test
- public void testSubstitutions()
- throws IOException
- {
- parser.setSubstitutions( Arrays.asList( "subst1", "subst2" ) );
- String def = "%s:%s:ext:ver";
- DependencyNode root = parser.parseLiteral( def );
- Artifact artifact = root.getDependency().getArtifact();
- assertEquals( "subst2", artifact.getArtifactId() );
- assertEquals( "subst1", artifact.getGroupId() );
-
- def = "%s:aid:ext:ver\n\\- %s:aid:ext:ver";
- root = parser.parseLiteral( def );
-
- assertEquals( "subst1", root.getDependency().getArtifact().getGroupId() );
- assertEquals( "subst2", root.getChildren().get( 0 ).getDependency().getArtifact().getGroupId() );
- }
-
- @Test
- public void testMultiple()
- throws IOException
- {
- String prefix = "org/eclipse/aether/internal/test/util/";
- String name = "testResourceLoading.txt";
-
- List<DependencyNode> nodes = parser.parseMultiResource( prefix + name );
-
- assertEquals( 2, nodes.size() );
- assertEquals( "aid", nodes.get( 0 ).getDependency().getArtifact().getArtifactId() );
- assertEquals( "aid2", nodes.get( 1 ).getDependency().getArtifact().getArtifactId() );
- }
-
- @Test
- public void testRootNullDependency()
- throws IOException
- {
- String literal = "(null)\n+- gid:aid:ext:ver";
- DependencyNode root = parser.parseLiteral( literal );
-
- assertNull( root.getDependency() );
- assertEquals( 1, root.getChildren().size() );
- }
-
- @Test
- public void testChildNullDependency()
- throws IOException
- {
- String literal = "gid:aid:ext:ver\n+- (null)";
- DependencyNode root = parser.parseLiteral( literal );
-
- assertNotNull( root.getDependency() );
- assertEquals( 1, root.getChildren().size() );
- assertNull( root.getChildren().get( 0 ).getDependency() );
- }
-
- @Test
- public void testOptional()
- throws IOException
- {
- String def = "gid:aid:jar:1 compile optional";
-
- DependencyNode node = parser.parseLiteral( def );
-
- assertNotNull( node );
- assertEquals( 0, node.getChildren().size() );
-
- Dependency dependency = node.getDependency();
- assertNotNull( dependency );
- assertEquals( "compile", dependency.getScope() );
- assertEquals( true, dependency.isOptional() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/IniArtifactDataReaderTest.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/IniArtifactDataReaderTest.java b/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/IniArtifactDataReaderTest.java
deleted file mode 100644
index 4864b32..0000000
--- a/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/IniArtifactDataReaderTest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.Exclusion;
-import org.eclipse.aether.internal.test.util.ArtifactDescription;
-import org.eclipse.aether.internal.test.util.IniArtifactDataReader;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class IniArtifactDataReaderTest
-{
-
- private IniArtifactDataReader parser;
-
- @Before
- public void setup()
- throws Exception
- {
- this.parser = new IniArtifactDataReader( "org/eclipse/aether/internal/test/util/" );
- }
-
- @Test
- public void testRelocation()
- throws IOException
- {
- String def = "[relocation]\ngid:aid:ext:ver";
-
- ArtifactDescription description = parser.parseLiteral( def );
-
- Artifact artifact = description.getRelocation();
- assertNotNull( artifact );
- assertEquals( "aid", artifact.getArtifactId() );
- assertEquals( "gid", artifact.getGroupId() );
- assertEquals( "ver", artifact.getVersion() );
- assertEquals( "ext", artifact.getExtension() );
- }
-
- @Test
- public void testDependencies()
- throws IOException
- {
- String def = "[dependencies]\ngid:aid:ext:ver\n-exclusion:aid\ngid2:aid2:ext2:ver2";
-
- ArtifactDescription description = parser.parseLiteral( def );
-
- List<Dependency> dependencies = description.getDependencies();
- assertNotNull( dependencies );
- assertEquals( 2, dependencies.size() );
-
- Dependency dependency = dependencies.get( 0 );
- assertEquals( "compile", dependency.getScope() );
-
- Artifact artifact = dependency.getArtifact();
- assertNotNull( artifact );
- assertEquals( "aid", artifact.getArtifactId() );
- assertEquals( "gid", artifact.getGroupId() );
- assertEquals( "ver", artifact.getVersion() );
- assertEquals( "ext", artifact.getExtension() );
-
- Collection<Exclusion> exclusions = dependency.getExclusions();
- assertNotNull( exclusions );
- assertEquals( 1, exclusions.size() );
- Exclusion exclusion = exclusions.iterator().next();
- assertEquals( "exclusion", exclusion.getGroupId() );
- assertEquals( "aid", exclusion.getArtifactId() );
- assertEquals( "*", exclusion.getClassifier() );
- assertEquals( "*", exclusion.getExtension() );
-
- dependency = dependencies.get( 1 );
-
- artifact = dependency.getArtifact();
- assertNotNull( artifact );
- assertEquals( "aid2", artifact.getArtifactId() );
- assertEquals( "gid2", artifact.getGroupId() );
- assertEquals( "ver2", artifact.getVersion() );
- assertEquals( "ext2", artifact.getExtension() );
- }
-
- @Test
- public void testManagedDependencies()
- throws IOException
- {
- String def = "[managed-dependencies]\ngid:aid:ext:ver\n-exclusion:aid\ngid2:aid2:ext2:ver2:runtime";
-
- ArtifactDescription description = parser.parseLiteral( def );
-
- List<Dependency> dependencies = description.getManagedDependencies();
- assertNotNull( dependencies );
- assertEquals( 2, dependencies.size() );
-
- Dependency dependency = dependencies.get( 0 );
- assertEquals( "", dependency.getScope() );
-
- Artifact artifact = dependency.getArtifact();
- assertNotNull( artifact );
- assertEquals( "aid", artifact.getArtifactId() );
- assertEquals( "gid", artifact.getGroupId() );
- assertEquals( "ver", artifact.getVersion() );
- assertEquals( "ext", artifact.getExtension() );
-
- Collection<Exclusion> exclusions = dependency.getExclusions();
- assertNotNull( exclusions );
- assertEquals( 1, exclusions.size() );
- Exclusion exclusion = exclusions.iterator().next();
- assertEquals( "exclusion", exclusion.getGroupId() );
- assertEquals( "aid", exclusion.getArtifactId() );
- assertEquals( "*", exclusion.getClassifier() );
- assertEquals( "*", exclusion.getExtension() );
-
- dependency = dependencies.get( 1 );
- assertEquals( "runtime", dependency.getScope() );
-
- artifact = dependency.getArtifact();
- assertNotNull( artifact );
- assertEquals( "aid2", artifact.getArtifactId() );
- assertEquals( "gid2", artifact.getGroupId() );
- assertEquals( "ver2", artifact.getVersion() );
- assertEquals( "ext2", artifact.getExtension() );
-
- assertEquals( 0, dependency.getExclusions().size() );
- }
-
- @Test
- public void testResource()
- throws IOException
- {
- ArtifactDescription description = parser.parse( "ArtifactDataReaderTest.ini" );
-
- Artifact artifact = description.getRelocation();
- assertEquals( "gid", artifact.getGroupId() );
- assertEquals( "aid", artifact.getArtifactId() );
- assertEquals( "ver", artifact.getVersion() );
- assertEquals( "ext", artifact.getExtension() );
-
- assertEquals( 1, description.getRepositories().size() );
- RemoteRepository repo = description.getRepositories().get( 0 );
- assertEquals( "id", repo.getId() );
- assertEquals( "type", repo.getContentType() );
- assertEquals( "protocol://some/url?for=testing", repo.getUrl() );
-
- assertDependencies( description.getDependencies() );
- assertDependencies( description.getManagedDependencies() );
-
- }
-
- private void assertDependencies( List<Dependency> deps )
- {
- assertEquals( 4, deps.size() );
-
- Dependency dep = deps.get( 0 );
- assertEquals( "scope", dep.getScope() );
- assertEquals( false, dep.isOptional() );
- assertEquals( 2, dep.getExclusions().size() );
- Iterator<Exclusion> it = dep.getExclusions().iterator();
- Exclusion excl = it.next();
- assertEquals( "gid3", excl.getGroupId() );
- assertEquals( "aid", excl.getArtifactId() );
- excl = it.next();
- assertEquals( "gid2", excl.getGroupId() );
- assertEquals( "aid2", excl.getArtifactId() );
-
- Artifact art = dep.getArtifact();
- assertEquals( "gid", art.getGroupId() );
- assertEquals( "aid", art.getArtifactId() );
- assertEquals( "ver", art.getVersion() );
- assertEquals( "ext", art.getExtension() );
-
- dep = deps.get( 1 );
- assertEquals( "scope", dep.getScope() );
- assertEquals( true, dep.isOptional() );
- assertEquals( 0, dep.getExclusions().size() );
-
- art = dep.getArtifact();
- assertEquals( "gid", art.getGroupId() );
- assertEquals( "aid2", art.getArtifactId() );
- assertEquals( "ver", art.getVersion() );
- assertEquals( "ext", art.getExtension() );
-
- dep = deps.get( 2 );
- assertEquals( "scope", dep.getScope() );
- assertEquals( true, dep.isOptional() );
- assertEquals( 0, dep.getExclusions().size() );
-
- art = dep.getArtifact();
- assertEquals( "gid", art.getGroupId() );
- assertEquals( "aid", art.getArtifactId() );
- assertEquals( "ver3", art.getVersion() );
- assertEquals( "ext", art.getExtension() );
-
- dep = deps.get( 3 );
- assertEquals( "scope5", dep.getScope() );
- assertEquals( true, dep.isOptional() );
- assertEquals( 0, dep.getExclusions().size() );
-
- art = dep.getArtifact();
- assertEquals( "gid1", art.getGroupId() );
- assertEquals( "aid", art.getArtifactId() );
- assertEquals( "ver", art.getVersion() );
- assertEquals( "ext", art.getExtension() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReaderTest.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReaderTest.java b/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReaderTest.java
deleted file mode 100644
index 8b6bfa4..0000000
--- a/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReaderTest.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.Exclusion;
-import org.eclipse.aether.internal.test.util.IniArtifactDescriptorReader;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ArtifactDescriptorException;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class IniArtifactDescriptorReaderTest
-{
-
- private IniArtifactDescriptorReader reader;
-
- private RepositorySystemSession session;
-
- @Before
- public void setup()
- throws IOException
- {
- reader = new IniArtifactDescriptorReader( "org/eclipse/aether/internal/test/util/" );
- session = TestUtils.newSession();
- }
-
- @Test( expected = ArtifactDescriptorException.class )
- public void testMissingDescriptor()
- throws ArtifactDescriptorException
- {
- Artifact art = new DefaultArtifact( "missing:aid:ver:ext" );
- ArtifactDescriptorRequest request = new ArtifactDescriptorRequest( art, null, "" );
- reader.readArtifactDescriptor( session, request );
- }
-
- @Test
- public void testLookup()
- throws ArtifactDescriptorException
- {
- Artifact art = new DefaultArtifact( "gid:aid:ext:ver" );
- ArtifactDescriptorRequest request = new ArtifactDescriptorRequest( art, null, "" );
- ArtifactDescriptorResult description = reader.readArtifactDescriptor( session, request );
-
- assertEquals( request, description.getRequest() );
- assertEquals( art.setVersion( "1" ), description.getArtifact() );
-
- assertEquals( 1, description.getRelocations().size() );
- Artifact artifact = description.getRelocations().get( 0 );
- assertEquals( "gid", artifact.getGroupId() );
- assertEquals( "aid", artifact.getArtifactId() );
- assertEquals( "ver", artifact.getVersion() );
- assertEquals( "ext", artifact.getExtension() );
-
- assertEquals( 1, description.getRepositories().size() );
- RemoteRepository repo = description.getRepositories().get( 0 );
- assertEquals( "id", repo.getId() );
- assertEquals( "type", repo.getContentType() );
- assertEquals( "protocol://some/url?for=testing", repo.getUrl() );
-
- assertDependencies( description.getDependencies() );
- assertDependencies( description.getManagedDependencies() );
-
- }
-
- private void assertDependencies( List<Dependency> deps )
- {
- assertEquals( 4, deps.size() );
-
- Dependency dep = deps.get( 0 );
- assertEquals( "scope", dep.getScope() );
- assertEquals( false, dep.isOptional() );
- assertEquals( 2, dep.getExclusions().size() );
- Iterator<Exclusion> it = dep.getExclusions().iterator();
- Exclusion excl = it.next();
- assertEquals( "gid3", excl.getGroupId() );
- assertEquals( "aid", excl.getArtifactId() );
- excl = it.next();
- assertEquals( "gid2", excl.getGroupId() );
- assertEquals( "aid2", excl.getArtifactId() );
-
- Artifact art = dep.getArtifact();
- assertEquals( "gid", art.getGroupId() );
- assertEquals( "aid", art.getArtifactId() );
- assertEquals( "ver", art.getVersion() );
- assertEquals( "ext", art.getExtension() );
-
- dep = deps.get( 1 );
- assertEquals( "scope", dep.getScope() );
- assertEquals( true, dep.isOptional() );
- assertEquals( 0, dep.getExclusions().size() );
-
- art = dep.getArtifact();
- assertEquals( "gid", art.getGroupId() );
- assertEquals( "aid2", art.getArtifactId() );
- assertEquals( "ver", art.getVersion() );
- assertEquals( "ext", art.getExtension() );
-
- dep = deps.get( 2 );
- assertEquals( "scope", dep.getScope() );
- assertEquals( true, dep.isOptional() );
- assertEquals( 0, dep.getExclusions().size() );
-
- art = dep.getArtifact();
- assertEquals( "gid", art.getGroupId() );
- assertEquals( "aid", art.getArtifactId() );
- assertEquals( "ver3", art.getVersion() );
- assertEquals( "ext", art.getExtension() );
-
- dep = deps.get( 3 );
- assertEquals( "scope5", dep.getScope() );
- assertEquals( true, dep.isOptional() );
- assertEquals( 0, dep.getExclusions().size() );
-
- art = dep.getArtifact();
- assertEquals( "gid1", art.getGroupId() );
- assertEquals( "aid", art.getArtifactId() );
- assertEquals( "ver", art.getVersion() );
- assertEquals( "ext", art.getExtension() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/NodeDefinitionTest.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/NodeDefinitionTest.java b/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/NodeDefinitionTest.java
deleted file mode 100644
index 8f41a5a..0000000
--- a/aether-test-util/src/test/java/org/eclipse/aether/internal/test/util/NodeDefinitionTest.java
+++ /dev/null
@@ -1,156 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.junit.Test;
-
-public class NodeDefinitionTest
-{
-
- private void assertMatch( String text, String regex, String... groups )
- {
- Pattern pattern = Pattern.compile( regex );
- Matcher matcher = pattern.matcher( text );
- assertEquals( true, matcher.matches() );
- assertTrue( groups.length + " vs " + matcher.groupCount(), groups.length <= matcher.groupCount() );
- for ( int i = 1; i <= groups.length; i++ )
- {
- assertEquals( "Mismatch for group " + i, groups[i - 1], matcher.group( i ) );
- }
- }
-
- private void assertNoMatch( String text, String regex )
- {
- Pattern pattern = Pattern.compile( regex );
- Matcher matcher = pattern.matcher( text );
- assertEquals( false, matcher.matches() );
- }
-
- @Test
- public void testPatterns()
- {
- assertMatch( "(Example-ID_0123456789)", NodeDefinition.ID, "Example-ID_0123456789" );
- assertMatch( "^Example-ID_0123456789", NodeDefinition.IDREF, "Example-ID_0123456789" );
-
- assertMatch( "gid:aid:1", NodeDefinition.COORDS, "gid", "aid", null, null, "1" );
- assertMatch( "gid:aid:jar:1", NodeDefinition.COORDS, "gid", "aid", "jar", null, "1" );
- assertMatch( "gid:aid:jar:cls:1", NodeDefinition.COORDS, "gid", "aid", "jar", "cls", "1" );
-
- assertMatch( "[1]", NodeDefinition.RANGE, "[1]" );
- assertMatch( "[1,)", NodeDefinition.RANGE, "[1,)" );
- assertMatch( "(1,2)", NodeDefinition.RANGE, "(1,2)" );
-
- assertMatch( "scope = compile", NodeDefinition.SCOPE, "compile", null );
- assertMatch( "scope=compile<runtime", NodeDefinition.SCOPE, "compile", "runtime" );
- assertMatch( "compile<runtime", NodeDefinition.SCOPE, "compile", "runtime" );
- assertNoMatch( "optional", NodeDefinition.SCOPE );
- assertNoMatch( "!optional", NodeDefinition.SCOPE );
-
- assertMatch( "optional", NodeDefinition.OPTIONAL, "optional" );
- assertMatch( "!optional", NodeDefinition.OPTIONAL, "!optional" );
-
- assertMatch( "relocations = g:a:1", NodeDefinition.RELOCATIONS, "g:a:1" );
- assertMatch( "relocations=g:a:1 , g:a:2", NodeDefinition.RELOCATIONS, "g:a:1 , g:a:2" );
-
- assertMatch( "props = Key:Value", NodeDefinition.PROPS, "Key:Value" );
- assertMatch( "props=k:1 , k_2:v_2", NodeDefinition.PROPS, "k:1 , k_2:v_2" );
-
- assertMatch( "gid:aid:1", NodeDefinition.COORDSX, "gid:aid:1", null, null );
- assertMatch( "gid:aid:1[1,2)", NodeDefinition.COORDSX, "gid:aid:1", "[1,2)", null );
- assertMatch( "gid:aid:1<2", NodeDefinition.COORDSX, "gid:aid:1", null, "2" );
- assertMatch( "gid:aid:1(, 2)<[1, 3]", NodeDefinition.COORDSX, "gid:aid:1", "(, 2)", "[1, 3]" );
-
- assertMatch( "gid:aid:1(, 2)<[1, 3] props=k:v scope=c<r optional relocations=g:a:v (id)", NodeDefinition.NODE,
- "gid:aid:1", "(, 2)", "[1, 3]", "k:v", "c", "r", "optional", "g:a:v", "id" );
-
- assertMatch( "gid:aid:1(, 2)<[1, 3] props=k:v c<r optional relocations=g:a:v (id)", NodeDefinition.LINE, null,
- "gid:aid:1", "(, 2)", "[1, 3]", "k:v", "c", "r", "optional", "g:a:v", "id" );
- assertMatch( "^id", NodeDefinition.LINE, "id", null, null, null );
- }
-
- @Test
- public void testParsing_Reference()
- {
- NodeDefinition desc = new NodeDefinition( "^id" );
- assertEquals( "id", desc.reference );
- }
-
- @Test
- public void testParsing_Node()
- {
- NodeDefinition desc = new NodeDefinition( "g:a:1" );
- assertEquals( null, desc.reference );
- assertEquals( "g:a:1", desc.coords );
- assertEquals( null, desc.range );
- assertEquals( null, desc.premanagedVersion );
- assertEquals( null, desc.scope );
- assertEquals( null, desc.premanagedScope );
- assertEquals( false, desc.optional );
- assertEquals( null, desc.properties );
- assertEquals( null, desc.relocations );
- assertEquals( null, desc.id );
-
- desc = new NodeDefinition( "gid1:aid1:ext1:ver1 scope1 !optional" );
- assertEquals( null, desc.reference );
- assertEquals( "gid1:aid1:ext1:ver1", desc.coords );
- assertEquals( null, desc.range );
- assertEquals( null, desc.premanagedVersion );
- assertEquals( "scope1", desc.scope );
- assertEquals( null, desc.premanagedScope );
- assertEquals( false, desc.optional );
- assertEquals( null, desc.properties );
- assertEquals( null, desc.relocations );
- assertEquals( null, desc.id );
-
- desc = new NodeDefinition( "g:a:1 optional" );
- assertEquals( null, desc.reference );
- assertEquals( "g:a:1", desc.coords );
- assertEquals( null, desc.range );
- assertEquals( null, desc.premanagedVersion );
- assertEquals( null, desc.scope );
- assertEquals( null, desc.premanagedScope );
- assertEquals( true, desc.optional );
- assertEquals( null, desc.properties );
- assertEquals( null, desc.relocations );
- assertEquals( null, desc.id );
-
- desc =
- new NodeDefinition( "gid:aid:1(, 2)<[1, 3]" + " props = k:v" + " scope=c<r" + " optional"
- + " relocations = g:a:v , g:a:1" + " (id)" );
- assertEquals( null, desc.reference );
- assertEquals( "gid:aid:1", desc.coords );
- assertEquals( "(, 2)", desc.range );
- assertEquals( "[1, 3]", desc.premanagedVersion );
- assertEquals( "c", desc.scope );
- assertEquals( "r", desc.premanagedScope );
- assertEquals( true, desc.optional );
- assertEquals( Collections.singletonMap( "k", "v" ), desc.properties );
- assertEquals( Arrays.asList( "g:a:v", "g:a:1" ), desc.relocations );
- assertEquals( "id", desc.id );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/ArtifactDataReaderTest.ini
----------------------------------------------------------------------
diff --git a/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/ArtifactDataReaderTest.ini b/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/ArtifactDataReaderTest.ini
deleted file mode 100644
index 28e3634..0000000
--- a/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/ArtifactDataReaderTest.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[relocation]
-gid:aid:ext:ver
-
-[dependencies]
-gid:aid:ext:ver:scope
--gid3:aid
--gid2:aid2
-gid:aid2:ext:ver:scope:optional
-gid:aid:ext:ver3:scope:optional
-gid1:aid:ext:ver:scope5:optional
-
-[managedDependencies]
-gid:aid:ext:ver:scope
--gid3:aid
--gid2:aid2
-gid:aid2:ext:ver:scope:optional
-gid:aid:ext:ver3:scope:optional
-gid1:aid:ext:ver:scope5:optional
-
-[repositories]
-id:type:protocol://some/url?for=testing
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/gid_aid_1.ini
----------------------------------------------------------------------
diff --git a/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/gid_aid_1.ini b/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/gid_aid_1.ini
deleted file mode 100644
index 1373b19..0000000
--- a/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/gid_aid_1.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-gid:aid:ext:ver:scope
--gid3:aid
--gid2:aid2
-gid:aid2:ext:ver:scope:optional
-gid:aid:ext:ver3:scope:optional
-gid1:aid:ext:ver:scope5:optional
-
-[managedDependencies]
-gid:aid:ext:ver:scope
--gid3:aid
--gid2:aid2
-gid:aid2:ext:ver:scope:optional
-gid:aid:ext:ver3:scope:optional
-gid1:aid:ext:ver:scope5:optional
-
-[repositories]
-id:type:protocol://some/url?for=testing
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/gid_aid_ver.ini
----------------------------------------------------------------------
diff --git a/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/gid_aid_ver.ini b/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/gid_aid_ver.ini
deleted file mode 100644
index 7f45908..0000000
--- a/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/gid_aid_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[relocation]
-gid:aid:ext:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/testResourceLoading.txt
----------------------------------------------------------------------
diff --git a/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/testResourceLoading.txt b/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/testResourceLoading.txt
deleted file mode 100644
index 6c79ca5..0000000
--- a/aether-test-util/src/test/resources/org/eclipse/aether/internal/test/util/testResourceLoading.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-gid:aid:ext:ver
----
-gid:aid2:ext:ver
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/pom.xml
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/pom.xml b/aether-transport-classpath/pom.xml
deleted file mode 100644
index f2e6579..0000000
--- a/aether-transport-classpath/pom.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- 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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>aether-transport-classpath</artifactId>
-
- <name>Aether Transport Classpath</name>
- <description>
- A transport implementation for repositories using classpath:// URLs.
- </description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-spi</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-util</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.sonatype.sisu</groupId>
- <artifactId>sisu-guice</artifactId>
- <classifier>no_aop</classifier>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-test-util</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.sisu</groupId>
- <artifactId>sisu-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-</project>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporter.java
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporter.java b/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporter.java
deleted file mode 100644
index 493c907..0000000
--- a/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporter.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package org.eclipse.aether.transport.classpath;
-
-/*
- * 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.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLConnection;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.AbstractTransporter;
-import org.eclipse.aether.spi.connector.transport.GetTask;
-import org.eclipse.aether.spi.connector.transport.PeekTask;
-import org.eclipse.aether.spi.connector.transport.PutTask;
-import org.eclipse.aether.spi.connector.transport.TransportTask;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.transfer.NoTransporterException;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- * A transporter reading from the classpath.
- */
-final class ClasspathTransporter
- extends AbstractTransporter
-{
-
- private final String resourceBase;
-
- private final ClassLoader classLoader;
-
- public ClasspathTransporter( RepositorySystemSession session, RemoteRepository repository, Logger logger )
- throws NoTransporterException
- {
- if ( !"classpath".equalsIgnoreCase( repository.getProtocol() ) )
- {
- throw new NoTransporterException( repository );
- }
-
- String base;
- try
- {
- URI uri = new URI( repository.getUrl() );
- String ssp = uri.getSchemeSpecificPart();
- if ( ssp.startsWith( "/" ) )
- {
- base = uri.getPath();
- if ( base == null )
- {
- base = "";
- }
- else if ( base.startsWith( "/" ) )
- {
- base = base.substring( 1 );
- }
- }
- else
- {
- base = ssp;
- }
- if ( base.length() > 0 && !base.endsWith( "/" ) )
- {
- base += '/';
- }
- }
- catch ( URISyntaxException e )
- {
- throw new NoTransporterException( repository, e );
- }
- resourceBase = base;
-
- Object cl = ConfigUtils.getObject( session, null, ClasspathTransporterFactory.CONFIG_PROP_CLASS_LOADER );
- if ( cl instanceof ClassLoader )
- {
- classLoader = (ClassLoader) cl;
- }
- else
- {
- classLoader = Thread.currentThread().getContextClassLoader();
- }
- }
-
- private URL getResource( TransportTask task )
- throws Exception
- {
- String resource = resourceBase + task.getLocation().getPath();
- URL url = classLoader.getResource( resource );
- if ( url == null )
- {
- throw new ResourceNotFoundException( "Could not locate " + resource );
- }
- return url;
- }
-
- public int classify( Throwable error )
- {
- if ( error instanceof ResourceNotFoundException )
- {
- return ERROR_NOT_FOUND;
- }
- return ERROR_OTHER;
- }
-
- @Override
- protected void implPeek( PeekTask task )
- throws Exception
- {
- getResource( task );
- }
-
- @Override
- protected void implGet( GetTask task )
- throws Exception
- {
- URL url = getResource( task );
- URLConnection conn = url.openConnection();
- utilGet( task, conn.getInputStream(), true, conn.getContentLength(), false );
- }
-
- @Override
- protected void implPut( PutTask task )
- throws Exception
- {
- throw new UnsupportedOperationException( "Uploading to a classpath: repository is not supported" );
- }
-
- @Override
- protected void implClose()
- {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporterFactory.java
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporterFactory.java b/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporterFactory.java
deleted file mode 100644
index 18db417..0000000
--- a/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporterFactory.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package org.eclipse.aether.transport.classpath;
-
-/*
- * 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 javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.NoTransporterException;
-
-/**
- * A transporter factory for repositories using the {@code classpath:} protocol. As example, getting an item named
- * {@code some/file.txt} from a repository with the URL {@code classpath:/base/dir} results in retrieving the resource
- * {@code base/dir/some/file.txt} from the classpath. The classpath to load the resources from is given via a
- * {@link ClassLoader} that can be configured via the configuration property {@link #CONFIG_PROP_CLASS_LOADER}.
- * <p>
- * <em>Note:</em> Such repositories are read-only and uploads to them are generally not supported.
- */
-@Named( "classpath" )
-public final class ClasspathTransporterFactory
- implements TransporterFactory, Service
-{
-
- /**
- * The key in the repository session's {@link RepositorySystemSession#getConfigProperties() configuration
- * properties} used to store a {@link ClassLoader} from which resources should be retrieved. If unspecified, the
- * {@link Thread#getContextClassLoader() context class loader} of the current thread will be used.
- */
- public static final String CONFIG_PROP_CLASS_LOADER = "aether.connector.classpath.loader";
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private float priority;
-
- /**
- * Creates an (uninitialized) instance of this transporter factory. <em>Note:</em> In case of manual instantiation
- * by clients, the new factory needs to be configured via its various mutators before first use or runtime errors
- * will occur.
- */
- public ClasspathTransporterFactory()
- {
- // enables default constructor
- }
-
- @Inject
- ClasspathTransporterFactory( LoggerFactory loggerFactory )
- {
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- }
-
- /**
- * Sets the logger factory to use for this component.
- *
- * @param loggerFactory The logger factory to use, may be {@code null} to disable logging.
- * @return This component for chaining, never {@code null}.
- */
- public ClasspathTransporterFactory setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, ClasspathTransporter.class );
- return this;
- }
-
- public float getPriority()
- {
- return priority;
- }
-
- /**
- * Sets the priority of this component.
- *
- * @param priority The priority.
- * @return This component for chaining, never {@code null}.
- */
- public ClasspathTransporterFactory setPriority( float priority )
- {
- this.priority = priority;
- return this;
- }
-
- public Transporter newInstance( RepositorySystemSession session, RemoteRepository repository )
- throws NoTransporterException
- {
- return new ClasspathTransporter( session, repository, logger );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ResourceNotFoundException.java
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ResourceNotFoundException.java b/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ResourceNotFoundException.java
deleted file mode 100644
index d30a0ff..0000000
--- a/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ResourceNotFoundException.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.eclipse.aether.transport.classpath;
-
-/*
- * 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.IOException;
-
-/**
- * Special exception type used instead of {@code FileNotFoundException} to avoid misinterpretation of errors unrelated
- * to the remote resource.
- */
-class ResourceNotFoundException
- extends IOException
-{
-
- public ResourceNotFoundException( String message )
- {
- super( message );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/package-info.java
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/package-info.java b/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/package-info.java
deleted file mode 100644
index 8bcda93..0000000
--- a/aether-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/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.
- */
-/**
- * Support for downloads that utilize the classpath as "remote" storage.
- */
-package org.eclipse.aether.transport.classpath;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/site/site.xml
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/site/site.xml b/aether-transport-classpath/src/site/site.xml
deleted file mode 100644
index 3a16bf9..0000000
--- a/aether-transport-classpath/src/site/site.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
- <body>
- <menu name="Overview">
- <item name="Introduction" href="index.html"/>
- <item name="JavaDocs" href="apidocs/index.html"/>
- <item name="Source Xref" href="xref/index.html"/>
- <!--item name="FAQ" href="faq.html"/-->
- </menu>
-
- <menu ref="parent"/>
- <menu ref="reports"/>
- </body>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/ClasspathTransporterTest.java
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/ClasspathTransporterTest.java b/aether-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/ClasspathTransporterTest.java
deleted file mode 100644
index 0c91685..0000000
--- a/aether-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/ClasspathTransporterTest.java
+++ /dev/null
@@ -1,411 +0,0 @@
-package org.eclipse.aether.transport.classpath;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.net.URI;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.GetTask;
-import org.eclipse.aether.spi.connector.transport.PeekTask;
-import org.eclipse.aether.spi.connector.transport.PutTask;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.transfer.NoTransporterException;
-import org.eclipse.aether.transfer.TransferCancelledException;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class ClasspathTransporterTest
-{
-
- private DefaultRepositorySystemSession session;
-
- private TransporterFactory factory;
-
- private Transporter transporter;
-
- private RemoteRepository newRepo( String url )
- {
- return new RemoteRepository.Builder( "test", "default", url ).build();
- }
-
- private void newTransporter( String url )
- throws Exception
- {
- if ( transporter != null )
- {
- transporter.close();
- transporter = null;
- }
- transporter = factory.newInstance( session, newRepo( url ) );
- }
-
- @Before
- public void setUp()
- throws Exception
- {
- session = TestUtils.newSession();
- factory = new ClasspathTransporterFactory( new TestLoggerFactory() );
- newTransporter( "classpath:/repository" );
- }
-
- @After
- public void tearDown()
- {
- if ( transporter != null )
- {
- transporter.close();
- transporter = null;
- }
- factory = null;
- session = null;
- }
-
- @Test
- public void testClassify()
- throws Exception
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( new FileNotFoundException() ) );
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( new ResourceNotFoundException( "test" ) ) );
- }
-
- @Test
- public void testPeek()
- throws Exception
- {
- transporter.peek( new PeekTask( URI.create( "file.txt" ) ) );
- }
-
- @Test
- public void testPeek_NotFound()
- throws Exception
- {
- try
- {
- transporter.peek( new PeekTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( ResourceNotFoundException e )
- {
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testPeek_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.peek( new PeekTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_ToMemory()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( task.getDataString(), listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_ToFile()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "failure" );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setDataFile( file ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", TestFileUtils.readString( file ) );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "test", listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_EmptyResource()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "failure" );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "empty.txt" ) ).setDataFile( file ).setListener( listener );
- transporter.get( task );
- assertEquals( "", TestFileUtils.readString( file ) );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 0, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- assertEquals( "", listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_EncodedResourcePath()
- throws Exception
- {
- GetTask task = new GetTask( URI.create( "some%20space.txt" ) );
- transporter.get( task );
- assertEquals( "space", task.getDataString() );
- }
-
- @Test
- public void testGet_Fragment()
- throws Exception
- {
- GetTask task = new GetTask( URI.create( "file.txt#ignored" ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- }
-
- @Test
- public void testGet_Query()
- throws Exception
- {
- GetTask task = new GetTask( URI.create( "file.txt?ignored" ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- }
-
- @Test
- public void testGet_FileHandleLeak()
- throws Exception
- {
- for ( int i = 0; i < 100; i++ )
- {
- File file = TestFileUtils.createTempFile( "failure" );
- transporter.get( new GetTask( URI.create( "file.txt" ) ).setDataFile( file ) );
- assertTrue( i + ", " + file.getAbsolutePath(), file.delete() );
- }
- }
-
- @Test
- public void testGet_NotFound()
- throws Exception
- {
- try
- {
- transporter.get( new GetTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( ResourceNotFoundException e )
- {
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.get( new GetTask( URI.create( "file.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_StartCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelStart = true;
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setListener( listener );
- try
- {
- transporter.get( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- }
-
- @Test
- public void testGet_ProgressCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelProgress = true;
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setListener( listener );
- try
- {
- transporter.get( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 1, listener.progressedCount );
- }
-
- @Test
- public void testPut()
- throws Exception
- {
- try
- {
- transporter.put( new PutTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( UnsupportedOperationException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testPut_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.put( new PutTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test( expected = NoTransporterException.class )
- public void testInit_BadProtocol()
- throws Exception
- {
- newTransporter( "bad:/void" );
- }
-
- @Test
- public void testInit_CaseInsensitiveProtocol()
- throws Exception
- {
- newTransporter( "classpath:/void" );
- newTransporter( "CLASSPATH:/void" );
- newTransporter( "ClassPath:/void" );
- }
-
- @Test
- public void testInit_OpaqueUrl()
- throws Exception
- {
- testInit( "classpath:repository" );
- }
-
- @Test
- public void testInit_OpaqueUrlTrailingSlash()
- throws Exception
- {
- testInit( "classpath:repository/" );
- }
-
- @Test
- public void testInit_OpaqueUrlSpaces()
- throws Exception
- {
- testInit( "classpath:repo%20space" );
- }
-
- @Test
- public void testInit_HierarchicalUrl()
- throws Exception
- {
- testInit( "classpath:/repository" );
- }
-
- @Test
- public void testInit_HierarchicalUrlTrailingSlash()
- throws Exception
- {
- testInit( "classpath:/repository/" );
- }
-
- @Test
- public void testInit_HierarchicalUrlSpaces()
- throws Exception
- {
- testInit( "classpath:/repo%20space" );
- }
-
- @Test
- public void testInit_HierarchicalUrlRoot()
- throws Exception
- {
- testInit( "classpath:/" );
- }
-
- @Test
- public void testInit_HierarchicalUrlNoPath()
- throws Exception
- {
- testInit( "classpath://reserved" );
- }
-
- private void testInit( String base )
- throws Exception
- {
- newTransporter( base );
- GetTask task = new GetTask( URI.create( "file.txt" ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- }
-
-}
[25/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_38_1.3.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_38_1.3.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_38_1.3.5-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_38_1.3.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_38_1.3.6-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_38_1.3.6-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_38_1.3.6-SNAPSHOT.ini
deleted file mode 100644
index 2eb1d30..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_38_1.3.6-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:39:pom:0.9.8l-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_39_0.9.8l-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_39_0.9.8l-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_39_0.9.8l-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_39_0.9.8l-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_3_1.28-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_3_1.28-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_3_1.28-SNAPSHOT.ini
deleted file mode 100644
index 0060172..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_3_1.28-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:4:pom:2.5.4-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_40_6.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_40_6.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_40_6.1-SNAPSHOT.ini
deleted file mode 100644
index 003ec27..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_40_6.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_41_5.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_41_5.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_41_5.0-SNAPSHOT.ini
deleted file mode 100644
index abd2445..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_41_5.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_44_1.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_44_1.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_44_1.3-SNAPSHOT.ini
deleted file mode 100644
index cff07d1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_44_1.3-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_44_1.4-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_44_1.4-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_44_1.4-SNAPSHOT.ini
deleted file mode 100644
index 45e08ca..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_44_1.4-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:5:pom:1.6-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_45_3.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_45_3.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_45_3.1-SNAPSHOT.ini
deleted file mode 100644
index 1080940..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_45_3.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:46:pom:1.0.2-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_46_1.0.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_46_1.0.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_46_1.0.2-SNAPSHOT.ini
deleted file mode 100644
index e84e949..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_46_1.0.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:47:pom:2.6.2-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_47_2.6.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_47_2.6.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_47_2.6.2-SNAPSHOT.ini
deleted file mode 100644
index cff07d1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_47_2.6.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_47_2.9.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_47_2.9.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_47_2.9.1-SNAPSHOT.ini
deleted file mode 100644
index cff07d1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_47_2.9.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_48_1.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_48_1.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_48_1.3-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_48_1.3-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_49_6.0.5.25-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_49_6.0.5.25-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_49_6.0.5.25-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_49_6.0.5.25-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_4_2.5.4-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_4_2.5.4-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_4_2.5.4-SNAPSHOT.ini
deleted file mode 100644
index 45e08ca..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_4_2.5.4-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:5:pom:1.6-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.3-SNAPSHOT.ini
deleted file mode 100644
index fb4de50..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.3-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:51:pom:1.6.2-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.4-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.4-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.4-SNAPSHOT.ini
deleted file mode 100644
index 8df1fc0..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.4-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.4.1-SNAPSHOT.ini
deleted file mode 100644
index aec8335..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.5-SNAPSHOT.ini
deleted file mode 100644
index 115875c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_50_3.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_51_1.6.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_51_1.6.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_51_1.6.2-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_51_1.6.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_52_1.8-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_52_1.8-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_52_1.8-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_52_1.8-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_52_2.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_52_2.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_52_2.5-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_52_2.5-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_53_2.3.0.677-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_53_2.3.0.677-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_53_2.3.0.677-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_53_2.3.0.677-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_54_0.1.36-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_54_0.1.36-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_54_0.1.36-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_54_0.1.36-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_3.8.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_3.8.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_3.8.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_3.8.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_4.4-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_4.4-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_4.4-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_4.4-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_4.8.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_4.8.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_4.8.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_55_4.8.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_56_1.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_56_1.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_56_1.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_56_1.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_57_4.0.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_57_4.0.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_57_4.0.5-SNAPSHOT.ini
deleted file mode 100644
index 25a47d6..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_57_4.0.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:58:pom:2.4.7-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_58_2.4.7-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_58_2.4.7-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_58_2.4.7-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_58_2.4.7-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_59_1.0.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_59_1.0.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_59_1.0.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_59_1.0.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_5_1.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_5_1.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_5_1.5-SNAPSHOT.ini
deleted file mode 100644
index 0e6ed3a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_5_1.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_5_1.6-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_5_1.6-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_5_1.6-SNAPSHOT.ini
deleted file mode 100644
index 0e6ed3a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_5_1.6-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_60_0.2.9-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_60_0.2.9-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_60_0.2.9-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_60_0.2.9-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_61_1.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_61_1.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_61_1.1-SNAPSHOT.ini
deleted file mode 100644
index cff07d1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_61_1.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_61_1.2.12-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_61_1.2.12-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_61_1.2.12-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_61_1.2.12-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_63_1.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_63_1.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_63_1.1-SNAPSHOT.ini
deleted file mode 100644
index 45e08ca..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_63_1.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:5:pom:1.6-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_63_1.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_63_1.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_63_1.3-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_63_1.3-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_64_1.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_64_1.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_64_1.3-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_64_1.3-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_65_2.1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_65_2.1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_65_2.1.0-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_65_2.1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_66_0.11-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_66_0.11-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_66_0.11-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_66_0.11-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_67_1.6.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_67_1.6.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_67_1.6.5-SNAPSHOT.ini
deleted file mode 100644
index ae14f69..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_67_1.6.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_68_3.8.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_68_3.8.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_68_3.8.1-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_68_3.8.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_10.1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_10.1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_10.1.0-SNAPSHOT.ini
deleted file mode 100644
index 659afdd..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_10.1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:41:pom:5.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_11.1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_11.1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_11.1.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_11.1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_8.1.7-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_8.1.7-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_8.1.7-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_8.1.7-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_9.0.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_9.0.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_9.0.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_69_9.0.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_6_1.5.8-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_6_1.5.8-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_6_1.5.8-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_6_1.5.8-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_70_9.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_70_9.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_70_9.0-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_70_9.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_71_1.1.3.8-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_71_1.1.3.8-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_71_1.1.3.8-SNAPSHOT.ini
deleted file mode 100644
index 704ed7e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_71_1.1.3.8-SNAPSHOT.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_71_1.1.4.C-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_71_1.1.4.C-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_71_1.1.4.C-SNAPSHOT.ini
deleted file mode 100644
index 704ed7e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_71_1.1.4.C-SNAPSHOT.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_73_2.3.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_73_2.3.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_73_2.3.1-SNAPSHOT.ini
deleted file mode 100644
index 80e54a1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_73_2.3.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:74:pom:3.2.0-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_73_2.4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_73_2.4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_73_2.4.1-SNAPSHOT.ini
deleted file mode 100644
index 5ed05de..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_73_2.4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:74:pom:3.5.0-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_74_3.2.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_74_3.2.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_74_3.2.0-SNAPSHOT.ini
deleted file mode 100644
index d50887f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_74_3.2.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:25-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_74_3.5.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_74_3.5.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_74_3.5.0-SNAPSHOT.ini
deleted file mode 100644
index a789cb4..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_74_3.5.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_75_25-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_75_25-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_75_25-SNAPSHOT.ini
deleted file mode 100644
index a27924c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_75_25-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_75_26-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_75_26-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_75_26-SNAPSHOT.ini
deleted file mode 100644
index a27924c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_75_26-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_76_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_76_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_76_1.0-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_76_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_77_1.45-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_77_1.45-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_77_1.45-SNAPSHOT.ini
deleted file mode 100644
index 07dd311..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_77_1.45-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:45:pom:3.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_78_2.6-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_78_2.6-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_78_2.6-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_78_2.6-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_79_0.7.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_79_0.7.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_79_0.7.2-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_79_0.7.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_7_5.8.8-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_7_5.8.8-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_7_5.8.8-SNAPSHOT.ini
deleted file mode 100644
index c41e8d3..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_7_5.8.8-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:37:pom:5.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_7_5.8.9-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_7_5.8.9-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_7_5.8.9-SNAPSHOT.ini
deleted file mode 100644
index 96ea704..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_7_5.8.9-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:37:pom:5.5-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_82_9.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_82_9.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_82_9.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_82_9.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_83_1.10.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_83_1.10.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_83_1.10.0-SNAPSHOT.ini
deleted file mode 100644
index af47d8a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_83_1.10.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:84:pom:2.2.0036-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_84_2.2.0036-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_84_2.2.0036-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_84_2.2.0036-SNAPSHOT.ini
deleted file mode 100644
index 99dfc84..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_84_2.2.0036-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:6:pom:1.5.8-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_6.4-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_6.4-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_6.4-SNAPSHOT.ini
deleted file mode 100644
index 9ec9fb5..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_6.4-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:45:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_9.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_9.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_9.1-SNAPSHOT.ini
deleted file mode 100644
index f2d19b9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_9.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_9.53.busObj.CR.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_9.53.busObj.CR.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_9.53.busObj.CR.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_85_9.53.busObj.CR.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_86_7.13.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_86_7.13.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_86_7.13.2-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_86_7.13.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_87_6b-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_87_6b-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_87_6b-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_87_6b-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_88_3.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_88_3.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_88_3.5-SNAPSHOT.ini
deleted file mode 100644
index f2ae278..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_88_3.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:89:pom:2.3-SNAPSHOT
-10:90:pom:1.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_89_2.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_89_2.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_89_2.3-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_89_2.3-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_8_2.1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_8_2.1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_8_2.1.0-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_8_2.1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_8_2.7.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_8_2.7.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_8_2.7.0-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_8_2.7.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_91_1.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_91_1.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_91_1.5-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_91_1.5-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_92_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_92_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_92_1.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_92_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_93_10.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_93_10.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_93_10.0-SNAPSHOT.ini
deleted file mode 100644
index 003ec27..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_93_10.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_94_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_94_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_94_4.0-SNAPSHOT.ini
deleted file mode 100644
index 5941ff1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_94_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:94:pom:6.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_94_6.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_94_6.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_94_6.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_94_6.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_7.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_7.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_7.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_7.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_7.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_7.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_7.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_7.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_8.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_8.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_8.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_95_8.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_96_8.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_96_8.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_96_8.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_96_8.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_97_3.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_97_3.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_97_3.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_97_3.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_98_6.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_98_6.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_98_6.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_98_6.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_99_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_99_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_99_1.0-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_99_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_9_3.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_9_3.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_9_3.1-SNAPSHOT.ini
deleted file mode 100644
index f334a37..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_9_3.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle.txt b/aether-impl/src/test/resources/artifact-descriptions/cycle.txt
deleted file mode 100644
index 5496316..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-cycle:root:jar:1
-+- cycle:a:jar:1 compile (a)
-| \- cycle:b:jar:1 compile
-| \- cycle:c:jar:1 compile
-| \- ^a
-\- cycle:b:jar:1 compile (b)
- \- cycle:c:jar:1 compile
- \- cycle:a:jar:1 compile
- \- ^b
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle_a_1.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle_a_1.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle_a_1.ini
deleted file mode 100644
index e1228ce..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle_a_1.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-cycle:b:jar:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle_b_1.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle_b_1.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle_b_1.ini
deleted file mode 100644
index 408f1a0..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle_b_1.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-cycle:c:jar:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle_c_1.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle_c_1.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle_c_1.ini
deleted file mode 100644
index 18d989a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle_c_1.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-cycle:a:jar:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle_root_1.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle_root_1.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle_root_1.ini
deleted file mode 100644
index 33d2bd6..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle_root_1.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-cycle:a:jar:1
-cycle:b:jar:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/duplicate_transitive_dependency.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/duplicate_transitive_dependency.ini b/aether-impl/src/test/resources/artifact-descriptions/duplicate_transitive_dependency.ini
deleted file mode 100644
index 09be313..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/duplicate_transitive_dependency.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-gid:aid:ext:ver
-gid:aid2:ext:ver
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/expectedPartialSubtreeOnError.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/expectedPartialSubtreeOnError.txt b/aether-impl/src/test/resources/artifact-descriptions/expectedPartialSubtreeOnError.txt
deleted file mode 100644
index 6ef2faf..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/expectedPartialSubtreeOnError.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-subtree:comparison:ext:error
-+- duplicate:transitive:ext:dependency compile
-| +- gid:aid:ext:ver compile
-| | \- gid:aid2:ext:ver compile
-| \- gid:aid2:ext:ver compile
-\- git:aid:ext:ver compile
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/expectedSubtreeComparisonResult.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/expectedSubtreeComparisonResult.txt b/aether-impl/src/test/resources/artifact-descriptions/expectedSubtreeComparisonResult.txt
deleted file mode 100644
index 63e1318..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/expectedSubtreeComparisonResult.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-subtree:comparison:ext:ver
-+- duplicate:transitive:ext:dependency compile
-| +- gid:aid:ext:ver compile
-| | \- gid:aid2:ext:ver compile
-| \- gid:aid2:ext:ver compile
-\- gid:aid:ext:ver compile
- \- gid:aid2:ext:ver compile
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_9.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_9.ini b/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_9.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_9.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_managedVersion.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_managedVersion.ini b/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_managedVersion.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_managedVersion.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_ver.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/gid_aid2_ver.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/gid_aid_1.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/gid_aid_1.ini b/aether-impl/src/test/resources/artifact-descriptions/gid_aid_1.ini
deleted file mode 100644
index 69b3f85..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/gid_aid_1.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:aid2:ext:[1,9]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/gid_aid_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/gid_aid_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/gid_aid_ver.ini
deleted file mode 100644
index b5aac5f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/gid_aid_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:aid2:ext:ver
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed/duplicate_transitive_managed.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed/duplicate_transitive_managed.ini b/aether-impl/src/test/resources/artifact-descriptions/managed/duplicate_transitive_managed.ini
deleted file mode 100644
index 09be313..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed/duplicate_transitive_managed.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-gid:aid:ext:ver
-gid:aid2:ext:ver
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed/gid_0_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_0_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/managed/gid_0_ver.ini
deleted file mode 100644
index 1831746..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_0_ver.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-gid:1:ext:ver
-[manageddependencies]
-gid:2:ext:managed-by-0
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed/gid_1_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_1_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/managed/gid_1_ver.ini
deleted file mode 100644
index 805fd98..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_1_ver.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-gid:2:ext:ver
-[manageddependencies]
-gid:3:ext:managed-by-1
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed/gid_2_managed-by-0.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_2_managed-by-0.ini b/aether-impl/src/test/resources/artifact-descriptions/managed/gid_2_managed-by-0.ini
deleted file mode 100644
index e6cc9a6..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_2_managed-by-0.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-gid:3:ext:ver
-[manageddependencies]
-gid:4:ext:managed-by-2
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed/gid_3_managed-by-1.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_3_managed-by-1.ini b/aether-impl/src/test/resources/artifact-descriptions/managed/gid_3_managed-by-1.ini
deleted file mode 100644
index aa1cea4..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_3_managed-by-1.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-gid:4:ext:ver
-[manageddependencies]
-gid:5:ext:managed-by-3
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed/gid_4_managed-by-2.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_4_managed-by-2.ini b/aether-impl/src/test/resources/artifact-descriptions/managed/gid_4_managed-by-2.ini
deleted file mode 100644
index 990c928..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_4_managed-by-2.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:5:ext:ver
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed/gid_5_managed-by-3.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_5_managed-by-3.ini b/aether-impl/src/test/resources/artifact-descriptions/managed/gid_5_managed-by-3.ini
deleted file mode 100644
index 05ba453..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_5_managed-by-3.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed/gid_aid2_managed.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_aid2_managed.ini b/aether-impl/src/test/resources/artifact-descriptions/managed/gid_aid2_managed.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_aid2_managed.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed/gid_aid_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_aid_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/managed/gid_aid_ver.ini
deleted file mode 100644
index b5aac5f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed/gid_aid_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:aid2:ext:ver
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed/management-tree.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed/management-tree.txt b/aether-impl/src/test/resources/artifact-descriptions/managed/management-tree.txt
deleted file mode 100644
index 7307a19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed/management-tree.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-gid:0:ext:ver
-+- gid:1:ext:ver compile
- +- gid:2:ext:managed-by-0 compile
- +- gid:3:ext:managed-by-1 compile
- +- gid:4:ext:managed-by-2 compile
- +- gid:5:ext:managed-by-3 compile
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed/subtree_comparison_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed/subtree_comparison_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/managed/subtree_comparison_ver.ini
deleted file mode 100644
index 5b1bcc9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed/subtree_comparison_ver.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-duplicate:transitive:ext:dependency
-gid:aid:ext:ver
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/managed_aid_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/managed_aid_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/managed_aid_ver.ini
deleted file mode 100644
index 6095505..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/managed_aid_ver.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-gid:aid:ext:ver
-
-[manageddependencies]
-gid:aid2:ext:managedVersion:managedScope
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/missing_description_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/missing_description_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/missing_description_ver.ini
deleted file mode 100644
index 91b0c20..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/missing_description_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-missing:artifact:file:description
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/managed/all-nodes.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/all-nodes.txt b/aether-impl/src/test/resources/artifact-descriptions/selection/managed/all-nodes.txt
deleted file mode 100644
index 6caeee1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/all-nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-gid:root:ext:ver root-scope
-+- gid:direct-of-root:ext:ver direct-of-root-scope
- +- gid:transitive-of-root:ext:ver transitive-of-root-scope
- +- gid:transitive-of-transitive-of-root:ext:ver transitive-of-transitive-of-root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/managed/direct-of-root.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/direct-of-root.txt b/aether-impl/src/test/resources/artifact-descriptions/selection/managed/direct-of-root.txt
deleted file mode 100644
index e7b354d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/direct-of-root.txt
+++ /dev/null
@@ -1 +0,0 @@
-gid:root:ext:ver root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_direct-of-root_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_direct-of-root_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_direct-of-root_ver.ini
deleted file mode 100644
index a801f3f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_direct-of-root_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:transitive-of-root:ext:ver:transitive-of-root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_root_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_root_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_root_ver.ini
deleted file mode 100644
index 37fe9ac..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_root_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:direct-of-root:ext:ver:direct-of-root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_transitive-of-root_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_transitive-of-root_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_transitive-of-root_ver.ini
deleted file mode 100644
index e34fa04..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_transitive-of-root_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:transitive-of-transitive-of-root:ext:ver:transitive-of-transitive-of-root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_transitive-of-transitive-of-root_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_transitive-of-transitive-of-root_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_transitive-of-transitive-of-root_ver.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/gid_transitive-of-transitive-of-root_ver.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/managed/transitive-of-root.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/transitive-of-root.txt b/aether-impl/src/test/resources/artifact-descriptions/selection/managed/transitive-of-root.txt
deleted file mode 100644
index dbee99b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/transitive-of-root.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-gid:root:ext:ver root-scope
-+- gid:direct-of-root:ext:ver direct-of-root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/managed/transitive-of-transitive-of-root.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/transitive-of-transitive-of-root.txt b/aether-impl/src/test/resources/artifact-descriptions/selection/managed/transitive-of-transitive-of-root.txt
deleted file mode 100644
index ef3dc74..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/managed/transitive-of-transitive-of-root.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-gid:root:ext:ver root-scope
-+- gid:direct-of-root:ext:ver direct-of-root-scope
- +- gid:transitive-of-root:ext:ver transitive-of-root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_direct-of-root_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_direct-of-root_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_direct-of-root_ver.ini
deleted file mode 100644
index 68e3240..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_direct-of-root_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:transitive-of-root:ext:ver:transitive-of-root-scope:optional
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_root_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_root_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_root_ver.ini
deleted file mode 100644
index fbdaab9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_root_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:direct-of-root:ext:ver:direct-of-root-scope:optional
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-root_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-root_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-root_ver.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-root_ver.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/optional/no-selector-tree.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/optional/no-selector-tree.txt b/aether-impl/src/test/resources/artifact-descriptions/selection/optional/no-selector-tree.txt
deleted file mode 100644
index 890216c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/optional/no-selector-tree.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-gid:root:ext:ver root-scope
-+- gid:direct-of-root:ext:ver direct-of-root-scope optional
- +- gid:transitive-of-root:ext:ver transitive-of-root-scope optional
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/optional/optional-exclusion-tree.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/optional/optional-exclusion-tree.txt b/aether-impl/src/test/resources/artifact-descriptions/selection/optional/optional-exclusion-tree.txt
deleted file mode 100644
index fe87f12..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/optional/optional-exclusion-tree.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-gid:root:ext:ver root-scope
-+- gid:direct-of-root:ext:ver direct-of-root-scope optional
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes.txt b/aether-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes.txt
deleted file mode 100644
index 6caeee1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-gid:root:ext:ver root-scope
-+- gid:direct-of-root:ext:ver direct-of-root-scope
- +- gid:transitive-of-root:ext:ver transitive-of-root-scope
- +- gid:transitive-of-transitive-of-root:ext:ver transitive-of-transitive-of-root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_direct-of-root_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_direct-of-root_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_direct-of-root_ver.ini
deleted file mode 100644
index a801f3f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_direct-of-root_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:transitive-of-root:ext:ver:transitive-of-root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_root_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_root_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_root_ver.ini
deleted file mode 100644
index 37fe9ac..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_root_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:direct-of-root:ext:ver:direct-of-root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-root_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-root_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-root_ver.ini
deleted file mode 100644
index e34fa04..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-root_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:transitive-of-transitive-of-root:ext:ver:transitive-of-transitive-of-root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-root_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-root_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-root_ver.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-root_ver.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-root-scope-exclusion-tree.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-root-scope-exclusion-tree.txt b/aether-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-root-scope-exclusion-tree.txt
deleted file mode 100644
index dbee99b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-root-scope-exclusion-tree.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-gid:root:ext:ver root-scope
-+- gid:direct-of-root:ext:ver direct-of-root-scope
[32/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManagerTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManagerTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManagerTest.java
deleted file mode 100644
index 8bc50d6..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManagerTest.java
+++ /dev/null
@@ -1,308 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
-import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.repository.MirrorSelector;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.ProxySelector;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.util.repository.AuthenticationBuilder;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- *
- */
-public class DefaultRemoteRepositoryManagerTest
-{
-
- private DefaultRepositorySystemSession session;
-
- private DefaultRemoteRepositoryManager manager;
-
- @Before
- public void setup()
- throws Exception
- {
- session = TestUtils.newSession();
- session.setChecksumPolicy( null );
- session.setUpdatePolicy( null );
- manager = new DefaultRemoteRepositoryManager();
- manager.setUpdatePolicyAnalyzer( new StubUpdatePolicyAnalyzer() );
- manager.setChecksumPolicyProvider( new DefaultChecksumPolicyProvider() );
- manager.setLoggerFactory( new TestLoggerFactory() );
- }
-
- @After
- public void teardown()
- throws Exception
- {
- manager = null;
- session = null;
- }
-
- private RemoteRepository.Builder newRepo( String id, String url, boolean enabled, String updates, String checksums )
- {
- RepositoryPolicy policy = new RepositoryPolicy( enabled, updates, checksums );
- return new RemoteRepository.Builder( id, "test", url ).setPolicy( policy );
- }
-
- private void assertEqual( RemoteRepository expected, RemoteRepository actual )
- {
- assertEquals( "id", expected.getId(), actual.getId() );
- assertEquals( "url", expected.getUrl(), actual.getUrl() );
- assertEquals( "type", expected.getContentType(), actual.getContentType() );
- assertEqual( expected.getPolicy( false ), actual.getPolicy( false ) );
- assertEqual( expected.getPolicy( true ), actual.getPolicy( true ) );
- }
-
- private void assertEqual( RepositoryPolicy expected, RepositoryPolicy actual )
- {
- assertEquals( "enabled", expected.isEnabled(), actual.isEnabled() );
- assertEquals( "checksums", expected.getChecksumPolicy(), actual.getChecksumPolicy() );
- assertEquals( "updates", expected.getUpdatePolicy(), actual.getUpdatePolicy() );
- }
-
- @Test
- public void testGetPolicy()
- {
- RepositoryPolicy snapshotPolicy =
- new RepositoryPolicy( true, RepositoryPolicy.UPDATE_POLICY_ALWAYS, RepositoryPolicy.CHECKSUM_POLICY_IGNORE );
- RepositoryPolicy releasePolicy =
- new RepositoryPolicy( true, RepositoryPolicy.UPDATE_POLICY_NEVER, RepositoryPolicy.CHECKSUM_POLICY_FAIL );
-
- RemoteRepository repo = new RemoteRepository.Builder( "id", "type", "http://localhost" ) //
- .setSnapshotPolicy( snapshotPolicy ).setReleasePolicy( releasePolicy ).build();
-
- RepositoryPolicy effectivePolicy = manager.getPolicy( session, repo, true, true );
- assertEquals( true, effectivePolicy.isEnabled() );
- assertEquals( RepositoryPolicy.CHECKSUM_POLICY_IGNORE, effectivePolicy.getChecksumPolicy() );
- assertEquals( RepositoryPolicy.UPDATE_POLICY_ALWAYS, effectivePolicy.getUpdatePolicy() );
- }
-
- @Test
- public void testAggregateSimpleRepos()
- {
- RemoteRepository dominant1 = newRepo( "a", "file://", false, "", "" ).build();
-
- RemoteRepository recessive1 = newRepo( "a", "http://", true, "", "" ).build();
- RemoteRepository recessive2 = newRepo( "b", "file://", true, "", "" ).build();
-
- List<RemoteRepository> result =
- manager.aggregateRepositories( session, Arrays.asList( dominant1 ),
- Arrays.asList( recessive1, recessive2 ), false );
-
- assertEquals( 2, result.size() );
- assertEqual( dominant1, result.get( 0 ) );
- assertEqual( recessive2, result.get( 1 ) );
- }
-
- @Test
- public void testAggregateSimpleRepos_MustKeepDisabledRecessiveRepo()
- {
- RemoteRepository dominant = newRepo( "a", "file://", true, "", "" ).build();
-
- RemoteRepository recessive1 = newRepo( "b", "http://", false, "", "" ).build();
-
- List<RemoteRepository> result =
- manager.aggregateRepositories( session, Arrays.asList( dominant ), Arrays.asList( recessive1 ), false );
-
- RemoteRepository recessive2 = newRepo( recessive1.getId(), "http://", true, "", "" ).build();
-
- result = manager.aggregateRepositories( session, result, Arrays.asList( recessive2 ), false );
-
- assertEquals( 2, result.size() );
- assertEqual( dominant, result.get( 0 ) );
- assertEqual( recessive1, result.get( 1 ) );
- }
-
- @Test
- public void testAggregateMirrorRepos_DominantMirrorComplete()
- {
- RemoteRepository dominant1 = newRepo( "a", "http://", false, "", "" ).build();
- RemoteRepository dominantMirror1 =
- newRepo( "x", "file://", false, "", "" ).addMirroredRepository( dominant1 ).build();
-
- RemoteRepository recessive1 = newRepo( "a", "https://", true, "", "" ).build();
- RemoteRepository recessiveMirror1 =
- newRepo( "x", "http://", true, "", "" ).addMirroredRepository( recessive1 ).build();
-
- List<RemoteRepository> result =
- manager.aggregateRepositories( session, Arrays.asList( dominantMirror1 ),
- Arrays.asList( recessiveMirror1 ), false );
-
- assertEquals( 1, result.size() );
- assertEqual( dominantMirror1, result.get( 0 ) );
- assertEquals( 1, result.get( 0 ).getMirroredRepositories().size() );
- assertEquals( dominant1, result.get( 0 ).getMirroredRepositories().get( 0 ) );
- }
-
- @Test
- public void testAggregateMirrorRepos_DominantMirrorIncomplete()
- {
- RemoteRepository dominant1 = newRepo( "a", "http://", false, "", "" ).build();
- RemoteRepository dominantMirror1 =
- newRepo( "x", "file://", false, "", "" ).addMirroredRepository( dominant1 ).build();
-
- RemoteRepository recessive1 = newRepo( "a", "https://", true, "", "" ).build();
- RemoteRepository recessive2 = newRepo( "b", "https://", true, "", "" ).build();
- RemoteRepository recessiveMirror1 =
- newRepo( "x", "http://", true, "", "" ).setMirroredRepositories( Arrays.asList( recessive1, recessive2 ) ).build();
-
- List<RemoteRepository> result =
- manager.aggregateRepositories( session, Arrays.asList( dominantMirror1 ),
- Arrays.asList( recessiveMirror1 ), false );
-
- assertEquals( 1, result.size() );
- assertEqual( newRepo( "x", "file://", true, "", "" ).build(), result.get( 0 ) );
- assertEquals( 2, result.get( 0 ).getMirroredRepositories().size() );
- assertEquals( dominant1, result.get( 0 ).getMirroredRepositories().get( 0 ) );
- assertEquals( recessive2, result.get( 0 ).getMirroredRepositories().get( 1 ) );
- }
-
- @Test
- public void testMirrorAuthentication()
- {
- final RemoteRepository repo = newRepo( "a", "http://", true, "", "" ).build();
- final RemoteRepository mirror =
- newRepo( "a", "http://", true, "", "" ).setAuthentication( new AuthenticationBuilder().addUsername( "test" ).build() ).build();
- session.setMirrorSelector( new MirrorSelector()
- {
- public RemoteRepository getMirror( RemoteRepository repository )
- {
- return mirror;
- }
- } );
-
- List<RemoteRepository> result =
- manager.aggregateRepositories( session, Collections.<RemoteRepository> emptyList(), Arrays.asList( repo ),
- true );
-
- assertEquals( 1, result.size() );
- assertSame( mirror.getAuthentication(), result.get( 0 ).getAuthentication() );
- }
-
- @Test
- public void testMirrorProxy()
- {
- final RemoteRepository repo = newRepo( "a", "http://", true, "", "" ).build();
- final RemoteRepository mirror =
- newRepo( "a", "http://", true, "", "" ).setProxy( new Proxy( "http", "host", 2011, null ) ).build();
- session.setMirrorSelector( new MirrorSelector()
- {
- public RemoteRepository getMirror( RemoteRepository repository )
- {
- return mirror;
- }
- } );
-
- List<RemoteRepository> result =
- manager.aggregateRepositories( session, Collections.<RemoteRepository> emptyList(), Arrays.asList( repo ),
- true );
-
- assertEquals( 1, result.size() );
- assertEquals( "http", result.get( 0 ).getProxy().getType() );
- assertEquals( "host", result.get( 0 ).getProxy().getHost() );
- assertEquals( 2011, result.get( 0 ).getProxy().getPort() );
- }
-
- @Test
- public void testProxySelector()
- {
- final RemoteRepository repo = newRepo( "a", "http://", true, "", "" ).build();
- final Proxy proxy = new Proxy( "http", "host", 2011, null );
- session.setProxySelector( new ProxySelector()
- {
- public Proxy getProxy( RemoteRepository repository )
- {
- return proxy;
- }
- } );
- session.setMirrorSelector( new MirrorSelector()
- {
- public RemoteRepository getMirror( RemoteRepository repository )
- {
- return null;
- }
- } );
-
- List<RemoteRepository> result =
- manager.aggregateRepositories( session, Collections.<RemoteRepository> emptyList(), Arrays.asList( repo ),
- true );
-
- assertEquals( 1, result.size() );
- assertEquals( "http", result.get( 0 ).getProxy().getType() );
- assertEquals( "host", result.get( 0 ).getProxy().getHost() );
- assertEquals( 2011, result.get( 0 ).getProxy().getPort() );
- }
-
- private static class StubUpdatePolicyAnalyzer
- implements UpdatePolicyAnalyzer
- {
-
- public String getEffectiveUpdatePolicy( RepositorySystemSession session, String policy1, String policy2 )
- {
- return ordinalOfUpdatePolicy( policy1 ) < ordinalOfUpdatePolicy( policy2 ) ? policy1 : policy2;
- }
-
- private int ordinalOfUpdatePolicy( String policy )
- {
- if ( RepositoryPolicy.UPDATE_POLICY_DAILY.equals( policy ) )
- {
- return 1440;
- }
- else if ( RepositoryPolicy.UPDATE_POLICY_ALWAYS.equals( policy ) )
- {
- return 0;
- }
- else if ( policy != null && policy.startsWith( RepositoryPolicy.UPDATE_POLICY_INTERVAL ) )
- {
- String s = policy.substring( RepositoryPolicy.UPDATE_POLICY_INTERVAL.length() + 1 );
- return Integer.valueOf( s );
- }
- else
- {
- // assume "never"
- return Integer.MAX_VALUE;
- }
- }
-
- public boolean isUpdatedRequired( RepositorySystemSession session, long lastModified, String policy )
- {
- return false;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcherTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcherTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcherTest.java
deleted file mode 100644
index 25e8a87..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcherTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.util.Locale;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositoryEvent;
-import org.eclipse.aether.RepositoryListener;
-import org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.junit.Test;
-
-/**
- */
-public class DefaultRepositoryEventDispatcherTest
-{
-
- @Test
- public void testDispatchHandlesAllEventTypes()
- throws Exception
- {
- DefaultRepositoryEventDispatcher dispatcher = new DefaultRepositoryEventDispatcher();
-
- ListenerHandler handler = new ListenerHandler();
-
- RepositoryListener listener =
- (RepositoryListener) Proxy.newProxyInstance( getClass().getClassLoader(),
- new Class<?>[] { RepositoryListener.class }, handler );
-
- DefaultRepositorySystemSession session = TestUtils.newSession();
- session.setRepositoryListener( listener );
-
- for ( RepositoryEvent.EventType type : RepositoryEvent.EventType.values() )
- {
- RepositoryEvent event = new RepositoryEvent.Builder( session, type ).build();
-
- handler.methodName = null;
-
- dispatcher.dispatch( event );
-
- assertNotNull( "not handled: " + type, handler.methodName );
-
- assertEquals( "badly handled: " + type, type.name().replace( "_", "" ).toLowerCase( Locale.ENGLISH ),
- handler.methodName.toLowerCase( Locale.ENGLISH ) );
- }
- }
-
- static class ListenerHandler
- implements InvocationHandler
- {
-
- public String methodName;
-
- public Object invoke( Object proxy, Method method, Object[] args )
- throws Throwable
- {
- if ( args.length == 1 && args[0] instanceof RepositoryEvent )
- {
- methodName = method.getName();
- }
-
- return null;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositorySystemTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositorySystemTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositorySystemTest.java
deleted file mode 100644
index 9576152..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositorySystemTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.collection.CollectRequest;
-import org.eclipse.aether.collection.CollectResult;
-import org.eclipse.aether.collection.DependencyCollectionException;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.impl.DependencyCollector;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.DependencyRequest;
-import org.eclipse.aether.resolution.DependencyResolutionException;
-import org.eclipse.aether.util.repository.AuthenticationBuilder;
-import org.eclipse.aether.util.repository.DefaultAuthenticationSelector;
-import org.eclipse.aether.util.repository.DefaultMirrorSelector;
-import org.eclipse.aether.util.repository.DefaultProxySelector;
-import org.junit.Before;
-import org.junit.Test;
-
-public class DefaultRepositorySystemTest
-{
-
- private DefaultRepositorySystem system;
-
- private DefaultRepositorySystemSession session;
-
- @Before
- public void init()
- {
- DefaultRemoteRepositoryManager remoteRepoManager = new DefaultRemoteRepositoryManager();
- system = new DefaultRepositorySystem();
- system.setRemoteRepositoryManager( remoteRepoManager );
- session = TestUtils.newSession();
- }
-
- @Test
- public void testNewResolutionRepositories()
- {
- Proxy proxy = new Proxy( "http", "localhost", 8080 );
- DefaultProxySelector proxySelector = new DefaultProxySelector();
- proxySelector.add( proxy, "" );
- session.setProxySelector( proxySelector );
-
- Authentication auth = new AuthenticationBuilder().addUsername( "user" ).build();
- DefaultAuthenticationSelector authSelector = new DefaultAuthenticationSelector();
- authSelector.add( "mirror", auth );
- authSelector.add( "test-2", auth );
- session.setAuthenticationSelector( authSelector );
-
- DefaultMirrorSelector mirrorSelector = new DefaultMirrorSelector();
- mirrorSelector.add( "mirror", "http:void", "default", false, "test-1", null );
- session.setMirrorSelector( mirrorSelector );
-
- RemoteRepository rawRepo1 = new RemoteRepository.Builder( "test-1", "default", "http://void" ).build();
- RemoteRepository rawRepo2 = new RemoteRepository.Builder( "test-2", "default", "http://null" ).build();
- List<RemoteRepository> resolveRepos =
- system.newResolutionRepositories( session, Arrays.asList( rawRepo1, rawRepo2 ) );
- assertNotNull( resolveRepos );
- assertEquals( 2, resolveRepos.size() );
- RemoteRepository resolveRepo = resolveRepos.get( 0 );
- assertNotNull( resolveRepo );
- assertEquals( "mirror", resolveRepo.getId() );
- assertSame( proxy, resolveRepo.getProxy() );
- assertSame( auth, resolveRepo.getAuthentication() );
- resolveRepo = resolveRepos.get( 1 );
- assertNotNull( resolveRepo );
- assertEquals( "test-2", resolveRepo.getId() );
- assertSame( proxy, resolveRepo.getProxy() );
- assertSame( auth, resolveRepo.getAuthentication() );
- }
-
- @Test
- public void testNewDeploymentRepository()
- {
- Proxy proxy = new Proxy( "http", "localhost", 8080 );
- DefaultProxySelector proxySelector = new DefaultProxySelector();
- proxySelector.add( proxy, "" );
- session.setProxySelector( proxySelector );
-
- Authentication auth = new AuthenticationBuilder().addUsername( "user" ).build();
- DefaultAuthenticationSelector authSelector = new DefaultAuthenticationSelector();
- authSelector.add( "test", auth );
- session.setAuthenticationSelector( authSelector );
-
- DefaultMirrorSelector mirrorSelector = new DefaultMirrorSelector();
- mirrorSelector.add( "mirror", "file:void", "default", false, "*", null );
- session.setMirrorSelector( mirrorSelector );
-
- RemoteRepository rawRepo = new RemoteRepository.Builder( "test", "default", "http://void" ).build();
- RemoteRepository deployRepo = system.newDeploymentRepository( session, rawRepo );
- assertNotNull( deployRepo );
- assertSame( proxy, deployRepo.getProxy() );
- assertSame( auth, deployRepo.getAuthentication() );
- }
-
- @Test
- public void testResolveDependencies_NoRootNode()
- throws Exception
- {
- DependencyRequest request = new DependencyRequest();
- request.setCollectRequest( new CollectRequest().setRoot( new Dependency( new DefaultArtifact( "g:a:v" ), "" ) ) );
- system.setDependencyCollector( new DependencyCollector()
- {
- public CollectResult collectDependencies( RepositorySystemSession session, CollectRequest request )
- throws DependencyCollectionException
- {
- throw new DependencyCollectionException( null );
- }
- } );
- try
- {
- system.resolveDependencies( session, request );
- fail( "Expected exception" );
- }
- catch ( DependencyResolutionException e )
- {
- assertTrue( e.getCause() instanceof DependencyCollectionException );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManagerTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManagerTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManagerTest.java
deleted file mode 100644
index 43ccd54..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManagerTest.java
+++ /dev/null
@@ -1,816 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.net.URI;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.impl.UpdateCheck;
-import org.eclipse.aether.internal.impl.DefaultUpdateCheckManager;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.metadata.DefaultMetadata;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.transfer.ArtifactNotFoundException;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.transfer.MetadataNotFoundException;
-import org.eclipse.aether.transfer.MetadataTransferException;
-import org.eclipse.aether.util.repository.SimpleResolutionErrorPolicy;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class DefaultUpdateCheckManagerTest
-{
-
- private static final int HOUR = 60 * 60 * 1000;
-
- private DefaultUpdateCheckManager manager;
-
- private DefaultRepositorySystemSession session;
-
- private Metadata metadata;
-
- private RemoteRepository repository;
-
- private Artifact artifact;
-
- @Before
- public void setup()
- throws Exception
- {
- File dir = TestFileUtils.createTempFile( "" );
- TestFileUtils.deleteFile( dir );
-
- File metadataFile = new File( dir, "metadata.txt" );
- TestFileUtils.writeString( metadataFile, "metadata" );
- File artifactFile = new File( dir, "artifact.txt" );
- TestFileUtils.writeString( artifactFile, "artifact" );
-
- session = TestUtils.newSession();
- repository =
- new RemoteRepository.Builder( "id", "default", TestFileUtils.createTempDir().toURI().toURL().toString() ).build();
- manager = new DefaultUpdateCheckManager().setUpdatePolicyAnalyzer( new DefaultUpdatePolicyAnalyzer() );
- metadata =
- new DefaultMetadata( "gid", "aid", "ver", "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT,
- metadataFile );
- artifact = new DefaultArtifact( "gid", "aid", "", "ext", "ver" ).setFile( artifactFile );
- }
-
- @After
- public void teardown()
- throws Exception
- {
- new File( metadata.getFile().getParent(), "resolver-status.properties" ).delete();
- new File( artifact.getFile().getPath() + ".lastUpdated" ).delete();
- metadata.getFile().delete();
- artifact.getFile().delete();
- TestFileUtils.deleteFile( new File( new URI( repository.getUrl() ) ) );
- }
-
- static void resetSessionData( RepositorySystemSession session )
- {
- session.getData().set( "updateCheckManager.checks", null );
- }
-
- private UpdateCheck<Metadata, MetadataTransferException> newMetadataCheck()
- {
- UpdateCheck<Metadata, MetadataTransferException> check = new UpdateCheck<Metadata, MetadataTransferException>();
- check.setItem( metadata );
- check.setFile( metadata.getFile() );
- check.setRepository( repository );
- check.setAuthoritativeRepository( repository );
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":10" );
- return check;
- }
-
- private UpdateCheck<Artifact, ArtifactTransferException> newArtifactCheck()
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = new UpdateCheck<Artifact, ArtifactTransferException>();
- check.setItem( artifact );
- check.setFile( artifact.getFile() );
- check.setRepository( repository );
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":10" );
- return check;
- }
-
- @Test( expected = Exception.class )
- public void testCheckMetadataFailOnNoFile()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- check.setItem( metadata.setFile( null ) );
- check.setFile( null );
-
- manager.checkMetadata( session, check );
- }
-
- @Test
- public void testCheckMetadataUpdatePolicyRequired()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
-
- Calendar cal = Calendar.getInstance();
- cal.add( Calendar.DATE, -1 );
- check.setLocalLastUpdated( cal.getTimeInMillis() );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_ALWAYS );
- manager.checkMetadata( session, check );
- assertNull( check.getException() );
- assertTrue( check.isRequired() );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
- manager.checkMetadata( session, check );
- assertNull( check.getException() );
- assertTrue( check.isRequired() );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":60" );
- manager.checkMetadata( session, check );
- assertNull( check.getException() );
- assertTrue( check.isRequired() );
- }
-
- @Test
- public void testCheckMetadataUpdatePolicyNotRequired()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
-
- check.setLocalLastUpdated( System.currentTimeMillis() );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_NEVER );
- manager.checkMetadata( session, check );
- assertFalse( check.isRequired() );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
- manager.checkMetadata( session, check );
- assertFalse( check.isRequired() );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":61" );
- manager.checkMetadata( session, check );
- assertFalse( check.isRequired() );
-
- check.setPolicy( "no particular policy" );
- manager.checkMetadata( session, check );
- assertFalse( check.isRequired() );
- }
-
- @Test
- public void testCheckMetadata()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
-
- // existing file, never checked before
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
-
- // just checked
- manager.touchMetadata( session, check );
- resetSessionData( session );
-
- check = newMetadataCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":60" );
-
- manager.checkMetadata( session, check );
- assertEquals( false, check.isRequired() );
-
- // no local file
- check.getFile().delete();
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
- // (! file.exists && ! repoKey) -> no timestamp
- }
-
- @Test
- public void testCheckMetadataNoLocalFile()
- throws Exception
- {
- metadata.getFile().delete();
-
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
-
- long lastUpdate = new Date().getTime() - HOUR;
- check.setLocalLastUpdated( lastUpdate );
-
- // ! file.exists && updateRequired -> check in remote repo
- check.setLocalLastUpdated( lastUpdate );
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckMetadataNotFoundInRepoCachingEnabled()
- throws Exception
- {
- metadata.getFile().delete();
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
-
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
-
- check.setException( new MetadataNotFoundException( metadata, repository, "" ) );
- manager.touchMetadata( session, check );
- resetSessionData( session );
-
- // ! file.exists && ! updateRequired -> artifact not found in remote repo
- check = newMetadataCheck().setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
- manager.checkMetadata( session, check );
- assertEquals( false, check.isRequired() );
- assertTrue( check.getException() instanceof MetadataNotFoundException );
- assertTrue( check.getException().isFromCache() );
- }
-
- @Test
- public void testCheckMetadataNotFoundInRepoCachingDisabled()
- throws Exception
- {
- metadata.getFile().delete();
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( false, false ) );
-
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
-
- check.setException( new MetadataNotFoundException( metadata, repository, "" ) );
- manager.touchMetadata( session, check );
- resetSessionData( session );
-
- // ! file.exists && updateRequired -> check in remote repo
- check = newMetadataCheck().setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
- assertNull( check.getException() );
- }
-
- @Test
- public void testCheckMetadataErrorFromRepoCachingEnabled()
- throws Exception
- {
- metadata.getFile().delete();
-
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
-
- check.setException( new MetadataTransferException( metadata, repository, "some error" ) );
- manager.touchMetadata( session, check );
- resetSessionData( session );
-
- // ! file.exists && ! updateRequired && previousError -> depends on transfer error caching
- check = newMetadataCheck();
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( false, true ) );
- manager.checkMetadata( session, check );
- assertEquals( false, check.isRequired() );
- assertTrue( check.getException() instanceof MetadataTransferException );
- assertTrue( String.valueOf( check.getException() ), check.getException().getMessage().contains( "some error" ) );
- assertTrue( check.getException().isFromCache() );
- }
-
- @Test
- public void testCheckMetadataErrorFromRepoCachingDisabled()
- throws Exception
- {
- metadata.getFile().delete();
-
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
-
- check.setException( new MetadataTransferException( metadata, repository, "some error" ) );
- manager.touchMetadata( session, check );
- resetSessionData( session );
-
- // ! file.exists && ! updateRequired && previousError -> depends on transfer error caching
- check = newMetadataCheck();
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( false, false ) );
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
- assertNull( check.getException() );
- }
-
- @Test
- public void testCheckMetadataAtMostOnceDuringSessionEvenIfUpdatePolicyAlways()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_ALWAYS );
-
- // first check
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
-
- manager.touchMetadata( session, check );
-
- // second check in same session
- manager.checkMetadata( session, check );
- assertEquals( false, check.isRequired() );
- }
-
- @Test
- public void testCheckMetadataSessionStateModes()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_ALWAYS );
- manager.touchMetadata( session, check );
-
- session.setConfigProperty( DefaultUpdateCheckManager.CONFIG_PROP_SESSION_STATE, "bypass" );
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
-
- resetSessionData( session );
- manager.touchMetadata( session, check );
-
- session.setConfigProperty( DefaultUpdateCheckManager.CONFIG_PROP_SESSION_STATE, "true" );
- manager.checkMetadata( session, check );
- assertEquals( false, check.isRequired() );
-
- session.setConfigProperty( DefaultUpdateCheckManager.CONFIG_PROP_SESSION_STATE, "false" );
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckMetadataAtMostOnceDuringSessionEvenIfUpdatePolicyAlways_InvalidFile()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_ALWAYS );
- check.setFileValid( false );
-
- // first check
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
-
- // first touch, without exception
- manager.touchMetadata( session, check );
-
- // another check in same session
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
-
- // another touch, with exception
- check.setException( new MetadataNotFoundException( check.getItem(), check.getRepository() ) );
- manager.touchMetadata( session, check );
-
- // another check in same session
- manager.checkMetadata( session, check );
- assertEquals( false, check.isRequired() );
- }
-
- @Test
- public void testCheckMetadataAtMostOnceDuringSessionEvenIfUpdatePolicyAlways_DifferentRepoIdSameUrl()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_ALWAYS );
- check.setFileValid( false );
-
- // first check
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
-
- manager.touchMetadata( session, check );
-
- // second check in same session but for repo with different id
- check.setRepository( new RemoteRepository.Builder( check.getRepository() ).setId( "check" ).build() );
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckMetadataWhenLocallyMissingEvenIfUpdatePolicyIsNever()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_NEVER );
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
-
- check.getFile().delete();
- assertEquals( check.getFile().getAbsolutePath(), false, check.getFile().exists() );
-
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckMetadataWhenLocallyPresentButInvalidEvenIfUpdatePolicyIsNever()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_NEVER );
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
-
- manager.touchMetadata( session, check );
- resetSessionData( session );
-
- check.setFileValid( false );
-
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckMetadataWhenLocallyDeletedEvenIfTimestampUpToDate()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
-
- manager.touchMetadata( session, check );
- resetSessionData( session );
-
- check.getFile().delete();
- assertEquals( check.getFile().getAbsolutePath(), false, check.getFile().exists() );
-
- manager.checkMetadata( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckMetadataNotWhenUpdatePolicyIsNeverAndTimestampIsUnavailable()
- throws Exception
- {
- UpdateCheck<Metadata, MetadataTransferException> check = newMetadataCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_NEVER );
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
-
- manager.checkMetadata( session, check );
- assertEquals( false, check.isRequired() );
- }
-
- @Test( expected = IllegalArgumentException.class )
- public void testCheckArtifactFailOnNoFile()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setItem( artifact.setFile( null ) );
- check.setFile( null );
-
- manager.checkArtifact( session, check );
- assertNotNull( check.getException() );
- }
-
- @Test
- public void testCheckArtifactUpdatePolicyRequired()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setItem( artifact );
- check.setFile( artifact.getFile() );
-
- Calendar cal = Calendar.getInstance( TimeZone.getTimeZone( "UTC" ) );
- cal.add( Calendar.DATE, -1 );
- long lastUpdate = cal.getTimeInMillis();
- artifact.getFile().setLastModified( lastUpdate );
- check.setLocalLastUpdated( lastUpdate );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_ALWAYS );
- manager.checkArtifact( session, check );
- assertNull( check.getException() );
- assertTrue( check.isRequired() );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
- manager.checkArtifact( session, check );
- assertNull( check.getException() );
- assertTrue( check.isRequired() );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":60" );
- manager.checkArtifact( session, check );
- assertNull( check.getException() );
- assertTrue( check.isRequired() );
- }
-
- @Test
- public void testCheckArtifactUpdatePolicyNotRequired()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setItem( artifact );
- check.setFile( artifact.getFile() );
-
- Calendar cal = Calendar.getInstance( TimeZone.getTimeZone( "UTC" ) );
- cal.add( Calendar.HOUR_OF_DAY, -1 );
- check.setLocalLastUpdated( cal.getTimeInMillis() );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_NEVER );
- manager.checkArtifact( session, check );
- assertFalse( check.isRequired() );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
- manager.checkArtifact( session, check );
- assertFalse( check.isRequired() );
-
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":61" );
- manager.checkArtifact( session, check );
- assertFalse( check.isRequired() );
-
- check.setPolicy( "no particular policy" );
- manager.checkArtifact( session, check );
- assertFalse( check.isRequired() );
- }
-
- @Test
- public void testCheckArtifact()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- long fifteenMinutes = new Date().getTime() - ( 15 * 60 * 1000 );
- check.getFile().setLastModified( fifteenMinutes );
- // time is truncated on setLastModfied
- fifteenMinutes = check.getFile().lastModified();
-
- // never checked before
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
-
- // just checked
- check.setLocalLastUpdated( 0 );
- long lastUpdate = new Date().getTime();
- check.getFile().setLastModified( lastUpdate );
- lastUpdate = check.getFile().lastModified();
-
- manager.checkArtifact( session, check );
- assertEquals( false, check.isRequired() );
-
- // no local file, no repo timestamp
- check.setLocalLastUpdated( 0 );
- check.getFile().delete();
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckArtifactNoLocalFile()
- throws Exception
- {
- artifact.getFile().delete();
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
-
- long lastUpdate = new Date().getTime() - HOUR;
-
- // ! file.exists && updateRequired -> check in remote repo
- check.setLocalLastUpdated( lastUpdate );
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckArtifactNotFoundInRepoCachingEnabled()
- throws Exception
- {
- artifact.getFile().delete();
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
-
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setException( new ArtifactNotFoundException( artifact, repository ) );
- manager.touchArtifact( session, check );
- resetSessionData( session );
-
- // ! file.exists && ! updateRequired -> artifact not found in remote repo
- check = newArtifactCheck().setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
- manager.checkArtifact( session, check );
- assertEquals( false, check.isRequired() );
- assertTrue( check.getException() instanceof ArtifactNotFoundException );
- assertTrue( check.getException().isFromCache() );
- }
-
- @Test
- public void testCheckArtifactNotFoundInRepoCachingDisabled()
- throws Exception
- {
- artifact.getFile().delete();
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( false, false ) );
-
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setException( new ArtifactNotFoundException( artifact, repository ) );
- manager.touchArtifact( session, check );
- resetSessionData( session );
-
- // ! file.exists && updateRequired -> check in remote repo
- check = newArtifactCheck().setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
- assertNull( check.getException() );
- }
-
- @Test
- public void testCheckArtifactErrorFromRepoCachingEnabled()
- throws Exception
- {
- artifact.getFile().delete();
-
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
- check.setException( new ArtifactTransferException( artifact, repository, "some error" ) );
- manager.touchArtifact( session, check );
- resetSessionData( session );
-
- // ! file.exists && ! updateRequired && previousError -> depends on transfer error caching
- check = newArtifactCheck();
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( false, true ) );
- manager.checkArtifact( session, check );
- assertEquals( false, check.isRequired() );
- assertTrue( check.getException() instanceof ArtifactTransferException );
- assertTrue( check.getException().isFromCache() );
- }
-
- @Test
- public void testCheckArtifactErrorFromRepoCachingDisabled()
- throws Exception
- {
- artifact.getFile().delete();
-
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_DAILY );
- check.setException( new ArtifactTransferException( artifact, repository, "some error" ) );
- manager.touchArtifact( session, check );
- resetSessionData( session );
-
- // ! file.exists && ! updateRequired && previousError -> depends on transfer error caching
- check = newArtifactCheck();
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( false, false ) );
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
- assertNull( check.getException() );
- }
-
- @Test
- public void testCheckArtifactAtMostOnceDuringSessionEvenIfUpdatePolicyAlways()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_ALWAYS );
-
- // first check
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
-
- manager.touchArtifact( session, check );
-
- // second check in same session
- manager.checkArtifact( session, check );
- assertEquals( false, check.isRequired() );
- }
-
- @Test
- public void testCheckArtifactSessionStateModes()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_ALWAYS );
- manager.touchArtifact( session, check );
-
- session.setConfigProperty( DefaultUpdateCheckManager.CONFIG_PROP_SESSION_STATE, "bypass" );
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
-
- resetSessionData( session );
- manager.touchArtifact( session, check );
-
- session.setConfigProperty( DefaultUpdateCheckManager.CONFIG_PROP_SESSION_STATE, "true" );
- manager.checkArtifact( session, check );
- assertEquals( false, check.isRequired() );
-
- session.setConfigProperty( DefaultUpdateCheckManager.CONFIG_PROP_SESSION_STATE, "false" );
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckArtifactAtMostOnceDuringSessionEvenIfUpdatePolicyAlways_InvalidFile()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_ALWAYS );
- check.setFileValid( false );
-
- // first check
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
-
- // first touch, without exception
- manager.touchArtifact( session, check );
-
- // another check in same session
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
-
- // another touch, with exception
- check.setException( new ArtifactNotFoundException( check.getItem(), check.getRepository() ) );
- manager.touchArtifact( session, check );
-
- // another check in same session
- manager.checkArtifact( session, check );
- assertEquals( false, check.isRequired() );
- }
-
- @Test
- public void testCheckArtifactAtMostOnceDuringSessionEvenIfUpdatePolicyAlways_DifferentRepoIdSameUrl()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_ALWAYS );
-
- // first check
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
-
- manager.touchArtifact( session, check );
-
- // second check in same session but for repo with different id
- check.setRepository( new RemoteRepository.Builder( check.getRepository() ).setId( "check" ).build() );
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckArtifactWhenLocallyMissingEvenIfUpdatePolicyIsNever()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_NEVER );
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
-
- check.getFile().delete();
- assertEquals( check.getFile().getAbsolutePath(), false, check.getFile().exists() );
-
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckArtifactWhenLocallyPresentButInvalidEvenIfUpdatePolicyIsNever()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_NEVER );
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
-
- manager.touchArtifact( session, check );
- resetSessionData( session );
-
- check.setFileValid( false );
-
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckArtifactWhenLocallyDeletedEvenIfTimestampUpToDate()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
-
- manager.touchArtifact( session, check );
- resetSessionData( session );
-
- check.getFile().delete();
- assertEquals( check.getFile().getAbsolutePath(), false, check.getFile().exists() );
-
- manager.checkArtifact( session, check );
- assertEquals( true, check.isRequired() );
- }
-
- @Test
- public void testCheckArtifactNotWhenUpdatePolicyIsNeverAndTimestampIsUnavailable()
- throws Exception
- {
- UpdateCheck<Artifact, ArtifactTransferException> check = newArtifactCheck();
- check.setPolicy( RepositoryPolicy.UPDATE_POLICY_NEVER );
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
-
- manager.checkArtifact( session, check );
- assertEquals( false, check.isRequired() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzerTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzerTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzerTest.java
deleted file mode 100644
index 31bcbaa..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzerTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.eclipse.aether.repository.RepositoryPolicy.*;
-import static org.junit.Assert.*;
-
-import java.util.Calendar;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class DefaultUpdatePolicyAnalyzerTest
-{
-
- private DefaultUpdatePolicyAnalyzer analyzer;
-
- private DefaultRepositorySystemSession session;
-
- @Before
- public void setup()
- throws Exception
- {
- analyzer = new DefaultUpdatePolicyAnalyzer();
- session = TestUtils.newSession();
- }
-
- private long now()
- {
- return System.currentTimeMillis();
- }
-
- @Test
- public void testIsUpdateRequired_PolicyNever()
- throws Exception
- {
- String policy = RepositoryPolicy.UPDATE_POLICY_NEVER;
- assertEquals( false, analyzer.isUpdatedRequired( session, Long.MIN_VALUE, policy ) );
- assertEquals( false, analyzer.isUpdatedRequired( session, Long.MAX_VALUE, policy ) );
- assertEquals( false, analyzer.isUpdatedRequired( session, 0, policy ) );
- assertEquals( false, analyzer.isUpdatedRequired( session, 1, policy ) );
- assertEquals( false, analyzer.isUpdatedRequired( session, now() - 604800000, policy ) );
- }
-
- @Test
- public void testIsUpdateRequired_PolicyAlways()
- throws Exception
- {
- String policy = RepositoryPolicy.UPDATE_POLICY_ALWAYS;
- assertEquals( true, analyzer.isUpdatedRequired( session, Long.MIN_VALUE, policy ) );
- assertEquals( true, analyzer.isUpdatedRequired( session, Long.MAX_VALUE, policy ) );
- assertEquals( true, analyzer.isUpdatedRequired( session, 0, policy ) );
- assertEquals( true, analyzer.isUpdatedRequired( session, 1, policy ) );
- assertEquals( true, analyzer.isUpdatedRequired( session, now() - 1000, policy ) );
- }
-
- @Test
- public void testIsUpdateRequired_PolicyDaily()
- throws Exception
- {
- Calendar cal = Calendar.getInstance();
- cal.set( Calendar.HOUR_OF_DAY, 0 );
- cal.set( Calendar.MINUTE, 0 );
- cal.set( Calendar.SECOND, 0 );
- cal.set( Calendar.MILLISECOND, 0 );
- long localMidnight = cal.getTimeInMillis();
-
- String policy = RepositoryPolicy.UPDATE_POLICY_DAILY;
- assertEquals( true, analyzer.isUpdatedRequired( session, Long.MIN_VALUE, policy ) );
- assertEquals( false, analyzer.isUpdatedRequired( session, Long.MAX_VALUE, policy ) );
- assertEquals( false, analyzer.isUpdatedRequired( session, localMidnight + 0, policy ) );
- assertEquals( false, analyzer.isUpdatedRequired( session, localMidnight + 1, policy ) );
- assertEquals( true, analyzer.isUpdatedRequired( session, localMidnight - 1, policy ) );
- }
-
- @Test
- public void testIsUpdateRequired_PolicyInterval()
- throws Exception
- {
- String policy = RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":5";
- assertEquals( true, analyzer.isUpdatedRequired( session, Long.MIN_VALUE, policy ) );
- assertEquals( false, analyzer.isUpdatedRequired( session, Long.MAX_VALUE, policy ) );
- assertEquals( false, analyzer.isUpdatedRequired( session, now(), policy ) );
- assertEquals( false, analyzer.isUpdatedRequired( session, now() - 5 - 1, policy ) );
- assertEquals( false, analyzer.isUpdatedRequired( session, now() - 1000 * 5 - 1, policy ) );
- assertEquals( true, analyzer.isUpdatedRequired( session, now() - 1000 * 60 * 5 - 1, policy ) );
-
- policy = RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":invalid";
- assertEquals( false, analyzer.isUpdatedRequired( session, now(), policy ) );
- }
-
- @Test
- public void testEffectivePolicy()
- {
- assertEquals( UPDATE_POLICY_ALWAYS,
- analyzer.getEffectiveUpdatePolicy( session, UPDATE_POLICY_ALWAYS, UPDATE_POLICY_DAILY ) );
- assertEquals( UPDATE_POLICY_ALWAYS,
- analyzer.getEffectiveUpdatePolicy( session, UPDATE_POLICY_ALWAYS, UPDATE_POLICY_NEVER ) );
- assertEquals( UPDATE_POLICY_DAILY,
- analyzer.getEffectiveUpdatePolicy( session, UPDATE_POLICY_DAILY, UPDATE_POLICY_NEVER ) );
- assertEquals( UPDATE_POLICY_INTERVAL + ":60",
- analyzer.getEffectiveUpdatePolicy( session, UPDATE_POLICY_DAILY, UPDATE_POLICY_INTERVAL + ":60" ) );
- assertEquals( UPDATE_POLICY_INTERVAL + ":60",
- analyzer.getEffectiveUpdatePolicy( session, UPDATE_POLICY_INTERVAL + ":100",
- UPDATE_POLICY_INTERVAL + ":60" ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DependencyGraphDumper.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DependencyGraphDumper.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DependencyGraphDumper.java
deleted file mode 100644
index 39bc1ed..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DependencyGraphDumper.java
+++ /dev/null
@@ -1,222 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.PrintWriter;
-import java.util.ArrayList;
-import java.util.IdentityHashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A helper to visualize dependency graphs.
- */
-public class DependencyGraphDumper
-{
-
- public static void dump( PrintWriter writer, DependencyNode node )
- {
- Context context = new Context();
- dump( context, node, 0, true );
-
- LinkedList<Indent> indents = new LinkedList<Indent>();
- for ( Line line : context.lines )
- {
- if ( line.depth > indents.size() )
- {
- if ( !indents.isEmpty() )
- {
- if ( indents.getLast() == Indent.CHILD )
- {
- indents.removeLast();
- indents.addLast( Indent.CHILDREN );
- }
- else if ( indents.getLast() == Indent.LAST_CHILD )
- {
- indents.removeLast();
- indents.addLast( Indent.NO_CHILDREN );
- }
- }
- indents.addLast( line.last ? Indent.LAST_CHILD : Indent.CHILD );
- }
- else if ( line.depth < indents.size() )
- {
- while ( line.depth <= indents.size() )
- {
- indents.removeLast();
- }
- indents.addLast( line.last ? Indent.LAST_CHILD : Indent.CHILD );
- }
- else if ( line.last && !indents.isEmpty() )
- {
- indents.removeLast();
- indents.addLast( Indent.LAST_CHILD );
- }
-
- for ( Indent indent : indents )
- {
- writer.print( indent );
- }
-
- line.print( writer );
- }
-
- writer.flush();
- }
-
- private static void dump( Context context, DependencyNode node, int depth, boolean last )
- {
- Line line = context.nodes.get( node );
- if ( line != null )
- {
- if ( line.id <= 0 )
- {
- line.id = ++context.ids;
- }
- context.lines.add( new Line( null, line.id, depth, last ) );
- return;
- }
-
- Dependency dependency = node.getDependency();
-
- if ( dependency == null )
- {
- line = new Line( null, 0, depth, last );
- }
- else
- {
- line = new Line( dependency, 0, depth, last );
- }
-
- context.lines.add( line );
-
- context.nodes.put( node, line );
-
- depth++;
-
- for ( Iterator<DependencyNode> it = node.getChildren().iterator(); it.hasNext(); )
- {
- DependencyNode child = it.next();
- dump( context, child, depth, !it.hasNext() );
- }
- }
-
- static enum Indent
- {
-
- NO_CHILDREN( " " ),
-
- CHILDREN( "| " ),
-
- CHILD( "+- " ),
-
- LAST_CHILD( "\\- " );
-
- private final String chars;
-
- Indent( String chars )
- {
- this.chars = chars;
- }
-
- @Override
- public String toString()
- {
- return chars;
- }
-
- }
-
- static class Context
- {
-
- int ids;
-
- List<Line> lines;
-
- Map<DependencyNode, Line> nodes;
-
- Context()
- {
- this.lines = new ArrayList<Line>();
- this.nodes = new IdentityHashMap<DependencyNode, Line>( 1024 );
- }
-
- }
-
- static class Line
- {
-
- Dependency dependency;
-
- int id;
-
- int depth;
-
- boolean last;
-
- Line( Dependency dependency, int id, int depth, boolean last )
- {
- this.dependency = dependency;
- this.id = id;
- this.depth = depth;
- this.last = last;
- }
-
- void print( PrintWriter writer )
- {
- if ( dependency == null )
- {
- if ( id > 0 )
- {
- writer.print( "^" );
- writer.print( id );
- }
- else
- {
- writer.print( "(null)" );
- }
- }
- else
- {
- if ( id > 0 )
- {
- writer.print( "(" );
- writer.print( id );
- writer.print( ")" );
- }
- writer.print( dependency.getArtifact() );
- if ( dependency.getScope().length() > 0 )
- {
- writer.print( ":" );
- writer.print( dependency.getScope() );
- }
- }
- writer.println();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerTest.java
deleted file mode 100644
index 41bf542..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerTest.java
+++ /dev/null
@@ -1,343 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManager;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.metadata.DefaultMetadata;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.metadata.Metadata.Nature;
-import org.eclipse.aether.repository.LocalArtifactRegistration;
-import org.eclipse.aether.repository.LocalArtifactRequest;
-import org.eclipse.aether.repository.LocalArtifactResult;
-import org.eclipse.aether.repository.LocalMetadataRequest;
-import org.eclipse.aether.repository.LocalMetadataResult;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class EnhancedLocalRepositoryManagerTest
-{
-
- private Artifact artifact;
-
- private Artifact snapshot;
-
- private File basedir;
-
- private EnhancedLocalRepositoryManager manager;
-
- private File artifactFile;
-
- private RemoteRepository repository;
-
- private String testContext = "project/compile";
-
- private RepositorySystemSession session;
-
- private Metadata metadata;
-
- private Metadata noVerMetadata;
-
- @Before
- public void setup()
- throws Exception
- {
- String url = TestFileUtils.createTempDir( "enhanced-remote-repo" ).toURI().toURL().toString();
- repository =
- new RemoteRepository.Builder( "enhanced-remote-repo", "default", url ).setRepositoryManager( true ).build();
-
- artifact =
- new DefaultArtifact( "gid", "aid", "", "jar", "1-test", Collections.<String, String> emptyMap(),
- TestFileUtils.createTempFile( "artifact" ) );
-
- snapshot =
- new DefaultArtifact( "gid", "aid", "", "jar", "1.0-20120710.231549-9",
- Collections.<String, String> emptyMap(), TestFileUtils.createTempFile( "artifact" ) );
-
- metadata =
- new DefaultMetadata( "gid", "aid", "1-test", "maven-metadata.xml", Nature.RELEASE,
- TestFileUtils.createTempFile( "metadata" ) );
-
- noVerMetadata =
- new DefaultMetadata( "gid", "aid", null, "maven-metadata.xml", Nature.RELEASE,
- TestFileUtils.createTempFile( "metadata" ) );
-
- basedir = TestFileUtils.createTempDir( "enhanced-repo" );
- session = TestUtils.newSession();
- manager = new EnhancedLocalRepositoryManager( basedir, session );
-
- artifactFile = new File( basedir, manager.getPathForLocalArtifact( artifact ) );
- }
-
- @After
- public void tearDown()
- throws Exception
- {
- TestFileUtils.deleteFile( basedir );
- TestFileUtils.deleteFile( new File( new URI( repository.getUrl() ) ) );
-
- session = null;
- manager = null;
- repository = null;
- artifact = null;
- }
-
- private long addLocalArtifact( Artifact artifact )
- throws IOException
- {
- manager.add( session, new LocalArtifactRegistration( artifact ) );
- String path = manager.getPathForLocalArtifact( artifact );
-
- return copy( artifact, path );
- }
-
- private long addRemoteArtifact( Artifact artifact )
- throws IOException
- {
- Collection<String> contexts = Arrays.asList( testContext );
- manager.add( session, new LocalArtifactRegistration( artifact, repository, contexts ) );
- String path = manager.getPathForRemoteArtifact( artifact, repository, testContext );
- return copy( artifact, path );
- }
-
- private long copy( Metadata metadata, String path )
- throws IOException
- {
- if ( metadata.getFile() == null )
- {
- return -1;
- }
- return TestFileUtils.copyFile( metadata.getFile(), new File( basedir, path ) );
- }
-
- private long copy( Artifact artifact, String path )
- throws IOException
- {
- if ( artifact.getFile() == null )
- {
- return -1;
- }
- File artifactFile = new File( basedir, path );
- return TestFileUtils.copyFile( artifact.getFile(), artifactFile );
- }
-
- @Test
- public void testGetPathForLocalArtifact()
- {
- Artifact artifact = new DefaultArtifact( "g.i.d:a.i.d:1.0-SNAPSHOT" );
- assertEquals( "1.0-SNAPSHOT", artifact.getBaseVersion() );
- assertEquals( "g/i/d/a.i.d/1.0-SNAPSHOT/a.i.d-1.0-SNAPSHOT.jar", manager.getPathForLocalArtifact( artifact ) );
-
- artifact = new DefaultArtifact( "g.i.d:a.i.d:1.0-20110329.221805-4" );
- assertEquals( "1.0-SNAPSHOT", artifact.getBaseVersion() );
- assertEquals( "g/i/d/a.i.d/1.0-SNAPSHOT/a.i.d-1.0-SNAPSHOT.jar", manager.getPathForLocalArtifact( artifact ) );
- }
-
- @Test
- public void testGetPathForRemoteArtifact()
- {
- RemoteRepository remoteRepo = new RemoteRepository.Builder( "repo", "default", "ram:/void" ).build();
-
- Artifact artifact = new DefaultArtifact( "g.i.d:a.i.d:1.0-SNAPSHOT" );
- assertEquals( "1.0-SNAPSHOT", artifact.getBaseVersion() );
- assertEquals( "g/i/d/a.i.d/1.0-SNAPSHOT/a.i.d-1.0-SNAPSHOT.jar",
- manager.getPathForRemoteArtifact( artifact, remoteRepo, "" ) );
-
- artifact = new DefaultArtifact( "g.i.d:a.i.d:1.0-20110329.221805-4" );
- assertEquals( "1.0-SNAPSHOT", artifact.getBaseVersion() );
- assertEquals( "g/i/d/a.i.d/1.0-SNAPSHOT/a.i.d-1.0-20110329.221805-4.jar",
- manager.getPathForRemoteArtifact( artifact, remoteRepo, "" ) );
- }
-
- @Test
- public void testFindLocalArtifact()
- throws Exception
- {
- addLocalArtifact( artifact );
-
- LocalArtifactRequest request = new LocalArtifactRequest( artifact, null, null );
- LocalArtifactResult result = manager.find( session, request );
- assertTrue( result.isAvailable() );
- assertEquals( null, result.getRepository() );
-
- snapshot = snapshot.setVersion( snapshot.getBaseVersion() );
- addLocalArtifact( snapshot );
-
- request = new LocalArtifactRequest( snapshot, null, null );
- result = manager.find( session, request );
- assertTrue( result.isAvailable() );
- assertEquals( null, result.getRepository() );
- }
-
- @Test
- public void testFindRemoteArtifact()
- throws Exception
- {
- addRemoteArtifact( artifact );
-
- LocalArtifactRequest request = new LocalArtifactRequest( artifact, Arrays.asList( repository ), testContext );
- LocalArtifactResult result = manager.find( session, request );
- assertTrue( result.isAvailable() );
- assertEquals( repository, result.getRepository() );
-
- addRemoteArtifact( snapshot );
-
- request = new LocalArtifactRequest( snapshot, Arrays.asList( repository ), testContext );
- result = manager.find( session, request );
- assertTrue( result.isAvailable() );
- assertEquals( repository, result.getRepository() );
- }
-
- @Test
- public void testDoNotFindDifferentContext()
- throws Exception
- {
- addRemoteArtifact( artifact );
-
- LocalArtifactRequest request = new LocalArtifactRequest( artifact, Arrays.asList( repository ), "different" );
- LocalArtifactResult result = manager.find( session, request );
- assertFalse( result.isAvailable() );
- }
-
- @Test
- public void testDoNotFindNullFile()
- throws Exception
- {
- artifact = artifact.setFile( null );
- addLocalArtifact( artifact );
-
- LocalArtifactRequest request = new LocalArtifactRequest( artifact, Arrays.asList( repository ), testContext );
- LocalArtifactResult result = manager.find( session, request );
- assertFalse( result.isAvailable() );
- }
-
- @Test
- public void testDoNotFindDeletedFile()
- throws Exception
- {
- addLocalArtifact( artifact );
- assertTrue( "could not delete artifact file", artifactFile.delete() );
-
- LocalArtifactRequest request = new LocalArtifactRequest( artifact, Arrays.asList( repository ), testContext );
- LocalArtifactResult result = manager.find( session, request );
- assertFalse( result.isAvailable() );
- }
-
- @Test
- public void testFindUntrackedFile()
- throws Exception
- {
- copy( artifact, manager.getPathForLocalArtifact( artifact ) );
-
- LocalArtifactRequest request = new LocalArtifactRequest( artifact, Arrays.asList( repository ), testContext );
- LocalArtifactResult result = manager.find( session, request );
- assertTrue( result.isAvailable() );
- }
-
- private long addMetadata( Metadata metadata, RemoteRepository repo )
- throws IOException
- {
- String path;
- if ( repo == null )
- {
- path = manager.getPathForLocalMetadata( metadata );
- }
- else
- {
- path = manager.getPathForRemoteMetadata( metadata, repo, testContext );
- }
- System.err.println( path );
-
- return copy( metadata, path );
- }
-
- @Test
- public void testFindLocalMetadata()
- throws Exception
- {
- addMetadata( metadata, null );
-
- LocalMetadataRequest request = new LocalMetadataRequest( metadata, null, testContext );
- LocalMetadataResult result = manager.find( session, request );
-
- assertNotNull( result.getFile() );
- }
-
- @Test
- public void testFindLocalMetadataNoVersion()
- throws Exception
- {
- addMetadata( noVerMetadata, null );
-
- LocalMetadataRequest request = new LocalMetadataRequest( noVerMetadata, null, testContext );
- LocalMetadataResult result = manager.find( session, request );
-
- assertNotNull( result.getFile() );
- }
-
- @Test
- public void testDoNotFindRemoteMetadataDifferentContext()
- throws Exception
- {
- addMetadata( noVerMetadata, repository );
- addMetadata( metadata, repository );
-
- LocalMetadataRequest request = new LocalMetadataRequest( noVerMetadata, repository, "different" );
- LocalMetadataResult result = manager.find( session, request );
- assertNull( result.getFile() );
-
- request = new LocalMetadataRequest( metadata, repository, "different" );
- result = manager.find( session, request );
- assertNull( result.getFile() );
- }
-
- @Test
- public void testFindArtifactUsesTimestampedVersion()
- throws Exception
- {
- Artifact artifact = new DefaultArtifact( "g.i.d:a.i.d:1.0-SNAPSHOT" );
- File file = new File( basedir, manager.getPathForLocalArtifact( artifact ) );
- TestFileUtils.writeString( file, "test" );
- addLocalArtifact( artifact );
-
- artifact = artifact.setVersion( "1.0-20110329.221805-4" );
- LocalArtifactRequest request = new LocalArtifactRequest();
- request.setArtifact( artifact );
- LocalArtifactResult result = manager.find( session, request );
- assertNull( result.toString(), result.getFile() );
- assertFalse( result.toString(), result.isAvailable() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java
deleted file mode 100644
index f36e0a0..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
-import org.eclipse.aether.transfer.ChecksumFailureException;
-import org.eclipse.aether.transfer.TransferResource;
-import org.junit.Before;
-import org.junit.Test;
-
-public class FailChecksumPolicyTest
-{
-
- private FailChecksumPolicy policy;
-
- private ChecksumFailureException exception;
-
- @Before
- public void setup()
- {
- policy = new FailChecksumPolicy( null, new TransferResource( "file:/dev/null", "file.txt", null, null ) );
- exception = new ChecksumFailureException( "test" );
- }
-
- @Test
- public void testOnTransferChecksumFailure()
- {
- assertFalse( policy.onTransferChecksumFailure( exception ) );
- }
-
- @Test
- public void testOnChecksumMatch()
- {
- assertTrue( policy.onChecksumMatch( "SHA-1", 0 ) );
- assertTrue( policy.onChecksumMatch( "SHA-1", ChecksumPolicy.KIND_UNOFFICIAL ) );
- }
-
- @Test
- public void testOnChecksumMismatch()
- throws Exception
- {
- try
- {
- policy.onChecksumMismatch( "SHA-1", 0, exception );
- fail( "No exception" );
- }
- catch ( ChecksumFailureException e )
- {
- assertSame( exception, e );
- }
- policy.onChecksumMismatch( "SHA-1", ChecksumPolicy.KIND_UNOFFICIAL, exception );
- }
-
- @Test
- public void testOnChecksumError()
- throws Exception
- {
- policy.onChecksumError( "SHA-1", 0, exception );
- }
-
- @Test
- public void testOnNoMoreChecksums()
- {
- try
- {
- policy.onNoMoreChecksums();
- fail( "No exception" );
- }
- catch ( ChecksumFailureException e )
- {
- assertTrue( e.getMessage().contains( "no checksums available" ) );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/IniArtifactDescriptorReader.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/IniArtifactDescriptorReader.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/IniArtifactDescriptorReader.java
deleted file mode 100644
index 4ae2b9b..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/IniArtifactDescriptorReader.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.impl.ArtifactDescriptorReader;
-
-/**
- */
-public class IniArtifactDescriptorReader
- extends org.eclipse.aether.internal.test.util.IniArtifactDescriptorReader
- implements ArtifactDescriptorReader
-{
-
- /**
- * Use the given prefix to load the artifact descriptions.
- */
- public IniArtifactDescriptorReader( String prefix )
- {
- super( prefix );
- }
-
-}
[20/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/RecordingTransportListener.java
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/RecordingTransportListener.java b/aether-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/RecordingTransportListener.java
deleted file mode 100644
index 9447d39..0000000
--- a/aether-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/RecordingTransportListener.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.aether.transport.classpath;
-
-/*
- * 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.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-
-import org.eclipse.aether.spi.connector.transport.TransportListener;
-import org.eclipse.aether.transfer.TransferCancelledException;
-
-class RecordingTransportListener
- extends TransportListener
-{
-
- public final ByteArrayOutputStream baos = new ByteArrayOutputStream( 1024 );
-
- public long dataOffset;
-
- public long dataLength;
-
- public int startedCount;
-
- public int progressedCount;
-
- public boolean cancelStart;
-
- public boolean cancelProgress;
-
- @Override
- public void transportStarted( long dataOffset, long dataLength )
- throws TransferCancelledException
- {
- startedCount++;
- progressedCount = 0;
- this.dataLength = dataLength;
- this.dataOffset = dataOffset;
- baos.reset();
- if ( cancelStart )
- {
- throw new TransferCancelledException();
- }
- }
-
- @Override
- public void transportProgressed( ByteBuffer data )
- throws TransferCancelledException
- {
- progressedCount++;
- baos.write( data.array(), data.arrayOffset() + data.position(), data.remaining() );
- if ( cancelProgress )
- {
- throw new TransferCancelledException();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/test/resources/file.txt
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/test/resources/file.txt b/aether-transport-classpath/src/test/resources/file.txt
deleted file mode 100644
index 30d74d2..0000000
--- a/aether-transport-classpath/src/test/resources/file.txt
+++ /dev/null
@@ -1 +0,0 @@
-test
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/test/resources/repo space/file.txt
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/test/resources/repo space/file.txt b/aether-transport-classpath/src/test/resources/repo space/file.txt
deleted file mode 100644
index 30d74d2..0000000
--- a/aether-transport-classpath/src/test/resources/repo space/file.txt
+++ /dev/null
@@ -1 +0,0 @@
-test
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/test/resources/repository/empty.txt
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/test/resources/repository/empty.txt b/aether-transport-classpath/src/test/resources/repository/empty.txt
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/test/resources/repository/file.txt
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/test/resources/repository/file.txt b/aether-transport-classpath/src/test/resources/repository/file.txt
deleted file mode 100644
index 30d74d2..0000000
--- a/aether-transport-classpath/src/test/resources/repository/file.txt
+++ /dev/null
@@ -1 +0,0 @@
-test
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-classpath/src/test/resources/repository/some space.txt
----------------------------------------------------------------------
diff --git a/aether-transport-classpath/src/test/resources/repository/some space.txt b/aether-transport-classpath/src/test/resources/repository/some space.txt
deleted file mode 100644
index 82cbe04..0000000
--- a/aether-transport-classpath/src/test/resources/repository/some space.txt
+++ /dev/null
@@ -1 +0,0 @@
-space
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-file/pom.xml
----------------------------------------------------------------------
diff --git a/aether-transport-file/pom.xml b/aether-transport-file/pom.xml
deleted file mode 100644
index a88dc49..0000000
--- a/aether-transport-file/pom.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- 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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>aether-transport-file</artifactId>
-
- <name>Aether Transport File</name>
- <description>
- A transport implementation for repositories using file:// URLs.
- </description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-spi</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-util</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.sonatype.sisu</groupId>
- <artifactId>sisu-guice</artifactId>
- <classifier>no_aop</classifier>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-test-util</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.sisu</groupId>
- <artifactId>sisu-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-</project>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java
----------------------------------------------------------------------
diff --git a/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java b/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java
deleted file mode 100644
index 5c5cfa4..0000000
--- a/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package org.eclipse.aether.transport.file;
-
-/*
- * 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.io.FileInputStream;
-import java.io.FileOutputStream;
-
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.AbstractTransporter;
-import org.eclipse.aether.spi.connector.transport.GetTask;
-import org.eclipse.aether.spi.connector.transport.PeekTask;
-import org.eclipse.aether.spi.connector.transport.PutTask;
-import org.eclipse.aether.spi.connector.transport.TransportTask;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.transfer.NoTransporterException;
-
-/**
- * A transporter using {@link java.io.File}.
- */
-final class FileTransporter
- extends AbstractTransporter
-{
-
- private final Logger logger;
-
- private final File basedir;
-
- public FileTransporter( RemoteRepository repository, Logger logger )
- throws NoTransporterException
- {
- if ( !"file".equalsIgnoreCase( repository.getProtocol() ) )
- {
- throw new NoTransporterException( repository );
- }
- this.logger = logger;
- basedir = new File( PathUtils.basedir( repository.getUrl() ) ).getAbsoluteFile();
- }
-
- File getBasedir()
- {
- return basedir;
- }
-
- public int classify( Throwable error )
- {
- if ( error instanceof ResourceNotFoundException )
- {
- return ERROR_NOT_FOUND;
- }
- return ERROR_OTHER;
- }
-
- @Override
- protected void implPeek( PeekTask task )
- throws Exception
- {
- getFile( task, true );
- }
-
- @Override
- protected void implGet( GetTask task )
- throws Exception
- {
- File file = getFile( task, true );
- utilGet( task, new FileInputStream( file ), true, file.length(), false );
- }
-
- @Override
- protected void implPut( PutTask task )
- throws Exception
- {
- File file = getFile( task, false );
- file.getParentFile().mkdirs();
- try
- {
- utilPut( task, new FileOutputStream( file ), true );
- }
- catch ( Exception e )
- {
- if ( !file.delete() && file.exists() )
- {
- logger.debug( "Could not delete partial file " + file );
- }
- throw e;
- }
- }
-
- private File getFile( TransportTask task, boolean required )
- throws Exception
- {
- String path = task.getLocation().getPath();
- if ( path.contains( "../" ) )
- {
- throw new IllegalArgumentException( "Illegal resource path: " + path );
- }
- File file = new File( basedir, path );
- if ( required && !file.exists() )
- {
- throw new ResourceNotFoundException( "Could not locate " + file );
- }
- return file;
- }
-
- @Override
- protected void implClose()
- {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporterFactory.java
----------------------------------------------------------------------
diff --git a/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporterFactory.java b/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporterFactory.java
deleted file mode 100644
index 86ae6fc..0000000
--- a/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporterFactory.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.eclipse.aether.transport.file;
-
-/*
- * 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 javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.NoTransporterException;
-
-/**
- * A transporter factory for repositories using the {@code file:} protocol.
- */
-@Named( "file" )
-public final class FileTransporterFactory
- implements TransporterFactory, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private float priority;
-
- /**
- * Creates an (uninitialized) instance of this transporter factory. <em>Note:</em> In case of manual instantiation
- * by clients, the new factory needs to be configured via its various mutators before first use or runtime errors
- * will occur.
- */
- public FileTransporterFactory()
- {
- // enables default constructor
- }
-
- @Inject
- FileTransporterFactory( LoggerFactory loggerFactory )
- {
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- }
-
- /**
- * Sets the logger factory to use for this component.
- *
- * @param loggerFactory The logger factory to use, may be {@code null} to disable logging.
- * @return This component for chaining, never {@code null}.
- */
- public FileTransporterFactory setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, FileTransporter.class );
- return this;
- }
-
- public float getPriority()
- {
- return priority;
- }
-
- /**
- * Sets the priority of this component.
- *
- * @param priority The priority.
- * @return This component for chaining, never {@code null}.
- */
- public FileTransporterFactory setPriority( float priority )
- {
- this.priority = priority;
- return this;
- }
-
- public Transporter newInstance( RepositorySystemSession session, RemoteRepository repository )
- throws NoTransporterException
- {
- return new FileTransporter( repository, logger );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/PathUtils.java
----------------------------------------------------------------------
diff --git a/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/PathUtils.java b/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/PathUtils.java
deleted file mode 100644
index ac3f8fd..0000000
--- a/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/PathUtils.java
+++ /dev/null
@@ -1,138 +0,0 @@
-package org.eclipse.aether.transport.file;
-
-/*
- * 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.
- */
-
-/**
- * URL handling for file URLs. Based on org.apache.maven.wagon.PathUtils.
- */
-final class PathUtils
-{
-
- private PathUtils()
- {
- }
-
- /**
- * Return the protocol name. <br/>
- * E.g: for input <code>http://www.codehause.org</code> this method will return <code>http</code>
- *
- * @param url the url
- * @return the host name
- */
- public static String protocol( final String url )
- {
- final int pos = url.indexOf( ":" );
-
- if ( pos == -1 )
- {
- return "";
- }
- return url.substring( 0, pos ).trim();
- }
-
- /**
- * Derive the path portion of the given URL.
- *
- * @param url the file-repository URL
- * @return the basedir of the repository
- */
- public static String basedir( String url )
- {
- String protocol = PathUtils.protocol( url );
-
- String retValue = null;
-
- if ( protocol.length() > 0 )
- {
- retValue = url.substring( protocol.length() + 1 );
- }
- else
- {
- retValue = url;
- }
- retValue = decode( retValue );
- // special case: if omitted // on protocol, keep path as is
- if ( retValue.startsWith( "//" ) )
- {
- retValue = retValue.substring( 2 );
-
- if ( retValue.length() >= 2 && ( retValue.charAt( 1 ) == '|' || retValue.charAt( 1 ) == ':' ) )
- {
- // special case: if there is a windows drive letter, then keep the original return value
- retValue = retValue.charAt( 0 ) + ":" + retValue.substring( 2 );
- }
- else
- {
- // Now we expect the host
- int index = retValue.indexOf( "/" );
- if ( index >= 0 )
- {
- retValue = retValue.substring( index + 1 );
- }
-
- // special case: if there is a windows drive letter, then keep the original return value
- if ( retValue.length() >= 2 && ( retValue.charAt( 1 ) == '|' || retValue.charAt( 1 ) == ':' ) )
- {
- retValue = retValue.charAt( 0 ) + ":" + retValue.substring( 2 );
- }
- else if ( index >= 0 )
- {
- // leading / was previously stripped
- retValue = "/" + retValue;
- }
- }
- }
-
- // special case: if there is a windows drive letter using |, switch to :
- if ( retValue.length() >= 2 && retValue.charAt( 1 ) == '|' )
- {
- retValue = retValue.charAt( 0 ) + ":" + retValue.substring( 2 );
- }
-
- return retValue.trim();
- }
-
- /**
- * Decodes the specified (portion of a) URL. <strong>Note:</strong> This decoder assumes that ISO-8859-1 is used to
- * convert URL-encoded octets to characters.
- *
- * @param url The URL to decode, may be <code>null</code>.
- * @return The decoded URL or <code>null</code> if the input was <code>null</code>.
- */
- static String decode( String url )
- {
- String decoded = url;
- if ( url != null )
- {
- int pos = -1;
- while ( ( pos = decoded.indexOf( '%', pos + 1 ) ) >= 0 )
- {
- if ( pos + 2 < decoded.length() )
- {
- String hexStr = decoded.substring( pos + 1, pos + 3 );
- char ch = (char) Integer.parseInt( hexStr, 16 );
- decoded = decoded.substring( 0, pos ) + ch + decoded.substring( pos + 3 );
- }
- }
- }
- return decoded;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/ResourceNotFoundException.java
----------------------------------------------------------------------
diff --git a/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/ResourceNotFoundException.java b/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/ResourceNotFoundException.java
deleted file mode 100644
index 462fa0a..0000000
--- a/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/ResourceNotFoundException.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.eclipse.aether.transport.file;
-
-/*
- * 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.IOException;
-
-/**
- * Special exception type used instead of {@code FileNotFoundException} to avoid misinterpretation of errors unrelated
- * to the remote resource.
- */
-class ResourceNotFoundException
- extends IOException
-{
-
- public ResourceNotFoundException( String message )
- {
- super( message );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/package-info.java
----------------------------------------------------------------------
diff --git a/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/package-info.java b/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/package-info.java
deleted file mode 100644
index 8220bf4..0000000
--- a/aether-transport-file/src/main/java/org/eclipse/aether/transport/file/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.
- */
-/**
- * Support for downloads/uploads using the local filesystem as "remote" storage.
- */
-package org.eclipse.aether.transport.file;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-file/src/site/site.xml
----------------------------------------------------------------------
diff --git a/aether-transport-file/src/site/site.xml b/aether-transport-file/src/site/site.xml
deleted file mode 100644
index 3a16bf9..0000000
--- a/aether-transport-file/src/site/site.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
- <body>
- <menu name="Overview">
- <item name="Introduction" href="index.html"/>
- <item name="JavaDocs" href="apidocs/index.html"/>
- <item name="Source Xref" href="xref/index.html"/>
- <!--item name="FAQ" href="faq.html"/-->
- </menu>
-
- <menu ref="parent"/>
- <menu ref="reports"/>
- </body>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-file/src/test/java/org/eclipse/aether/transport/file/FileTransporterTest.java
----------------------------------------------------------------------
diff --git a/aether-transport-file/src/test/java/org/eclipse/aether/transport/file/FileTransporterTest.java b/aether-transport-file/src/test/java/org/eclipse/aether/transport/file/FileTransporterTest.java
deleted file mode 100644
index 6c4e361..0000000
--- a/aether-transport-file/src/test/java/org/eclipse/aether/transport/file/FileTransporterTest.java
+++ /dev/null
@@ -1,554 +0,0 @@
-package org.eclipse.aether.transport.file;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.net.URI;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.GetTask;
-import org.eclipse.aether.spi.connector.transport.PeekTask;
-import org.eclipse.aether.spi.connector.transport.PutTask;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.transfer.NoTransporterException;
-import org.eclipse.aether.transfer.TransferCancelledException;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class FileTransporterTest
-{
-
- private DefaultRepositorySystemSession session;
-
- private TransporterFactory factory;
-
- private Transporter transporter;
-
- private File repoDir;
-
- private RemoteRepository newRepo( String url )
- {
- return new RemoteRepository.Builder( "test", "default", url ).build();
- }
-
- private void newTransporter( String url )
- throws Exception
- {
- if ( transporter != null )
- {
- transporter.close();
- transporter = null;
- }
- transporter = factory.newInstance( session, newRepo( url ) );
- }
-
- @Before
- public void setUp()
- throws Exception
- {
- session = TestUtils.newSession();
- factory = new FileTransporterFactory( new TestLoggerFactory() );
- repoDir = TestFileUtils.createTempDir();
- TestFileUtils.writeString( new File( repoDir, "file.txt" ), "test" );
- TestFileUtils.writeString( new File( repoDir, "empty.txt" ), "" );
- TestFileUtils.writeString( new File( repoDir, "some space.txt" ), "space" );
- newTransporter( repoDir.toURI().toString() );
- }
-
- @After
- public void tearDown()
- {
- if ( transporter != null )
- {
- transporter.close();
- transporter = null;
- }
- factory = null;
- session = null;
- }
-
- @Test
- public void testClassify()
- throws Exception
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( new FileNotFoundException() ) );
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( new ResourceNotFoundException( "test" ) ) );
- }
-
- @Test
- public void testPeek()
- throws Exception
- {
- transporter.peek( new PeekTask( URI.create( "file.txt" ) ) );
- }
-
- @Test
- public void testPeek_NotFound()
- throws Exception
- {
- try
- {
- transporter.peek( new PeekTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( ResourceNotFoundException e )
- {
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testPeek_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.peek( new PeekTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_ToMemory()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( task.getDataString(), listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_ToFile()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "failure" );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setDataFile( file ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", TestFileUtils.readString( file ) );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "test", listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_EmptyResource()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "failure" );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "empty.txt" ) ).setDataFile( file ).setListener( listener );
- transporter.get( task );
- assertEquals( "", TestFileUtils.readString( file ) );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 0, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- assertEquals( "", listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_EncodedResourcePath()
- throws Exception
- {
- GetTask task = new GetTask( URI.create( "some%20space.txt" ) );
- transporter.get( task );
- assertEquals( "space", task.getDataString() );
- }
-
- @Test
- public void testGet_Fragment()
- throws Exception
- {
- GetTask task = new GetTask( URI.create( "file.txt#ignored" ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- }
-
- @Test
- public void testGet_Query()
- throws Exception
- {
- GetTask task = new GetTask( URI.create( "file.txt?ignored" ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- }
-
- @Test
- public void testGet_FileHandleLeak()
- throws Exception
- {
- for ( int i = 0; i < 100; i++ )
- {
- File file = TestFileUtils.createTempFile( "failure" );
- transporter.get( new GetTask( URI.create( "file.txt" ) ).setDataFile( file ) );
- assertTrue( i + ", " + file.getAbsolutePath(), file.delete() );
- }
- }
-
- @Test
- public void testGet_NotFound()
- throws Exception
- {
- try
- {
- transporter.get( new GetTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( ResourceNotFoundException e )
- {
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.get( new GetTask( URI.create( "file.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_StartCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelStart = true;
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setListener( listener );
- try
- {
- transporter.get( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- }
-
- @Test
- public void testGet_ProgressCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelProgress = true;
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setListener( listener );
- try
- {
- transporter.get( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 1, listener.progressedCount );
- }
-
- @Test
- public void testPut_FromMemory()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_FromFile()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "upload" );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "file.txt" ) ).setListener( listener ).setDataFile( file );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_EmptyResource()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "file.txt" ) ).setListener( listener );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 0, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- assertEquals( "", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_NonExistentParentDir()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task =
- new PutTask( URI.create( "dir/sub/dir/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "dir/sub/dir/file.txt" ) ) );
- }
-
- @Test
- public void testPut_EncodedResourcePath()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "some%20space.txt" ) ).setListener( listener ).setDataString( "OK" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 2, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "OK", TestFileUtils.readString( new File( repoDir, "some space.txt" ) ) );
- }
-
- @Test
- public void testPut_FileHandleLeak()
- throws Exception
- {
- for ( int i = 0; i < 100; i++ )
- {
- File src = TestFileUtils.createTempFile( "upload" );
- File dst = new File( repoDir, "file.txt" );
- transporter.put( new PutTask( URI.create( "file.txt" ) ).setDataFile( src ) );
- assertTrue( i + ", " + src.getAbsolutePath(), src.delete() );
- assertTrue( i + ", " + dst.getAbsolutePath(), dst.delete() );
- }
- }
-
- @Test
- public void testPut_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.put( new PutTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testPut_StartCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelStart = true;
- PutTask task = new PutTask( URI.create( "file.txt" ) ).setListener( listener ).setDataString( "upload" );
- try
- {
- transporter.put( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- assertFalse( new File( repoDir, "file.txt" ).exists() );
- }
-
- @Test
- public void testPut_ProgressCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelProgress = true;
- PutTask task = new PutTask( URI.create( "file.txt" ) ).setListener( listener ).setDataString( "upload" );
- try
- {
- transporter.put( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 1, listener.progressedCount );
- assertFalse( new File( repoDir, "file.txt" ).exists() );
- }
-
- @Test( expected = NoTransporterException.class )
- public void testInit_BadProtocol()
- throws Exception
- {
- newTransporter( "bad:/void" );
- }
-
- @Test
- public void testInit_CaseInsensitiveProtocol()
- throws Exception
- {
- newTransporter( "file:/void" );
- newTransporter( "FILE:/void" );
- newTransporter( "File:/void" );
- }
-
- @Test
- public void testInit_OpaqueUrl()
- throws Exception
- {
- testInit( "file:repository", "repository" );
- }
-
- @Test
- public void testInit_OpaqueUrlTrailingSlash()
- throws Exception
- {
- testInit( "file:repository/", "repository" );
- }
-
- @Test
- public void testInit_OpaqueUrlSpaces()
- throws Exception
- {
- testInit( "file:repo%20space", "repo space" );
- }
-
- @Test
- public void testInit_OpaqueUrlSpacesDecoded()
- throws Exception
- {
- testInit( "file:repo space", "repo space" );
- }
-
- @Test
- public void testInit_HierarchicalUrl()
- throws Exception
- {
- testInit( "file:/repository", "/repository" );
- }
-
- @Test
- public void testInit_HierarchicalUrlTrailingSlash()
- throws Exception
- {
- testInit( "file:/repository/", "/repository" );
- }
-
- @Test
- public void testInit_HierarchicalUrlSpaces()
- throws Exception
- {
- testInit( "file:/repo%20space", "/repo space" );
- }
-
- @Test
- public void testInit_HierarchicalUrlSpacesDecoded()
- throws Exception
- {
- testInit( "file:/repo space", "/repo space" );
- }
-
- @Test
- public void testInit_HierarchicalUrlRoot()
- throws Exception
- {
- testInit( "file:/", "/" );
- }
-
- @Test
- public void testInit_HierarchicalUrlHostNoPath()
- throws Exception
- {
- testInit( "file://host/", "/" );
- }
-
- @Test
- public void testInit_HierarchicalUrlHostPath()
- throws Exception
- {
- testInit( "file://host/dir", "/dir" );
- }
-
- private void testInit( String base, String expected )
- throws Exception
- {
- newTransporter( base );
- File exp = new File( expected ).getAbsoluteFile();
- assertEquals( exp, ( (FileTransporter) transporter ).getBasedir() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-file/src/test/java/org/eclipse/aether/transport/file/RecordingTransportListener.java
----------------------------------------------------------------------
diff --git a/aether-transport-file/src/test/java/org/eclipse/aether/transport/file/RecordingTransportListener.java b/aether-transport-file/src/test/java/org/eclipse/aether/transport/file/RecordingTransportListener.java
deleted file mode 100644
index c6331e0..0000000
--- a/aether-transport-file/src/test/java/org/eclipse/aether/transport/file/RecordingTransportListener.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.aether.transport.file;
-
-/*
- * 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.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-
-import org.eclipse.aether.spi.connector.transport.TransportListener;
-import org.eclipse.aether.transfer.TransferCancelledException;
-
-class RecordingTransportListener
- extends TransportListener
-{
-
- public final ByteArrayOutputStream baos = new ByteArrayOutputStream( 1024 );
-
- public long dataOffset;
-
- public long dataLength;
-
- public int startedCount;
-
- public int progressedCount;
-
- public boolean cancelStart;
-
- public boolean cancelProgress;
-
- @Override
- public void transportStarted( long dataOffset, long dataLength )
- throws TransferCancelledException
- {
- startedCount++;
- progressedCount = 0;
- this.dataLength = dataLength;
- this.dataOffset = dataOffset;
- baos.reset();
- if ( cancelStart )
- {
- throw new TransferCancelledException();
- }
- }
-
- @Override
- public void transportProgressed( ByteBuffer data )
- throws TransferCancelledException
- {
- progressedCount++;
- baos.write( data.array(), data.arrayOffset() + data.position(), data.remaining() );
- if ( cancelProgress )
- {
- throw new TransferCancelledException();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/pom.xml
----------------------------------------------------------------------
diff --git a/aether-transport-http/pom.xml b/aether-transport-http/pom.xml
deleted file mode 100644
index 835bce2..0000000
--- a/aether-transport-http/pom.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- 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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>aether-transport-http</artifactId>
-
- <name>Aether Transport HTTP</name>
- <description>
- A transport implementation for repositories using http:// and https:// URLs.
- </description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-spi</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-util</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>4.3.6</version>
- <exclusions>
- <exclusion>
- <!-- using jcl-over-slf4j instead -->
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- <version>1.7.16</version>
- </dependency>
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.sonatype.sisu</groupId>
- <artifactId>sisu-guice</artifactId>
- <classifier>no_aop</classifier>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-test-util</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-server</artifactId>
- <version>7.6.19.v20160209</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- <version>1.0.13</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.sisu</groupId>
- <artifactId>sisu-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-</project>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/AuthSchemePool.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/AuthSchemePool.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/AuthSchemePool.java
deleted file mode 100644
index 9b86252..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/AuthSchemePool.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.LinkedList;
-
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.client.params.AuthPolicy;
-import org.apache.http.impl.auth.BasicScheme;
-
-/**
- * Pool of (equivalent) auth schemes for a single host.
- */
-final class AuthSchemePool
-{
-
- private final LinkedList<AuthScheme> authSchemes;
-
- private String schemeName;
-
- public AuthSchemePool()
- {
- authSchemes = new LinkedList<AuthScheme>();
- }
-
- public synchronized AuthScheme get()
- {
- AuthScheme authScheme = null;
- if ( !authSchemes.isEmpty() )
- {
- authScheme = authSchemes.removeLast();
- }
- else if ( AuthPolicy.BASIC.equalsIgnoreCase( schemeName ) )
- {
- authScheme = new BasicScheme();
- }
- return authScheme;
- }
-
- public synchronized void put( AuthScheme authScheme )
- {
- if ( authScheme == null )
- {
- return;
- }
- if ( !authScheme.getSchemeName().equals( schemeName ) )
- {
- schemeName = authScheme.getSchemeName();
- authSchemes.clear();
- }
- authSchemes.add( authScheme );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/DeferredCredentialsProvider.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/DeferredCredentialsProvider.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/DeferredCredentialsProvider.java
deleted file mode 100644
index c0daeaf..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/DeferredCredentialsProvider.java
+++ /dev/null
@@ -1,194 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.Credentials;
-import org.apache.http.auth.NTCredentials;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.eclipse.aether.repository.AuthenticationContext;
-
-/**
- * Credentials provider that defers calls into the auth context until authentication is actually requested.
- */
-final class DeferredCredentialsProvider
- implements CredentialsProvider
-{
-
- private final CredentialsProvider delegate;
-
- private final Map<AuthScope, Factory> factories;
-
- public DeferredCredentialsProvider()
- {
- delegate = new BasicCredentialsProvider();
- factories = new HashMap<AuthScope, Factory>();
- }
-
- public void setCredentials( AuthScope authScope, Factory factory )
- {
- factories.put( authScope, factory );
- }
-
- public void setCredentials( AuthScope authScope, Credentials credentials )
- {
- delegate.setCredentials( authScope, credentials );
- }
-
- public Credentials getCredentials( AuthScope authScope )
- {
- synchronized ( factories )
- {
- for ( Iterator<Map.Entry<AuthScope, Factory>> it = factories.entrySet().iterator(); it.hasNext(); )
- {
- Map.Entry<AuthScope, Factory> entry = it.next();
- if ( authScope.match( entry.getKey() ) >= 0 )
- {
- it.remove();
- delegate.setCredentials( entry.getKey(), entry.getValue().newCredentials() );
- }
- }
- }
- return delegate.getCredentials( authScope );
- }
-
- public void clear()
- {
- delegate.clear();
- }
-
- interface Factory
- {
-
- Credentials newCredentials();
-
- }
-
- static class BasicFactory
- implements Factory
- {
-
- private final AuthenticationContext authContext;
-
- public BasicFactory( AuthenticationContext authContext )
- {
- this.authContext = authContext;
- }
-
- public Credentials newCredentials()
- {
- String username = authContext.get( AuthenticationContext.USERNAME );
- if ( username == null )
- {
- return null;
- }
- String password = authContext.get( AuthenticationContext.PASSWORD );
- return new UsernamePasswordCredentials( username, password );
- }
-
- }
-
- static class NtlmFactory
- implements Factory
- {
-
- private final AuthenticationContext authContext;
-
- public NtlmFactory( AuthenticationContext authContext )
- {
- this.authContext = authContext;
- }
-
- public Credentials newCredentials()
- {
- String username = authContext.get( AuthenticationContext.USERNAME );
- if ( username == null )
- {
- return null;
- }
- String password = authContext.get( AuthenticationContext.PASSWORD );
- String domain = authContext.get( AuthenticationContext.NTLM_DOMAIN );
- String workstation = authContext.get( AuthenticationContext.NTLM_WORKSTATION );
-
- if ( domain == null )
- {
- int backslash = username.indexOf( '\\' );
- if ( backslash < 0 )
- {
- domain = guessDomain();
- }
- else
- {
- domain = username.substring( 0, backslash );
- username = username.substring( backslash + 1 );
- }
- }
- if ( workstation == null )
- {
- workstation = guessWorkstation();
- }
-
- return new NTCredentials( username, password, workstation, domain );
- }
-
- private static String guessDomain()
- {
- return safeNtlmString( System.getProperty( "http.auth.ntlm.domain" ), System.getenv( "USERDOMAIN" ) );
- }
-
- private static String guessWorkstation()
- {
- String localHost = null;
- try
- {
- localHost = InetAddress.getLocalHost().getHostName();
- }
- catch ( UnknownHostException e )
- {
- // well, we have other options to try
- }
- return safeNtlmString( System.getProperty( "http.auth.ntlm.host" ), System.getenv( "COMPUTERNAME" ),
- localHost );
- }
-
- private static String safeNtlmString( String... strings )
- {
- for ( String string : strings )
- {
- if ( string != null )
- {
- return string;
- }
- }
- // avoid NPE from httpclient and trigger proper auth failure instead
- return "";
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/DemuxCredentialsProvider.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/DemuxCredentialsProvider.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/DemuxCredentialsProvider.java
deleted file mode 100644
index f16246e..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/DemuxCredentialsProvider.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.apache.http.HttpHost;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.Credentials;
-import org.apache.http.client.CredentialsProvider;
-
-/**
- * Credentials provider that helps to isolate server from proxy credentials. Apache HttpClient uses a single provider
- * for both server and proxy auth, using the auth scope (host, port, etc.) to select the proper credentials. With regard
- * to redirects, we use an auth scope for server credentials that's not specific enough to not be mistaken for proxy
- * auth. This provider helps to maintain the proper isolation.
- */
-final class DemuxCredentialsProvider
- implements CredentialsProvider
-{
-
- private final CredentialsProvider serverCredentialsProvider;
-
- private final CredentialsProvider proxyCredentialsProvider;
-
- private final HttpHost proxy;
-
- public DemuxCredentialsProvider( CredentialsProvider serverCredentialsProvider,
- CredentialsProvider proxyCredentialsProvider, HttpHost proxy )
- {
- this.serverCredentialsProvider = serverCredentialsProvider;
- this.proxyCredentialsProvider = proxyCredentialsProvider;
- this.proxy = proxy;
- }
-
- private CredentialsProvider getDelegate( AuthScope authScope )
- {
- if ( proxy.getPort() == authScope.getPort() && proxy.getHostName().equalsIgnoreCase( authScope.getHost() ) )
- {
- return proxyCredentialsProvider;
- }
- return serverCredentialsProvider;
- }
-
- public Credentials getCredentials( AuthScope authScope )
- {
- return getDelegate( authScope ).getCredentials( authScope );
- }
-
- public void setCredentials( AuthScope authScope, Credentials credentials )
- {
- getDelegate( authScope ).setCredentials( authScope, credentials );
- }
-
- public void clear()
- {
- serverCredentialsProvider.clear();
- proxyCredentialsProvider.clear();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/GlobalState.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/GlobalState.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/GlobalState.java
deleted file mode 100644
index b3a9d4b..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/GlobalState.java
+++ /dev/null
@@ -1,215 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.Closeable;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import org.apache.http.HttpHost;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.scheme.PlainSocketFactory;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.impl.conn.PoolingClientConnectionManager;
-import org.eclipse.aether.RepositoryCache;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- * Container for HTTP-related state that can be shared across incarnations of the transporter to optimize the
- * communication with servers.
- */
-final class GlobalState
- implements Closeable
-{
-
- static class CompoundKey
- {
-
- private final Object[] keys;
-
- public CompoundKey( Object... keys )
- {
- this.keys = keys;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- CompoundKey that = (CompoundKey) obj;
- return Arrays.equals( keys, that.keys );
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + Arrays.hashCode( keys );
- return hash;
- }
-
- @Override
- public String toString()
- {
- return Arrays.toString( keys );
- }
- }
-
- private static final String KEY = GlobalState.class.getName();
-
- private static final String CONFIG_PROP_CACHE_STATE = "aether.connector.http.cacheState";
-
- private final ConcurrentMap<SslConfig, ClientConnectionManager> connectionManagers;
-
- private final ConcurrentMap<CompoundKey, Object> userTokens;
-
- private final ConcurrentMap<HttpHost, AuthSchemePool> authSchemePools;
-
- private final ConcurrentMap<CompoundKey, Boolean> expectContinues;
-
- public static GlobalState get( RepositorySystemSession session )
- {
- GlobalState cache;
- RepositoryCache repoCache = session.getCache();
- if ( repoCache == null || !ConfigUtils.getBoolean( session, true, CONFIG_PROP_CACHE_STATE ) )
- {
- cache = null;
- }
- else
- {
- Object tmp = repoCache.get( session, KEY );
- if ( tmp instanceof GlobalState )
- {
- cache = (GlobalState) tmp;
- }
- else
- {
- synchronized ( GlobalState.class )
- {
- tmp = repoCache.get( session, KEY );
- if ( tmp instanceof GlobalState )
- {
- cache = (GlobalState) tmp;
- }
- else
- {
- cache = new GlobalState();
- repoCache.put( session, KEY, cache );
- }
- }
- }
- }
- return cache;
- }
-
- private GlobalState()
- {
- connectionManagers = new ConcurrentHashMap<SslConfig, ClientConnectionManager>();
- userTokens = new ConcurrentHashMap<CompoundKey, Object>();
- authSchemePools = new ConcurrentHashMap<HttpHost, AuthSchemePool>();
- expectContinues = new ConcurrentHashMap<CompoundKey, Boolean>();
- }
-
- public void close()
- {
- for ( Iterator<Map.Entry<SslConfig, ClientConnectionManager>> it = connectionManagers.entrySet().iterator(); it.hasNext(); )
- {
- ClientConnectionManager connMgr = it.next().getValue();
- it.remove();
- connMgr.shutdown();
- }
- }
-
- public ClientConnectionManager getConnectionManager( SslConfig config )
- {
- ClientConnectionManager manager = connectionManagers.get( config );
- if ( manager == null )
- {
- ClientConnectionManager connMgr = newConnectionManager( config );
- manager = connectionManagers.putIfAbsent( config, connMgr );
- if ( manager != null )
- {
- connMgr.shutdown();
- }
- else
- {
- manager = connMgr;
- }
- }
- return manager;
- }
-
- public static ClientConnectionManager newConnectionManager( SslConfig sslConfig )
- {
- SchemeRegistry schemeReg = new SchemeRegistry();
- schemeReg.register( new Scheme( "http", 80, new PlainSocketFactory() ) );
- schemeReg.register( new Scheme( "https", 443, new SslSocketFactory( sslConfig ) ) );
-
- PoolingClientConnectionManager connMgr = new PoolingClientConnectionManager( schemeReg );
- connMgr.setMaxTotal( 100 );
- connMgr.setDefaultMaxPerRoute( 50 );
- return connMgr;
- }
-
- public Object getUserToken( CompoundKey key )
- {
- return userTokens.get( key );
- }
-
- public void setUserToken( CompoundKey key, Object userToken )
- {
- if ( userToken != null )
- {
- userTokens.put( key, userToken );
- }
- else
- {
- userTokens.remove( key );
- }
- }
-
- public ConcurrentMap<HttpHost, AuthSchemePool> getAuthSchemePools()
- {
- return authSchemePools;
- }
-
- public Boolean getExpectContinue( CompoundKey key )
- {
- return expectContinues.get( key );
- }
-
- public void setExpectContinue( CompoundKey key, boolean enabled )
- {
- expectContinues.put( key, enabled );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpMkCol.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpMkCol.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpMkCol.java
deleted file mode 100644
index 7a945ea..0000000
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpMkCol.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.net.URI;
-
-import org.apache.http.client.methods.HttpRequestBase;
-
-/**
- * WebDAV MKCOL request to create parent directories.
- */
-final class HttpMkCol
- extends HttpRequestBase
-{
-
- public HttpMkCol( URI uri )
- {
- setURI( uri );
- }
-
- @Override
- public String getMethod()
- {
- return "MKCOL";
- }
-
-}
[02/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationContext.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationContext.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationContext.java
new file mode 100644
index 0000000..bd248a0
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationContext.java
@@ -0,0 +1,389 @@
+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.io.Closeable;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.aether.RepositorySystemSession;
+
+/**
+ * A glorified map of key value pairs holding (cleartext) authentication data. Authentication contexts are used
+ * internally when network operations need to access secured repositories or proxies. Each authentication context
+ * manages the credentials required to access a single host. Unlike {@link Authentication} callbacks which exist for a
+ * potentially long time like the duration of a repository system session, an authentication context has a supposedly
+ * short lifetime and should be {@link #close() closed} as soon as the corresponding network operation has finished:
+ *
+ * <pre>
+ * AuthenticationContext context = AuthenticationContext.forRepository( session, repository );
+ * try {
+ * // get credentials
+ * char[] password = context.get( AuthenticationContext.PASSWORD, char[].class );
+ * // perform network operation using retrieved credentials
+ * ...
+ * } finally {
+ * // erase confidential authentication data from heap memory
+ * AuthenticationContext.close( context );
+ * }
+ * </pre>
+ *
+ * The same authentication data can often be presented using different data types, e.g. a password can be presented
+ * using a character array or (less securely) using a string. For ease of use, an authentication context treats the
+ * following groups of data types as equivalent and converts values automatically during retrieval:
+ * <ul>
+ * <li>{@code String}, {@code char[]}</li>
+ * <li>{@code String}, {@code File}</li>
+ * </ul>
+ * An authentication context is thread-safe.
+ */
+public final class AuthenticationContext
+ implements Closeable
+{
+
+ /**
+ * The key used to store the username. The corresponding authentication data should be of type {@link String}.
+ */
+ public static final String USERNAME = "username";
+
+ /**
+ * The key used to store the password. The corresponding authentication data should be of type {@code char[]} or
+ * {@link String}.
+ */
+ public static final String PASSWORD = "password";
+
+ /**
+ * The key used to store the NTLM domain. The corresponding authentication data should be of type {@link String}.
+ */
+ public static final String NTLM_DOMAIN = "ntlm.domain";
+
+ /**
+ * The key used to store the NTML workstation. The corresponding authentication data should be of type
+ * {@link String}.
+ */
+ public static final String NTLM_WORKSTATION = "ntlm.workstation";
+
+ /**
+ * The key used to store the pathname to a private key file. The corresponding authentication data should be of type
+ * {@link String} or {@link File}.
+ */
+ public static final String PRIVATE_KEY_PATH = "privateKey.path";
+
+ /**
+ * The key used to store the passphrase protecting the private key. The corresponding authentication data should be
+ * of type {@code char[]} or {@link String}.
+ */
+ public static final String PRIVATE_KEY_PASSPHRASE = "privateKey.passphrase";
+
+ /**
+ * The key used to store the acceptance policy for unknown host keys. The corresponding authentication data should
+ * be of type {@link Boolean}. When querying this authentication data, the extra data should provide
+ * {@link #HOST_KEY_REMOTE} and {@link #HOST_KEY_LOCAL}, e.g. to enable a well-founded decision of the user during
+ * an interactive prompt.
+ */
+ public static final String HOST_KEY_ACCEPTANCE = "hostKey.acceptance";
+
+ /**
+ * The key used to store the fingerprint of the public key advertised by remote host. Note that this key is used to
+ * query the extra data passed to {@link #get(String, Map, Class)} when getting {@link #HOST_KEY_ACCEPTANCE}, not
+ * the authentication data in a context.
+ */
+ public static final String HOST_KEY_REMOTE = "hostKey.remote";
+
+ /**
+ * The key used to store the fingerprint of the public key expected from remote host as recorded in a known hosts
+ * database. Note that this key is used to query the extra data passed to {@link #get(String, Map, Class)} when
+ * getting {@link #HOST_KEY_ACCEPTANCE}, not the authentication data in a context.
+ */
+ public static final String HOST_KEY_LOCAL = "hostKey.local";
+
+ /**
+ * The key used to store the SSL context. The corresponding authentication data should be of type
+ * {@link javax.net.ssl.SSLContext}.
+ */
+ public static final String SSL_CONTEXT = "ssl.context";
+
+ /**
+ * The key used to store the SSL hostname verifier. The corresponding authentication data should be of type
+ * {@link javax.net.ssl.HostnameVerifier}.
+ */
+ public static final String SSL_HOSTNAME_VERIFIER = "ssl.hostnameVerifier";
+
+ private final RepositorySystemSession session;
+
+ private final RemoteRepository repository;
+
+ private final Proxy proxy;
+
+ private final Authentication auth;
+
+ private final Map<String, Object> authData;
+
+ private boolean fillingAuthData;
+
+ /**
+ * Gets an authentication context for the specified repository.
+ *
+ * @param session The repository system session during which the repository is accessed, must not be {@code null}.
+ * @param repository The repository for which to create an authentication context, must not be {@code null}.
+ * @return An authentication context for the repository or {@code null} if no authentication is configured for it.
+ */
+ public static AuthenticationContext forRepository( RepositorySystemSession session, RemoteRepository repository )
+ {
+ return newInstance( session, repository, null, repository.getAuthentication() );
+ }
+
+ /**
+ * Gets an authentication context for the proxy of the specified repository.
+ *
+ * @param session The repository system session during which the repository is accessed, must not be {@code null}.
+ * @param repository The repository for whose proxy to create an authentication context, must not be {@code null}.
+ * @return An authentication context for the proxy or {@code null} if no proxy is set or no authentication is
+ * configured for it.
+ */
+ public static AuthenticationContext forProxy( RepositorySystemSession session, RemoteRepository repository )
+ {
+ Proxy proxy = repository.getProxy();
+ return newInstance( session, repository, proxy, ( proxy != null ) ? proxy.getAuthentication() : null );
+ }
+
+ private static AuthenticationContext newInstance( RepositorySystemSession session, RemoteRepository repository,
+ Proxy proxy, Authentication auth )
+ {
+ if ( auth == null )
+ {
+ return null;
+ }
+ return new AuthenticationContext( session, repository, proxy, auth );
+ }
+
+ private AuthenticationContext( RepositorySystemSession session, RemoteRepository repository, Proxy proxy,
+ Authentication auth )
+ {
+ if ( session == null )
+ {
+ throw new IllegalArgumentException( "repository system session missing" );
+ }
+ this.session = session;
+ this.repository = repository;
+ this.proxy = proxy;
+ this.auth = auth;
+ authData = new HashMap<String, Object>();
+ }
+
+ /**
+ * Gets the repository system session during which the authentication happens.
+ *
+ * @return The repository system session, never {@code null}.
+ */
+ public RepositorySystemSession getSession()
+ {
+ return session;
+ }
+
+ /**
+ * Gets the repository requiring authentication. If {@link #getProxy()} is not {@code null}, the data gathered by
+ * this authentication context does not apply to the repository's host but rather the proxy.
+ *
+ * @return The repository to be contacted, never {@code null}.
+ */
+ public RemoteRepository getRepository()
+ {
+ return repository;
+ }
+
+ /**
+ * Gets the proxy (if any) to be authenticated with.
+ *
+ * @return The proxy or {@code null} if authenticating directly with the repository's host.
+ */
+ public Proxy getProxy()
+ {
+ return proxy;
+ }
+
+ /**
+ * Gets the authentication data for the specified key.
+ *
+ * @param key The key whose authentication data should be retrieved, must not be {@code null}.
+ * @return The requested authentication data or {@code null} if none.
+ */
+ public String get( String key )
+ {
+ return get( key, null, String.class );
+ }
+
+ /**
+ * Gets the authentication data for the specified key.
+ *
+ * @param <T> The data type of the authentication data.
+ * @param key The key whose authentication data should be retrieved, must not be {@code null}.
+ * @param type The expected type of the authentication data, must not be {@code null}.
+ * @return The requested authentication data or {@code null} if none or if the data doesn't match the expected type.
+ */
+ public <T> T get( String key, Class<T> type )
+ {
+ return get( key, null, type );
+ }
+
+ /**
+ * Gets the authentication data for the specified key.
+ *
+ * @param <T> The data type of the authentication data.
+ * @param key The key whose authentication data should be retrieved, must not 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}.
+ * @param type The expected type of the authentication data, must not be {@code null}.
+ * @return The requested authentication data or {@code null} if none or if the data doesn't match the expected type.
+ */
+ public <T> T get( String key, Map<String, String> data, Class<T> type )
+ {
+ if ( key == null )
+ {
+ throw new IllegalArgumentException( "authentication data key missing" );
+ }
+ Object value;
+ synchronized ( authData )
+ {
+ value = authData.get( key );
+ if ( value == null && !authData.containsKey( key ) && !fillingAuthData )
+ {
+ if ( auth != null )
+ {
+ try
+ {
+ fillingAuthData = true;
+ auth.fill( this, key, data );
+ }
+ finally
+ {
+ fillingAuthData = false;
+ }
+ value = authData.get( key );
+ }
+ if ( value == null )
+ {
+ authData.put( key, value );
+ }
+ }
+ }
+
+ return convert( value, type );
+ }
+
+ private <T> T convert( Object value, Class<T> type )
+ {
+ if ( !type.isInstance( value ) )
+ {
+ if ( String.class.equals( type ) )
+ {
+ if ( value instanceof File )
+ {
+ value = ( (File) value ).getPath();
+ }
+ else if ( value instanceof char[] )
+ {
+ value = new String( (char[]) value );
+ }
+ }
+ else if ( File.class.equals( type ) )
+ {
+ if ( value instanceof String )
+ {
+ value = new File( (String) value );
+ }
+ }
+ else if ( char[].class.equals( type ) )
+ {
+ if ( value instanceof String )
+ {
+ value = ( (String) value ).toCharArray();
+ }
+ }
+ }
+
+ if ( type.isInstance( value ) )
+ {
+ return type.cast( value );
+ }
+
+ return null;
+ }
+
+ /**
+ * Puts the specified authentication data into this context. This method should only be called from implementors of
+ * {@link Authentication#fill(AuthenticationContext, String, Map)}. Passed in character arrays are not cloned and
+ * become owned by this context, i.e. get erased when the context gets closed.
+ *
+ * @param key The key to associate the authentication data with, must not be {@code null}.
+ * @param value The (cleartext) authentication data to store, may be {@code null}.
+ */
+ public void put( String key, Object value )
+ {
+ if ( key == null )
+ {
+ throw new IllegalArgumentException( "authentication data key missing" );
+ }
+ synchronized ( authData )
+ {
+ Object oldValue = authData.put( key, value );
+ if ( oldValue instanceof char[] )
+ {
+ Arrays.fill( (char[]) oldValue, '\0' );
+ }
+ }
+ }
+
+ /**
+ * Closes this authentication context and erases sensitive authentication data from heap memory. Closing an already
+ * closed context has no effect.
+ */
+ public void close()
+ {
+ synchronized ( authData )
+ {
+ for ( Object value : authData.values() )
+ {
+ if ( value instanceof char[] )
+ {
+ Arrays.fill( (char[]) value, '\0' );
+ }
+ }
+ authData.clear();
+ }
+ }
+
+ /**
+ * Closes the specified authentication context. This is a convenience method doing a {@code null} check before
+ * calling {@link #close()} on the given context.
+ *
+ * @param context The authentication context to close, may be {@code null}.
+ */
+ public static void close( AuthenticationContext context )
+ {
+ if ( context != null )
+ {
+ context.close();
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationDigest.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationDigest.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationDigest.java
new file mode 100644
index 0000000..03725b6
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationDigest.java
@@ -0,0 +1,219 @@
+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.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+import org.eclipse.aether.RepositorySystemSession;
+
+/**
+ * A helper to calculate a fingerprint/digest for the authentication data of a repository/proxy. Such a fingerprint can
+ * be used to detect changes in the authentication data across JVM restarts without exposing sensitive information.
+ */
+public final class AuthenticationDigest
+{
+
+ private final MessageDigest digest;
+
+ private final RepositorySystemSession session;
+
+ private final RemoteRepository repository;
+
+ private final Proxy proxy;
+
+ /**
+ * Gets the fingerprint for the authentication of the specified repository.
+ *
+ * @param session The repository system session during which the fingerprint is requested, must not be {@code null}.
+ * @param repository The repository whose authentication is to be fingerprinted, must not be {@code null}.
+ * @return The fingerprint of the repository authentication or an empty string if no authentication is configured,
+ * never {@code null}.
+ */
+ public static String forRepository( RepositorySystemSession session, RemoteRepository repository )
+ {
+ String digest = "";
+ Authentication auth = repository.getAuthentication();
+ if ( auth != null )
+ {
+ AuthenticationDigest authDigest = new AuthenticationDigest( session, repository, null );
+ auth.digest( authDigest );
+ digest = authDigest.digest();
+ }
+ return digest;
+ }
+
+ /**
+ * Gets the fingerprint for the authentication of the specified repository's proxy.
+ *
+ * @param session The repository system session during which the fingerprint is requested, must not be {@code null}.
+ * @param repository The repository whose proxy authentication is to be fingerprinted, must not be {@code null}.
+ * @return The fingerprint of the proxy authentication or an empty string if no proxy is present or if no proxy
+ * authentication is configured, never {@code null}.
+ */
+ public static String forProxy( RepositorySystemSession session, RemoteRepository repository )
+ {
+ String digest = "";
+ Proxy proxy = repository.getProxy();
+ if ( proxy != null )
+ {
+ Authentication auth = proxy.getAuthentication();
+ if ( auth != null )
+ {
+ AuthenticationDigest authDigest = new AuthenticationDigest( session, repository, proxy );
+ auth.digest( authDigest );
+ digest = authDigest.digest();
+ }
+ }
+ return digest;
+ }
+
+ private AuthenticationDigest( RepositorySystemSession session, RemoteRepository repository, Proxy proxy )
+ {
+ this.session = session;
+ this.repository = repository;
+ this.proxy = proxy;
+ digest = newDigest();
+ }
+
+ private static MessageDigest newDigest()
+ {
+ try
+ {
+ return MessageDigest.getInstance( "SHA-1" );
+ }
+ catch ( NoSuchAlgorithmException e )
+ {
+ try
+ {
+ return MessageDigest.getInstance( "MD5" );
+ }
+ catch ( NoSuchAlgorithmException ne )
+ {
+ throw new IllegalStateException( ne );
+ }
+ }
+ }
+
+ /**
+ * Gets the repository system session during which the authentication fingerprint is calculated.
+ *
+ * @return The repository system session, never {@code null}.
+ */
+ public RepositorySystemSession getSession()
+ {
+ return session;
+ }
+
+ /**
+ * Gets the repository requiring authentication. If {@link #getProxy()} is not {@code null}, the data gathered by
+ * this authentication digest does not apply to the repository's host but rather the proxy.
+ *
+ * @return The repository to be contacted, never {@code null}.
+ */
+ public RemoteRepository getRepository()
+ {
+ return repository;
+ }
+
+ /**
+ * Gets the proxy (if any) to be authenticated with.
+ *
+ * @return The proxy or {@code null} if authenticating directly with the repository's host.
+ */
+ public Proxy getProxy()
+ {
+ return proxy;
+ }
+
+ /**
+ * Updates the digest with the specified strings.
+ *
+ * @param strings The strings to update the digest with, may be {@code null} or contain {@code null} elements.
+ */
+ public void update( String... strings )
+ {
+ if ( strings != null )
+ {
+ for ( String string : strings )
+ {
+ if ( string != null )
+ {
+ try
+ {
+ digest.update( string.getBytes( "UTF-8" ) );
+ }
+ catch ( UnsupportedEncodingException e )
+ {
+ throw new IllegalStateException( e );
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Updates the digest with the specified characters.
+ *
+ * @param chars The characters to update the digest with, may be {@code null}.
+ */
+ public void update( char... chars )
+ {
+ if ( chars != null )
+ {
+ for ( char c : chars )
+ {
+ digest.update( (byte) ( c >> 8 ) );
+ digest.update( (byte) ( c & 0xFF ) );
+ }
+ }
+ }
+
+ /**
+ * Updates the digest with the specified bytes.
+ *
+ * @param bytes The bytes to update the digest with, may be {@code null}.
+ */
+ public void update( byte... bytes )
+ {
+ if ( bytes != null )
+ {
+ digest.update( bytes );
+ }
+ }
+
+ private String digest()
+ {
+ byte[] bytes = digest.digest();
+ StringBuilder buffer = new StringBuilder( bytes.length * 2 );
+ for ( byte aByte : bytes )
+ {
+ int b = aByte & 0xFF;
+ if ( b < 0x10 )
+ {
+ buffer.append( '0' );
+ }
+ buffer.append( Integer.toHexString( b ) );
+ }
+ return buffer.toString();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationSelector.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationSelector.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationSelector.java
new file mode 100644
index 0000000..0637d1c
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/AuthenticationSelector.java
@@ -0,0 +1,38 @@
+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.
+ */
+
+/**
+ * Selects authentication for a given remote repository.
+ *
+ * @see org.eclipse.aether.RepositorySystemSession#getAuthenticationSelector()
+ */
+public interface AuthenticationSelector
+{
+
+ /**
+ * Selects authentication for the specified remote repository.
+ *
+ * @param repository The repository for which to select authentication, must not be {@code null}.
+ * @return The selected authentication or {@code null} if none.
+ */
+ Authentication getAuthentication( RemoteRepository repository );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRegistration.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRegistration.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRegistration.java
new file mode 100644
index 0000000..1065779
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRegistration.java
@@ -0,0 +1,149 @@
+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.Collection;
+import java.util.Collections;
+
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+
+/**
+ * A request to register an artifact within the local repository. Certain local repository implementations can refuse to
+ * serve physically present artifacts if those haven't been previously registered to them.
+ *
+ * @see LocalRepositoryManager#add(RepositorySystemSession, LocalArtifactRegistration)
+ */
+public final class LocalArtifactRegistration
+{
+
+ private Artifact artifact;
+
+ private RemoteRepository repository;
+
+ private Collection<String> contexts = Collections.emptyList();
+
+ /**
+ * Creates an uninitialized registration.
+ */
+ public LocalArtifactRegistration()
+ {
+ // enables default constructor
+ }
+
+ /**
+ * Creates a registration request for the specified (locally installed) artifact.
+ *
+ * @param artifact The artifact to register, may be {@code null}.
+ */
+ public LocalArtifactRegistration( Artifact artifact )
+ {
+ setArtifact( artifact );
+ }
+
+ /**
+ * Creates a registration request for the specified artifact.
+ *
+ * @param artifact The artifact to register, may be {@code null}.
+ * @param repository The remote repository from which the artifact was resolved or {@code null} if the artifact was
+ * locally installed.
+ * @param contexts The resolution contexts, may be {@code null}.
+ */
+ public LocalArtifactRegistration( Artifact artifact, RemoteRepository repository, Collection<String> contexts )
+ {
+ setArtifact( artifact );
+ setRepository( repository );
+ setContexts( contexts );
+ }
+
+ /**
+ * Gets the artifact to register.
+ *
+ * @return The artifact or {@code null} if not set.
+ */
+ public Artifact getArtifact()
+ {
+ return artifact;
+ }
+
+ /**
+ * Sets the artifact to register.
+ *
+ * @param artifact The artifact, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public LocalArtifactRegistration setArtifact( Artifact artifact )
+ {
+ this.artifact = artifact;
+ return this;
+ }
+
+ /**
+ * Gets the remote repository from which the artifact was resolved.
+ *
+ * @return The remote repository or {@code null} if the artifact was locally installed.
+ */
+ public RemoteRepository getRepository()
+ {
+ return repository;
+ }
+
+ /**
+ * Sets the remote repository from which the artifact was resolved.
+ *
+ * @param repository The remote repository or {@code null} if the artifact was locally installed.
+ * @return This request for chaining, never {@code null}.
+ */
+ public LocalArtifactRegistration setRepository( RemoteRepository repository )
+ {
+ this.repository = repository;
+ return this;
+ }
+
+ /**
+ * Gets the resolution contexts in which the artifact is available.
+ *
+ * @return The resolution contexts in which the artifact is available, never {@code null}.
+ */
+ public Collection<String> getContexts()
+ {
+ return contexts;
+ }
+
+ /**
+ * Sets the resolution contexts in which the artifact is available.
+ *
+ * @param contexts The resolution contexts, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public LocalArtifactRegistration setContexts( Collection<String> contexts )
+ {
+ if ( contexts != null )
+ {
+ this.contexts = contexts;
+ }
+ else
+ {
+ this.contexts = Collections.emptyList();
+ }
+ return this;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRequest.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRequest.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRequest.java
new file mode 100644
index 0000000..8f6eabf
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRequest.java
@@ -0,0 +1,145 @@
+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.Collections;
+import java.util.List;
+
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+
+/**
+ * A query to the local repository for the existence of an artifact.
+ *
+ * @see LocalRepositoryManager#find(RepositorySystemSession, LocalArtifactRequest)
+ */
+public final class LocalArtifactRequest
+{
+
+ private Artifact artifact;
+
+ private String context = "";
+
+ private List<RemoteRepository> repositories = Collections.emptyList();
+
+ /**
+ * Creates an uninitialized query.
+ */
+ public LocalArtifactRequest()
+ {
+ // enables default constructor
+ }
+
+ /**
+ * Creates a query with the specified properties.
+ *
+ * @param artifact The artifact to query for, may be {@code null}.
+ * @param repositories The remote repositories that should be considered as potential sources for the artifact, may
+ * be {@code null} or empty to only consider locally installed artifacts.
+ * @param context The resolution context for the artifact, may be {@code null}.
+ */
+ public LocalArtifactRequest( Artifact artifact, List<RemoteRepository> repositories, String context )
+ {
+ setArtifact( artifact );
+ setRepositories( repositories );
+ setContext( context );
+ }
+
+ /**
+ * Gets the artifact to query for.
+ *
+ * @return The artifact or {@code null} if not set.
+ */
+ public Artifact getArtifact()
+ {
+ return artifact;
+ }
+
+ /**
+ * Sets the artifact to query for.
+ *
+ * @param artifact The artifact, may be {@code null}.
+ * @return This query for chaining, never {@code null}.
+ */
+ public LocalArtifactRequest setArtifact( Artifact artifact )
+ {
+ this.artifact = artifact;
+ return this;
+ }
+
+ /**
+ * Gets the resolution context.
+ *
+ * @return The resolution context, never {@code null}.
+ */
+ public String getContext()
+ {
+ return context;
+ }
+
+ /**
+ * Sets the resolution context.
+ *
+ * @param context The resolution context, may be {@code null}.
+ * @return This query for chaining, never {@code null}.
+ */
+ public LocalArtifactRequest setContext( String context )
+ {
+ this.context = ( context != null ) ? context : "";
+ return this;
+ }
+
+ /**
+ * Gets the remote repositories to consider as sources of the artifact.
+ *
+ * @return The remote repositories, never {@code null}.
+ */
+ public List<RemoteRepository> getRepositories()
+ {
+ return repositories;
+ }
+
+ /**
+ * Sets the remote repositories to consider as sources of the artifact.
+ *
+ * @param repositories The remote repositories, may be {@code null} or empty to only consider locally installed
+ * artifacts.
+ * @return This query for chaining, never {@code null}.
+ */
+ public LocalArtifactRequest setRepositories( List<RemoteRepository> repositories )
+ {
+ if ( repositories != null )
+ {
+ this.repositories = repositories;
+ }
+ else
+ {
+ this.repositories = Collections.emptyList();
+ }
+ return this;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getArtifact() + " @ " + getRepositories();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactResult.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactResult.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactResult.java
new file mode 100644
index 0000000..e611b27
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalArtifactResult.java
@@ -0,0 +1,147 @@
+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.io.File;
+
+import org.eclipse.aether.RepositorySystemSession;
+
+/**
+ * A result from the local repository about the existence of an artifact.
+ *
+ * @see LocalRepositoryManager#find(RepositorySystemSession, LocalArtifactRequest)
+ */
+public final class LocalArtifactResult
+{
+
+ private final LocalArtifactRequest request;
+
+ private File file;
+
+ private boolean available;
+
+ private RemoteRepository repository;
+
+ /**
+ * Creates a new result for the specified request.
+ *
+ * @param request The local artifact request, must not be {@code null}.
+ */
+ public LocalArtifactResult( LocalArtifactRequest request )
+ {
+ if ( request == null )
+ {
+ throw new IllegalArgumentException( "local artifact request has not been specified" );
+ }
+ this.request = request;
+ }
+
+ /**
+ * Gets the request corresponding to this result.
+ *
+ * @return The corresponding request, never {@code null}.
+ */
+ public LocalArtifactRequest getRequest()
+ {
+ return request;
+ }
+
+ /**
+ * Gets the file to the requested artifact. Note that this file must not be used unless {@link #isAvailable()}
+ * returns {@code true}. An artifact file can be found but considered unavailable if the artifact was cached from a
+ * remote repository that is not part of the list of remote repositories used for the query.
+ *
+ * @return The file to the requested artifact or {@code null} if the artifact does not exist locally.
+ */
+ public File getFile()
+ {
+ return file;
+ }
+
+ /**
+ * Sets the file to requested artifact.
+ *
+ * @param file The artifact file, may be {@code null}.
+ * @return This result for chaining, never {@code null}.
+ */
+ public LocalArtifactResult setFile( File file )
+ {
+ this.file = file;
+ return this;
+ }
+
+ /**
+ * Indicates whether the requested artifact is available for use. As a minimum, the file needs to be physically
+ * existent in the local repository to be available. Additionally, a local repository manager can consider the list
+ * of supplied remote repositories to determine whether the artifact is logically available and mark an artifact
+ * unavailable (despite its physical existence) if it is not known to be hosted by any of the provided repositories.
+ *
+ * @return {@code true} if the artifact is available, {@code false} otherwise.
+ * @see LocalArtifactRequest#getRepositories()
+ */
+ public boolean isAvailable()
+ {
+ return available;
+ }
+
+ /**
+ * Sets whether the artifact is available.
+ *
+ * @param available {@code true} if the artifact is available, {@code false} otherwise.
+ * @return This result for chaining, never {@code null}.
+ */
+ public LocalArtifactResult setAvailable( boolean available )
+ {
+ this.available = available;
+ return this;
+ }
+
+ /**
+ * Gets the (first) remote repository from which the artifact was cached (if any).
+ *
+ * @return The remote repository from which the artifact was originally retrieved or {@code null} if unknown or if
+ * the artifact has been locally installed.
+ * @see LocalArtifactRequest#getRepositories()
+ */
+ public RemoteRepository getRepository()
+ {
+ return repository;
+ }
+
+ /**
+ * Sets the (first) remote repository from which the artifact was cached.
+ *
+ * @param repository The remote repository from which the artifact was originally retrieved, may be {@code null} if
+ * unknown or if the artifact has been locally installed.
+ * @return This result for chaining, never {@code null}.
+ */
+ public LocalArtifactResult setRepository( RemoteRepository repository )
+ {
+ this.repository = repository;
+ return this;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getFile() + " (" + ( isAvailable() ? "available" : "unavailable" ) + ")";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRegistration.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRegistration.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRegistration.java
new file mode 100644
index 0000000..dd0d587
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRegistration.java
@@ -0,0 +1,148 @@
+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.Collection;
+import java.util.Collections;
+
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.metadata.Metadata;
+
+/**
+ * A request to register metadata within the local repository.
+ *
+ * @see LocalRepositoryManager#add(RepositorySystemSession, LocalMetadataRegistration)
+ */
+public final class LocalMetadataRegistration
+{
+
+ private Metadata metadata;
+
+ private RemoteRepository repository;
+
+ private Collection<String> contexts = Collections.emptyList();
+
+ /**
+ * Creates an uninitialized registration.
+ */
+ public LocalMetadataRegistration()
+ {
+ // enables default constructor
+ }
+
+ /**
+ * Creates a registration request for the specified metadata accompanying a locally installed artifact.
+ *
+ * @param metadata The metadata to register, may be {@code null}.
+ */
+ public LocalMetadataRegistration( Metadata metadata )
+ {
+ setMetadata( metadata );
+ }
+
+ /**
+ * Creates a registration request for the specified metadata.
+ *
+ * @param metadata The metadata to register, may be {@code null}.
+ * @param repository The remote repository from which the metadata was resolved or {@code null} if the metadata
+ * accompanies a locally installed artifact.
+ * @param contexts The resolution contexts, may be {@code null}.
+ */
+ public LocalMetadataRegistration( Metadata metadata, RemoteRepository repository, Collection<String> contexts )
+ {
+ setMetadata( metadata );
+ setRepository( repository );
+ setContexts( contexts );
+ }
+
+ /**
+ * Gets the metadata to register.
+ *
+ * @return The metadata or {@code null} if not set.
+ */
+ public Metadata getMetadata()
+ {
+ return metadata;
+ }
+
+ /**
+ * Sets the metadata to register.
+ *
+ * @param metadata The metadata, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public LocalMetadataRegistration setMetadata( Metadata metadata )
+ {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Gets the remote repository from which the metadata was resolved.
+ *
+ * @return The remote repository or {@code null} if the metadata was locally installed.
+ */
+ public RemoteRepository getRepository()
+ {
+ return repository;
+ }
+
+ /**
+ * Sets the remote repository from which the metadata was resolved.
+ *
+ * @param repository The remote repository or {@code null} if the metadata accompanies a locally installed artifact.
+ * @return This request for chaining, never {@code null}.
+ */
+ public LocalMetadataRegistration setRepository( RemoteRepository repository )
+ {
+ this.repository = repository;
+ return this;
+ }
+
+ /**
+ * Gets the resolution contexts in which the metadata is available.
+ *
+ * @return The resolution contexts in which the metadata is available, never {@code null}.
+ */
+ public Collection<String> getContexts()
+ {
+ return contexts;
+ }
+
+ /**
+ * Sets the resolution contexts in which the metadata is available.
+ *
+ * @param contexts The resolution contexts, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public LocalMetadataRegistration setContexts( Collection<String> contexts )
+ {
+ if ( contexts != null )
+ {
+ this.contexts = contexts;
+ }
+ else
+ {
+ this.contexts = Collections.emptyList();
+ }
+ return this;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRequest.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRequest.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRequest.java
new file mode 100644
index 0000000..4c8f270
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRequest.java
@@ -0,0 +1,133 @@
+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 org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.metadata.Metadata;
+
+/**
+ * A query to the local repository for the existence of metadata.
+ *
+ * @see LocalRepositoryManager#find(RepositorySystemSession, LocalMetadataRequest)
+ */
+public final class LocalMetadataRequest
+{
+
+ private Metadata metadata;
+
+ private String context = "";
+
+ private RemoteRepository repository = null;
+
+ /**
+ * Creates an uninitialized query.
+ */
+ public LocalMetadataRequest()
+ {
+ // enables default constructor
+ }
+
+ /**
+ * Creates a query with the specified properties.
+ *
+ * @param metadata The metadata to query for, may be {@code null}.
+ * @param repository The source remote repository for the metadata, may be {@code null} for local metadata.
+ * @param context The resolution context for the metadata, may be {@code null}.
+ */
+ public LocalMetadataRequest( Metadata metadata, RemoteRepository repository, String context )
+ {
+ setMetadata( metadata );
+ setRepository( repository );
+ setContext( context );
+ }
+
+ /**
+ * Gets the metadata to query for.
+ *
+ * @return The metadata or {@code null} if not set.
+ */
+ public Metadata getMetadata()
+ {
+ return metadata;
+ }
+
+ /**
+ * Sets the metadata to query for.
+ *
+ * @param metadata The metadata, may be {@code null}.
+ * @return This query for chaining, never {@code null}.
+ */
+ public LocalMetadataRequest setMetadata( Metadata metadata )
+ {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Gets the resolution context.
+ *
+ * @return The resolution context, never {@code null}.
+ */
+ public String getContext()
+ {
+ return context;
+ }
+
+ /**
+ * Sets the resolution context.
+ *
+ * @param context The resolution context, may be {@code null}.
+ * @return This query for chaining, never {@code null}.
+ */
+ public LocalMetadataRequest setContext( String context )
+ {
+ this.context = ( context != null ) ? context : "";
+ return this;
+ }
+
+ /**
+ * Gets the remote repository to use as source of the metadata.
+ *
+ * @return The remote repositories, may be {@code null} for local metadata.
+ */
+ public RemoteRepository getRepository()
+ {
+ return repository;
+ }
+
+ /**
+ * Sets the remote repository to use as sources of the metadata.
+ *
+ * @param repository The remote repository, may be {@code null}.
+ * @return This query for chaining, may be {@code null} for local metadata.
+ */
+ public LocalMetadataRequest setRepository( RemoteRepository repository )
+ {
+ this.repository = repository;
+ return this;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getMetadata() + " @ " + getRepository();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataResult.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataResult.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataResult.java
new file mode 100644
index 0000000..29bd045
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalMetadataResult.java
@@ -0,0 +1,114 @@
+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.io.File;
+
+import org.eclipse.aether.RepositorySystemSession;
+
+/**
+ * A result from the local repository about the existence of metadata.
+ *
+ * @see LocalRepositoryManager#find(RepositorySystemSession, LocalMetadataRequest)
+ */
+public final class LocalMetadataResult
+{
+
+ private final LocalMetadataRequest request;
+
+ private File file;
+
+ private boolean stale;
+
+ /**
+ * Creates a new result for the specified request.
+ *
+ * @param request The local metadata request, must not be {@code null}.
+ */
+ public LocalMetadataResult( LocalMetadataRequest request )
+ {
+ if ( request == null )
+ {
+ throw new IllegalArgumentException( "local metadata request has not been specified" );
+ }
+ this.request = request;
+ }
+
+ /**
+ * Gets the request corresponding to this result.
+ *
+ * @return The corresponding request, never {@code null}.
+ */
+ public LocalMetadataRequest getRequest()
+ {
+ return request;
+ }
+
+ /**
+ * Gets the file to the requested metadata if the metadata is available in the local repository.
+ *
+ * @return The file to the requested metadata or {@code null}.
+ */
+ public File getFile()
+ {
+ return file;
+ }
+
+ /**
+ * Sets the file to requested metadata.
+ *
+ * @param file The metadata file, may be {@code null}.
+ * @return This result for chaining, never {@code null}.
+ */
+ public LocalMetadataResult setFile( File file )
+ {
+ this.file = file;
+ return this;
+ }
+
+ /**
+ * This value indicates whether the metadata is stale and should be updated.
+ *
+ * @return {@code true} if the metadata is stale and should be updated, {@code false} otherwise.
+ */
+ public boolean isStale()
+ {
+ return stale;
+ }
+
+ /**
+ * Sets whether the metadata is stale.
+ *
+ * @param stale {@code true} if the metadata is stale and should be updated, {@code false} otherwise.
+ * @return This result for chaining, never {@code null}.
+ */
+ public LocalMetadataResult setStale( boolean stale )
+ {
+ this.stale = stale;
+ return this;
+ }
+
+ @Override
+ public String toString()
+ {
+ return request.toString() + "(" + getFile() + ")";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalRepository.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalRepository.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalRepository.java
new file mode 100644
index 0000000..32dce73
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalRepository.java
@@ -0,0 +1,132 @@
+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.io.File;
+
+/**
+ * A repository on the local file system used to cache contents of remote repositories and to store locally installed
+ * artifacts. Note that this class merely describes such a repository, actual access to the contained artifacts is
+ * handled by a {@link LocalRepositoryManager} which is usually determined from the {@link #getContentType() type} of
+ * the repository.
+ */
+public final class LocalRepository
+ implements ArtifactRepository
+{
+
+ private final File basedir;
+
+ private final String type;
+
+ /**
+ * Creates a new local repository with the specified base directory and unknown type.
+ *
+ * @param basedir The base directory of the repository, may be {@code null}.
+ */
+ public LocalRepository( String basedir )
+ {
+ this( ( basedir != null ) ? new File( basedir ) : null, "" );
+ }
+
+ /**
+ * Creates a new local repository with the specified base directory and unknown type.
+ *
+ * @param basedir The base directory of the repository, may be {@code null}.
+ */
+ public LocalRepository( File basedir )
+ {
+ this( basedir, "" );
+ }
+
+ /**
+ * Creates a new local repository with the specified properties.
+ *
+ * @param basedir The base directory of the repository, may be {@code null}.
+ * @param type The type of the repository, may be {@code null}.
+ */
+ public LocalRepository( File basedir, String type )
+ {
+ this.basedir = basedir;
+ this.type = ( type != null ) ? type : "";
+ }
+
+ public String getContentType()
+ {
+ return type;
+ }
+
+ public String getId()
+ {
+ return "local";
+ }
+
+ /**
+ * Gets the base directory of the repository.
+ *
+ * @return The base directory or {@code null} if none.
+ */
+ public File getBasedir()
+ {
+ return basedir;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getBasedir() + " (" + getContentType() + ")";
+ }
+
+ @Override
+ public boolean equals( Object obj )
+ {
+ if ( this == obj )
+ {
+ return true;
+ }
+ if ( obj == null || !getClass().equals( obj.getClass() ) )
+ {
+ return false;
+ }
+
+ LocalRepository that = (LocalRepository) obj;
+
+ return eq( basedir, that.basedir ) && eq( type, that.type );
+ }
+
+ private static <T> boolean eq( T s1, T s2 )
+ {
+ return s1 != null ? s1.equals( s2 ) : s2 == null;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int hash = 17;
+ hash = hash * 31 + hash( basedir );
+ hash = hash * 31 + hash( type );
+ return hash;
+ }
+
+ private static int hash( Object obj )
+ {
+ return obj != null ? obj.hashCode() : 0;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalRepositoryManager.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalRepositoryManager.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalRepositoryManager.java
new file mode 100644
index 0000000..649707c
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalRepositoryManager.java
@@ -0,0 +1,127 @@
+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 org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.metadata.Metadata;
+
+/**
+ * Manages access to a local repository.
+ *
+ * @see RepositorySystemSession#getLocalRepositoryManager()
+ * @see org.eclipse.aether.RepositorySystem#newLocalRepositoryManager(RepositorySystemSession, LocalRepository)
+ */
+public interface LocalRepositoryManager
+{
+
+ /**
+ * Gets the description of the local repository being managed.
+ *
+ * @return The description of the local repository, never {@code null}.
+ */
+ LocalRepository getRepository();
+
+ /**
+ * Gets the relative path for a locally installed artifact. Note that the artifact need not actually exist yet at
+ * the returned location, the path merely indicates where the artifact would eventually be stored. The path uses the
+ * forward slash as directory separator regardless of the underlying file system.
+ *
+ * @param artifact The artifact for which to determine the path, must not be {@code null}.
+ * @return The path, relative to the local repository's base directory.
+ */
+ String getPathForLocalArtifact( Artifact artifact );
+
+ /**
+ * Gets the relative path for an artifact cached from a remote repository. Note that the artifact need not actually
+ * exist yet at the returned location, the path merely indicates where the artifact would eventually be stored. The
+ * path uses the forward slash as directory separator regardless of the underlying file system.
+ *
+ * @param artifact The artifact for which to determine the path, must not be {@code null}.
+ * @param repository The source repository of the artifact, must not be {@code null}.
+ * @param context The resolution context in which the artifact is being requested, may be {@code null}.
+ * @return The path, relative to the local repository's base directory.
+ */
+ String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context );
+
+ /**
+ * Gets the relative path for locally installed metadata. Note that the metadata need not actually exist yet at the
+ * returned location, the path merely indicates where the metadata would eventually be stored. The path uses the
+ * forward slash as directory separator regardless of the underlying file system.
+ *
+ * @param metadata The metadata for which to determine the path, must not be {@code null}.
+ * @return The path, relative to the local repository's base directory.
+ */
+ String getPathForLocalMetadata( Metadata metadata );
+
+ /**
+ * Gets the relative path for metadata cached from a remote repository. Note that the metadata need not actually
+ * exist yet at the returned location, the path merely indicates where the metadata would eventually be stored. The
+ * path uses the forward slash as directory separator regardless of the underlying file system.
+ *
+ * @param metadata The metadata for which to determine the path, must not be {@code null}.
+ * @param repository The source repository of the metadata, must not be {@code null}.
+ * @param context The resolution context in which the metadata is being requested, may be {@code null}.
+ * @return The path, relative to the local repository's base directory.
+ */
+ String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context );
+
+ /**
+ * Queries for the existence of an artifact in the local repository. The request could be satisfied by a locally
+ * installed artifact or a previously downloaded artifact.
+ *
+ * @param session The repository system session during which the request is made, must not be {@code null}.
+ * @param request The artifact request, must not be {@code null}.
+ * @return The result of the request, never {@code null}.
+ */
+ LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request );
+
+ /**
+ * Registers an installed or resolved artifact with the local repository. Note that artifact registration is merely
+ * concerned about updating the local repository's internal state, not about actually installing the artifact or its
+ * accompanying metadata.
+ *
+ * @param session The repository system session during which the registration is made, must not be {@code null}.
+ * @param request The registration request, must not be {@code null}.
+ */
+ void add( RepositorySystemSession session, LocalArtifactRegistration request );
+
+ /**
+ * Queries for the existence of metadata in the local repository. The request could be satisfied by locally
+ * installed or previously downloaded metadata.
+ *
+ * @param session The repository system session during which the request is made, must not be {@code null}.
+ * @param request The metadata request, must not be {@code null}.
+ * @return The result of the request, never {@code null}.
+ */
+ LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request );
+
+ /**
+ * Registers installed or resolved metadata with the local repository. Note that metadata registration is merely
+ * concerned about updating the local repository's internal state, not about actually installing the metadata.
+ * However, this method MUST be called after the actual install to give the repository manager the opportunity to
+ * inspect the added metadata.
+ *
+ * @param session The repository system session during which the registration is made, must not be {@code null}.
+ * @param request The registration request, must not be {@code null}.
+ */
+ void add( RepositorySystemSession session, LocalMetadataRegistration request );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/MirrorSelector.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/MirrorSelector.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/MirrorSelector.java
new file mode 100644
index 0000000..d50262c
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/MirrorSelector.java
@@ -0,0 +1,39 @@
+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.
+ */
+
+/**
+ * Selects a mirror for a given remote repository.
+ *
+ * @see org.eclipse.aether.RepositorySystemSession#getMirrorSelector()
+ */
+public interface MirrorSelector
+{
+
+ /**
+ * Selects a mirror for the specified repository.
+ *
+ * @param repository The repository to select a mirror for, must not be {@code null}.
+ * @return The selected mirror or {@code null} if none.
+ * @see RemoteRepository#getMirroredRepositories()
+ */
+ RemoteRepository getMirror( RemoteRepository repository );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/NoLocalRepositoryManagerException.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/NoLocalRepositoryManagerException.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/NoLocalRepositoryManagerException.java
new file mode 100644
index 0000000..c804821
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/NoLocalRepositoryManagerException.java
@@ -0,0 +1,102 @@
+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 org.eclipse.aether.RepositoryException;
+
+/**
+ * Thrown in case of an unsupported local repository type.
+ */
+public class NoLocalRepositoryManagerException
+ extends RepositoryException
+{
+
+ private final transient LocalRepository repository;
+
+ /**
+ * Creates a new exception with the specified repository.
+ *
+ * @param repository The local repository for which no support is available, may be {@code null}.
+ */
+ public NoLocalRepositoryManagerException( LocalRepository repository )
+ {
+ this( repository, toMessage( repository ) );
+ }
+
+ /**
+ * Creates a new exception with the specified repository and detail message.
+ *
+ * @param repository The local repository for which no support is available, may be {@code null}.
+ * @param message The detail message, may be {@code null}.
+ */
+ public NoLocalRepositoryManagerException( LocalRepository repository, String message )
+ {
+ super( message );
+ this.repository = repository;
+ }
+
+ /**
+ * Creates a new exception with the specified repository and cause.
+ *
+ * @param repository The local repository for which no support is available, may be {@code null}.
+ * @param cause The exception that caused this one, may be {@code null}.
+ */
+ public NoLocalRepositoryManagerException( LocalRepository repository, Throwable cause )
+ {
+ this( repository, toMessage( repository ), cause );
+ }
+
+ /**
+ * Creates a new exception with the specified repository, detail message and cause.
+ *
+ * @param repository The local repository for which no support is available, may be {@code null}.
+ * @param message The detail message, may be {@code null}.
+ * @param cause The exception that caused this one, may be {@code null}.
+ */
+ public NoLocalRepositoryManagerException( LocalRepository repository, String message, Throwable cause )
+ {
+ super( message, cause );
+ this.repository = repository;
+ }
+
+ private static String toMessage( LocalRepository repository )
+ {
+ if ( repository != null )
+ {
+ return "No manager available for local repository (" + repository.getBasedir().getAbsolutePath()
+ + ") of type " + repository.getContentType();
+ }
+ else
+ {
+ return "No manager available for local repository";
+ }
+ }
+
+ /**
+ * Gets the local repository whose content type is not supported.
+ *
+ * @return The unsupported local repository or {@code null} if unknown.
+ */
+ public LocalRepository getRepository()
+ {
+ return repository;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/Proxy.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/Proxy.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/Proxy.java
new file mode 100644
index 0000000..8e8cba1
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/Proxy.java
@@ -0,0 +1,158 @@
+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 proxy to use for connections to a repository.
+ */
+public final class Proxy
+{
+
+ /**
+ * Type denoting a proxy for HTTP transfers.
+ */
+ public static final String TYPE_HTTP = "http";
+
+ /**
+ * Type denoting a proxy for HTTPS transfers.
+ */
+ public static final String TYPE_HTTPS = "https";
+
+ private final String type;
+
+ private final String host;
+
+ private final int port;
+
+ private final Authentication auth;
+
+ /**
+ * Creates a new proxy with the specified properties and no authentication.
+ *
+ * @param type The type of the proxy, e.g. "http", may be {@code null}.
+ * @param host The host of the proxy, may be {@code null}.
+ * @param port The port of the proxy.
+ */
+ public Proxy( String type, String host, int port )
+ {
+ this( type, host, port, null );
+ }
+
+ /**
+ * Creates a new proxy with the specified properties.
+ *
+ * @param type The type of the proxy, e.g. "http", may be {@code null}.
+ * @param host The host of the proxy, may be {@code null}.
+ * @param port The port of the proxy.
+ * @param auth The authentication to use for the proxy connection, may be {@code null}.
+ */
+ public Proxy( String type, String host, int port, Authentication auth )
+ {
+ this.type = ( type != null ) ? type : "";
+ this.host = ( host != null ) ? host : "";
+ this.port = port;
+ this.auth = auth;
+ }
+
+ /**
+ * Gets the type of this proxy.
+ *
+ * @return The type of this proxy, never {@code null}.
+ */
+ public String getType()
+ {
+ return type;
+ }
+
+ /**
+ * Gets the host for this proxy.
+ *
+ * @return The host for this proxy, never {@code null}.
+ */
+ public String getHost()
+ {
+ return host;
+ }
+
+ /**
+ * Gets the port number for this proxy.
+ *
+ * @return The port number for this proxy.
+ */
+ public int getPort()
+ {
+ return port;
+ }
+
+ /**
+ * Gets the authentication to use for the proxy connection.
+ *
+ * @return The authentication to use or {@code null} if none.
+ */
+ public Authentication getAuthentication()
+ {
+ return auth;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getHost() + ':' + getPort();
+ }
+
+ @Override
+ public boolean equals( Object obj )
+ {
+ if ( this == obj )
+ {
+ return true;
+ }
+ if ( obj == null || !getClass().equals( obj.getClass() ) )
+ {
+ return false;
+ }
+
+ Proxy that = (Proxy) obj;
+
+ return eq( type, that.type ) && eq( host, that.host ) && port == that.port && eq( auth, that.auth );
+ }
+
+ private static <T> boolean eq( T s1, T s2 )
+ {
+ return s1 != null ? s1.equals( s2 ) : s2 == null;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int hash = 17;
+ hash = hash * 31 + hash( host );
+ hash = hash * 31 + hash( type );
+ hash = hash * 31 + port;
+ hash = hash * 31 + hash( auth );
+ return hash;
+ }
+
+ private static int hash( Object obj )
+ {
+ return obj != null ? obj.hashCode() : 0;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/ProxySelector.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/ProxySelector.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/ProxySelector.java
new file mode 100644
index 0000000..29b9e4e
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/ProxySelector.java
@@ -0,0 +1,38 @@
+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.
+ */
+
+/**
+ * Selects a proxy for a given remote repository.
+ *
+ * @see org.eclipse.aether.RepositorySystemSession#getProxySelector()
+ */
+public interface ProxySelector
+{
+
+ /**
+ * Selects a proxy for the specified remote repository.
+ *
+ * @param repository The repository for which to select a proxy, must not be {@code null}.
+ * @return The selected proxy or {@code null} if none.
+ */
+ Proxy getProxy( RemoteRepository repository );
+
+}
[04/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/CollectRequest.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/CollectRequest.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/CollectRequest.java
new file mode 100644
index 0000000..d9c2527
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/CollectRequest.java
@@ -0,0 +1,356 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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.Collections;
+import java.util.List;
+
+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.graph.Dependency;
+import org.eclipse.aether.repository.RemoteRepository;
+
+/**
+ * A request to collect the transitive dependencies and to build a dependency graph from them. There are three ways to
+ * create a dependency graph. First, only the root dependency can be given. Second, a root dependency and direct
+ * dependencies can be specified in which case the specified direct dependencies are merged with the direct dependencies
+ * retrieved from the artifact descriptor of the root dependency. And last, only direct dependencies can be specified in
+ * which case the root node of the resulting graph has no associated dependency.
+ *
+ * @see RepositorySystem#collectDependencies(RepositorySystemSession, CollectRequest)
+ */
+public final class CollectRequest
+{
+
+ private Artifact rootArtifact;
+
+ private Dependency root;
+
+ private List<Dependency> dependencies = Collections.emptyList();
+
+ private List<Dependency> managedDependencies = Collections.emptyList();
+
+ private List<RemoteRepository> repositories = Collections.emptyList();
+
+ private String context = "";
+
+ private RequestTrace trace;
+
+ /**
+ * Creates an uninitialized request.
+ */
+ public CollectRequest()
+ {
+ // enables default constructor
+ }
+
+ /**
+ * Creates a request with the specified properties.
+ *
+ * @param root The root dependency whose transitive dependencies should be collected, may be {@code null}.
+ * @param repositories The repositories to use for the collection, may be {@code null}.
+ */
+ public CollectRequest( Dependency root, List<RemoteRepository> repositories )
+ {
+ setRoot( root );
+ setRepositories( repositories );
+ }
+
+ /**
+ * Creates a new request with the specified properties.
+ *
+ * @param root The root dependency whose transitive dependencies should be collected, may be {@code null}.
+ * @param dependencies The direct dependencies to merge with the direct dependencies from the root dependency's
+ * artifact descriptor.
+ * @param repositories The repositories to use for the collection, may be {@code null}.
+ */
+ public CollectRequest( Dependency root, List<Dependency> dependencies, List<RemoteRepository> repositories )
+ {
+ setRoot( root );
+ setDependencies( dependencies );
+ setRepositories( repositories );
+ }
+
+ /**
+ * Creates a new request with the specified properties.
+ *
+ * @param dependencies The direct dependencies of some imaginary root, may be {@code null}.
+ * @param managedDependencies The dependency management information to apply to the transitive dependencies, may be
+ * {@code null}.
+ * @param repositories The repositories to use for the collection, may be {@code null}.
+ */
+ public CollectRequest( List<Dependency> dependencies, List<Dependency> managedDependencies,
+ List<RemoteRepository> repositories )
+ {
+ setDependencies( dependencies );
+ setManagedDependencies( managedDependencies );
+ setRepositories( repositories );
+ }
+
+ /**
+ * Gets the root artifact for the dependency graph.
+ *
+ * @return The root artifact for the dependency graph or {@code null} if none.
+ */
+ public Artifact getRootArtifact()
+ {
+ return rootArtifact;
+ }
+
+ /**
+ * Sets the root artifact for the dependency graph. This must not be confused with {@link #setRoot(Dependency)}: The
+ * root <em>dependency</em>, like any other specified dependency, will be subject to dependency
+ * collection/resolution, i.e. should have an artifact descriptor and a corresponding artifact file. The root
+ * <em>artifact</em> on the other hand is only used as a label for the root node of the graph in case no root
+ * dependency was specified. As such, the configured root artifact is ignored if {@link #getRoot()} does not return
+ * {@code null}.
+ *
+ * @param rootArtifact The root artifact for the dependency graph, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public CollectRequest setRootArtifact( Artifact rootArtifact )
+ {
+ this.rootArtifact = rootArtifact;
+ return this;
+ }
+
+ /**
+ * Gets the root dependency of the graph.
+ *
+ * @return The root dependency of the graph or {@code null} if none.
+ */
+ public Dependency getRoot()
+ {
+ return root;
+ }
+
+ /**
+ * Sets the root dependency of the graph.
+ *
+ * @param root The root dependency of the graph, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public CollectRequest setRoot( Dependency root )
+ {
+ this.root = root;
+ return this;
+ }
+
+ /**
+ * Gets the direct dependencies.
+ *
+ * @return The direct dependencies, never {@code null}.
+ */
+ public List<Dependency> getDependencies()
+ {
+ return dependencies;
+ }
+
+ /**
+ * Sets the direct dependencies. If both a root dependency and direct dependencies are given in the request, the
+ * direct dependencies from the request will be merged with the direct dependencies from the root dependency's
+ * artifact descriptor, giving higher priority to the dependencies from the request.
+ *
+ * @param dependencies The direct dependencies, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public CollectRequest setDependencies( List<Dependency> dependencies )
+ {
+ if ( dependencies == null )
+ {
+ this.dependencies = Collections.emptyList();
+ }
+ else
+ {
+ this.dependencies = dependencies;
+ }
+ return this;
+ }
+
+ /**
+ * Adds the specified direct dependency.
+ *
+ * @param dependency The dependency to add, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public CollectRequest addDependency( Dependency dependency )
+ {
+ if ( dependency != null )
+ {
+ if ( this.dependencies.isEmpty() )
+ {
+ this.dependencies = new ArrayList<Dependency>();
+ }
+ this.dependencies.add( dependency );
+ }
+ return this;
+ }
+
+ /**
+ * Gets the dependency management to apply to transitive dependencies.
+ *
+ * @return The dependency management to apply to transitive dependencies, never {@code null}.
+ */
+ public List<Dependency> getManagedDependencies()
+ {
+ return managedDependencies;
+ }
+
+ /**
+ * Sets the dependency management to apply to transitive dependencies. To clarify, this management does not apply to
+ * the direct dependencies of the root node.
+ *
+ * @param managedDependencies The dependency management, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public CollectRequest setManagedDependencies( List<Dependency> managedDependencies )
+ {
+ if ( managedDependencies == null )
+ {
+ this.managedDependencies = Collections.emptyList();
+ }
+ else
+ {
+ this.managedDependencies = managedDependencies;
+ }
+ return this;
+ }
+
+ /**
+ * Adds the specified managed dependency.
+ *
+ * @param managedDependency The managed dependency to add, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public CollectRequest addManagedDependency( Dependency managedDependency )
+ {
+ if ( managedDependency != null )
+ {
+ if ( this.managedDependencies.isEmpty() )
+ {
+ this.managedDependencies = new ArrayList<Dependency>();
+ }
+ this.managedDependencies.add( managedDependency );
+ }
+ return this;
+ }
+
+ /**
+ * Gets the repositories to use for the collection.
+ *
+ * @return The repositories to use for the collection, never {@code null}.
+ */
+ public List<RemoteRepository> getRepositories()
+ {
+ return repositories;
+ }
+
+ /**
+ * Sets the repositories to use for the collection.
+ *
+ * @param repositories The repositories to use for the collection, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public CollectRequest setRepositories( List<RemoteRepository> repositories )
+ {
+ if ( repositories == null )
+ {
+ this.repositories = Collections.emptyList();
+ }
+ else
+ {
+ this.repositories = repositories;
+ }
+ return this;
+ }
+
+ /**
+ * Adds the specified repository for collection.
+ *
+ * @param repository The repository to collect dependency information from, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public CollectRequest addRepository( RemoteRepository repository )
+ {
+ if ( repository != null )
+ {
+ if ( this.repositories.isEmpty() )
+ {
+ this.repositories = new ArrayList<RemoteRepository>();
+ }
+ this.repositories.add( repository );
+ }
+ return this;
+ }
+
+ /**
+ * Gets the context in which this request is made.
+ *
+ * @return The context, never {@code null}.
+ */
+ public String getRequestContext()
+ {
+ return context;
+ }
+
+ /**
+ * Sets the context in which this request is made.
+ *
+ * @param context The context, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public CollectRequest setRequestContext( String context )
+ {
+ this.context = ( context != null ) ? context : "";
+ 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 CollectRequest setTrace( RequestTrace trace )
+ {
+ this.trace = trace;
+ return this;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getRoot() + " -> " + getDependencies() + " < " + getRepositories();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/CollectResult.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/CollectResult.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/CollectResult.java
new file mode 100644
index 0000000..dd9f02e
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/CollectResult.java
@@ -0,0 +1,159 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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.Collections;
+import java.util.List;
+
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.graph.DependencyCycle;
+import org.eclipse.aether.graph.DependencyNode;
+
+/**
+ * The result of a dependency collection request.
+ *
+ * @see RepositorySystem#collectDependencies(RepositorySystemSession, CollectRequest)
+ */
+public final class CollectResult
+{
+
+ private final CollectRequest request;
+
+ private List<Exception> exceptions;
+
+ private List<DependencyCycle> cycles;
+
+ private DependencyNode root;
+
+ /**
+ * Creates a new result for the specified request.
+ *
+ * @param request The resolution request, must not be {@code null}.
+ */
+ public CollectResult( CollectRequest request )
+ {
+ if ( request == null )
+ {
+ throw new IllegalArgumentException( "dependency collection request has not been specified" );
+ }
+ this.request = request;
+ exceptions = Collections.emptyList();
+ cycles = Collections.emptyList();
+ }
+
+ /**
+ * Gets the collection request that was made.
+ *
+ * @return The collection request, never {@code null}.
+ */
+ public CollectRequest getRequest()
+ {
+ return request;
+ }
+
+ /**
+ * Gets the exceptions that occurred while building the dependency graph.
+ *
+ * @return The exceptions that occurred, never {@code null}.
+ */
+ public List<Exception> getExceptions()
+ {
+ return exceptions;
+ }
+
+ /**
+ * Records the specified exception while building the dependency graph.
+ *
+ * @param exception The exception to record, may be {@code null}.
+ * @return This result for chaining, never {@code null}.
+ */
+ public CollectResult addException( Exception exception )
+ {
+ if ( exception != null )
+ {
+ if ( exceptions.isEmpty() )
+ {
+ exceptions = new ArrayList<Exception>();
+ }
+ exceptions.add( exception );
+ }
+ return this;
+ }
+
+ /**
+ * Gets the dependency cycles that were encountered while building the dependency graph.
+ *
+ * @return The dependency cycles in the (raw) graph, never {@code null}.
+ */
+ public List<DependencyCycle> getCycles()
+ {
+ return cycles;
+ }
+
+ /**
+ * Records the specified dependency cycle.
+ *
+ * @param cycle The dependency cycle to record, may be {@code null}.
+ * @return This result for chaining, never {@code null}.
+ */
+ public CollectResult addCycle( DependencyCycle cycle )
+ {
+ if ( cycle != null )
+ {
+ if ( cycles.isEmpty() )
+ {
+ cycles = new ArrayList<DependencyCycle>();
+ }
+ cycles.add( cycle );
+ }
+ return this;
+ }
+
+ /**
+ * Gets the root node of the dependency graph.
+ *
+ * @return The root node of the dependency graph or {@code null} if none.
+ */
+ public DependencyNode getRoot()
+ {
+ return root;
+ }
+
+ /**
+ * Sets the root node of the dependency graph.
+ *
+ * @param root The root node of the dependency graph, may be {@code null}.
+ * @return This result for chaining, never {@code null}.
+ */
+ public CollectResult setRoot( DependencyNode root )
+ {
+ this.root = root;
+ return this;
+ }
+
+ @Override
+ public String toString()
+ {
+ return String.valueOf( getRoot() );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionContext.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionContext.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionContext.java
new file mode 100644
index 0000000..671bd2a
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionContext.java
@@ -0,0 +1,75 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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;
+
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.graph.Dependency;
+
+/**
+ * A context used during dependency collection to update the dependency manager, selector and traverser.
+ *
+ * @see DependencyManager#deriveChildManager(DependencyCollectionContext)
+ * @see DependencyTraverser#deriveChildTraverser(DependencyCollectionContext)
+ * @see DependencySelector#deriveChildSelector(DependencyCollectionContext)
+ * @see VersionFilter#deriveChildFilter(DependencyCollectionContext)
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface DependencyCollectionContext
+{
+
+ /**
+ * Gets the repository system session during which the dependency collection happens.
+ *
+ * @return The repository system session, never {@code null}.
+ */
+ RepositorySystemSession getSession();
+
+ /**
+ * Gets the artifact whose children are to be processed next during dependency collection. For all nodes but the
+ * root, this is simply shorthand for {@code getDependency().getArtifact()}. In case of the root node however,
+ * {@link #getDependency()} might be {@code null} while the node still has an artifact which serves as its label and
+ * is not to be resolved.
+ *
+ * @return The artifact whose children are going to be processed or {@code null} in case of the root node without
+ * dependency and label.
+ */
+ Artifact getArtifact();
+
+ /**
+ * Gets the dependency whose children are to be processed next during dependency collection.
+ *
+ * @return The dependency whose children are going to be processed or {@code null} in case of the root node without
+ * dependency.
+ */
+ Dependency getDependency();
+
+ /**
+ * Gets the dependency management information that was contributed by the artifact descriptor of the current
+ * dependency.
+ *
+ * @return The dependency management information, never {@code null}.
+ */
+ List<Dependency> getManagedDependencies();
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionException.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionException.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionException.java
new file mode 100644
index 0000000..8a04d79
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyCollectionException.java
@@ -0,0 +1,111 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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 bad artifact descriptors, version ranges or other issues encountered during calculation of the
+ * dependency graph.
+ */
+public class DependencyCollectionException
+ extends RepositoryException
+{
+
+ private final transient CollectResult result;
+
+ /**
+ * Creates a new exception with the specified result.
+ *
+ * @param result The collection result at the point the exception occurred, may be {@code null}.
+ */
+ public DependencyCollectionException( CollectResult result )
+ {
+ super( "Failed to collect dependencies for " + getSource( result ), getCause( result ) );
+ this.result = result;
+ }
+
+ /**
+ * Creates a new exception with the specified result and detail message.
+ *
+ * @param result The collection result at the point the exception occurred, may be {@code null}.
+ * @param message The detail message, may be {@code null}.
+ */
+ public DependencyCollectionException( CollectResult result, String message )
+ {
+ super( message, getCause( result ) );
+ this.result = result;
+ }
+
+ /**
+ * Creates a new exception with the specified result, detail message and cause.
+ *
+ * @param result The collection result at the point the exception occurred, may be {@code null}.
+ * @param message The detail message, may be {@code null}.
+ * @param cause The exception that caused this one, may be {@code null}.
+ */
+ public DependencyCollectionException( CollectResult result, String message, Throwable cause )
+ {
+ super( message, cause );
+ this.result = result;
+ }
+
+ /**
+ * Gets the collection result at the point the exception occurred. Despite being incomplete, callers might want to
+ * use this result to fail gracefully and continue their operation with whatever interim data has been gathered.
+ *
+ * @return The collection result or {@code null} if unknown.
+ */
+ public CollectResult getResult()
+ {
+ return result;
+ }
+
+ private static String getSource( CollectResult result )
+ {
+ if ( result == null )
+ {
+ return "";
+ }
+
+ CollectRequest request = result.getRequest();
+ if ( request.getRoot() != null )
+ {
+ return request.getRoot().toString();
+ }
+ if ( request.getRootArtifact() != null )
+ {
+ return request.getRootArtifact().toString();
+ }
+
+ return request.getDependencies().toString();
+ }
+
+ private static Throwable getCause( CollectResult result )
+ {
+ Throwable cause = null;
+ if ( result != null && !result.getExceptions().isEmpty() )
+ {
+ cause = result.getExceptions().get( 0 );
+ }
+ return cause;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformationContext.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformationContext.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformationContext.java
new file mode 100644
index 0000000..ba66474
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformationContext.java
@@ -0,0 +1,58 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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.RepositorySystemSession;
+
+/**
+ * A context used during dependency collection to exchange information within a chain of dependency graph transformers.
+ *
+ * @see DependencyGraphTransformer
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface DependencyGraphTransformationContext
+{
+
+ /**
+ * Gets the repository system session during which the graph transformation happens.
+ *
+ * @return The repository system session, never {@code null}.
+ */
+ RepositorySystemSession getSession();
+
+ /**
+ * Gets a keyed value from the context.
+ *
+ * @param key The key used to query the value, must not be {@code null}.
+ * @return The queried value or {@code null} if none.
+ */
+ Object get( Object key );
+
+ /**
+ * Puts a keyed value into the context.
+ *
+ * @param key The key used to store the value, must not be {@code null}.
+ * @param value The value to store, may be {@code null} to remove the mapping.
+ * @return The previous value associated with the key or {@code null} if none.
+ */
+ Object put( Object key, Object value );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java
new file mode 100644
index 0000000..c472500
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java
@@ -0,0 +1,51 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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;
+import org.eclipse.aether.graph.DependencyNode;
+
+/**
+ * Transforms a given dependency graph.
+ * <p>
+ * <strong>Note:</strong> Implementations must be stateless.
+ * <p>
+ * <em>Warning:</em> Dependency graphs may generally contain cycles. As such a graph transformer that cannot assume for
+ * sure that cycles have already been eliminated must gracefully handle cyclic graphs, e.g. guard against infinite
+ * recursion.
+ *
+ * @see org.eclipse.aether.RepositorySystemSession#getDependencyGraphTransformer()
+ */
+public interface DependencyGraphTransformer
+{
+
+ /**
+ * Transforms the dependency graph denoted by the specified root node. The transformer may directly change the
+ * provided input graph or create a new graph, the former is recommended for performance reasons.
+ *
+ * @param node The root node of the (possibly cyclic!) graph to transform, must not be {@code null}.
+ * @param context The graph transformation context, must not be {@code null}.
+ * @return The result graph of the transformation, never {@code null}.
+ * @throws RepositoryException If the transformation failed.
+ */
+ DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
+ throws RepositoryException;
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyManagement.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyManagement.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyManagement.java
new file mode 100644
index 0000000..054bfe0
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyManagement.java
@@ -0,0 +1,177 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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.Map;
+
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.graph.Exclusion;
+
+/**
+ * The management updates to apply to a dependency.
+ *
+ * @see DependencyManager#manageDependency(Dependency)
+ */
+public final class DependencyManagement
+{
+
+ private String version;
+
+ private String scope;
+
+ private Boolean optional;
+
+ private Collection<Exclusion> exclusions;
+
+ private Map<String, String> properties;
+
+ /**
+ * Creates an empty management update.
+ */
+ public DependencyManagement()
+ {
+ // enables default constructor
+ }
+
+ /**
+ * Gets the new version to apply to the dependency.
+ *
+ * @return The new version or {@code null} if the version is not managed and the existing dependency version should
+ * remain unchanged.
+ */
+ public String getVersion()
+ {
+ return version;
+ }
+
+ /**
+ * Sets the new version to apply to the dependency.
+ *
+ * @param version The new version, may be {@code null} if the version is not managed.
+ * @return This management update for chaining, never {@code null}.
+ */
+ public DependencyManagement setVersion( String version )
+ {
+ this.version = version;
+ return this;
+ }
+
+ /**
+ * Gets the new scope to apply to the dependency.
+ *
+ * @return The new scope or {@code null} if the scope is not managed and the existing dependency scope should remain
+ * unchanged.
+ */
+ public String getScope()
+ {
+ return scope;
+ }
+
+ /**
+ * Sets the new scope to apply to the dependency.
+ *
+ * @param scope The new scope, may be {@code null} if the scope is not managed.
+ * @return This management update for chaining, never {@code null}.
+ */
+ public DependencyManagement setScope( String scope )
+ {
+ this.scope = scope;
+ return this;
+ }
+
+ /**
+ * Gets the new optional flag to apply to the dependency.
+ *
+ * @return The new optional flag or {@code null} if the flag is not managed and the existing optional flag of the
+ * dependency should remain unchanged.
+ */
+ public Boolean getOptional()
+ {
+ return optional;
+ }
+
+ /**
+ * Sets the new optional flag to apply to the dependency.
+ *
+ * @param optional The optional flag, may be {@code null} if the flag is not managed.
+ * @return This management update for chaining, never {@code null}.
+ */
+ public DependencyManagement setOptional( Boolean optional )
+ {
+ this.optional = optional;
+ return this;
+ }
+
+ /**
+ * Gets the new exclusions to apply to the dependency. Note that this collection denotes the complete set of
+ * exclusions for the dependency, i.e. the dependency manager controls whether any existing exclusions get merged
+ * with information from dependency management or overridden by it.
+ *
+ * @return The new exclusions or {@code null} if the exclusions are not managed and the existing dependency
+ * exclusions should remain unchanged.
+ */
+ public Collection<Exclusion> getExclusions()
+ {
+ return exclusions;
+ }
+
+ /**
+ * Sets the new exclusions to apply to the dependency. Note that this collection denotes the complete set of
+ * exclusions for the dependency, i.e. the dependency manager controls whether any existing exclusions get merged
+ * with information from dependency management or overridden by it.
+ *
+ * @param exclusions The new exclusions, may be {@code null} if the exclusions are not managed.
+ * @return This management update for chaining, never {@code null}.
+ */
+ public DependencyManagement setExclusions( Collection<Exclusion> exclusions )
+ {
+ this.exclusions = exclusions;
+ return this;
+ }
+
+ /**
+ * Gets the new properties to apply to the dependency. Note that this map denotes the complete set of properties,
+ * i.e. the dependency manager controls whether any existing properties get merged with the information from
+ * dependency management or overridden by it.
+ *
+ * @return The new artifact properties or {@code null} if the properties are not managed and the existing properties
+ * should remain unchanged.
+ */
+ public Map<String, String> getProperties()
+ {
+ return properties;
+ }
+
+ /**
+ * Sets the new properties to apply to the dependency. Note that this map denotes the complete set of properties,
+ * i.e. the dependency manager controls whether any existing properties get merged with the information from
+ * dependency management or overridden by it.
+ *
+ * @param properties The new artifact properties, may be {@code null} if the properties are not managed.
+ * @return This management update for chaining, never {@code null}.
+ */
+ public DependencyManagement setProperties( Map<String, String> properties )
+ {
+ this.properties = properties;
+ return this;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java
new file mode 100644
index 0000000..993e388
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java
@@ -0,0 +1,57 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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.graph.Dependency;
+
+/**
+ * Applies dependency management to the dependencies of a dependency node.
+ * <p>
+ * <strong>Note:</strong> Implementations must be stateless.
+ * <p>
+ * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to
+ * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method.
+ *
+ * @see org.eclipse.aether.RepositorySystemSession#getDependencyManager()
+ * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession,
+ * CollectRequest)
+ */
+public interface DependencyManager
+{
+
+ /**
+ * Applies dependency management to the specified dependency.
+ *
+ * @param dependency The dependency to manage, must not be {@code null}.
+ * @return The management update to apply to the dependency or {@code null} if the dependency is not managed at all.
+ */
+ DependencyManagement manageDependency( Dependency dependency );
+
+ /**
+ * Derives a dependency manager for the specified collection context. When calculating the child manager,
+ * implementors are strongly advised to simply return the current instance if nothing changed to help save memory.
+ *
+ * @param context The dependency collection context, must not be {@code null}.
+ * @return The dependency manager for the dependencies of the target node or {@code null} if dependency management
+ * should no longer be applied.
+ */
+ DependencyManager deriveChildManager( DependencyCollectionContext context );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java
new file mode 100644
index 0000000..b257ffa
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java
@@ -0,0 +1,58 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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.graph.Dependency;
+
+/**
+ * Decides what dependencies to include in the dependency graph.
+ * <p>
+ * <strong>Note:</strong> Implementations must be stateless.
+ * <p>
+ * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to
+ * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method.
+ *
+ * @see org.eclipse.aether.RepositorySystemSession#getDependencySelector()
+ * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession,
+ * CollectRequest)
+ */
+public interface DependencySelector
+{
+
+ /**
+ * Decides whether the specified dependency should be included in the dependency graph.
+ *
+ * @param dependency The dependency to check, must not be {@code null}.
+ * @return {@code false} if the dependency should be excluded from the children of the current node, {@code true}
+ * otherwise.
+ */
+ boolean selectDependency( Dependency dependency );
+
+ /**
+ * Derives a dependency selector for the specified collection context. When calculating the child selector,
+ * implementors are strongly advised to simply return the current instance if nothing changed to help save memory.
+ *
+ * @param context The dependency collection context, must not be {@code null}.
+ * @return The dependency selector for the target node or {@code null} if dependencies should be unconditionally
+ * included in the sub graph.
+ */
+ DependencySelector deriveChildSelector( DependencyCollectionContext context );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java
new file mode 100644
index 0000000..be1887b
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java
@@ -0,0 +1,59 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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.graph.Dependency;
+
+/**
+ * Decides whether the dependencies of a dependency node should be traversed as well.
+ * <p>
+ * <strong>Note:</strong> Implementations must be stateless.
+ * <p>
+ * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to
+ * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method.
+ *
+ * @see org.eclipse.aether.RepositorySystemSession#getDependencyTraverser()
+ * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession,
+ * CollectRequest)
+ */
+public interface DependencyTraverser
+{
+
+ /**
+ * Decides whether the dependencies of the specified dependency should be traversed.
+ *
+ * @param dependency The dependency to check, must not be {@code null}.
+ * @return {@code true} if the dependency graph builder should recurse into the specified dependency and process its
+ * dependencies, {@code false} otherwise.
+ */
+ boolean traverseDependency( Dependency dependency );
+
+ /**
+ * Derives a dependency traverser that will be used to decide whether the transitive dependencies of the dependency
+ * given in the collection context shall be traversed. When calculating the child traverser, implementors are
+ * strongly advised to simply return the current instance if nothing changed to help save memory.
+ *
+ * @param context The dependency collection context, must not be {@code null}.
+ * @return The dependency traverser for the target node or {@code null} if dependencies should be unconditionally
+ * traversed in the sub graph.
+ */
+ DependencyTraverser deriveChildTraverser( DependencyCollectionContext context );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/UnsolvableVersionConflictException.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/UnsolvableVersionConflictException.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/UnsolvableVersionConflictException.java
new file mode 100644
index 0000000..54a7004
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/UnsolvableVersionConflictException.java
@@ -0,0 +1,142 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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.Collections;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+
+import org.eclipse.aether.RepositoryException;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.graph.DependencyNode;
+import org.eclipse.aether.version.VersionConstraint;
+
+/**
+ * Thrown in case of an unsolvable conflict between different version constraints for a dependency.
+ */
+public class UnsolvableVersionConflictException
+ extends RepositoryException
+{
+
+ private final transient Collection<String> versions;
+
+ private final transient Collection<? extends List<? extends DependencyNode>> paths;
+
+ /**
+ * Creates a new exception with the specified paths to conflicting nodes in the dependency graph.
+ *
+ * @param paths The paths to the dependency nodes that participate in the version conflict, may be {@code null}.
+ */
+ public UnsolvableVersionConflictException( Collection<? extends List<? extends DependencyNode>> paths )
+ {
+ super( "Could not resolve version conflict among " + toPaths( paths ) );
+ if ( paths == null )
+ {
+ this.paths = Collections.emptyList();
+ this.versions = Collections.emptyList();
+ }
+ else
+ {
+ this.paths = paths;
+ this.versions = new LinkedHashSet<String>();
+ for ( List<? extends DependencyNode> path : paths )
+ {
+ VersionConstraint constraint = path.get( path.size() - 1 ).getVersionConstraint();
+ if ( constraint != null && constraint.getRange() != null )
+ {
+ versions.add( constraint.toString() );
+ }
+ }
+ }
+ }
+
+ private static String toPaths( Collection<? extends List<? extends DependencyNode>> paths )
+ {
+ String result = "";
+
+ if ( paths != null )
+ {
+ Collection<String> strings = new LinkedHashSet<String>();
+
+ for ( List<? extends DependencyNode> path : paths )
+ {
+ strings.add( toPath( path ) );
+ }
+
+ result = strings.toString();
+ }
+
+ return result;
+ }
+
+ private static String toPath( List<? extends DependencyNode> path )
+ {
+ StringBuilder buffer = new StringBuilder( 256 );
+
+ for ( Iterator<? extends DependencyNode> it = path.iterator(); it.hasNext(); )
+ {
+ DependencyNode node = it.next();
+ if ( node.getDependency() == null )
+ {
+ continue;
+ }
+
+ Artifact artifact = node.getDependency().getArtifact();
+ buffer.append( artifact.getGroupId() );
+ buffer.append( ':' ).append( artifact.getArtifactId() );
+ buffer.append( ':' ).append( artifact.getExtension() );
+ if ( artifact.getClassifier().length() > 0 )
+ {
+ buffer.append( ':' ).append( artifact.getClassifier() );
+ }
+ buffer.append( ':' ).append( node.getVersionConstraint() );
+
+ if ( it.hasNext() )
+ {
+ buffer.append( " -> " );
+ }
+ }
+
+ return buffer.toString();
+ }
+
+ /**
+ * Gets the paths leading to the conflicting dependencies.
+ *
+ * @return The (read-only) paths leading to the conflicting dependencies, never {@code null}.
+ */
+ public Collection<? extends List<? extends DependencyNode>> getPaths()
+ {
+ return paths;
+ }
+
+ /**
+ * Gets the conflicting version constraints of the dependency.
+ *
+ * @return The (read-only) conflicting version constraints, never {@code null}.
+ */
+ public Collection<String> getVersions()
+ {
+ return versions;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java
new file mode 100644
index 0000000..fb36747
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java
@@ -0,0 +1,135 @@
+package org.eclipse.aether.collection;
+
+/*
+ * 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.Iterator;
+import java.util.List;
+
+import org.eclipse.aether.RepositoryException;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.repository.ArtifactRepository;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.version.Version;
+import org.eclipse.aether.version.VersionConstraint;
+
+/**
+ * Decides which versions matching a version range should actually be considered for the dependency graph. The version
+ * filter is not invoked for dependencies that do not declare a version range but a single version.
+ * <p>
+ * <strong>Note:</strong> Implementations must be stateless.
+ * <p>
+ * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to
+ * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method.
+ *
+ * @see org.eclipse.aether.RepositorySystemSession#getVersionFilter()
+ * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession,
+ * CollectRequest)
+ */
+public interface VersionFilter
+{
+
+ /**
+ * A context used during version filtering to hold relevant data.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+ interface VersionFilterContext
+ extends Iterable<Version>
+ {
+
+ /**
+ * Gets the repository system session during which the version filtering happens.
+ *
+ * @return The repository system session, never {@code null}.
+ */
+ RepositorySystemSession getSession();
+
+ /**
+ * Gets the dependency whose version range is being filtered.
+ *
+ * @return The dependency, never {@code null}.
+ */
+ Dependency getDependency();
+
+ /**
+ * Gets the total number of available versions. This count reflects any removals made during version filtering.
+ *
+ * @return The total number of available versions.
+ */
+ int getCount();
+
+ /**
+ * Gets an iterator over the available versions of the dependency. The iterator returns versions in ascending
+ * order. Use {@link Iterator#remove()} to exclude a version from further consideration in the dependency graph.
+ *
+ * @return The iterator of available versions, never {@code null}.
+ */
+ Iterator<Version> iterator();
+
+ /**
+ * Gets the version constraint that was parsed from the dependency's version string.
+ *
+ * @return The parsed version constraint, never {@code null}.
+ */
+ VersionConstraint getVersionConstraint();
+
+ /**
+ * Gets the repository from which the specified version was resolved.
+ *
+ * @param version The version whose source repository should be retrieved, must not be {@code null}.
+ * @return The repository from which the version was resolved or {@code null} if unknown.
+ */
+ ArtifactRepository getRepository( Version version );
+
+ /**
+ * Gets the remote repositories from which the versions were resolved.
+ *
+ * @return The (read-only) list of repositories, never {@code null}.
+ */
+ List<RemoteRepository> getRepositories();
+
+ }
+
+ /**
+ * Filters the available versions for a given dependency. Implementations will usually call
+ * {@link VersionFilterContext#iterator() context.iterator()} to inspect the available versions and use
+ * {@link java.util.Iterator#remove()} to delete unacceptable versions. If no versions remain after all filtering
+ * has been performed, the dependency collection process will automatically fail, i.e. implementations need not
+ * handle this situation on their own.
+ *
+ * @param context The version filter context, must not be {@code null}.
+ * @throws RepositoryException If the filtering could not be performed.
+ */
+ void filterVersions( VersionFilterContext context )
+ throws RepositoryException;
+
+ /**
+ * Derives a version filter for the specified collection context. The derived filter will be used to handle version
+ * ranges encountered in child dependencies of the current node. When calculating the child filter, implementors are
+ * strongly advised to simply return the current instance if nothing changed to help save memory.
+ *
+ * @param context The dependency collection context, must not be {@code null}.
+ * @return The version filter for the target node or {@code null} if versions should not be filtered any more.
+ */
+ VersionFilter deriveChildFilter( DependencyCollectionContext context );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/collection/package-info.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/collection/package-info.java b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/package-info.java
new file mode 100644
index 0000000..414629f
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/collection/package-info.java
@@ -0,0 +1,25 @@
+// 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 and extension points for collecting the transitive dependencies of an artifact and building a dependency
+ * graph.
+ */
+package org.eclipse.aether.collection;
+
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeployRequest.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeployRequest.java b/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeployRequest.java
new file mode 100644
index 0000000..637f47d
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeployRequest.java
@@ -0,0 +1,202 @@
+package org.eclipse.aether.deployment;
+
+/*
+ * 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;
+import org.eclipse.aether.repository.RemoteRepository;
+
+/**
+ * A request to deploy artifacts and their accompanying metadata into the a remote repository.
+ *
+ * @see RepositorySystem#deploy(RepositorySystemSession, DeployRequest)
+ */
+public final class DeployRequest
+{
+
+ private Collection<Artifact> artifacts = Collections.emptyList();
+
+ private Collection<Metadata> metadata = Collections.emptyList();
+
+ private RemoteRepository repository;
+
+ private RequestTrace trace;
+
+ /**
+ * Creates an uninitialized request.
+ */
+ public DeployRequest()
+ {
+ }
+
+ /**
+ * Gets the artifact to deploy.
+ *
+ * @return The artifacts to deploy, never {@code null}.
+ */
+ public Collection<Artifact> getArtifacts()
+ {
+ return artifacts;
+ }
+
+ /**
+ * Sets the artifacts to deploy.
+ *
+ * @param artifacts The artifacts to deploy, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public DeployRequest setArtifacts( Collection<Artifact> artifacts )
+ {
+ if ( artifacts == null )
+ {
+ this.artifacts = Collections.emptyList();
+ }
+ else
+ {
+ this.artifacts = artifacts;
+ }
+ return this;
+ }
+
+ /**
+ * Adds the specified artifacts for deployment.
+ *
+ * @param artifact The artifact to add, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public DeployRequest addArtifact( Artifact artifact )
+ {
+ if ( artifact != null )
+ {
+ if ( artifacts.isEmpty() )
+ {
+ artifacts = new ArrayList<Artifact>();
+ }
+ artifacts.add( artifact );
+ }
+ return this;
+ }
+
+ /**
+ * Gets the metadata to deploy.
+ *
+ * @return The metadata to deploy, never {@code null}.
+ */
+ public Collection<Metadata> getMetadata()
+ {
+ return metadata;
+ }
+
+ /**
+ * Sets the metadata to deploy.
+ *
+ * @param metadata The metadata to deploy, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public DeployRequest setMetadata( Collection<Metadata> metadata )
+ {
+ if ( metadata == null )
+ {
+ this.metadata = Collections.emptyList();
+ }
+ else
+ {
+ this.metadata = metadata;
+ }
+ return this;
+ }
+
+ /**
+ * Adds the specified metadata for deployment.
+ *
+ * @param metadata The metadata to add, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public DeployRequest addMetadata( Metadata metadata )
+ {
+ if ( metadata != null )
+ {
+ if ( this.metadata.isEmpty() )
+ {
+ this.metadata = new ArrayList<Metadata>();
+ }
+ this.metadata.add( metadata );
+ }
+ return this;
+ }
+
+ /**
+ * Gets the repository to deploy to.
+ *
+ * @return The repository to deploy to or {@code null} if not set.
+ */
+ public RemoteRepository getRepository()
+ {
+ return repository;
+ }
+
+ /**
+ * Sets the repository to deploy to.
+ *
+ * @param repository The repository to deploy to, may be {@code null}.
+ * @return This request for chaining, never {@code null}.
+ */
+ public DeployRequest setRepository( RemoteRepository repository )
+ {
+ this.repository = repository;
+ 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 DeployRequest setTrace( RequestTrace trace )
+ {
+ this.trace = trace;
+ return this;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getArtifacts() + ", " + getMetadata() + " > " + getRepository();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeployResult.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeployResult.java b/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeployResult.java
new file mode 100644
index 0000000..f75705e
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeployResult.java
@@ -0,0 +1,174 @@
+package org.eclipse.aether.deployment;
+
+/*
+ * 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 deploying artifacts and their accompanying metadata into the a remote repository.
+ *
+ * @see RepositorySystem#deploy(RepositorySystemSession, DeployRequest)
+ */
+public final class DeployResult
+{
+
+ private final DeployRequest request;
+
+ private Collection<Artifact> artifacts;
+
+ private Collection<Metadata> metadata;
+
+ /**
+ * Creates a new result for the specified request.
+ *
+ * @param request The deployment request, must not be {@code null}.
+ */
+ public DeployResult( DeployRequest request )
+ {
+ if ( request == null )
+ {
+ throw new IllegalArgumentException( "deploy request has not been specified" );
+ }
+ this.request = request;
+ artifacts = Collections.emptyList();
+ metadata = Collections.emptyList();
+ }
+
+ /**
+ * Gets the deploy request that was made.
+ *
+ * @return The deploy request, never {@code null}.
+ */
+ public DeployRequest getRequest()
+ {
+ return request;
+ }
+
+ /**
+ * Gets the artifacts that got deployed.
+ *
+ * @return The deployed artifacts, never {@code null}.
+ */
+ public Collection<Artifact> getArtifacts()
+ {
+ return artifacts;
+ }
+
+ /**
+ * Sets the artifacts that got deployed.
+ *
+ * @param artifacts The deployed artifacts, may be {@code null}.
+ * @return This result for chaining, never {@code null}.
+ */
+ public DeployResult 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 deployed artifact to add, may be {@code null}.
+ * @return This result for chaining, never {@code null}.
+ */
+ public DeployResult addArtifact( Artifact artifact )
+ {
+ if ( artifact != null )
+ {
+ if ( artifacts.isEmpty() )
+ {
+ artifacts = new ArrayList<Artifact>();
+ }
+ artifacts.add( artifact );
+ }
+ return this;
+ }
+
+ /**
+ * Gets the metadata that got deployed. Note that due to automatically generated metadata, there might have been
+ * more metadata deployed than originally specified in the deploy request.
+ *
+ * @return The deployed metadata, never {@code null}.
+ */
+ public Collection<Metadata> getMetadata()
+ {
+ return metadata;
+ }
+
+ /**
+ * Sets the metadata that got deployed.
+ *
+ * @param metadata The deployed metadata, may be {@code null}.
+ * @return This result for chaining, never {@code null}.
+ */
+ public DeployResult 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 deployed metadata to add, may be {@code null}.
+ * @return This result for chaining, never {@code null}.
+ */
+ public DeployResult 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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeploymentException.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeploymentException.java b/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeploymentException.java
new file mode 100644
index 0000000..53252ba
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/DeploymentException.java
@@ -0,0 +1,52 @@
+package org.eclipse.aether.deployment;
+
+/*
+ * 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 a deployment error like authentication failure.
+ */
+public class DeploymentException
+ extends RepositoryException
+{
+
+ /**
+ * Creates a new exception with the specified detail message.
+ *
+ * @param message The detail message, may be {@code null}.
+ */
+ public DeploymentException( 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 DeploymentException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/package-info.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/package-info.java b/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/package-info.java
new file mode 100644
index 0000000..dc50c21
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/deployment/package-info.java
@@ -0,0 +1,24 @@
+// 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 remote repository.
+ */
+package org.eclipse.aether.deployment;
+
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DefaultDependencyNode.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DefaultDependencyNode.java b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DefaultDependencyNode.java
new file mode 100644
index 0000000..a2ffd0c
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DefaultDependencyNode.java
@@ -0,0 +1,399 @@
+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.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+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.
+ */
+public final class DefaultDependencyNode
+ implements DependencyNode
+{
+
+ private DependencyNode parent;
+
+ private List<DependencyNode> children;
+
+ private Dependency dependency;
+
+ private Artifact artifact;
+
+ private List<? extends Artifact> relocations;
+
+ private Collection<? extends Artifact> aliases;
+
+ private VersionConstraint versionConstraint;
+
+ private Version version;
+
+ private byte managedBits;
+
+ private List<RemoteRepository> repositories;
+
+ private String context;
+
+ private Map<Object, Object> data;
+
+ /**
+ * Creates a new root node with the specified dependency.
+ *
+ * @param dependency The dependency associated with this node, may be {@code null} for a root node.
+ */
+ public DefaultDependencyNode( Dependency dependency )
+ {
+ this( null, dependency );
+ }
+
+ /**
+ * Creates a new root node with the specified artifact as its label. Note that the new node has no dependency, i.e.
+ * {@link #getDependency()} will return {@code null}. Put differently, the specified artifact will not be subject to
+ * dependency collection/resolution.
+ *
+ * @param artifact The artifact to use as label for this node, may be {@code null}.
+ */
+ public DefaultDependencyNode( Artifact artifact )
+ {
+ super();
+ this.parent = null;
+ this.artifact = artifact;
+ children = new ArrayList<DependencyNode>( 0 );
+ aliases = relocations = Collections.emptyList();
+ repositories = Collections.emptyList();
+ context = "";
+ data = Collections.emptyMap();
+ }
+
+ /**
+ * Creates a mostly shallow clone of the specified node. The new node has its own copy of any custom data and
+ * initially no children.
+ *
+ * @param node The node to copy, must not be {@code null}.
+ */
+ public DefaultDependencyNode( DependencyNode node )
+ {
+ super();
+ parent = node.getParent();
+ dependency = node.getDependency();
+ artifact = node.getArtifact();
+ children = new ArrayList<DependencyNode>( 0 );
+ setAliases( node.getAliases() );
+ setRequestContext( node.getRequestContext() );
+ setManagedBits( node.getManagedBits() );
+ setRelocations( node.getRelocations() );
+ setRepositories( node.getRepositories() );
+ setVersion( node.getVersion() );
+ setVersionConstraint( node.getVersionConstraint() );
+ Map<?, ?> data = node.getData();
+ setData( data.isEmpty() ? null : new HashMap<Object, Object>( data ) );
+ }
+
+ /**
+ * Creates a new node with the specified dependency.
+ *
+ * @param parent The parent node of the node or {@code null}.
+ * @param dependency The dependency associated with this node, may be {@code null} for a root node.
+ *
+ * @since 1.2
+ */
+ public DefaultDependencyNode( DependencyNode parent, Dependency dependency )
+ {
+ super();
+ this.parent = parent;
+ this.dependency = dependency;
+ artifact = ( dependency != null ) ? dependency.getArtifact() : null;
+ children = new ArrayList<DependencyNode>( 0 );
+ aliases = relocations = Collections.emptyList();
+ repositories = Collections.emptyList();
+ context = "";
+ data = Collections.emptyMap();
+ }
+
+ public long getDepth()
+ {
+ return this.getParent() != null ? this.getParent().getDepth() + 1L : 0L;
+ }
+
+ public DependencyNode getParent()
+ {
+ return this.parent;
+ }
+
+ public List<DependencyNode> getChildren()
+ {
+ return children;
+ }
+
+ public void setChildren( List<DependencyNode> children )
+ {
+ if ( children == null )
+ {
+ this.children = new ArrayList<DependencyNode>( 0 );
+ }
+ else
+ {
+ this.children = children;
+ }
+ }
+
+ public Dependency getDependency()
+ {
+ return dependency;
+ }
+
+ public Artifact getArtifact()
+ {
+ return artifact;
+ }
+
+ public void setArtifact( Artifact artifact )
+ {
+ if ( dependency == null )
+ {
+ throw new UnsupportedOperationException( "node does not have a dependency" );
+ }
+ dependency = dependency.setArtifact( artifact );
+ this.artifact = dependency.getArtifact();
+ }
+
+ public List<? extends Artifact> getRelocations()
+ {
+ return relocations;
+ }
+
+ /**
+ * Sets the sequence of relocations that was followed to resolve this dependency's artifact.
+ *
+ * @param relocations The sequence of relocations, may be {@code null}.
+ */
+ public void setRelocations( List<? extends Artifact> relocations )
+ {
+ if ( relocations == null || relocations.isEmpty() )
+ {
+ this.relocations = Collections.emptyList();
+ }
+ else
+ {
+ this.relocations = relocations;
+ }
+ }
+
+ public Collection<? extends Artifact> getAliases()
+ {
+ return aliases;
+ }
+
+ /**
+ * Sets the known aliases for this dependency's artifact.
+ *
+ * @param aliases The known aliases, may be {@code null}.
+ */
+ public void setAliases( Collection<? extends Artifact> aliases )
+ {
+ if ( aliases == null || aliases.isEmpty() )
+ {
+ this.aliases = Collections.emptyList();
+ }
+ else
+ {
+ this.aliases = aliases;
+ }
+ }
+
+ public VersionConstraint getVersionConstraint()
+ {
+ return versionConstraint;
+ }
+
+ /**
+ * Sets the version constraint that was parsed from the dependency's version declaration.
+ *
+ * @param versionConstraint The version constraint for this node, may be {@code null}.
+ */
+ public void setVersionConstraint( VersionConstraint versionConstraint )
+ {
+ this.versionConstraint = versionConstraint;
+ }
+
+ public Version getVersion()
+ {
+ return version;
+ }
+
+ /**
+ * Sets the version that was selected for the dependency's target artifact.
+ *
+ * @param version The parsed version, may be {@code null}.
+ */
+ public void setVersion( Version version )
+ {
+ this.version = version;
+ }
+
+ public void setScope( String scope )
+ {
+ if ( dependency == null )
+ {
+ throw new UnsupportedOperationException( "node does not have a dependency" );
+ }
+ dependency = dependency.setScope( scope );
+ }
+
+ public void setOptional( Boolean optional )
+ {
+ if ( dependency == null )
+ {
+ throw new UnsupportedOperationException( "node does not have a dependency" );
+ }
+ dependency = dependency.setOptional( optional );
+ }
+
+ public int getManagedBits()
+ {
+ return managedBits;
+ }
+
+ /**
+ * Sets a bit field indicating which attributes of this node were subject to dependency management.
+ *
+ * @param managedBits The bit field indicating the managed attributes or {@code 0} if dependency management wasn't
+ * applied.
+ */
+ public void setManagedBits( int managedBits )
+ {
+ this.managedBits = (byte) ( managedBits & 0x1F );
+ }
+
+ public List<RemoteRepository> getRepositories()
+ {
+ return repositories;
+ }
+
+ /**
+ * Sets the remote repositories from which this node's artifact shall be resolved.
+ *
+ * @param repositories The remote repositories to use for artifact resolution, may be {@code null}.
+ */
+ public void setRepositories( List<RemoteRepository> repositories )
+ {
+ if ( repositories == null || repositories.isEmpty() )
+ {
+ this.repositories = Collections.emptyList();
+ }
+ else
+ {
+ this.repositories = repositories;
+ }
+ }
+
+ public String getRequestContext()
+ {
+ return context;
+ }
+
+ public void setRequestContext( String context )
+ {
+ this.context = ( context != null ) ? context : "";
+ }
+
+ public Map<Object, Object> getData()
+ {
+ return data;
+ }
+
+ public void setData( Map<Object, Object> data )
+ {
+ if ( data == null )
+ {
+ this.data = Collections.emptyMap();
+ }
+ else
+ {
+ this.data = data;
+ }
+ }
+
+ public void setData( Object key, Object value )
+ {
+ if ( key == null )
+ {
+ throw new IllegalArgumentException( "key must not be null" );
+ }
+
+ if ( value == null )
+ {
+ if ( !data.isEmpty() )
+ {
+ data.remove( key );
+
+ if ( data.isEmpty() )
+ {
+ data = Collections.emptyMap();
+ }
+ }
+ }
+ else
+ {
+ if ( data.isEmpty() )
+ {
+ data = new HashMap<Object, Object>( 1, 2 ); // nodes can be numerous so let's be space conservative
+ }
+ data.put( key, value );
+ }
+ }
+
+ public boolean accept( DependencyVisitor visitor )
+ {
+ if ( visitor.visitEnter( this ) )
+ {
+ for ( DependencyNode child : children )
+ {
+ if ( !child.accept( visitor ) )
+ {
+ break;
+ }
+ }
+ }
+
+ return visitor.visitLeave( this );
+ }
+
+ @Override
+ public String toString()
+ {
+ Dependency dep = getDependency();
+ if ( dep == null )
+ {
+ return String.valueOf( getArtifact() );
+ }
+ return dep.toString();
+ }
+
+}
[12/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/NoopDependencyGraphTransformer.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/NoopDependencyGraphTransformer.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/NoopDependencyGraphTransformer.java
deleted file mode 100644
index 55b6175..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/NoopDependencyGraphTransformer.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A dependency graph transformer that does not perform any changes on its input.
- */
-public final class NoopDependencyGraphTransformer
- implements DependencyGraphTransformer
-{
-
- /**
- * A ready-made instance of this dependency graph transformer which can safely be reused throughout an entire
- * application regardless of multi-threading.
- */
- public static final DependencyGraphTransformer INSTANCE = new NoopDependencyGraphTransformer();
-
- /**
- * Creates a new instance of this graph transformer. Usually, {@link #INSTANCE} should be used instead.
- */
- public NoopDependencyGraphTransformer()
- {
- }
-
- public DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- return node;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/SimpleOptionalitySelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/SimpleOptionalitySelector.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/SimpleOptionalitySelector.java
deleted file mode 100644
index 0cc7a73..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/SimpleOptionalitySelector.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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 org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver.ConflictContext;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver.ConflictItem;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver.OptionalitySelector;
-
-/**
- * An optionality selector for use with {@link ConflictResolver}. In general, this selector only marks a dependency as
- * optional if all its occurrences are optional. If however a direct dependency is involved, its optional flag is
- * selected.
- */
-public final class SimpleOptionalitySelector
- extends OptionalitySelector
-{
-
- /**
- * Creates a new instance of this optionality selector.
- */
- public SimpleOptionalitySelector()
- {
- }
-
- @Override
- public void selectOptionality( ConflictContext context )
- throws RepositoryException
- {
- boolean optional = chooseEffectiveOptionality( context.getItems() );
- context.setOptional( optional );
- }
-
- private boolean chooseEffectiveOptionality( Collection<ConflictItem> items )
- {
- boolean optional = true;
- for ( ConflictItem item : items )
- {
- if ( item.getDepth() <= 1 )
- {
- return item.getDependency().isOptional();
- }
- if ( ( item.getOptionalities() & ConflictItem.OPTIONAL_FALSE ) != 0 )
- {
- optional = false;
- }
- }
- return optional;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/TransformationContextKeys.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/TransformationContextKeys.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/TransformationContextKeys.java
deleted file mode 100644
index a9ebf68..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/TransformationContextKeys.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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 collection of keys used by the dependency graph transformers when exchanging information via the graph
- * transformation context.
- *
- * @see org.eclipse.aether.collection.DependencyGraphTransformationContext#get(Object)
- */
-public final class TransformationContextKeys
-{
-
- /**
- * The key in the graph transformation context where a {@code Map<DependencyNode, Object>} is stored which maps
- * dependency nodes to their conflict ids. All nodes that map to an equal conflict id belong to the same group of
- * conflicting dependencies. Note that the map keys use reference equality.
- *
- * @see ConflictMarker
- */
- public static final Object CONFLICT_IDS = "conflictIds";
-
- /**
- * The key in the graph transformation context where a {@code List<Object>} is stored that denotes a topological
- * sorting of the conflict ids.
- *
- * @see ConflictIdSorter
- */
- public static final Object SORTED_CONFLICT_IDS = "sortedConflictIds";
-
- /**
- * The key in the graph transformation context where a {@code Collection<Collection<Object>>} is stored that denotes
- * cycles among conflict ids. Each element in the outer collection denotes one cycle, i.e. if the collection is
- * empty, the conflict ids have no cyclic dependencies.
- *
- * @see ConflictIdSorter
- */
- public static final Object CYCLIC_CONFLICT_IDS = "cyclicConflictIds";
-
- /**
- * The key in the graph transformation context where a {@code Map<String, Object>} is stored that can be used to
- * include some runtime/performance stats in the debug log. If this map is not present, no stats should be recorded.
- */
- public static final Object STATS = "stats";
-
- private TransformationContextKeys()
- {
- // hide constructor
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/package-info.java
deleted file mode 100644
index a41adcd..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/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.
- */
-/**
- * Various dependency graph transformers for post-processing a dependency graph.
- */
-package org.eclipse.aether.util.graph.transformer;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/AndDependencyTraverser.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/AndDependencyTraverser.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/AndDependencyTraverser.java
deleted file mode 100644
index fb08b3b..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/AndDependencyTraverser.java
+++ /dev/null
@@ -1,207 +0,0 @@
-package org.eclipse.aether.util.graph.traverser;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.graph.Dependency;
-
-/**
- * A dependency traverser that combines zero or more other traversers using a logical {@code AND}. The resulting
- * traverser enables processing of child dependencies if and only if all constituent traversers request traversal.
- */
-public final class AndDependencyTraverser
- implements DependencyTraverser
-{
-
- private final Set<? extends DependencyTraverser> traversers;
-
- private int hashCode;
-
- /**
- * Creates a new traverser from the specified traversers. Prefer
- * {@link #newInstance(DependencyTraverser, DependencyTraverser)} if any of the input traversers might be
- * {@code null}.
- *
- * @param traversers The traversers to combine, may be {@code null} but must not contain {@code null} elements.
- */
- public AndDependencyTraverser( DependencyTraverser... traversers )
- {
- if ( traversers != null && traversers.length > 0 )
- {
- this.traversers = new LinkedHashSet<DependencyTraverser>( Arrays.asList( traversers ) );
- }
- else
- {
- this.traversers = Collections.emptySet();
- }
- }
-
- /**
- * Creates a new traverser from the specified traversers.
- *
- * @param traversers The traversers to combine, may be {@code null} but must not contain {@code null} elements.
- */
- public AndDependencyTraverser( Collection<? extends DependencyTraverser> traversers )
- {
- if ( traversers != null && !traversers.isEmpty() )
- {
- this.traversers = new LinkedHashSet<DependencyTraverser>( traversers );
- }
- else
- {
- this.traversers = Collections.emptySet();
- }
- }
-
- private AndDependencyTraverser( Set<DependencyTraverser> traversers )
- {
- if ( traversers != null && !traversers.isEmpty() )
- {
- this.traversers = traversers;
- }
- else
- {
- this.traversers = Collections.emptySet();
- }
- }
-
- /**
- * Creates a new traverser from the specified traversers.
- *
- * @param traverser1 The first traverser to combine, may be {@code null}.
- * @param traverser2 The second traverser to combine, may be {@code null}.
- * @return The combined traverser or {@code null} if both traversers were {@code null}.
- */
- public static DependencyTraverser newInstance( DependencyTraverser traverser1, DependencyTraverser traverser2 )
- {
- if ( traverser1 == null )
- {
- return traverser2;
- }
- else if ( traverser2 == null || traverser2.equals( traverser1 ) )
- {
- return traverser1;
- }
- return new AndDependencyTraverser( traverser1, traverser2 );
- }
-
- public boolean traverseDependency( Dependency dependency )
- {
- for ( DependencyTraverser traverser : traversers )
- {
- if ( !traverser.traverseDependency( dependency ) )
- {
- return false;
- }
- }
- return true;
- }
-
- public DependencyTraverser deriveChildTraverser( DependencyCollectionContext context )
- {
- int seen = 0;
- Set<DependencyTraverser> childTraversers = null;
-
- for ( DependencyTraverser traverser : traversers )
- {
- DependencyTraverser childTraverser = traverser.deriveChildTraverser( context );
- if ( childTraversers != null )
- {
- if ( childTraverser != null )
- {
- childTraversers.add( childTraverser );
- }
- }
- else if ( traverser != childTraverser )
- {
- childTraversers = new LinkedHashSet<DependencyTraverser>();
- if ( seen > 0 )
- {
- for ( DependencyTraverser s : traversers )
- {
- if ( childTraversers.size() >= seen )
- {
- break;
- }
- childTraversers.add( s );
- }
- }
- if ( childTraverser != null )
- {
- childTraversers.add( childTraverser );
- }
- }
- else
- {
- seen++;
- }
- }
-
- if ( childTraversers == null )
- {
- return this;
- }
- if ( childTraversers.size() <= 1 )
- {
- if ( childTraversers.isEmpty() )
- {
- return null;
- }
- return childTraversers.iterator().next();
- }
- return new AndDependencyTraverser( childTraversers );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- AndDependencyTraverser that = (AndDependencyTraverser) obj;
- return traversers.equals( that.traversers );
- }
-
- @Override
- public int hashCode()
- {
- if ( hashCode == 0 )
- {
- int hash = 17;
- hash = hash * 31 + traversers.hashCode();
- hashCode = hash;
- }
- return hashCode;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverser.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverser.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverser.java
deleted file mode 100644
index 40ce616..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/FatArtifactTraverser.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.eclipse.aether.util.graph.traverser;
-
-/*
- * 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.artifact.ArtifactProperties;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.graph.Dependency;
-
-/**
- * A dependency traverser that excludes the dependencies of fat artifacts from the traversal. Fat artifacts are
- * artifacts that have the property {@link org.eclipse.aether.artifact.ArtifactProperties#INCLUDES_DEPENDENCIES} set to
- * {@code true}.
- *
- * @see org.eclipse.aether.artifact.Artifact#getProperties()
- */
-public final class FatArtifactTraverser
- implements DependencyTraverser
-{
-
- /**
- * Creates a new instance of this dependency traverser.
- */
- public FatArtifactTraverser()
- {
- }
-
- public boolean traverseDependency( Dependency dependency )
- {
- String prop = dependency.getArtifact().getProperty( ArtifactProperties.INCLUDES_DEPENDENCIES, "" );
- return !Boolean.parseBoolean( prop );
- }
-
- public DependencyTraverser deriveChildTraverser( DependencyCollectionContext context )
- {
- return this;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- return true;
- }
-
- @Override
- public int hashCode()
- {
- return getClass().hashCode();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/StaticDependencyTraverser.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/StaticDependencyTraverser.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/StaticDependencyTraverser.java
deleted file mode 100644
index 5e2a703..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/StaticDependencyTraverser.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.eclipse.aether.util.graph.traverser;
-
-/*
- * 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.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.graph.Dependency;
-
-/**
- * A dependency traverser which always or never traverses children.
- */
-public final class StaticDependencyTraverser
- implements DependencyTraverser
-{
-
- private final boolean traverse;
-
- /**
- * Creates a new traverser with the specified traversal behavior.
- *
- * @param traverse {@code true} to traverse all dependencies, {@code false} to never traverse.
- */
- public StaticDependencyTraverser( boolean traverse )
- {
- this.traverse = traverse;
- }
-
- public boolean traverseDependency( Dependency dependency )
- {
- return traverse;
- }
-
- public DependencyTraverser deriveChildTraverser( DependencyCollectionContext context )
- {
- return this;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- StaticDependencyTraverser that = (StaticDependencyTraverser) obj;
- return traverse == that.traverse;
- }
-
- @Override
- public int hashCode()
- {
- int hash = getClass().hashCode();
- hash = hash * 31 + ( traverse ? 1 : 0 );
- return hash;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/package-info.java
deleted file mode 100644
index a1b71e0..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/traverser/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.
- */
-/**
- * Various dependency traversers for building a dependency graph.
- */
-package org.eclipse.aether.util.graph.traverser;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/version/ChainedVersionFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/version/ChainedVersionFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/version/ChainedVersionFilter.java
deleted file mode 100644
index 7d13555..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/version/ChainedVersionFilter.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package org.eclipse.aether.util.graph.version;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.VersionFilter;
-
-/**
- * A version filter that combines multiple version filters into a chain where each filter gets invoked one after the
- * other, thereby accumulating their filtering effects.
- */
-public final class ChainedVersionFilter
- implements VersionFilter
-{
-
- private final VersionFilter[] filters;
-
- private int hashCode;
-
- /**
- * Chains the specified version filters.
- *
- * @param filter1 The first version filter, may be {@code null}.
- * @param filter2 The second version filter, may be {@code null}.
- * @return The chained version filter or {@code null} if both input filters are {@code null}.
- */
- public static VersionFilter newInstance( VersionFilter filter1, VersionFilter filter2 )
- {
- if ( filter1 == null )
- {
- return filter2;
- }
- if ( filter2 == null )
- {
- return filter1;
- }
- return new ChainedVersionFilter( new VersionFilter[] { filter1, filter2 } );
- }
-
- /**
- * Chains the specified version filters.
- *
- * @param filters The version filters to chain, must not be {@code null} or contain {@code null}.
- * @return The chained version filter or {@code null} if the input array is empty.
- */
- public static VersionFilter newInstance( VersionFilter... filters )
- {
- if ( filters.length <= 1 )
- {
- if ( filters.length <= 0 )
- {
- return null;
- }
- return filters[0];
- }
- return new ChainedVersionFilter( filters.clone() );
- }
-
- /**
- * Chains the specified version filters.
- *
- * @param filters The version filters to chain, must not be {@code null} or contain {@code null}.
- * @return The chained version filter or {@code null} if the input collection is empty.
- */
- public static VersionFilter newInstance( Collection<? extends VersionFilter> filters )
- {
- if ( filters.size() <= 1 )
- {
- if ( filters.isEmpty() )
- {
- return null;
- }
- return filters.iterator().next();
- }
- return new ChainedVersionFilter( filters.toArray( new VersionFilter[filters.size()] ) );
- }
-
- private ChainedVersionFilter( VersionFilter[] filters )
- {
- this.filters = filters;
- }
-
- public void filterVersions( VersionFilterContext context )
- throws RepositoryException
- {
- for ( int i = 0, n = filters.length; i < n && context.getCount() > 0; i++ )
- {
- filters[i].filterVersions( context );
- }
- }
-
- public VersionFilter deriveChildFilter( DependencyCollectionContext context )
- {
- VersionFilter[] children = null;
- int removed = 0;
- for ( int i = 0, n = filters.length; i < n; i++ )
- {
- VersionFilter child = filters[i].deriveChildFilter( context );
- if ( children != null )
- {
- children[i - removed] = child;
- }
- else if ( child != filters[i] )
- {
- children = new VersionFilter[filters.length];
- System.arraycopy( filters, 0, children, 0, i );
- children[i - removed] = child;
- }
- if ( child == null )
- {
- removed++;
- }
- }
- if ( children == null )
- {
- return this;
- }
- if ( removed > 0 )
- {
- int count = filters.length - removed;
- if ( count <= 0 )
- {
- return null;
- }
- if ( count == 1 )
- {
- return children[0];
- }
- VersionFilter[] tmp = new VersionFilter[count];
- System.arraycopy( children, 0, tmp, 0, count );
- children = tmp;
- }
- return new ChainedVersionFilter( children );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- ChainedVersionFilter that = (ChainedVersionFilter) obj;
- return Arrays.equals( filters, that.filters );
- }
-
- @Override
- public int hashCode()
- {
- if ( hashCode == 0 )
- {
- int hash = getClass().hashCode();
- hash = hash * 31 + Arrays.hashCode( filters );
- hashCode = hash;
- }
- return hashCode;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/version/ContextualSnapshotVersionFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/version/ContextualSnapshotVersionFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/version/ContextualSnapshotVersionFilter.java
deleted file mode 100644
index 569bf4c..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/version/ContextualSnapshotVersionFilter.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package org.eclipse.aether.util.graph.version;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- * A version filter that blocks "*-SNAPSHOT" versions if the
- * {@link org.eclipse.aether.collection.CollectRequest#getRootArtifact() root artifact} of the dependency graph is not a
- * snapshot. Alternatively, this filter can be forced to always ban snapshot versions by setting the boolean
- * {@link RepositorySystemSession#getConfigProperties() configuration property} {@link #CONFIG_PROP_ENABLE} to
- * {@code true}.
- */
-public final class ContextualSnapshotVersionFilter
- implements VersionFilter
-{
-
- /**
- * The key in the repository session's {@link RepositorySystemSession#getConfigProperties() configuration
- * properties} used to store a {@link Boolean} flag whether this filter should be forced to ban snapshots. By
- * default, snapshots are only filtered if the root artifact is not a snapshot.
- */
- public static final String CONFIG_PROP_ENABLE = "aether.snapshotFilter";
-
- private final SnapshotVersionFilter filter;
-
- /**
- * Creates a new instance of this version filter.
- */
- public ContextualSnapshotVersionFilter()
- {
- filter = new SnapshotVersionFilter();
- }
-
- private boolean isEnabled( RepositorySystemSession session )
- {
- return ConfigUtils.getBoolean( session, false, CONFIG_PROP_ENABLE );
- }
-
- public void filterVersions( VersionFilterContext context )
- {
- if ( isEnabled( context.getSession() ) )
- {
- filter.filterVersions( context );
- }
- }
-
- public VersionFilter deriveChildFilter( DependencyCollectionContext context )
- {
- if ( !isEnabled( context.getSession() ) )
- {
- Artifact artifact = context.getArtifact();
- if ( artifact == null )
- {
- // no root artifact to test, allow snapshots and recheck once we reach the direct dependencies
- return this;
- }
- if ( artifact.isSnapshot() )
- {
- // root is a snapshot, allow snapshots all the way down
- return null;
- }
- }
- // artifact is a non-snapshot or filter explicitly enabled, block snapshots all the way down
- return filter;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- return true;
- }
-
- @Override
- public int hashCode()
- {
- return getClass().hashCode();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/version/HighestVersionFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/version/HighestVersionFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/version/HighestVersionFilter.java
deleted file mode 100644
index 902e08d..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/version/HighestVersionFilter.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.aether.util.graph.version;
-
-/*
- * 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.Iterator;
-
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.version.Version;
-
-/**
- * A version filter that excludes any version except the highest one.
- */
-public final class HighestVersionFilter
- implements VersionFilter
-{
-
- /**
- * Creates a new instance of this version filter.
- */
- public HighestVersionFilter()
- {
- }
-
- public void filterVersions( VersionFilterContext context )
- {
- Iterator<Version> it = context.iterator();
- for ( boolean hasNext = it.hasNext(); hasNext; )
- {
- it.next();
- if ( hasNext = it.hasNext() )
- {
- it.remove();
- }
- }
- }
-
- public VersionFilter deriveChildFilter( DependencyCollectionContext context )
- {
- return this;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- return true;
- }
-
- @Override
- public int hashCode()
- {
- return getClass().hashCode();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/version/SnapshotVersionFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/version/SnapshotVersionFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/version/SnapshotVersionFilter.java
deleted file mode 100644
index 6af7cf5..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/version/SnapshotVersionFilter.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.aether.util.graph.version;
-
-/*
- * 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.Iterator;
-
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.version.Version;
-
-/**
- * A version filter that (unconditionally) blocks "*-SNAPSHOT" versions. For practical purposes,
- * {@link ContextualSnapshotVersionFilter} is usually more desirable.
- */
-public final class SnapshotVersionFilter
- implements VersionFilter
-{
-
- /**
- * Creates a new instance of this version filter.
- */
- public SnapshotVersionFilter()
- {
- }
-
- public void filterVersions( VersionFilterContext context )
- {
- for ( Iterator<Version> it = context.iterator(); it.hasNext(); )
- {
- String version = it.next().toString();
- if ( version.endsWith( "SNAPSHOT" ) )
- {
- it.remove();
- }
- }
- }
-
- public VersionFilter deriveChildFilter( DependencyCollectionContext context )
- {
- return this;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- return true;
- }
-
- @Override
- public int hashCode()
- {
- return getClass().hashCode();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/version/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/version/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/version/package-info.java
deleted file mode 100644
index a9f4649..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/version/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.
- */
-/**
- * Various version filters for building a dependency graph.
- */
-package org.eclipse.aether.util.graph.version;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGenerator.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGenerator.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGenerator.java
deleted file mode 100644
index 70fc7d4..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGenerator.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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.artifact.Artifact;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.graph.DependencyVisitor;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.IdentityHashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Abstract base class for depth first dependency tree traversers. Subclasses of this visitor will visit each node
- * exactly once regardless how many paths within the dependency graph lead to the node such that the resulting node
- * sequence is free of duplicates.
- * <p>
- * Actual vertex ordering (preorder, inorder, postorder) needs to be defined by subclasses through appropriate
- * implementations for {@link #visitEnter(org.eclipse.aether.graph.DependencyNode)} and
- * {@link #visitLeave(org.eclipse.aether.graph.DependencyNode)}
- */
-abstract class AbstractDepthFirstNodeListGenerator
- implements DependencyVisitor
-{
-
- private final Map<DependencyNode, Object> visitedNodes;
-
- protected final List<DependencyNode> nodes;
-
- public AbstractDepthFirstNodeListGenerator()
- {
- nodes = new ArrayList<DependencyNode>( 128 );
- visitedNodes = new IdentityHashMap<DependencyNode, Object>( 512 );
- }
-
- /**
- * Gets the list of dependency nodes that was generated during the graph traversal.
- *
- * @return The list of dependency nodes, never {@code null}.
- */
- public List<DependencyNode> getNodes()
- {
- return nodes;
- }
-
- /**
- * Gets the dependencies seen during the graph traversal.
- *
- * @param includeUnresolved Whether unresolved dependencies shall be included in the result or not.
- * @return The list of dependencies, never {@code null}.
- */
- public List<Dependency> getDependencies( boolean includeUnresolved )
- {
- List<Dependency> dependencies = new ArrayList<Dependency>( getNodes().size() );
-
- for ( DependencyNode node : getNodes() )
- {
- Dependency dependency = node.getDependency();
- if ( dependency != null )
- {
- if ( includeUnresolved || dependency.getArtifact().getFile() != null )
- {
- dependencies.add( dependency );
- }
- }
- }
-
- return dependencies;
- }
-
- /**
- * Gets the artifacts associated with the list of dependency nodes generated during the graph traversal.
- *
- * @param includeUnresolved Whether unresolved artifacts shall be included in the result or not.
- * @return The list of artifacts, never {@code null}.
- */
- public List<Artifact> getArtifacts( boolean includeUnresolved )
- {
- List<Artifact> artifacts = new ArrayList<Artifact>( getNodes().size() );
-
- for ( DependencyNode node : getNodes() )
- {
- if ( node.getDependency() != null )
- {
- Artifact artifact = node.getDependency().getArtifact();
- if ( includeUnresolved || artifact.getFile() != null )
- {
- artifacts.add( artifact );
- }
- }
- }
-
- return artifacts;
- }
-
- /**
- * Gets the files of resolved artifacts seen during the graph traversal.
- *
- * @return The list of artifact files, never {@code null}.
- */
- public List<File> getFiles()
- {
- List<File> files = new ArrayList<File>( getNodes().size() );
-
- for ( DependencyNode node : getNodes() )
- {
- if ( node.getDependency() != null )
- {
- File file = node.getDependency().getArtifact().getFile();
- if ( file != null )
- {
- files.add( file );
- }
- }
- }
-
- return files;
- }
-
- /**
- * Gets a class path by concatenating the artifact files of the visited dependency nodes. Nodes with unresolved
- * artifacts are automatically skipped.
- *
- * @return The class path, using the platform-specific path separator, never {@code null}.
- */
- public String getClassPath()
- {
- StringBuilder buffer = new StringBuilder( 1024 );
-
- for ( Iterator<DependencyNode> it = getNodes().iterator(); it.hasNext(); )
- {
- DependencyNode node = it.next();
- if ( node.getDependency() != null )
- {
- Artifact artifact = node.getDependency().getArtifact();
- if ( artifact.getFile() != null )
- {
- buffer.append( artifact.getFile().getAbsolutePath() );
- if ( it.hasNext() )
- {
- buffer.append( File.pathSeparatorChar );
- }
- }
- }
- }
-
- return buffer.toString();
- }
-
- /**
- * Marks the specified node as being visited and determines whether the node has been visited before.
- *
- * @param node The node being visited, must not be {@code null}.
- * @return {@code true} if the node has not been visited before, {@code false} if the node was already visited.
- */
- protected boolean setVisited( DependencyNode node )
- {
- return visitedNodes.put( node, Boolean.TRUE ) == null;
- }
-
- public abstract boolean visitEnter( DependencyNode node );
-
- public abstract boolean visitLeave( DependencyNode node );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/CloningDependencyVisitor.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/CloningDependencyVisitor.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/CloningDependencyVisitor.java
deleted file mode 100644
index a39fc84..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/CloningDependencyVisitor.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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.IdentityHashMap;
-import java.util.Map;
-
-import org.eclipse.aether.graph.DefaultDependencyNode;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.graph.DependencyVisitor;
-
-/**
- * A dependency visitor that constructs a clone of the visited dependency graph. If such a visitor is passed into a
- * {@link FilteringDependencyVisitor}, a sub graph can be created. This class creates shallow clones of the visited
- * dependency nodes (via {@link DefaultDependencyNode#DefaultDependencyNode(DependencyNode)}) but clients can create a
- * subclass and override {@link #clone(DependencyNode)} to alter the clone process.
- */
-public class CloningDependencyVisitor
- implements DependencyVisitor
-{
-
- private final Map<DependencyNode, DependencyNode> clones;
-
- private final Stack<DependencyNode> parents;
-
- private DependencyNode root;
-
- /**
- * Creates a new visitor that clones the visited nodes.
- */
- public CloningDependencyVisitor()
- {
- parents = new Stack<DependencyNode>();
- clones = new IdentityHashMap<DependencyNode, DependencyNode>( 256 );
- }
-
- /**
- * Gets the root node of the cloned dependency graph.
- *
- * @return The root node of the cloned dependency graph or {@code null}.
- */
- public final DependencyNode getRootNode()
- {
- return root;
- }
-
- /**
- * Creates a clone of the specified node.
- *
- * @param node The node to clone, must not be {@code null}.
- * @return The cloned node, never {@code null}.
- */
- protected DependencyNode clone( DependencyNode node )
- {
- DefaultDependencyNode clone = new DefaultDependencyNode( node );
- return clone;
- }
-
- public final boolean visitEnter( DependencyNode node )
- {
- boolean recurse = true;
-
- DependencyNode clone = clones.get( node );
- if ( clone == null )
- {
- clone = clone( node );
- clones.put( node, clone );
- }
- else
- {
- recurse = false;
- }
-
- DependencyNode parent = parents.peek();
-
- if ( parent == null )
- {
- root = clone;
- }
- else
- {
- parent.getChildren().add( clone );
- }
-
- parents.push( clone );
-
- return recurse;
- }
-
- public final boolean visitLeave( DependencyNode node )
- {
- parents.pop();
-
- return true;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/FilteringDependencyVisitor.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/FilteringDependencyVisitor.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/FilteringDependencyVisitor.java
deleted file mode 100644
index 49f779c..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/FilteringDependencyVisitor.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.graph.DependencyVisitor;
-
-/**
- * A dependency visitor that delegates to another visitor if nodes match a filter. Note that in case of a mismatching
- * node, the children of that node are still visisted and presented to the filter.
- */
-public final class FilteringDependencyVisitor
- implements DependencyVisitor
-{
-
- private final DependencyFilter filter;
-
- private final DependencyVisitor visitor;
-
- private final Stack<Boolean> accepts;
-
- private final Stack<DependencyNode> parents;
-
- /**
- * Creates a new visitor that delegates traversal of nodes matching the given filter to the specified visitor.
- *
- * @param visitor The visitor to delegate to, must not be {@code null}.
- * @param filter The filter to apply, may be {@code null} to not filter.
- */
- public FilteringDependencyVisitor( DependencyVisitor visitor, DependencyFilter filter )
- {
- if ( visitor == null )
- {
- throw new IllegalArgumentException( "dependency visitor not specified" );
- }
- this.visitor = visitor;
- this.filter = filter;
- this.accepts = new Stack<Boolean>();
- this.parents = new Stack<DependencyNode>();
- }
-
- /**
- * Gets the visitor to which this visitor delegates to.
- *
- * @return The visitor being delegated to, never {@code null}.
- */
- public DependencyVisitor getVisitor()
- {
- return visitor;
- }
-
- /**
- * Gets the filter being applied before delegation.
- *
- * @return The filter being applied or {@code null} if none.
- */
- public DependencyFilter getFilter()
- {
- return filter;
- }
-
- public boolean visitEnter( DependencyNode node )
- {
- boolean accept = filter == null || filter.accept( node, parents );
-
- accepts.push( accept );
-
- parents.push( node );
-
- if ( accept )
- {
- return visitor.visitEnter( node );
- }
- else
- {
- return true;
- }
- }
-
- public boolean visitLeave( DependencyNode node )
- {
- parents.pop();
-
- Boolean accept = accepts.pop();
-
- if ( accept )
- {
- return visitor.visitLeave( node );
- }
- else
- {
- return true;
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PathRecordingDependencyVisitor.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PathRecordingDependencyVisitor.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PathRecordingDependencyVisitor.java
deleted file mode 100644
index d1814ed..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PathRecordingDependencyVisitor.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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.Arrays;
-import java.util.IdentityHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.graph.DependencyVisitor;
-
-/**
- * A dependency visitor that records all paths leading to nodes matching a certain filter criteria.
- */
-public final class PathRecordingDependencyVisitor
- implements DependencyVisitor
-{
-
- private final DependencyFilter filter;
-
- private final List<List<DependencyNode>> paths;
-
- private final Stack<DependencyNode> parents;
-
- private final Map<DependencyNode, Object> visited;
-
- private final boolean excludeChildrenOfMatches;
-
- /**
- * Creates a new visitor that uses the specified filter to identify terminal nodes of interesting paths. The visitor
- * will not search for paths going beyond an already matched node.
- *
- * @param filter The filter used to select terminal nodes of paths to record, may be {@code null} to match any node.
- */
- public PathRecordingDependencyVisitor( DependencyFilter filter )
- {
- this( filter, true );
- }
-
- /**
- * Creates a new visitor that uses the specified filter to identify terminal nodes of interesting paths.
- *
- * @param filter The filter used to select terminal nodes of paths to record, may be {@code null} to match any node.
- * @param excludeChildrenOfMatches Flag controlling whether children of matched nodes should be excluded from the
- * traversal, thereby ignoring any potential paths to other matching nodes beneath a matching ancestor
- * node. If {@code true}, all recorded paths will have only one matching node (namely the terminal node),
- * if {@code false} a recorded path can consist of multiple matching nodes.
- */
- public PathRecordingDependencyVisitor( DependencyFilter filter, boolean excludeChildrenOfMatches )
- {
- this.filter = filter;
- this.excludeChildrenOfMatches = excludeChildrenOfMatches;
- paths = new ArrayList<List<DependencyNode>>();
- parents = new Stack<DependencyNode>();
- visited = new IdentityHashMap<DependencyNode, Object>( 128 );
- }
-
- /**
- * Gets the filter being used to select terminal nodes.
- *
- * @return The filter being used or {@code null} if none.
- */
- public DependencyFilter getFilter()
- {
- return filter;
- }
-
- /**
- * Gets the paths leading to nodes matching the filter that have been recorded during the graph visit. A path is
- * given as a sequence of nodes, starting with the root node of the graph and ending with a node that matched the
- * filter.
- *
- * @return The recorded paths, never {@code null}.
- */
- public List<List<DependencyNode>> getPaths()
- {
- return paths;
- }
-
- public boolean visitEnter( DependencyNode node )
- {
- boolean accept = filter == null || filter.accept( node, parents );
-
- parents.push( node );
-
- if ( accept )
- {
- DependencyNode[] path = new DependencyNode[parents.size()];
- for ( int i = 0, n = parents.size(); i < n; i++ )
- {
- path[n - i - 1] = parents.get( i );
- }
- paths.add( Arrays.asList( path ) );
-
- if ( excludeChildrenOfMatches )
- {
- return false;
- }
- }
-
- if ( visited.put( node, Boolean.TRUE ) != null )
- {
- return false;
- }
-
- return true;
- }
-
- public boolean visitLeave( DependencyNode node )
- {
- parents.pop();
- visited.remove( node );
-
- return true;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGenerator.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGenerator.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGenerator.java
deleted file mode 100644
index 47897a7..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGenerator.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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.graph.DependencyNode;
-
-/**
- * Generates a sequence of dependency nodes from a dependeny graph by traversing the graph in postorder. This visitor
- * visits each node exactly once regardless how many paths within the dependency graph lead to the node such that the
- * resulting node sequence is free of duplicates.
- */
-public final class PostorderNodeListGenerator
- extends AbstractDepthFirstNodeListGenerator
-{
-
- private final Stack<Boolean> visits;
-
- /**
- * Creates a new postorder list generator.
- */
- public PostorderNodeListGenerator()
- {
- visits = new Stack<Boolean>();
- }
-
- @Override
- public boolean visitEnter( DependencyNode node )
- {
- boolean visited = !setVisited( node );
-
- visits.push( visited );
-
- if ( visited )
- {
- return false;
- }
-
- return true;
- }
-
- @Override
- public boolean visitLeave( DependencyNode node )
- {
- Boolean visited = visits.pop();
-
- if ( visited )
- {
- return true;
- }
-
- if ( node.getDependency() != null )
- {
- nodes.add( node );
- }
-
- return true;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGenerator.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGenerator.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGenerator.java
deleted file mode 100644
index bd9b52a..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGenerator.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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.graph.DependencyNode;
-
-/**
- * Generates a sequence of dependency nodes from a dependeny graph by traversing the graph in preorder. This visitor
- * visits each node exactly once regardless how many paths within the dependency graph lead to the node such that the
- * resulting node sequence is free of duplicates.
- */
-public final class PreorderNodeListGenerator
- extends AbstractDepthFirstNodeListGenerator
-{
-
- /**
- * Creates a new preorder list generator.
- */
- public PreorderNodeListGenerator()
- {
- }
-
- @Override
- public boolean visitEnter( DependencyNode node )
- {
- if ( !setVisited( node ) )
- {
- return false;
- }
-
- if ( node.getDependency() != null )
- {
- nodes.add( node );
- }
-
- return true;
- }
-
- @Override
- public boolean visitLeave( DependencyNode node )
- {
- return true;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/Stack.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/Stack.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/Stack.java
deleted file mode 100644
index 27fbb4b..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/Stack.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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.AbstractList;
-import java.util.NoSuchElementException;
-import java.util.RandomAccess;
-
-/**
- * A non-synchronized stack with a non-modifiable list view which starts at the top of the stack. While
- * {@code LinkedList} can provide the same behavior, it creates many temp objects upon frequent pushes/pops.
- */
-class Stack<E>
- extends AbstractList<E>
- implements RandomAccess
-{
-
- @SuppressWarnings( "unchecked" )
- private E[] elements = (E[]) new Object[96];
-
- private int size;
-
- public void push( E element )
- {
- if ( size >= elements.length )
- {
- @SuppressWarnings( "unchecked" )
- E[] tmp = (E[]) new Object[size + 64];
- System.arraycopy( elements, 0, tmp, 0, elements.length );
- elements = tmp;
- }
- elements[size++] = element;
- }
-
- public E pop()
- {
- if ( size <= 0 )
- {
- throw new NoSuchElementException();
- }
- return elements[--size];
- }
-
- public E peek()
- {
- if ( size <= 0 )
- {
- return null;
- }
- return elements[size - 1];
- }
-
- @Override
- public E get( int index )
- {
- if ( index < 0 || index >= size )
- {
- throw new IndexOutOfBoundsException( "Index: " + index + ", Size: " + size );
- }
- return elements[size - index - 1];
- }
-
- @Override
- public int size()
- {
- return size;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/TreeDependencyVisitor.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/TreeDependencyVisitor.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/TreeDependencyVisitor.java
deleted file mode 100644
index f1658a8..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/TreeDependencyVisitor.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.eclipse.aether.util.graph.visitor;
-
-/*
- * 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.IdentityHashMap;
-import java.util.Map;
-
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.graph.DependencyVisitor;
-
-/**
- * A dependency visitor that delegates to another visitor if a node hasn't been visited before. In other words, this
- * visitor provides a tree-view of a dependency graph which generally can have multiple paths to the same node or even
- * cycles.
- */
-public final class TreeDependencyVisitor
- implements DependencyVisitor
-{
-
- private final Map<DependencyNode, Object> visitedNodes;
-
- private final DependencyVisitor visitor;
-
- private final Stack<Boolean> visits;
-
- /**
- * Creates a new visitor that delegates to the specified visitor.
- *
- * @param visitor The visitor to delegate to, must not be {@code null}.
- */
- public TreeDependencyVisitor( DependencyVisitor visitor )
- {
- if ( visitor == null )
- {
- throw new IllegalArgumentException( "no visitor delegate specified" );
- }
- this.visitor = visitor;
- visitedNodes = new IdentityHashMap<DependencyNode, Object>( 512 );
- visits = new Stack<Boolean>();
- }
-
- public boolean visitEnter( DependencyNode node )
- {
- boolean visited = visitedNodes.put( node, Boolean.TRUE ) != null;
-
- visits.push( visited );
-
- if ( visited )
- {
- return false;
- }
-
- return visitor.visitEnter( node );
- }
-
- public boolean visitLeave( DependencyNode node )
- {
- Boolean visited = visits.pop();
-
- if ( visited )
- {
- return true;
- }
-
- return visitor.visitLeave( node );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/package-info.java
deleted file mode 100644
index 3ea9968..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/visitor/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.
- */
-/**
- * Various dependency visitors for inspecting a dependency graph.
- */
-package org.eclipse.aether.util.graph.visitor;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/listener/ChainedRepositoryListener.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/listener/ChainedRepositoryListener.java b/aether-util/src/main/java/org/eclipse/aether/util/listener/ChainedRepositoryListener.java
deleted file mode 100644
index c654510..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/listener/ChainedRepositoryListener.java
+++ /dev/null
@@ -1,437 +0,0 @@
-package org.eclipse.aether.util.listener;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import org.eclipse.aether.AbstractRepositoryListener;
-import org.eclipse.aether.RepositoryEvent;
-import org.eclipse.aether.RepositoryListener;
-
-/**
- * A repository listener that delegates to zero or more other listeners (multicast). The list of target listeners is
- * thread-safe, i.e. target listeners can be added or removed by any thread at any time.
- */
-public final class ChainedRepositoryListener
- extends AbstractRepositoryListener
-{
-
- private final List<RepositoryListener> listeners = new CopyOnWriteArrayList<RepositoryListener>();
-
- /**
- * Creates a new multicast listener that delegates to the specified listeners. In contrast to the constructor, this
- * factory method will avoid creating an actual chained listener if one of the specified readers is actually
- * {@code null}.
- *
- * @param listener1 The first listener, may be {@code null}.
- * @param listener2 The second listener, may be {@code null}.
- * @return The chained listener or {@code null} if no listener was supplied.
- */
- public static RepositoryListener newInstance( RepositoryListener listener1, RepositoryListener listener2 )
- {
- if ( listener1 == null )
- {
- return listener2;
- }
- else if ( listener2 == null )
- {
- return listener1;
- }
- return new ChainedRepositoryListener( listener1, listener2 );
- }
-
- /**
- * Creates a new multicast listener that delegates to the specified listeners.
- *
- * @param listeners The listeners to delegate to, may be {@code null} or empty.
- */
- public ChainedRepositoryListener( RepositoryListener... listeners )
- {
- if ( listeners != null )
- {
- add( Arrays.asList( listeners ) );
- }
- }
-
- /**
- * Creates a new multicast listener that delegates to the specified listeners.
- *
- * @param listeners The listeners to delegate to, may be {@code null} or empty.
- */
- public ChainedRepositoryListener( Collection<? extends RepositoryListener> listeners )
- {
- add( listeners );
- }
-
- /**
- * Adds the specified listeners to the end of the multicast chain.
- *
- * @param listeners The listeners to add, may be {@code null} or empty.
- */
- public void add( Collection<? extends RepositoryListener> listeners )
- {
- if ( listeners != null )
- {
- for ( RepositoryListener listener : listeners )
- {
- add( listener );
- }
- }
- }
-
- /**
- * Adds the specified listener to the end of the multicast chain.
- *
- * @param listener The listener to add, may be {@code null}.
- */
- public void add( RepositoryListener listener )
- {
- if ( listener != null )
- {
- listeners.add( listener );
- }
- }
-
- /**
- * Removes the specified listener from the multicast chain. Trying to remove a non-existing listener has no effect.
- *
- * @param listener The listener to remove, may be {@code null}.
- */
- public void remove( RepositoryListener listener )
- {
- if ( listener != null )
- {
- listeners.remove( listener );
- }
- }
-
- protected void handleError( RepositoryEvent event, RepositoryListener listener, RuntimeException error )
- {
- // default just swallows errors
- }
-
- @Override
- public void artifactDeployed( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.artifactDeployed( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void artifactDeploying( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.artifactDeploying( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void artifactDescriptorInvalid( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.artifactDescriptorInvalid( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void artifactDescriptorMissing( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.artifactDescriptorMissing( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void artifactDownloaded( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.artifactDownloaded( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void artifactDownloading( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.artifactDownloading( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void artifactInstalled( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.artifactInstalled( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void artifactInstalling( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.artifactInstalling( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void artifactResolved( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.artifactResolved( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void artifactResolving( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.artifactResolving( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void metadataDeployed( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.metadataDeployed( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void metadataDeploying( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.metadataDeploying( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void metadataDownloaded( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.metadataDownloaded( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void metadataDownloading( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.metadataDownloading( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void metadataInstalled( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.metadataInstalled( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void metadataInstalling( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.metadataInstalling( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void metadataInvalid( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.metadataInvalid( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void metadataResolved( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.metadataResolved( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
- @Override
- public void metadataResolving( RepositoryEvent event )
- {
- for ( RepositoryListener listener : listeners )
- {
- try
- {
- listener.metadataResolving( event );
- }
- catch ( RuntimeException e )
- {
- handleError( event, listener, e );
- }
- }
- }
-
-}
[46/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationContext.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationContext.java b/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationContext.java
deleted file mode 100644
index bd248a0..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationContext.java
+++ /dev/null
@@ -1,389 +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.io.Closeable;
-import java.io.File;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.aether.RepositorySystemSession;
-
-/**
- * A glorified map of key value pairs holding (cleartext) authentication data. Authentication contexts are used
- * internally when network operations need to access secured repositories or proxies. Each authentication context
- * manages the credentials required to access a single host. Unlike {@link Authentication} callbacks which exist for a
- * potentially long time like the duration of a repository system session, an authentication context has a supposedly
- * short lifetime and should be {@link #close() closed} as soon as the corresponding network operation has finished:
- *
- * <pre>
- * AuthenticationContext context = AuthenticationContext.forRepository( session, repository );
- * try {
- * // get credentials
- * char[] password = context.get( AuthenticationContext.PASSWORD, char[].class );
- * // perform network operation using retrieved credentials
- * ...
- * } finally {
- * // erase confidential authentication data from heap memory
- * AuthenticationContext.close( context );
- * }
- * </pre>
- *
- * The same authentication data can often be presented using different data types, e.g. a password can be presented
- * using a character array or (less securely) using a string. For ease of use, an authentication context treats the
- * following groups of data types as equivalent and converts values automatically during retrieval:
- * <ul>
- * <li>{@code String}, {@code char[]}</li>
- * <li>{@code String}, {@code File}</li>
- * </ul>
- * An authentication context is thread-safe.
- */
-public final class AuthenticationContext
- implements Closeable
-{
-
- /**
- * The key used to store the username. The corresponding authentication data should be of type {@link String}.
- */
- public static final String USERNAME = "username";
-
- /**
- * The key used to store the password. The corresponding authentication data should be of type {@code char[]} or
- * {@link String}.
- */
- public static final String PASSWORD = "password";
-
- /**
- * The key used to store the NTLM domain. The corresponding authentication data should be of type {@link String}.
- */
- public static final String NTLM_DOMAIN = "ntlm.domain";
-
- /**
- * The key used to store the NTML workstation. The corresponding authentication data should be of type
- * {@link String}.
- */
- public static final String NTLM_WORKSTATION = "ntlm.workstation";
-
- /**
- * The key used to store the pathname to a private key file. The corresponding authentication data should be of type
- * {@link String} or {@link File}.
- */
- public static final String PRIVATE_KEY_PATH = "privateKey.path";
-
- /**
- * The key used to store the passphrase protecting the private key. The corresponding authentication data should be
- * of type {@code char[]} or {@link String}.
- */
- public static final String PRIVATE_KEY_PASSPHRASE = "privateKey.passphrase";
-
- /**
- * The key used to store the acceptance policy for unknown host keys. The corresponding authentication data should
- * be of type {@link Boolean}. When querying this authentication data, the extra data should provide
- * {@link #HOST_KEY_REMOTE} and {@link #HOST_KEY_LOCAL}, e.g. to enable a well-founded decision of the user during
- * an interactive prompt.
- */
- public static final String HOST_KEY_ACCEPTANCE = "hostKey.acceptance";
-
- /**
- * The key used to store the fingerprint of the public key advertised by remote host. Note that this key is used to
- * query the extra data passed to {@link #get(String, Map, Class)} when getting {@link #HOST_KEY_ACCEPTANCE}, not
- * the authentication data in a context.
- */
- public static final String HOST_KEY_REMOTE = "hostKey.remote";
-
- /**
- * The key used to store the fingerprint of the public key expected from remote host as recorded in a known hosts
- * database. Note that this key is used to query the extra data passed to {@link #get(String, Map, Class)} when
- * getting {@link #HOST_KEY_ACCEPTANCE}, not the authentication data in a context.
- */
- public static final String HOST_KEY_LOCAL = "hostKey.local";
-
- /**
- * The key used to store the SSL context. The corresponding authentication data should be of type
- * {@link javax.net.ssl.SSLContext}.
- */
- public static final String SSL_CONTEXT = "ssl.context";
-
- /**
- * The key used to store the SSL hostname verifier. The corresponding authentication data should be of type
- * {@link javax.net.ssl.HostnameVerifier}.
- */
- public static final String SSL_HOSTNAME_VERIFIER = "ssl.hostnameVerifier";
-
- private final RepositorySystemSession session;
-
- private final RemoteRepository repository;
-
- private final Proxy proxy;
-
- private final Authentication auth;
-
- private final Map<String, Object> authData;
-
- private boolean fillingAuthData;
-
- /**
- * Gets an authentication context for the specified repository.
- *
- * @param session The repository system session during which the repository is accessed, must not be {@code null}.
- * @param repository The repository for which to create an authentication context, must not be {@code null}.
- * @return An authentication context for the repository or {@code null} if no authentication is configured for it.
- */
- public static AuthenticationContext forRepository( RepositorySystemSession session, RemoteRepository repository )
- {
- return newInstance( session, repository, null, repository.getAuthentication() );
- }
-
- /**
- * Gets an authentication context for the proxy of the specified repository.
- *
- * @param session The repository system session during which the repository is accessed, must not be {@code null}.
- * @param repository The repository for whose proxy to create an authentication context, must not be {@code null}.
- * @return An authentication context for the proxy or {@code null} if no proxy is set or no authentication is
- * configured for it.
- */
- public static AuthenticationContext forProxy( RepositorySystemSession session, RemoteRepository repository )
- {
- Proxy proxy = repository.getProxy();
- return newInstance( session, repository, proxy, ( proxy != null ) ? proxy.getAuthentication() : null );
- }
-
- private static AuthenticationContext newInstance( RepositorySystemSession session, RemoteRepository repository,
- Proxy proxy, Authentication auth )
- {
- if ( auth == null )
- {
- return null;
- }
- return new AuthenticationContext( session, repository, proxy, auth );
- }
-
- private AuthenticationContext( RepositorySystemSession session, RemoteRepository repository, Proxy proxy,
- Authentication auth )
- {
- if ( session == null )
- {
- throw new IllegalArgumentException( "repository system session missing" );
- }
- this.session = session;
- this.repository = repository;
- this.proxy = proxy;
- this.auth = auth;
- authData = new HashMap<String, Object>();
- }
-
- /**
- * Gets the repository system session during which the authentication happens.
- *
- * @return The repository system session, never {@code null}.
- */
- public RepositorySystemSession getSession()
- {
- return session;
- }
-
- /**
- * Gets the repository requiring authentication. If {@link #getProxy()} is not {@code null}, the data gathered by
- * this authentication context does not apply to the repository's host but rather the proxy.
- *
- * @return The repository to be contacted, never {@code null}.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Gets the proxy (if any) to be authenticated with.
- *
- * @return The proxy or {@code null} if authenticating directly with the repository's host.
- */
- public Proxy getProxy()
- {
- return proxy;
- }
-
- /**
- * Gets the authentication data for the specified key.
- *
- * @param key The key whose authentication data should be retrieved, must not be {@code null}.
- * @return The requested authentication data or {@code null} if none.
- */
- public String get( String key )
- {
- return get( key, null, String.class );
- }
-
- /**
- * Gets the authentication data for the specified key.
- *
- * @param <T> The data type of the authentication data.
- * @param key The key whose authentication data should be retrieved, must not be {@code null}.
- * @param type The expected type of the authentication data, must not be {@code null}.
- * @return The requested authentication data or {@code null} if none or if the data doesn't match the expected type.
- */
- public <T> T get( String key, Class<T> type )
- {
- return get( key, null, type );
- }
-
- /**
- * Gets the authentication data for the specified key.
- *
- * @param <T> The data type of the authentication data.
- * @param key The key whose authentication data should be retrieved, must not 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}.
- * @param type The expected type of the authentication data, must not be {@code null}.
- * @return The requested authentication data or {@code null} if none or if the data doesn't match the expected type.
- */
- public <T> T get( String key, Map<String, String> data, Class<T> type )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "authentication data key missing" );
- }
- Object value;
- synchronized ( authData )
- {
- value = authData.get( key );
- if ( value == null && !authData.containsKey( key ) && !fillingAuthData )
- {
- if ( auth != null )
- {
- try
- {
- fillingAuthData = true;
- auth.fill( this, key, data );
- }
- finally
- {
- fillingAuthData = false;
- }
- value = authData.get( key );
- }
- if ( value == null )
- {
- authData.put( key, value );
- }
- }
- }
-
- return convert( value, type );
- }
-
- private <T> T convert( Object value, Class<T> type )
- {
- if ( !type.isInstance( value ) )
- {
- if ( String.class.equals( type ) )
- {
- if ( value instanceof File )
- {
- value = ( (File) value ).getPath();
- }
- else if ( value instanceof char[] )
- {
- value = new String( (char[]) value );
- }
- }
- else if ( File.class.equals( type ) )
- {
- if ( value instanceof String )
- {
- value = new File( (String) value );
- }
- }
- else if ( char[].class.equals( type ) )
- {
- if ( value instanceof String )
- {
- value = ( (String) value ).toCharArray();
- }
- }
- }
-
- if ( type.isInstance( value ) )
- {
- return type.cast( value );
- }
-
- return null;
- }
-
- /**
- * Puts the specified authentication data into this context. This method should only be called from implementors of
- * {@link Authentication#fill(AuthenticationContext, String, Map)}. Passed in character arrays are not cloned and
- * become owned by this context, i.e. get erased when the context gets closed.
- *
- * @param key The key to associate the authentication data with, must not be {@code null}.
- * @param value The (cleartext) authentication data to store, may be {@code null}.
- */
- public void put( String key, Object value )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "authentication data key missing" );
- }
- synchronized ( authData )
- {
- Object oldValue = authData.put( key, value );
- if ( oldValue instanceof char[] )
- {
- Arrays.fill( (char[]) oldValue, '\0' );
- }
- }
- }
-
- /**
- * Closes this authentication context and erases sensitive authentication data from heap memory. Closing an already
- * closed context has no effect.
- */
- public void close()
- {
- synchronized ( authData )
- {
- for ( Object value : authData.values() )
- {
- if ( value instanceof char[] )
- {
- Arrays.fill( (char[]) value, '\0' );
- }
- }
- authData.clear();
- }
- }
-
- /**
- * Closes the specified authentication context. This is a convenience method doing a {@code null} check before
- * calling {@link #close()} on the given context.
- *
- * @param context The authentication context to close, may be {@code null}.
- */
- public static void close( AuthenticationContext context )
- {
- if ( context != null )
- {
- context.close();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationDigest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationDigest.java b/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationDigest.java
deleted file mode 100644
index 03725b6..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationDigest.java
+++ /dev/null
@@ -1,219 +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.io.UnsupportedEncodingException;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-
-import org.eclipse.aether.RepositorySystemSession;
-
-/**
- * A helper to calculate a fingerprint/digest for the authentication data of a repository/proxy. Such a fingerprint can
- * be used to detect changes in the authentication data across JVM restarts without exposing sensitive information.
- */
-public final class AuthenticationDigest
-{
-
- private final MessageDigest digest;
-
- private final RepositorySystemSession session;
-
- private final RemoteRepository repository;
-
- private final Proxy proxy;
-
- /**
- * Gets the fingerprint for the authentication of the specified repository.
- *
- * @param session The repository system session during which the fingerprint is requested, must not be {@code null}.
- * @param repository The repository whose authentication is to be fingerprinted, must not be {@code null}.
- * @return The fingerprint of the repository authentication or an empty string if no authentication is configured,
- * never {@code null}.
- */
- public static String forRepository( RepositorySystemSession session, RemoteRepository repository )
- {
- String digest = "";
- Authentication auth = repository.getAuthentication();
- if ( auth != null )
- {
- AuthenticationDigest authDigest = new AuthenticationDigest( session, repository, null );
- auth.digest( authDigest );
- digest = authDigest.digest();
- }
- return digest;
- }
-
- /**
- * Gets the fingerprint for the authentication of the specified repository's proxy.
- *
- * @param session The repository system session during which the fingerprint is requested, must not be {@code null}.
- * @param repository The repository whose proxy authentication is to be fingerprinted, must not be {@code null}.
- * @return The fingerprint of the proxy authentication or an empty string if no proxy is present or if no proxy
- * authentication is configured, never {@code null}.
- */
- public static String forProxy( RepositorySystemSession session, RemoteRepository repository )
- {
- String digest = "";
- Proxy proxy = repository.getProxy();
- if ( proxy != null )
- {
- Authentication auth = proxy.getAuthentication();
- if ( auth != null )
- {
- AuthenticationDigest authDigest = new AuthenticationDigest( session, repository, proxy );
- auth.digest( authDigest );
- digest = authDigest.digest();
- }
- }
- return digest;
- }
-
- private AuthenticationDigest( RepositorySystemSession session, RemoteRepository repository, Proxy proxy )
- {
- this.session = session;
- this.repository = repository;
- this.proxy = proxy;
- digest = newDigest();
- }
-
- private static MessageDigest newDigest()
- {
- try
- {
- return MessageDigest.getInstance( "SHA-1" );
- }
- catch ( NoSuchAlgorithmException e )
- {
- try
- {
- return MessageDigest.getInstance( "MD5" );
- }
- catch ( NoSuchAlgorithmException ne )
- {
- throw new IllegalStateException( ne );
- }
- }
- }
-
- /**
- * Gets the repository system session during which the authentication fingerprint is calculated.
- *
- * @return The repository system session, never {@code null}.
- */
- public RepositorySystemSession getSession()
- {
- return session;
- }
-
- /**
- * Gets the repository requiring authentication. If {@link #getProxy()} is not {@code null}, the data gathered by
- * this authentication digest does not apply to the repository's host but rather the proxy.
- *
- * @return The repository to be contacted, never {@code null}.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Gets the proxy (if any) to be authenticated with.
- *
- * @return The proxy or {@code null} if authenticating directly with the repository's host.
- */
- public Proxy getProxy()
- {
- return proxy;
- }
-
- /**
- * Updates the digest with the specified strings.
- *
- * @param strings The strings to update the digest with, may be {@code null} or contain {@code null} elements.
- */
- public void update( String... strings )
- {
- if ( strings != null )
- {
- for ( String string : strings )
- {
- if ( string != null )
- {
- try
- {
- digest.update( string.getBytes( "UTF-8" ) );
- }
- catch ( UnsupportedEncodingException e )
- {
- throw new IllegalStateException( e );
- }
- }
- }
- }
- }
-
- /**
- * Updates the digest with the specified characters.
- *
- * @param chars The characters to update the digest with, may be {@code null}.
- */
- public void update( char... chars )
- {
- if ( chars != null )
- {
- for ( char c : chars )
- {
- digest.update( (byte) ( c >> 8 ) );
- digest.update( (byte) ( c & 0xFF ) );
- }
- }
- }
-
- /**
- * Updates the digest with the specified bytes.
- *
- * @param bytes The bytes to update the digest with, may be {@code null}.
- */
- public void update( byte... bytes )
- {
- if ( bytes != null )
- {
- digest.update( bytes );
- }
- }
-
- private String digest()
- {
- byte[] bytes = digest.digest();
- StringBuilder buffer = new StringBuilder( bytes.length * 2 );
- for ( byte aByte : bytes )
- {
- int b = aByte & 0xFF;
- if ( b < 0x10 )
- {
- buffer.append( '0' );
- }
- buffer.append( Integer.toHexString( b ) );
- }
- return buffer.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationSelector.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationSelector.java b/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationSelector.java
deleted file mode 100644
index 0637d1c..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/AuthenticationSelector.java
+++ /dev/null
@@ -1,38 +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.
- */
-
-/**
- * Selects authentication for a given remote repository.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getAuthenticationSelector()
- */
-public interface AuthenticationSelector
-{
-
- /**
- * Selects authentication for the specified remote repository.
- *
- * @param repository The repository for which to select authentication, must not be {@code null}.
- * @return The selected authentication or {@code null} if none.
- */
- Authentication getAuthentication( RemoteRepository repository );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRegistration.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRegistration.java b/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRegistration.java
deleted file mode 100644
index 1065779..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRegistration.java
+++ /dev/null
@@ -1,149 +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.Collection;
-import java.util.Collections;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-
-/**
- * A request to register an artifact within the local repository. Certain local repository implementations can refuse to
- * serve physically present artifacts if those haven't been previously registered to them.
- *
- * @see LocalRepositoryManager#add(RepositorySystemSession, LocalArtifactRegistration)
- */
-public final class LocalArtifactRegistration
-{
-
- private Artifact artifact;
-
- private RemoteRepository repository;
-
- private Collection<String> contexts = Collections.emptyList();
-
- /**
- * Creates an uninitialized registration.
- */
- public LocalArtifactRegistration()
- {
- // enables default constructor
- }
-
- /**
- * Creates a registration request for the specified (locally installed) artifact.
- *
- * @param artifact The artifact to register, may be {@code null}.
- */
- public LocalArtifactRegistration( Artifact artifact )
- {
- setArtifact( artifact );
- }
-
- /**
- * Creates a registration request for the specified artifact.
- *
- * @param artifact The artifact to register, may be {@code null}.
- * @param repository The remote repository from which the artifact was resolved or {@code null} if the artifact was
- * locally installed.
- * @param contexts The resolution contexts, may be {@code null}.
- */
- public LocalArtifactRegistration( Artifact artifact, RemoteRepository repository, Collection<String> contexts )
- {
- setArtifact( artifact );
- setRepository( repository );
- setContexts( contexts );
- }
-
- /**
- * Gets the artifact to register.
- *
- * @return The artifact or {@code null} if not set.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Sets the artifact to register.
- *
- * @param artifact The artifact, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public LocalArtifactRegistration setArtifact( Artifact artifact )
- {
- this.artifact = artifact;
- return this;
- }
-
- /**
- * Gets the remote repository from which the artifact was resolved.
- *
- * @return The remote repository or {@code null} if the artifact was locally installed.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Sets the remote repository from which the artifact was resolved.
- *
- * @param repository The remote repository or {@code null} if the artifact was locally installed.
- * @return This request for chaining, never {@code null}.
- */
- public LocalArtifactRegistration setRepository( RemoteRepository repository )
- {
- this.repository = repository;
- return this;
- }
-
- /**
- * Gets the resolution contexts in which the artifact is available.
- *
- * @return The resolution contexts in which the artifact is available, never {@code null}.
- */
- public Collection<String> getContexts()
- {
- return contexts;
- }
-
- /**
- * Sets the resolution contexts in which the artifact is available.
- *
- * @param contexts The resolution contexts, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public LocalArtifactRegistration setContexts( Collection<String> contexts )
- {
- if ( contexts != null )
- {
- this.contexts = contexts;
- }
- else
- {
- this.contexts = Collections.emptyList();
- }
- return this;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRequest.java b/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRequest.java
deleted file mode 100644
index 8f6eabf..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactRequest.java
+++ /dev/null
@@ -1,145 +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.Collections;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-
-/**
- * A query to the local repository for the existence of an artifact.
- *
- * @see LocalRepositoryManager#find(RepositorySystemSession, LocalArtifactRequest)
- */
-public final class LocalArtifactRequest
-{
-
- private Artifact artifact;
-
- private String context = "";
-
- private List<RemoteRepository> repositories = Collections.emptyList();
-
- /**
- * Creates an uninitialized query.
- */
- public LocalArtifactRequest()
- {
- // enables default constructor
- }
-
- /**
- * Creates a query with the specified properties.
- *
- * @param artifact The artifact to query for, may be {@code null}.
- * @param repositories The remote repositories that should be considered as potential sources for the artifact, may
- * be {@code null} or empty to only consider locally installed artifacts.
- * @param context The resolution context for the artifact, may be {@code null}.
- */
- public LocalArtifactRequest( Artifact artifact, List<RemoteRepository> repositories, String context )
- {
- setArtifact( artifact );
- setRepositories( repositories );
- setContext( context );
- }
-
- /**
- * Gets the artifact to query for.
- *
- * @return The artifact or {@code null} if not set.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Sets the artifact to query for.
- *
- * @param artifact The artifact, may be {@code null}.
- * @return This query for chaining, never {@code null}.
- */
- public LocalArtifactRequest setArtifact( Artifact artifact )
- {
- this.artifact = artifact;
- return this;
- }
-
- /**
- * Gets the resolution context.
- *
- * @return The resolution context, never {@code null}.
- */
- public String getContext()
- {
- return context;
- }
-
- /**
- * Sets the resolution context.
- *
- * @param context The resolution context, may be {@code null}.
- * @return This query for chaining, never {@code null}.
- */
- public LocalArtifactRequest setContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- return this;
- }
-
- /**
- * Gets the remote repositories to consider as sources of the artifact.
- *
- * @return The remote repositories, never {@code null}.
- */
- public List<RemoteRepository> getRepositories()
- {
- return repositories;
- }
-
- /**
- * Sets the remote repositories to consider as sources of the artifact.
- *
- * @param repositories The remote repositories, may be {@code null} or empty to only consider locally installed
- * artifacts.
- * @return This query for chaining, never {@code null}.
- */
- public LocalArtifactRequest setRepositories( List<RemoteRepository> repositories )
- {
- if ( repositories != null )
- {
- this.repositories = repositories;
- }
- else
- {
- this.repositories = Collections.emptyList();
- }
- return this;
- }
-
- @Override
- public String toString()
- {
- return getArtifact() + " @ " + getRepositories();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactResult.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactResult.java b/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactResult.java
deleted file mode 100644
index e611b27..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/LocalArtifactResult.java
+++ /dev/null
@@ -1,147 +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.io.File;
-
-import org.eclipse.aether.RepositorySystemSession;
-
-/**
- * A result from the local repository about the existence of an artifact.
- *
- * @see LocalRepositoryManager#find(RepositorySystemSession, LocalArtifactRequest)
- */
-public final class LocalArtifactResult
-{
-
- private final LocalArtifactRequest request;
-
- private File file;
-
- private boolean available;
-
- private RemoteRepository repository;
-
- /**
- * Creates a new result for the specified request.
- *
- * @param request The local artifact request, must not be {@code null}.
- */
- public LocalArtifactResult( LocalArtifactRequest request )
- {
- if ( request == null )
- {
- throw new IllegalArgumentException( "local artifact request has not been specified" );
- }
- this.request = request;
- }
-
- /**
- * Gets the request corresponding to this result.
- *
- * @return The corresponding request, never {@code null}.
- */
- public LocalArtifactRequest getRequest()
- {
- return request;
- }
-
- /**
- * Gets the file to the requested artifact. Note that this file must not be used unless {@link #isAvailable()}
- * returns {@code true}. An artifact file can be found but considered unavailable if the artifact was cached from a
- * remote repository that is not part of the list of remote repositories used for the query.
- *
- * @return The file to the requested artifact or {@code null} if the artifact does not exist locally.
- */
- public File getFile()
- {
- return file;
- }
-
- /**
- * Sets the file to requested artifact.
- *
- * @param file The artifact file, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public LocalArtifactResult setFile( File file )
- {
- this.file = file;
- return this;
- }
-
- /**
- * Indicates whether the requested artifact is available for use. As a minimum, the file needs to be physically
- * existent in the local repository to be available. Additionally, a local repository manager can consider the list
- * of supplied remote repositories to determine whether the artifact is logically available and mark an artifact
- * unavailable (despite its physical existence) if it is not known to be hosted by any of the provided repositories.
- *
- * @return {@code true} if the artifact is available, {@code false} otherwise.
- * @see LocalArtifactRequest#getRepositories()
- */
- public boolean isAvailable()
- {
- return available;
- }
-
- /**
- * Sets whether the artifact is available.
- *
- * @param available {@code true} if the artifact is available, {@code false} otherwise.
- * @return This result for chaining, never {@code null}.
- */
- public LocalArtifactResult setAvailable( boolean available )
- {
- this.available = available;
- return this;
- }
-
- /**
- * Gets the (first) remote repository from which the artifact was cached (if any).
- *
- * @return The remote repository from which the artifact was originally retrieved or {@code null} if unknown or if
- * the artifact has been locally installed.
- * @see LocalArtifactRequest#getRepositories()
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Sets the (first) remote repository from which the artifact was cached.
- *
- * @param repository The remote repository from which the artifact was originally retrieved, may be {@code null} if
- * unknown or if the artifact has been locally installed.
- * @return This result for chaining, never {@code null}.
- */
- public LocalArtifactResult setRepository( RemoteRepository repository )
- {
- this.repository = repository;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getFile() + " (" + ( isAvailable() ? "available" : "unavailable" ) + ")";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRegistration.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRegistration.java b/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRegistration.java
deleted file mode 100644
index dd0d587..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRegistration.java
+++ /dev/null
@@ -1,148 +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.Collection;
-import java.util.Collections;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.metadata.Metadata;
-
-/**
- * A request to register metadata within the local repository.
- *
- * @see LocalRepositoryManager#add(RepositorySystemSession, LocalMetadataRegistration)
- */
-public final class LocalMetadataRegistration
-{
-
- private Metadata metadata;
-
- private RemoteRepository repository;
-
- private Collection<String> contexts = Collections.emptyList();
-
- /**
- * Creates an uninitialized registration.
- */
- public LocalMetadataRegistration()
- {
- // enables default constructor
- }
-
- /**
- * Creates a registration request for the specified metadata accompanying a locally installed artifact.
- *
- * @param metadata The metadata to register, may be {@code null}.
- */
- public LocalMetadataRegistration( Metadata metadata )
- {
- setMetadata( metadata );
- }
-
- /**
- * Creates a registration request for the specified metadata.
- *
- * @param metadata The metadata to register, may be {@code null}.
- * @param repository The remote repository from which the metadata was resolved or {@code null} if the metadata
- * accompanies a locally installed artifact.
- * @param contexts The resolution contexts, may be {@code null}.
- */
- public LocalMetadataRegistration( Metadata metadata, RemoteRepository repository, Collection<String> contexts )
- {
- setMetadata( metadata );
- setRepository( repository );
- setContexts( contexts );
- }
-
- /**
- * Gets the metadata to register.
- *
- * @return The metadata or {@code null} if not set.
- */
- public Metadata getMetadata()
- {
- return metadata;
- }
-
- /**
- * Sets the metadata to register.
- *
- * @param metadata The metadata, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public LocalMetadataRegistration setMetadata( Metadata metadata )
- {
- this.metadata = metadata;
- return this;
- }
-
- /**
- * Gets the remote repository from which the metadata was resolved.
- *
- * @return The remote repository or {@code null} if the metadata was locally installed.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Sets the remote repository from which the metadata was resolved.
- *
- * @param repository The remote repository or {@code null} if the metadata accompanies a locally installed artifact.
- * @return This request for chaining, never {@code null}.
- */
- public LocalMetadataRegistration setRepository( RemoteRepository repository )
- {
- this.repository = repository;
- return this;
- }
-
- /**
- * Gets the resolution contexts in which the metadata is available.
- *
- * @return The resolution contexts in which the metadata is available, never {@code null}.
- */
- public Collection<String> getContexts()
- {
- return contexts;
- }
-
- /**
- * Sets the resolution contexts in which the metadata is available.
- *
- * @param contexts The resolution contexts, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public LocalMetadataRegistration setContexts( Collection<String> contexts )
- {
- if ( contexts != null )
- {
- this.contexts = contexts;
- }
- else
- {
- this.contexts = Collections.emptyList();
- }
- return this;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRequest.java b/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRequest.java
deleted file mode 100644
index 4c8f270..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataRequest.java
+++ /dev/null
@@ -1,133 +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 org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.metadata.Metadata;
-
-/**
- * A query to the local repository for the existence of metadata.
- *
- * @see LocalRepositoryManager#find(RepositorySystemSession, LocalMetadataRequest)
- */
-public final class LocalMetadataRequest
-{
-
- private Metadata metadata;
-
- private String context = "";
-
- private RemoteRepository repository = null;
-
- /**
- * Creates an uninitialized query.
- */
- public LocalMetadataRequest()
- {
- // enables default constructor
- }
-
- /**
- * Creates a query with the specified properties.
- *
- * @param metadata The metadata to query for, may be {@code null}.
- * @param repository The source remote repository for the metadata, may be {@code null} for local metadata.
- * @param context The resolution context for the metadata, may be {@code null}.
- */
- public LocalMetadataRequest( Metadata metadata, RemoteRepository repository, String context )
- {
- setMetadata( metadata );
- setRepository( repository );
- setContext( context );
- }
-
- /**
- * Gets the metadata to query for.
- *
- * @return The metadata or {@code null} if not set.
- */
- public Metadata getMetadata()
- {
- return metadata;
- }
-
- /**
- * Sets the metadata to query for.
- *
- * @param metadata The metadata, may be {@code null}.
- * @return This query for chaining, never {@code null}.
- */
- public LocalMetadataRequest setMetadata( Metadata metadata )
- {
- this.metadata = metadata;
- return this;
- }
-
- /**
- * Gets the resolution context.
- *
- * @return The resolution context, never {@code null}.
- */
- public String getContext()
- {
- return context;
- }
-
- /**
- * Sets the resolution context.
- *
- * @param context The resolution context, may be {@code null}.
- * @return This query for chaining, never {@code null}.
- */
- public LocalMetadataRequest setContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- return this;
- }
-
- /**
- * Gets the remote repository to use as source of the metadata.
- *
- * @return The remote repositories, may be {@code null} for local metadata.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Sets the remote repository to use as sources of the metadata.
- *
- * @param repository The remote repository, may be {@code null}.
- * @return This query for chaining, may be {@code null} for local metadata.
- */
- public LocalMetadataRequest setRepository( RemoteRepository repository )
- {
- this.repository = repository;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getMetadata() + " @ " + getRepository();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataResult.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataResult.java b/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataResult.java
deleted file mode 100644
index 29bd045..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/LocalMetadataResult.java
+++ /dev/null
@@ -1,114 +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.io.File;
-
-import org.eclipse.aether.RepositorySystemSession;
-
-/**
- * A result from the local repository about the existence of metadata.
- *
- * @see LocalRepositoryManager#find(RepositorySystemSession, LocalMetadataRequest)
- */
-public final class LocalMetadataResult
-{
-
- private final LocalMetadataRequest request;
-
- private File file;
-
- private boolean stale;
-
- /**
- * Creates a new result for the specified request.
- *
- * @param request The local metadata request, must not be {@code null}.
- */
- public LocalMetadataResult( LocalMetadataRequest request )
- {
- if ( request == null )
- {
- throw new IllegalArgumentException( "local metadata request has not been specified" );
- }
- this.request = request;
- }
-
- /**
- * Gets the request corresponding to this result.
- *
- * @return The corresponding request, never {@code null}.
- */
- public LocalMetadataRequest getRequest()
- {
- return request;
- }
-
- /**
- * Gets the file to the requested metadata if the metadata is available in the local repository.
- *
- * @return The file to the requested metadata or {@code null}.
- */
- public File getFile()
- {
- return file;
- }
-
- /**
- * Sets the file to requested metadata.
- *
- * @param file The metadata file, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public LocalMetadataResult setFile( File file )
- {
- this.file = file;
- return this;
- }
-
- /**
- * This value indicates whether the metadata is stale and should be updated.
- *
- * @return {@code true} if the metadata is stale and should be updated, {@code false} otherwise.
- */
- public boolean isStale()
- {
- return stale;
- }
-
- /**
- * Sets whether the metadata is stale.
- *
- * @param stale {@code true} if the metadata is stale and should be updated, {@code false} otherwise.
- * @return This result for chaining, never {@code null}.
- */
- public LocalMetadataResult setStale( boolean stale )
- {
- this.stale = stale;
- return this;
- }
-
- @Override
- public String toString()
- {
- return request.toString() + "(" + getFile() + ")";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/LocalRepository.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/LocalRepository.java b/aether-api/src/main/java/org/eclipse/aether/repository/LocalRepository.java
deleted file mode 100644
index 32dce73..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/LocalRepository.java
+++ /dev/null
@@ -1,132 +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.io.File;
-
-/**
- * A repository on the local file system used to cache contents of remote repositories and to store locally installed
- * artifacts. Note that this class merely describes such a repository, actual access to the contained artifacts is
- * handled by a {@link LocalRepositoryManager} which is usually determined from the {@link #getContentType() type} of
- * the repository.
- */
-public final class LocalRepository
- implements ArtifactRepository
-{
-
- private final File basedir;
-
- private final String type;
-
- /**
- * Creates a new local repository with the specified base directory and unknown type.
- *
- * @param basedir The base directory of the repository, may be {@code null}.
- */
- public LocalRepository( String basedir )
- {
- this( ( basedir != null ) ? new File( basedir ) : null, "" );
- }
-
- /**
- * Creates a new local repository with the specified base directory and unknown type.
- *
- * @param basedir The base directory of the repository, may be {@code null}.
- */
- public LocalRepository( File basedir )
- {
- this( basedir, "" );
- }
-
- /**
- * Creates a new local repository with the specified properties.
- *
- * @param basedir The base directory of the repository, may be {@code null}.
- * @param type The type of the repository, may be {@code null}.
- */
- public LocalRepository( File basedir, String type )
- {
- this.basedir = basedir;
- this.type = ( type != null ) ? type : "";
- }
-
- public String getContentType()
- {
- return type;
- }
-
- public String getId()
- {
- return "local";
- }
-
- /**
- * Gets the base directory of the repository.
- *
- * @return The base directory or {@code null} if none.
- */
- public File getBasedir()
- {
- return basedir;
- }
-
- @Override
- public String toString()
- {
- return getBasedir() + " (" + getContentType() + ")";
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- LocalRepository that = (LocalRepository) obj;
-
- return eq( basedir, that.basedir ) && eq( type, that.type );
- }
-
- private static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + hash( basedir );
- hash = hash * 31 + hash( type );
- return hash;
- }
-
- private static int hash( Object obj )
- {
- return obj != null ? obj.hashCode() : 0;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/LocalRepositoryManager.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/LocalRepositoryManager.java b/aether-api/src/main/java/org/eclipse/aether/repository/LocalRepositoryManager.java
deleted file mode 100644
index 649707c..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/LocalRepositoryManager.java
+++ /dev/null
@@ -1,127 +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 org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-
-/**
- * Manages access to a local repository.
- *
- * @see RepositorySystemSession#getLocalRepositoryManager()
- * @see org.eclipse.aether.RepositorySystem#newLocalRepositoryManager(RepositorySystemSession, LocalRepository)
- */
-public interface LocalRepositoryManager
-{
-
- /**
- * Gets the description of the local repository being managed.
- *
- * @return The description of the local repository, never {@code null}.
- */
- LocalRepository getRepository();
-
- /**
- * Gets the relative path for a locally installed artifact. Note that the artifact need not actually exist yet at
- * the returned location, the path merely indicates where the artifact would eventually be stored. The path uses the
- * forward slash as directory separator regardless of the underlying file system.
- *
- * @param artifact The artifact for which to determine the path, must not be {@code null}.
- * @return The path, relative to the local repository's base directory.
- */
- String getPathForLocalArtifact( Artifact artifact );
-
- /**
- * Gets the relative path for an artifact cached from a remote repository. Note that the artifact need not actually
- * exist yet at the returned location, the path merely indicates where the artifact would eventually be stored. The
- * path uses the forward slash as directory separator regardless of the underlying file system.
- *
- * @param artifact The artifact for which to determine the path, must not be {@code null}.
- * @param repository The source repository of the artifact, must not be {@code null}.
- * @param context The resolution context in which the artifact is being requested, may be {@code null}.
- * @return The path, relative to the local repository's base directory.
- */
- String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context );
-
- /**
- * Gets the relative path for locally installed metadata. Note that the metadata need not actually exist yet at the
- * returned location, the path merely indicates where the metadata would eventually be stored. The path uses the
- * forward slash as directory separator regardless of the underlying file system.
- *
- * @param metadata The metadata for which to determine the path, must not be {@code null}.
- * @return The path, relative to the local repository's base directory.
- */
- String getPathForLocalMetadata( Metadata metadata );
-
- /**
- * Gets the relative path for metadata cached from a remote repository. Note that the metadata need not actually
- * exist yet at the returned location, the path merely indicates where the metadata would eventually be stored. The
- * path uses the forward slash as directory separator regardless of the underlying file system.
- *
- * @param metadata The metadata for which to determine the path, must not be {@code null}.
- * @param repository The source repository of the metadata, must not be {@code null}.
- * @param context The resolution context in which the metadata is being requested, may be {@code null}.
- * @return The path, relative to the local repository's base directory.
- */
- String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context );
-
- /**
- * Queries for the existence of an artifact in the local repository. The request could be satisfied by a locally
- * installed artifact or a previously downloaded artifact.
- *
- * @param session The repository system session during which the request is made, must not be {@code null}.
- * @param request The artifact request, must not be {@code null}.
- * @return The result of the request, never {@code null}.
- */
- LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request );
-
- /**
- * Registers an installed or resolved artifact with the local repository. Note that artifact registration is merely
- * concerned about updating the local repository's internal state, not about actually installing the artifact or its
- * accompanying metadata.
- *
- * @param session The repository system session during which the registration is made, must not be {@code null}.
- * @param request The registration request, must not be {@code null}.
- */
- void add( RepositorySystemSession session, LocalArtifactRegistration request );
-
- /**
- * Queries for the existence of metadata in the local repository. The request could be satisfied by locally
- * installed or previously downloaded metadata.
- *
- * @param session The repository system session during which the request is made, must not be {@code null}.
- * @param request The metadata request, must not be {@code null}.
- * @return The result of the request, never {@code null}.
- */
- LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request );
-
- /**
- * Registers installed or resolved metadata with the local repository. Note that metadata registration is merely
- * concerned about updating the local repository's internal state, not about actually installing the metadata.
- * However, this method MUST be called after the actual install to give the repository manager the opportunity to
- * inspect the added metadata.
- *
- * @param session The repository system session during which the registration is made, must not be {@code null}.
- * @param request The registration request, must not be {@code null}.
- */
- void add( RepositorySystemSession session, LocalMetadataRegistration request );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/MirrorSelector.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/MirrorSelector.java b/aether-api/src/main/java/org/eclipse/aether/repository/MirrorSelector.java
deleted file mode 100644
index d50262c..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/MirrorSelector.java
+++ /dev/null
@@ -1,39 +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.
- */
-
-/**
- * Selects a mirror for a given remote repository.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getMirrorSelector()
- */
-public interface MirrorSelector
-{
-
- /**
- * Selects a mirror for the specified repository.
- *
- * @param repository The repository to select a mirror for, must not be {@code null}.
- * @return The selected mirror or {@code null} if none.
- * @see RemoteRepository#getMirroredRepositories()
- */
- RemoteRepository getMirror( RemoteRepository repository );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/NoLocalRepositoryManagerException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/NoLocalRepositoryManagerException.java b/aether-api/src/main/java/org/eclipse/aether/repository/NoLocalRepositoryManagerException.java
deleted file mode 100644
index c804821..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/NoLocalRepositoryManagerException.java
+++ /dev/null
@@ -1,102 +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 org.eclipse.aether.RepositoryException;
-
-/**
- * Thrown in case of an unsupported local repository type.
- */
-public class NoLocalRepositoryManagerException
- extends RepositoryException
-{
-
- private final transient LocalRepository repository;
-
- /**
- * Creates a new exception with the specified repository.
- *
- * @param repository The local repository for which no support is available, may be {@code null}.
- */
- public NoLocalRepositoryManagerException( LocalRepository repository )
- {
- this( repository, toMessage( repository ) );
- }
-
- /**
- * Creates a new exception with the specified repository and detail message.
- *
- * @param repository The local repository for which no support is available, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public NoLocalRepositoryManagerException( LocalRepository repository, String message )
- {
- super( message );
- this.repository = repository;
- }
-
- /**
- * Creates a new exception with the specified repository and cause.
- *
- * @param repository The local repository for which no support is available, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public NoLocalRepositoryManagerException( LocalRepository repository, Throwable cause )
- {
- this( repository, toMessage( repository ), cause );
- }
-
- /**
- * Creates a new exception with the specified repository, detail message and cause.
- *
- * @param repository The local repository for which no support is available, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public NoLocalRepositoryManagerException( LocalRepository repository, String message, Throwable cause )
- {
- super( message, cause );
- this.repository = repository;
- }
-
- private static String toMessage( LocalRepository repository )
- {
- if ( repository != null )
- {
- return "No manager available for local repository (" + repository.getBasedir().getAbsolutePath()
- + ") of type " + repository.getContentType();
- }
- else
- {
- return "No manager available for local repository";
- }
- }
-
- /**
- * Gets the local repository whose content type is not supported.
- *
- * @return The unsupported local repository or {@code null} if unknown.
- */
- public LocalRepository getRepository()
- {
- return repository;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/Proxy.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/Proxy.java b/aether-api/src/main/java/org/eclipse/aether/repository/Proxy.java
deleted file mode 100644
index 8e8cba1..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/Proxy.java
+++ /dev/null
@@ -1,158 +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 proxy to use for connections to a repository.
- */
-public final class Proxy
-{
-
- /**
- * Type denoting a proxy for HTTP transfers.
- */
- public static final String TYPE_HTTP = "http";
-
- /**
- * Type denoting a proxy for HTTPS transfers.
- */
- public static final String TYPE_HTTPS = "https";
-
- private final String type;
-
- private final String host;
-
- private final int port;
-
- private final Authentication auth;
-
- /**
- * Creates a new proxy with the specified properties and no authentication.
- *
- * @param type The type of the proxy, e.g. "http", may be {@code null}.
- * @param host The host of the proxy, may be {@code null}.
- * @param port The port of the proxy.
- */
- public Proxy( String type, String host, int port )
- {
- this( type, host, port, null );
- }
-
- /**
- * Creates a new proxy with the specified properties.
- *
- * @param type The type of the proxy, e.g. "http", may be {@code null}.
- * @param host The host of the proxy, may be {@code null}.
- * @param port The port of the proxy.
- * @param auth The authentication to use for the proxy connection, may be {@code null}.
- */
- public Proxy( String type, String host, int port, Authentication auth )
- {
- this.type = ( type != null ) ? type : "";
- this.host = ( host != null ) ? host : "";
- this.port = port;
- this.auth = auth;
- }
-
- /**
- * Gets the type of this proxy.
- *
- * @return The type of this proxy, never {@code null}.
- */
- public String getType()
- {
- return type;
- }
-
- /**
- * Gets the host for this proxy.
- *
- * @return The host for this proxy, never {@code null}.
- */
- public String getHost()
- {
- return host;
- }
-
- /**
- * Gets the port number for this proxy.
- *
- * @return The port number for this proxy.
- */
- public int getPort()
- {
- return port;
- }
-
- /**
- * Gets the authentication to use for the proxy connection.
- *
- * @return The authentication to use or {@code null} if none.
- */
- public Authentication getAuthentication()
- {
- return auth;
- }
-
- @Override
- public String toString()
- {
- return getHost() + ':' + getPort();
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- Proxy that = (Proxy) obj;
-
- return eq( type, that.type ) && eq( host, that.host ) && port == that.port && eq( auth, that.auth );
- }
-
- private static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + hash( host );
- hash = hash * 31 + hash( type );
- hash = hash * 31 + port;
- hash = hash * 31 + hash( auth );
- return hash;
- }
-
- private static int hash( Object obj )
- {
- return obj != null ? obj.hashCode() : 0;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/ProxySelector.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/ProxySelector.java b/aether-api/src/main/java/org/eclipse/aether/repository/ProxySelector.java
deleted file mode 100644
index 29b9e4e..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/ProxySelector.java
+++ /dev/null
@@ -1,38 +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.
- */
-
-/**
- * Selects a proxy for a given remote repository.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getProxySelector()
- */
-public interface ProxySelector
-{
-
- /**
- * Selects a proxy for the specified remote repository.
- *
- * @param repository The repository for which to select a proxy, must not be {@code null}.
- * @return The selected proxy or {@code null} if none.
- */
- Proxy getProxy( RemoteRepository repository );
-
-}
[14/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/ScopeDependencySelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/ScopeDependencySelector.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/ScopeDependencySelector.java
deleted file mode 100644
index 2640c42..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/ScopeDependencySelector.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package org.eclipse.aether.util.graph.selector;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.TreeSet;
-
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.graph.Dependency;
-
-/**
- * A dependency selector that filters transitive dependencies based on their scope. Direct dependencies are always
- * included regardless of their scope. <em>Note:</em> This filter does not assume any relationships between the scopes.
- * In particular, the filter is not aware of scopes that logically include other scopes.
- *
- * @see Dependency#getScope()
- */
-public final class ScopeDependencySelector
- implements DependencySelector
-{
-
- private final int depth;
-
- private final Collection<String> included;
-
- private final Collection<String> excluded;
-
- /**
- * Creates a new selector using the specified includes and excludes.
- *
- * @param included The set of scopes to include, may be {@code null} or empty to include any scope.
- * @param excluded The set of scopes to exclude, may be {@code null} or empty to exclude no scope.
- */
- public ScopeDependencySelector( Collection<String> included, Collection<String> excluded )
- {
- super();
- this.depth = 0;
- this.included = clone( included );
- this.excluded = clone( excluded );
- }
-
- private static Collection<String> clone( Collection<String> scopes )
- {
- Collection<String> copy;
- if ( scopes == null || scopes.isEmpty() )
- {
- // checking for null is faster than isEmpty()
- copy = null;
- }
- else
- {
- copy = new HashSet<String>( scopes );
- if ( copy.size() <= 2 )
- {
- // contains() is faster for smallish array (sorted for equals()!)
- copy = new ArrayList<String>( new TreeSet<String>( copy ) );
- }
- }
- return copy;
- }
-
- /**
- * Creates a new selector using the specified excludes.
- *
- * @param excluded The set of scopes to exclude, may be {@code null} or empty to exclude no scope.
- */
- public ScopeDependencySelector( String... excluded )
- {
- this( null, ( excluded != null ) ? Arrays.asList( excluded ) : null );
- }
-
- private ScopeDependencySelector( int depth, Collection<String> included, Collection<String> excluded )
- {
- super();
- this.depth = depth;
- this.included = included;
- this.excluded = excluded;
- }
-
- public boolean selectDependency( Dependency dependency )
- {
- // depth < 2 == direct dependency
- // assert this.depth > 0 : "Unexpected depth.";
- return this.depth < 2
- || ( ( included == null || included.contains( dependency.getScope() ) )
- && ( excluded == null || !excluded.contains( dependency.getScope() ) ) );
-
- }
-
- public DependencySelector deriveChildSelector( DependencyCollectionContext context )
- {
- // First call is for direct dependencies, successive calls are for transitive dependencies.
- return this.depth >= 2
- ? this
- : new ScopeDependencySelector( this.depth + 1, this.included, this.excluded );
-
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- ScopeDependencySelector that = (ScopeDependencySelector) obj;
- return this.depth == that.depth && eq( included, that.included ) && eq( excluded, that.excluded );
- }
-
- 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 + ( this.depth );
- hash = hash * 31 + ( included != null ? included.hashCode() : 0 );
- hash = hash * 31 + ( excluded != null ? excluded.hashCode() : 0 );
- return hash;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/StaticDependencySelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/StaticDependencySelector.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/StaticDependencySelector.java
deleted file mode 100644
index 41ce0e0..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/StaticDependencySelector.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.eclipse.aether.util.graph.selector;
-
-/*
- * 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.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.graph.Dependency;
-
-/**
- * A dependency selector that always includes or excludes dependencies.
- */
-public final class StaticDependencySelector
- implements DependencySelector
-{
-
- private final boolean select;
-
- /**
- * Creates a new selector with the specified selection behavior.
- *
- * @param select {@code true} to select all dependencies, {@code false} to exclude all dependencies.
- */
- public StaticDependencySelector( boolean select )
- {
- this.select = select;
- }
-
- public boolean selectDependency( Dependency dependency )
- {
- return select;
- }
-
- public DependencySelector deriveChildSelector( DependencyCollectionContext context )
- {
- return this;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- StaticDependencySelector that = (StaticDependencySelector) obj;
- return select == that.select;
- }
-
- @Override
- public int hashCode()
- {
- int hash = getClass().hashCode();
- hash = hash * 31 + ( select ? 1 : 0 );
- return hash;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/package-info.java
deleted file mode 100644
index 3c3cf3c..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/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.
- */
-/**
- * Various dependency selectors for building a dependency graph.
- */
-package org.eclipse.aether.util.graph.selector;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ChainedDependencyGraphTransformer.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ChainedDependencyGraphTransformer.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ChainedDependencyGraphTransformer.java
deleted file mode 100644
index d7f1771..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ChainedDependencyGraphTransformer.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A dependency graph transformer that chains other transformers.
- */
-public final class ChainedDependencyGraphTransformer
- implements DependencyGraphTransformer
-{
-
- private final DependencyGraphTransformer[] transformers;
-
- /**
- * Creates a new transformer that chains the specified transformers.
- *
- * @param transformers The transformers to chain, may be {@code null} or empty.
- */
- public ChainedDependencyGraphTransformer( DependencyGraphTransformer... transformers )
- {
- if ( transformers == null )
- {
- this.transformers = new DependencyGraphTransformer[0];
- }
- else
- {
- this.transformers = transformers;
- }
- }
-
- /**
- * Creates a new transformer that chains the specified transformers or simply returns one of them if the other one
- * is {@code null}.
- *
- * @param transformer1 The first transformer of the chain, may be {@code null}.
- * @param transformer2 The second transformer of the chain, may be {@code null}.
- * @return The chained transformer or {@code null} if both input transformers are {@code null}.
- */
- public static DependencyGraphTransformer newInstance( DependencyGraphTransformer transformer1,
- DependencyGraphTransformer transformer2 )
- {
- if ( transformer1 == null )
- {
- return transformer2;
- }
- else if ( transformer2 == null )
- {
- return transformer1;
- }
- return new ChainedDependencyGraphTransformer( transformer1, transformer2 );
- }
-
- public DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- for ( DependencyGraphTransformer transformer : transformers )
- {
- node = transformer.transformGraph( node, context );
- }
- return node;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictIdSorter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictIdSorter.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictIdSorter.java
deleted file mode 100644
index 5cc6432..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictIdSorter.java
+++ /dev/null
@@ -1,370 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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 java.util.HashMap;
-import java.util.HashSet;
-import java.util.IdentityHashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A dependency graph transformer that creates a topological sorting of the conflict ids which have been assigned to the
- * dependency nodes. Conflict ids are sorted according to the dependency relation induced by the dependency graph. This
- * transformer will query the key {@link TransformationContextKeys#CONFLICT_IDS} in the transformation context for an
- * existing mapping of nodes to their conflicts ids. In absence of this map, the transformer will automatically invoke
- * the {@link ConflictMarker} to calculate the conflict ids. When this transformer has executed, the transformation
- * context holds a {@code List<Object>} that denotes the topologically sorted conflict ids. The list will be stored
- * using the key {@link TransformationContextKeys#SORTED_CONFLICT_IDS}. In addition, the transformer will store a
- * {@code Collection<Collection<Object>>} using the key {@link TransformationContextKeys#CYCLIC_CONFLICT_IDS} that
- * describes cycles among conflict ids.
- */
-public final class ConflictIdSorter
- implements DependencyGraphTransformer
-{
-
- public DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- Map<?, ?> conflictIds = (Map<?, ?>) context.get( TransformationContextKeys.CONFLICT_IDS );
- if ( conflictIds == null )
- {
- ConflictMarker marker = new ConflictMarker();
- marker.transformGraph( node, context );
-
- conflictIds = (Map<?, ?>) context.get( TransformationContextKeys.CONFLICT_IDS );
- }
-
- @SuppressWarnings( "unchecked" )
- Map<String, Object> stats = (Map<String, Object>) context.get( TransformationContextKeys.STATS );
- long time1 = System.nanoTime();
-
- Map<Object, ConflictId> ids = new LinkedHashMap<Object, ConflictId>( 256 );
-
- {
- ConflictId id = null;
- Object key = conflictIds.get( node );
- if ( key != null )
- {
- id = new ConflictId( key, 0 );
- ids.put( key, id );
- }
-
- Map<DependencyNode, Object> visited = new IdentityHashMap<DependencyNode, Object>( conflictIds.size() );
-
- buildConflitIdDAG( ids, node, id, 0, visited, conflictIds );
- }
-
- long time2 = System.nanoTime();
-
- int cycles = topsortConflictIds( ids.values(), context );
-
- if ( stats != null )
- {
- long time3 = System.nanoTime();
- stats.put( "ConflictIdSorter.graphTime", time2 - time1 );
- stats.put( "ConflictIdSorter.topsortTime", time3 - time2 );
- stats.put( "ConflictIdSorter.conflictIdCount", ids.size() );
- stats.put( "ConflictIdSorter.conflictIdCycleCount", cycles );
- }
-
- return node;
- }
-
- private void buildConflitIdDAG( Map<Object, ConflictId> ids, DependencyNode node, ConflictId id, int depth,
- Map<DependencyNode, Object> visited, Map<?, ?> conflictIds )
- {
- if ( visited.put( node, Boolean.TRUE ) != null )
- {
- return;
- }
-
- depth++;
-
- for ( DependencyNode child : node.getChildren() )
- {
- Object key = conflictIds.get( child );
- ConflictId childId = ids.get( key );
- if ( childId == null )
- {
- childId = new ConflictId( key, depth );
- ids.put( key, childId );
- }
- else
- {
- childId.pullup( depth );
- }
-
- if ( id != null )
- {
- id.add( childId );
- }
-
- buildConflitIdDAG( ids, child, childId, depth, visited, conflictIds );
- }
- }
-
- private int topsortConflictIds( Collection<ConflictId> conflictIds, DependencyGraphTransformationContext context )
- {
- List<Object> sorted = new ArrayList<Object>( conflictIds.size() );
-
- RootQueue roots = new RootQueue( conflictIds.size() / 2 );
- for ( ConflictId id : conflictIds )
- {
- if ( id.inDegree <= 0 )
- {
- roots.add( id );
- }
- }
-
- processRoots( sorted, roots );
-
- boolean cycle = sorted.size() < conflictIds.size();
-
- while ( sorted.size() < conflictIds.size() )
- {
- // cycle -> deal gracefully with nodes still having positive in-degree
-
- ConflictId nearest = null;
- for ( ConflictId id : conflictIds )
- {
- if ( id.inDegree <= 0 )
- {
- continue;
- }
- if ( nearest == null || id.minDepth < nearest.minDepth
- || ( id.minDepth == nearest.minDepth && id.inDegree < nearest.inDegree ) )
- {
- nearest = id;
- }
- }
-
- nearest.inDegree = 0;
- roots.add( nearest );
-
- processRoots( sorted, roots );
- }
-
- Collection<Collection<Object>> cycles = Collections.emptySet();
- if ( cycle )
- {
- cycles = findCycles( conflictIds );
- }
-
- context.put( TransformationContextKeys.SORTED_CONFLICT_IDS, sorted );
- context.put( TransformationContextKeys.CYCLIC_CONFLICT_IDS, cycles );
-
- return cycles.size();
- }
-
- private void processRoots( List<Object> sorted, RootQueue roots )
- {
- while ( !roots.isEmpty() )
- {
- ConflictId root = roots.remove();
-
- sorted.add( root.key );
-
- for ( ConflictId child : root.children )
- {
- child.inDegree--;
- if ( child.inDegree == 0 )
- {
- roots.add( child );
- }
- }
- }
- }
-
- private Collection<Collection<Object>> findCycles( Collection<ConflictId> conflictIds )
- {
- Collection<Collection<Object>> cycles = new HashSet<Collection<Object>>();
-
- Map<Object, Integer> stack = new HashMap<Object, Integer>( 128 );
- Map<ConflictId, Object> visited = new IdentityHashMap<ConflictId, Object>( conflictIds.size() );
- for ( ConflictId id : conflictIds )
- {
- findCycles( id, visited, stack, cycles );
- }
-
- return cycles;
- }
-
- private void findCycles( ConflictId id, Map<ConflictId, Object> visited, Map<Object, Integer> stack,
- Collection<Collection<Object>> cycles )
- {
- Integer depth = stack.put( id.key, stack.size() );
- if ( depth != null )
- {
- stack.put( id.key, depth );
- Collection<Object> cycle = new HashSet<Object>();
- for ( Map.Entry<Object, Integer> entry : stack.entrySet() )
- {
- if ( entry.getValue() >= depth )
- {
- cycle.add( entry.getKey() );
- }
- }
- cycles.add( cycle );
- }
- else
- {
- if ( visited.put( id, Boolean.TRUE ) == null )
- {
- for ( ConflictId childId : id.children )
- {
- findCycles( childId, visited, stack, cycles );
- }
- }
- stack.remove( id.key );
- }
- }
-
- static final class ConflictId
- {
-
- final Object key;
-
- Collection<ConflictId> children = Collections.emptySet();
-
- int inDegree;
-
- int minDepth;
-
- public ConflictId( Object key, int depth )
- {
- this.key = key;
- this.minDepth = depth;
- }
-
- public void add( ConflictId child )
- {
- if ( children.isEmpty() )
- {
- children = new HashSet<ConflictId>();
- }
- if ( children.add( child ) )
- {
- child.inDegree++;
- }
- }
-
- public void pullup( int depth )
- {
- if ( depth < minDepth )
- {
- minDepth = depth;
- depth++;
- for ( ConflictId child : children )
- {
- child.pullup( depth );
- }
- }
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( !( obj instanceof ConflictId ) )
- {
- return false;
- }
- ConflictId that = (ConflictId) obj;
- return this.key.equals( that.key );
- }
-
- @Override
- public int hashCode()
- {
- return key.hashCode();
- }
-
- @Override
- public String toString()
- {
- return key + " @ " + minDepth + " <" + inDegree;
- }
-
- }
-
- static final class RootQueue
- {
-
- private int nextOut;
-
- private int nextIn;
-
- private ConflictId[] ids;
-
- RootQueue( int capacity )
- {
- ids = new ConflictId[capacity + 16];
- }
-
- boolean isEmpty()
- {
- return nextOut >= nextIn;
- }
-
- void add( ConflictId id )
- {
- if ( nextOut >= nextIn && nextOut > 0 )
- {
- nextIn -= nextOut;
- nextOut = 0;
- }
- if ( nextIn >= ids.length )
- {
- ConflictId[] tmp = new ConflictId[ids.length + ids.length / 2 + 16];
- System.arraycopy( ids, nextOut, tmp, 0, nextIn - nextOut );
- ids = tmp;
- nextIn -= nextOut;
- nextOut = 0;
- }
- int i;
- for ( i = nextIn - 1; i >= nextOut && id.minDepth < ids[i].minDepth; i-- )
- {
- ids[i + 1] = ids[i];
- }
- ids[i + 1] = id;
- nextIn++;
- }
-
- ConflictId remove()
- {
- return ids[nextOut++];
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictMarker.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictMarker.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictMarker.java
deleted file mode 100644
index fe2f5d5..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictMarker.java
+++ /dev/null
@@ -1,315 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.IdentityHashMap;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A dependency graph transformer that identifies conflicting dependencies. When this transformer has executed, the
- * transformation context holds a {@code Map<DependencyNode, Object>} where dependency nodes that belong to the same
- * conflict group will have an equal conflict identifier. This map is stored using the key
- * {@link TransformationContextKeys#CONFLICT_IDS}.
- */
-public final class ConflictMarker
- implements DependencyGraphTransformer
-{
-
- /**
- * After the execution of this method, every DependencyNode with an attached dependency is member of one conflict
- * group.
- *
- * @see DependencyGraphTransformer#transformGraph(DependencyNode, DependencyGraphTransformationContext)
- */
- public DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- @SuppressWarnings( "unchecked" )
- Map<String, Object> stats = (Map<String, Object>) context.get( TransformationContextKeys.STATS );
- long time1 = System.nanoTime();
-
- Map<DependencyNode, Object> nodes = new IdentityHashMap<DependencyNode, Object>( 1024 );
- Map<Object, ConflictGroup> groups = new HashMap<Object, ConflictGroup>( 1024 );
-
- analyze( node, nodes, groups, new int[] { 0 } );
-
- long time2 = System.nanoTime();
-
- Map<DependencyNode, Object> conflictIds = mark( nodes.keySet(), groups );
-
- context.put( TransformationContextKeys.CONFLICT_IDS, conflictIds );
-
- if ( stats != null )
- {
- long time3 = System.nanoTime();
- stats.put( "ConflictMarker.analyzeTime", time2 - time1 );
- stats.put( "ConflictMarker.markTime", time3 - time2 );
- stats.put( "ConflictMarker.nodeCount", nodes.size() );
- }
-
- return node;
- }
-
- private void analyze( DependencyNode node, Map<DependencyNode, Object> nodes, Map<Object, ConflictGroup> groups,
- int[] counter )
- {
- if ( nodes.put( node, Boolean.TRUE ) != null )
- {
- return;
- }
-
- Set<Object> keys = getKeys( node );
- if ( !keys.isEmpty() )
- {
- ConflictGroup group = null;
- boolean fixMappings = false;
-
- for ( Object key : keys )
- {
- ConflictGroup g = groups.get( key );
-
- if ( group != g )
- {
- if ( group == null )
- {
- Set<Object> newKeys = merge( g.keys, keys );
- if ( newKeys == g.keys )
- {
- group = g;
- break;
- }
- else
- {
- group = new ConflictGroup( newKeys, counter[0]++ );
- fixMappings = true;
- }
- }
- else if ( g == null )
- {
- fixMappings = true;
- }
- else
- {
- Set<Object> newKeys = merge( g.keys, group.keys );
- if ( newKeys == g.keys )
- {
- group = g;
- fixMappings = false;
- break;
- }
- else if ( newKeys != group.keys )
- {
- group = new ConflictGroup( newKeys, counter[0]++ );
- fixMappings = true;
- }
- }
- }
- }
-
- if ( group == null )
- {
- group = new ConflictGroup( keys, counter[0]++ );
- fixMappings = true;
- }
- if ( fixMappings )
- {
- for ( Object key : group.keys )
- {
- groups.put( key, group );
- }
- }
- }
-
- for ( DependencyNode child : node.getChildren() )
- {
- analyze( child, nodes, groups, counter );
- }
- }
-
- private Set<Object> merge( Set<Object> keys1, Set<Object> keys2 )
- {
- int size1 = keys1.size();
- int size2 = keys2.size();
-
- if ( size1 < size2 )
- {
- if ( keys2.containsAll( keys1 ) )
- {
- return keys2;
- }
- }
- else
- {
- if ( keys1.containsAll( keys2 ) )
- {
- return keys1;
- }
- }
-
- Set<Object> keys = new HashSet<Object>();
- keys.addAll( keys1 );
- keys.addAll( keys2 );
- return keys;
- }
-
- private Set<Object> getKeys( DependencyNode node )
- {
- Set<Object> keys;
-
- Dependency dependency = node.getDependency();
-
- if ( dependency == null )
- {
- keys = Collections.emptySet();
- }
- else
- {
- Object key = toKey( dependency.getArtifact() );
-
- if ( node.getRelocations().isEmpty() && node.getAliases().isEmpty() )
- {
- keys = Collections.singleton( key );
- }
- else
- {
- keys = new HashSet<Object>();
- keys.add( key );
-
- for ( Artifact relocation : node.getRelocations() )
- {
- key = toKey( relocation );
- keys.add( key );
- }
-
- for ( Artifact alias : node.getAliases() )
- {
- key = toKey( alias );
- keys.add( key );
- }
- }
- }
-
- return keys;
- }
-
- private Map<DependencyNode, Object> mark( Collection<DependencyNode> nodes, Map<Object, ConflictGroup> groups )
- {
- Map<DependencyNode, Object> conflictIds = new IdentityHashMap<DependencyNode, Object>( nodes.size() + 1 );
-
- for ( DependencyNode node : nodes )
- {
- Dependency dependency = node.getDependency();
- if ( dependency != null )
- {
- Object key = toKey( dependency.getArtifact() );
- conflictIds.put( node, groups.get( key ).index );
- }
- }
-
- return conflictIds;
- }
-
- private static Object toKey( Artifact artifact )
- {
- return new Key( artifact );
- }
-
- static class ConflictGroup
- {
-
- final Set<Object> keys;
-
- final int index;
-
- public ConflictGroup( Set<Object> keys, int index )
- {
- this.keys = keys;
- this.index = index;
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( keys );
- }
-
- }
-
- static class Key
- {
-
- private final Artifact artifact;
-
- public Key( Artifact artifact )
- {
- this.artifact = artifact;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
- return true;
- }
- else if ( !( obj instanceof Key ) )
- {
- return false;
- }
- Key that = (Key) obj;
- return artifact.getArtifactId().equals( that.artifact.getArtifactId() )
- && artifact.getGroupId().equals( that.artifact.getGroupId() )
- && artifact.getExtension().equals( that.artifact.getExtension() )
- && artifact.getClassifier().equals( that.artifact.getClassifier() );
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + artifact.getArtifactId().hashCode();
- hash = hash * 31 + artifact.getGroupId().hashCode();
- hash = hash * 31 + artifact.getClassifier().hashCode();
- hash = hash * 31 + artifact.getExtension().hashCode();
- return hash;
- }
-
- @Override
- public String toString()
- {
- return artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getClassifier() + ':'
- + artifact.getExtension();
- }
-
- }
-
-}
[45/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java b/aether-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java
deleted file mode 100644
index 31259ca..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/RemoteRepository.java
+++ /dev/null
@@ -1,582 +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.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * A repository on a remote server.
- */
-public final class RemoteRepository
- implements ArtifactRepository
-{
-
- private static final Pattern URL_PATTERN =
- Pattern.compile( "([^:/]+(:[^:/]{2,}+(?=://))?):(//([^@/]*@)?([^/:]+))?.*" );
-
- private final String id;
-
- private final String type;
-
- private final String url;
-
- private final String host;
-
- private final String protocol;
-
- private final RepositoryPolicy releasePolicy;
-
- private final RepositoryPolicy snapshotPolicy;
-
- private final Proxy proxy;
-
- private final Authentication authentication;
-
- private final List<RemoteRepository> mirroredRepositories;
-
- private final boolean repositoryManager;
-
- RemoteRepository( Builder builder )
- {
- if ( builder.prototype != null )
- {
- id = ( builder.delta & Builder.ID ) != 0 ? builder.id : builder.prototype.id;
- type = ( builder.delta & Builder.TYPE ) != 0 ? builder.type : builder.prototype.type;
- url = ( builder.delta & Builder.URL ) != 0 ? builder.url : builder.prototype.url;
- releasePolicy =
- ( builder.delta & Builder.RELEASES ) != 0 ? builder.releasePolicy : builder.prototype.releasePolicy;
- snapshotPolicy =
- ( builder.delta & Builder.SNAPSHOTS ) != 0 ? builder.snapshotPolicy : builder.prototype.snapshotPolicy;
- proxy = ( builder.delta & Builder.PROXY ) != 0 ? builder.proxy : builder.prototype.proxy;
- authentication =
- ( builder.delta & Builder.AUTH ) != 0 ? builder.authentication : builder.prototype.authentication;
- repositoryManager =
- ( builder.delta & Builder.REPOMAN ) != 0 ? builder.repositoryManager
- : builder.prototype.repositoryManager;
- mirroredRepositories =
- ( builder.delta & Builder.MIRRORED ) != 0 ? copy( builder.mirroredRepositories )
- : builder.prototype.mirroredRepositories;
- }
- else
- {
- id = builder.id;
- type = builder.type;
- url = builder.url;
- releasePolicy = builder.releasePolicy;
- snapshotPolicy = builder.snapshotPolicy;
- proxy = builder.proxy;
- authentication = builder.authentication;
- repositoryManager = builder.repositoryManager;
- mirroredRepositories = copy( builder.mirroredRepositories );
- }
-
- Matcher m = URL_PATTERN.matcher( url );
- if ( m.matches() )
- {
- protocol = m.group( 1 );
- String host = m.group( 5 );
- this.host = ( host != null ) ? host : "";
- }
- else
- {
- protocol = host = "";
- }
- }
-
- private static List<RemoteRepository> copy( List<RemoteRepository> repos )
- {
- if ( repos == null || repos.isEmpty() )
- {
- return Collections.emptyList();
- }
- return Collections.unmodifiableList( Arrays.asList( repos.toArray( new RemoteRepository[repos.size()] ) ) );
- }
-
- public String getId()
- {
- return id;
- }
-
- public String getContentType()
- {
- return type;
- }
-
- /**
- * Gets the (base) URL of this repository.
- *
- * @return The (base) URL of this repository, never {@code null}.
- */
- public String getUrl()
- {
- return url;
- }
-
- /**
- * Gets the protocol part from the repository's URL, for example {@code file} or {@code http}. As suggested by RFC
- * 2396, section 3.1 "Scheme Component", the protocol name should be treated case-insensitively.
- *
- * @return The protocol or an empty string if none, never {@code null}.
- */
- public String getProtocol()
- {
- return protocol;
- }
-
- /**
- * Gets the host part from the repository's URL.
- *
- * @return The host or an empty string if none, never {@code null}.
- */
- public String getHost()
- {
- return host;
- }
-
- /**
- * Gets the policy to apply for snapshot/release artifacts.
- *
- * @param snapshot {@code true} to retrieve the snapshot policy, {@code false} to retrieve the release policy.
- * @return The requested repository policy, never {@code null}.
- */
- public RepositoryPolicy getPolicy( boolean snapshot )
- {
- return snapshot ? snapshotPolicy : releasePolicy;
- }
-
- /**
- * Gets the proxy that has been selected for this repository.
- *
- * @return The selected proxy or {@code null} if none.
- */
- public Proxy getProxy()
- {
- return proxy;
- }
-
- /**
- * Gets the authentication that has been selected for this repository.
- *
- * @return The selected authentication or {@code null} if none.
- */
- public Authentication getAuthentication()
- {
- return authentication;
- }
-
- /**
- * Gets the repositories that this repository serves as a mirror for.
- *
- * @return The (read-only) repositories being mirrored by this repository, never {@code null}.
- */
- public List<RemoteRepository> getMirroredRepositories()
- {
- return mirroredRepositories;
- }
-
- /**
- * Indicates whether this repository refers to a repository manager or not.
- *
- * @return {@code true} if this repository is a repository manager, {@code false} otherwise.
- */
- public boolean isRepositoryManager()
- {
- return repositoryManager;
- }
-
- @Override
- public String toString()
- {
- StringBuilder buffer = new StringBuilder( 256 );
- buffer.append( getId() );
- buffer.append( " (" ).append( getUrl() );
- buffer.append( ", " ).append( getContentType() );
- boolean r = getPolicy( false ).isEnabled(), s = getPolicy( true ).isEnabled();
- if ( r && s )
- {
- buffer.append( ", releases+snapshots" );
- }
- else if ( r )
- {
- buffer.append( ", releases" );
- }
- else if ( s )
- {
- buffer.append( ", snapshots" );
- }
- else
- {
- buffer.append( ", disabled" );
- }
- if ( isRepositoryManager() )
- {
- buffer.append( ", managed" );
- }
- buffer.append( ")" );
- return buffer.toString();
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- RemoteRepository that = (RemoteRepository) obj;
-
- return eq( url, that.url ) && eq( type, that.type ) && eq( id, that.id )
- && eq( releasePolicy, that.releasePolicy ) && eq( snapshotPolicy, that.snapshotPolicy )
- && eq( proxy, that.proxy ) && eq( authentication, that.authentication )
- && eq( mirroredRepositories, that.mirroredRepositories ) && repositoryManager == that.repositoryManager;
- }
-
- private static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + hash( url );
- hash = hash * 31 + hash( type );
- hash = hash * 31 + hash( id );
- hash = hash * 31 + hash( releasePolicy );
- hash = hash * 31 + hash( snapshotPolicy );
- hash = hash * 31 + hash( proxy );
- hash = hash * 31 + hash( authentication );
- hash = hash * 31 + hash( mirroredRepositories );
- hash = hash * 31 + ( repositoryManager ? 1 : 0 );
- return hash;
- }
-
- private static int hash( Object obj )
- {
- return obj != null ? obj.hashCode() : 0;
- }
-
- /**
- * A builder to create remote repositories.
- */
- public static final class Builder
- {
-
- private static final RepositoryPolicy DEFAULT_POLICY = new RepositoryPolicy();
-
- static final int ID = 0x0001, TYPE = 0x0002, URL = 0x0004, RELEASES = 0x0008, SNAPSHOTS = 0x0010,
- PROXY = 0x0020, AUTH = 0x0040, MIRRORED = 0x0080, REPOMAN = 0x0100;
-
- int delta;
-
- RemoteRepository prototype;
-
- String id;
-
- String type;
-
- String url;
-
- RepositoryPolicy releasePolicy = DEFAULT_POLICY;
-
- RepositoryPolicy snapshotPolicy = DEFAULT_POLICY;
-
- Proxy proxy;
-
- Authentication authentication;
-
- List<RemoteRepository> mirroredRepositories;
-
- boolean repositoryManager;
-
- /**
- * Creates a new repository builder.
- *
- * @param id The identifier of the repository, may be {@code null}.
- * @param type The type of the repository, may be {@code null}.
- * @param url The (base) URL of the repository, may be {@code null}.
- */
- public Builder( String id, String type, String url )
- {
- this.id = ( id != null ) ? id : "";
- this.type = ( type != null ) ? type : "";
- this.url = ( url != null ) ? url : "";
- }
-
- /**
- * Creates a new repository builder which uses the specified remote repository as a prototype for the new one.
- * All properties which have not been set on the builder will be copied from the prototype when building the
- * repository.
- *
- * @param prototype The remote repository to use as prototype, must not be {@code null}.
- */
- public Builder( RemoteRepository prototype )
- {
- if ( prototype == null )
- {
- throw new IllegalArgumentException( "repository prototype missing" );
- }
- this.prototype = prototype;
- }
-
- /**
- * Builds a new remote repository from the current values of this builder. The state of the builder itself
- * remains unchanged.
- *
- * @return The remote repository, never {@code null}.
- */
- public RemoteRepository build()
- {
- if ( prototype != null && delta == 0 )
- {
- return prototype;
- }
- return new RemoteRepository( this );
- }
-
- private <T> void delta( int flag, T builder, T prototype )
- {
- boolean equal = ( builder != null ) ? builder.equals( prototype ) : prototype == null;
- if ( equal )
- {
- delta &= ~flag;
- }
- else
- {
- delta |= flag;
- }
- }
-
- /**
- * Sets the identifier of the repository.
- *
- * @param id The identifier of the repository, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public Builder setId( String id )
- {
- this.id = ( id != null ) ? id : "";
- if ( prototype != null )
- {
- delta( ID, this.id, prototype.getId() );
- }
- return this;
- }
-
- /**
- * Sets the type of the repository, e.g. "default".
- *
- * @param type The type of the repository, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public Builder setContentType( String type )
- {
- this.type = ( type != null ) ? type : "";
- if ( prototype != null )
- {
- delta( TYPE, this.type, prototype.getContentType() );
- }
- return this;
- }
-
- /**
- * Sets the (base) URL of the repository.
- *
- * @param url The URL of the repository, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public Builder setUrl( String url )
- {
- this.url = ( url != null ) ? url : "";
- if ( prototype != null )
- {
- delta( URL, this.url, prototype.getUrl() );
- }
- return this;
- }
-
- /**
- * Sets the policy to apply for snapshot and release artifacts.
- *
- * @param policy The repository policy to set, may be {@code null} to use a default policy.
- * @return This builder for chaining, never {@code null}.
- */
- public Builder setPolicy( RepositoryPolicy policy )
- {
- this.releasePolicy = this.snapshotPolicy = ( policy != null ) ? policy : DEFAULT_POLICY;
- if ( prototype != null )
- {
- delta( RELEASES, this.releasePolicy, prototype.getPolicy( false ) );
- delta( SNAPSHOTS, this.snapshotPolicy, prototype.getPolicy( true ) );
- }
- return this;
- }
-
- /**
- * Sets the policy to apply for release artifacts.
- *
- * @param releasePolicy The repository policy to set, may be {@code null} to use a default policy.
- * @return This builder for chaining, never {@code null}.
- */
- public Builder setReleasePolicy( RepositoryPolicy releasePolicy )
- {
- this.releasePolicy = ( releasePolicy != null ) ? releasePolicy : DEFAULT_POLICY;
- if ( prototype != null )
- {
- delta( RELEASES, this.releasePolicy, prototype.getPolicy( false ) );
- }
- return this;
- }
-
- /**
- * Sets the policy to apply for snapshot artifacts.
- *
- * @param snapshotPolicy The repository policy to set, may be {@code null} to use a default policy.
- * @return This builder for chaining, never {@code null}.
- */
- public Builder setSnapshotPolicy( RepositoryPolicy snapshotPolicy )
- {
- this.snapshotPolicy = ( snapshotPolicy != null ) ? snapshotPolicy : DEFAULT_POLICY;
- if ( prototype != null )
- {
- delta( SNAPSHOTS, this.snapshotPolicy, prototype.getPolicy( true ) );
- }
- return this;
- }
-
- /**
- * Sets the proxy to use in order to access the repository.
- *
- * @param proxy The proxy to use, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public Builder setProxy( Proxy proxy )
- {
- this.proxy = proxy;
- if ( prototype != null )
- {
- delta( PROXY, this.proxy, prototype.getProxy() );
- }
- return this;
- }
-
- /**
- * Sets the authentication to use in order to access the repository.
- *
- * @param authentication The authentication to use, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public Builder setAuthentication( Authentication authentication )
- {
- this.authentication = authentication;
- if ( prototype != null )
- {
- delta( AUTH, this.authentication, prototype.getAuthentication() );
- }
- return this;
- }
-
- /**
- * Sets the repositories being mirrored by the repository.
- *
- * @param mirroredRepositories The repositories being mirrored by the repository, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public Builder setMirroredRepositories( List<RemoteRepository> mirroredRepositories )
- {
- if ( this.mirroredRepositories == null )
- {
- this.mirroredRepositories = new ArrayList<RemoteRepository>();
- }
- else
- {
- this.mirroredRepositories.clear();
- }
- if ( mirroredRepositories != null )
- {
- this.mirroredRepositories.addAll( mirroredRepositories );
- }
- if ( prototype != null )
- {
- delta( MIRRORED, this.mirroredRepositories, prototype.getMirroredRepositories() );
- }
- return this;
- }
-
- /**
- * Adds the specified repository to the list of repositories being mirrored by the repository. If this builder
- * was {@link #RemoteRepository.Builder(RemoteRepository) constructed from a prototype}, the given repository
- * will be added to the list of mirrored repositories from the prototype.
- *
- * @param mirroredRepository The repository being mirrored by the repository, may be {@code null}.
- * @return This builder for chaining, never {@code null}.
- */
- public Builder addMirroredRepository( RemoteRepository mirroredRepository )
- {
- if ( mirroredRepository != null )
- {
- if ( this.mirroredRepositories == null )
- {
- this.mirroredRepositories = new ArrayList<RemoteRepository>();
- if ( prototype != null )
- {
- mirroredRepositories.addAll( prototype.getMirroredRepositories() );
- }
- }
- mirroredRepositories.add( mirroredRepository );
- if ( prototype != null )
- {
- delta |= MIRRORED;
- }
- }
- return this;
- }
-
- /**
- * Marks the repository as a repository manager or not.
- *
- * @param repositoryManager {@code true} if the repository points at a repository manager, {@code false} if the
- * repository is just serving static contents.
- * @return This builder for chaining, never {@code null}.
- */
- public Builder setRepositoryManager( boolean repositoryManager )
- {
- this.repositoryManager = repositoryManager;
- if ( prototype != null )
- {
- delta( REPOMAN, this.repositoryManager, prototype.isRepositoryManager() );
- }
- return this;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/RepositoryPolicy.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/RepositoryPolicy.java b/aether-api/src/main/java/org/eclipse/aether/repository/RepositoryPolicy.java
deleted file mode 100644
index 18fb850..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/RepositoryPolicy.java
+++ /dev/null
@@ -1,161 +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 policy controlling access to a repository.
- */
-public final class RepositoryPolicy
-{
-
- /**
- * Never update locally cached data.
- */
- public static final String UPDATE_POLICY_NEVER = "never";
-
- /**
- * Always update locally cached data.
- */
- public static final String UPDATE_POLICY_ALWAYS = "always";
-
- /**
- * Update locally cached data once a day.
- */
- public static final String UPDATE_POLICY_DAILY = "daily";
-
- /**
- * Update locally cached data every X minutes as given by "interval:X".
- */
- public static final String UPDATE_POLICY_INTERVAL = "interval";
-
- /**
- * Verify checksums and fail the resolution if they do not match.
- */
- public static final String CHECKSUM_POLICY_FAIL = "fail";
-
- /**
- * Verify checksums and warn if they do not match.
- */
- public static final String CHECKSUM_POLICY_WARN = "warn";
-
- /**
- * Do not verify checksums.
- */
- public static final String CHECKSUM_POLICY_IGNORE = "ignore";
-
- private final boolean enabled;
-
- private final String updatePolicy;
-
- private final String checksumPolicy;
-
- /**
- * Creates a new policy with checksum warnings and daily update checks.
- */
- public RepositoryPolicy()
- {
- this( true, UPDATE_POLICY_DAILY, CHECKSUM_POLICY_WARN );
- }
-
- /**
- * Creates a new policy with the specified settings.
- *
- * @param enabled A flag whether the associated repository should be accessed or not.
- * @param updatePolicy The update interval after which locally cached data from the repository is considered stale
- * and should be refetched, may be {@code null}.
- * @param checksumPolicy The way checksum verification should be handled, may be {@code null}.
- */
- public RepositoryPolicy( boolean enabled, String updatePolicy, String checksumPolicy )
- {
- this.enabled = enabled;
- this.updatePolicy = ( updatePolicy != null ) ? updatePolicy : "";
- this.checksumPolicy = ( checksumPolicy != null ) ? checksumPolicy : "";
- }
-
- /**
- * Indicates whether the associated repository should be contacted or not.
- *
- * @return {@code true} if the repository should be contacted, {@code false} otherwise.
- */
- public boolean isEnabled()
- {
- return enabled;
- }
-
- /**
- * Gets the update policy for locally cached data from the repository.
- *
- * @return The update policy, never {@code null}.
- */
- public String getUpdatePolicy()
- {
- return updatePolicy;
- }
-
- /**
- * Gets the policy for checksum validation.
- *
- * @return The checksum policy, never {@code null}.
- */
- public String getChecksumPolicy()
- {
- return checksumPolicy;
- }
-
- @Override
- public String toString()
- {
- StringBuilder buffer = new StringBuilder( 256 );
- buffer.append( "enabled=" ).append( isEnabled() );
- buffer.append( ", checksums=" ).append( getChecksumPolicy() );
- buffer.append( ", updates=" ).append( getUpdatePolicy() );
- return buffer.toString();
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
-
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- RepositoryPolicy that = (RepositoryPolicy) obj;
-
- return enabled == that.enabled && updatePolicy.equals( that.updatePolicy )
- && checksumPolicy.equals( that.checksumPolicy );
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + ( enabled ? 1 : 0 );
- hash = hash * 31 + updatePolicy.hashCode();
- hash = hash * 31 + checksumPolicy.hashCode();
- return hash;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/WorkspaceReader.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/WorkspaceReader.java b/aether-api/src/main/java/org/eclipse/aether/repository/WorkspaceReader.java
deleted file mode 100644
index d1140f3..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/WorkspaceReader.java
+++ /dev/null
@@ -1,58 +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.io.File;
-import java.util.List;
-
-import org.eclipse.aether.artifact.Artifact;
-
-/**
- * Manages a repository backed by the IDE workspace, a build session or a similar ad-hoc collection of artifacts.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getWorkspaceReader()
- */
-public interface WorkspaceReader
-{
-
- /**
- * Gets a description of the workspace repository.
- *
- * @return The repository description, never {@code null}.
- */
- WorkspaceRepository getRepository();
-
- /**
- * Locates the specified artifact.
- *
- * @param artifact The artifact to locate, must not be {@code null}.
- * @return The path to the artifact or {@code null} if the artifact is not available.
- */
- File findArtifact( Artifact artifact );
-
- /**
- * Determines all available versions of the specified artifact.
- *
- * @param artifact The artifact whose versions should be listed, must not be {@code null}.
- * @return The available versions of the artifact, must not be {@code null}.
- */
- List<String> findVersions( Artifact artifact );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/WorkspaceRepository.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/WorkspaceRepository.java b/aether-api/src/main/java/org/eclipse/aether/repository/WorkspaceRepository.java
deleted file mode 100644
index 38dc5c5..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/WorkspaceRepository.java
+++ /dev/null
@@ -1,122 +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.UUID;
-
-/**
- * A repository backed by an IDE workspace, the output of a build session or similar ad-hoc collection of artifacts. As
- * far as the repository system is concerned, a workspace repository is read-only, i.e. can only be used for artifact
- * resolution but not installation/deployment. Note that this class merely describes such a repository, actual access to
- * the contained artifacts is handled by a {@link WorkspaceReader}.
- */
-public final class WorkspaceRepository
- implements ArtifactRepository
-{
-
- private final String type;
-
- private final Object key;
-
- /**
- * Creates a new workspace repository of type {@code "workspace"} and a random key.
- */
- public WorkspaceRepository()
- {
- this( "workspace" );
- }
-
- /**
- * Creates a new workspace repository with the specified type and a random key.
- *
- * @param type The type of the repository, may be {@code null}.
- */
- public WorkspaceRepository( String type )
- {
- this( type, null );
- }
-
- /**
- * Creates a new workspace repository with the specified type and key. The key is used to distinguish one workspace
- * from another and should be sensitive to the artifacts that are (potentially) available in the workspace.
- *
- * @param type The type of the repository, may be {@code null}.
- * @param key The (comparison) key for the repository, may be {@code null} to generate a unique random key.
- */
- public WorkspaceRepository( String type, Object key )
- {
- this.type = ( type != null ) ? type : "";
- this.key = ( key != null ) ? key : UUID.randomUUID().toString().replace( "-", "" );
- }
-
- public String getContentType()
- {
- return type;
- }
-
- public String getId()
- {
- return "workspace";
- }
-
- /**
- * Gets the key of this workspace repository. The key is used to distinguish one workspace from another and should
- * be sensitive to the artifacts that are (potentially) available in the workspace.
- *
- * @return The (comparison) key for this workspace repository, never {@code null}.
- */
- public Object getKey()
- {
- return key;
- }
-
- @Override
- public String toString()
- {
- return "(" + getContentType() + ")";
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- WorkspaceRepository that = (WorkspaceRepository) obj;
-
- return getContentType().equals( that.getContentType() ) && getKey().equals( that.getKey() );
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + getKey().hashCode();
- hash = hash * 31 + getContentType().hashCode();
- return hash;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/repository/package-info.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/repository/package-info.java b/aether-api/src/main/java/org/eclipse/aether/repository/package-info.java
deleted file mode 100644
index 538e7f1..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/repository/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 various kinds of repositories that host artifacts.
- */
-package org.eclipse.aether.repository;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorException.java b/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorException.java
deleted file mode 100644
index d645a82..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorException.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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 unreadable or unresolvable artifact descriptor.
- */
-public class ArtifactDescriptorException
- extends RepositoryException
-{
-
- private final transient ArtifactDescriptorResult result;
-
- /**
- * Creates a new exception with the specified result.
- *
- * @param result The descriptor result at the point the exception occurred, may be {@code null}.
- */
- public ArtifactDescriptorException( ArtifactDescriptorResult result )
- {
- super( "Failed to read artifact descriptor"
- + ( result != null ? " for " + result.getRequest().getArtifact() : "" ), getCause( result ) );
- this.result = result;
- }
-
- /**
- * Creates a new exception with the specified result and detail message.
- *
- * @param result The descriptor result at the point the exception occurred, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public ArtifactDescriptorException( ArtifactDescriptorResult result, String message )
- {
- super( message, getCause( result ) );
- this.result = result;
- }
-
- /**
- * Creates a new exception with the specified result, detail message and cause.
- *
- * @param result The descriptor result at the point the exception occurred, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public ArtifactDescriptorException( ArtifactDescriptorResult result, String message, Throwable cause )
- {
- super( message, cause );
- this.result = result;
- }
-
- /**
- * Gets the descriptor result at the point the exception occurred. Despite being incomplete, callers might want to
- * use this result to fail gracefully and continue their operation with whatever interim data has been gathered.
- *
- * @return The descriptor result or {@code null} if unknown.
- */
- public ArtifactDescriptorResult getResult()
- {
- return result;
- }
-
- private static Throwable getCause( ArtifactDescriptorResult result )
- {
- Throwable cause = null;
- if ( result != null && !result.getExceptions().isEmpty() )
- {
- cause = result.getExceptions().get( 0 );
- }
- return cause;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorPolicy.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorPolicy.java b/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorPolicy.java
deleted file mode 100644
index c4de9b2..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorPolicy.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.RepositorySystemSession;
-
-/**
- * Controls the handling of errors related to reading an artifact descriptor.
- *
- * @see RepositorySystemSession#getArtifactDescriptorPolicy()
- */
-public interface ArtifactDescriptorPolicy
-{
-
- /**
- * Bit mask indicating that errors while reading the artifact descriptor should not be tolerated.
- */
- int STRICT = 0x00;
-
- /**
- * Bit flag indicating that missing artifact descriptors should be silently ignored.
- */
- int IGNORE_MISSING = 0x01;
-
- /**
- * Bit flag indicating that existent but invalid artifact descriptors should be silently ignored.
- */
- int IGNORE_INVALID = 0x02;
-
- /**
- * Bit mask indicating that all errors should be silently ignored.
- */
- int IGNORE_ERRORS = IGNORE_MISSING | IGNORE_INVALID;
-
- /**
- * Gets the error policy for an artifact's descriptor.
- *
- * @param session The repository session during which the policy is determined, must not be {@code null}.
- * @param request The policy request holding further details, must not be {@code null}.
- * @return The bit mask describing the desired error policy.
- */
- int getPolicy( RepositorySystemSession session, ArtifactDescriptorPolicyRequest request );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorPolicyRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorPolicyRequest.java b/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorPolicyRequest.java
deleted file mode 100644
index ffaac16..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorPolicyRequest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.artifact.Artifact;
-
-/**
- * A query for the error policy for a given artifact's descriptor.
- *
- * @see ArtifactDescriptorPolicy
- */
-public final class ArtifactDescriptorPolicyRequest
-{
-
- private Artifact artifact;
-
- private String context = "";
-
- /**
- * Creates an uninitialized request.
- */
- public ArtifactDescriptorPolicyRequest()
- {
- // enables default constructor
- }
-
- /**
- * Creates a request for the specified artifact.
- *
- * @param artifact The artifact for whose descriptor to determine the error policy, may be {@code null}.
- * @param context The context in which this request is made, may be {@code null}.
- */
- public ArtifactDescriptorPolicyRequest( Artifact artifact, String context )
- {
- setArtifact( artifact );
- setRequestContext( context );
- }
-
- /**
- * Gets the artifact for whose descriptor to determine the error policy.
- *
- * @return The artifact for whose descriptor to determine the error policy or {@code null} if not set.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Sets the artifact for whose descriptor to determine the error policy.
- *
- * @param artifact The artifact for whose descriptor to determine the error policy, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ArtifactDescriptorPolicyRequest setArtifact( Artifact artifact )
- {
- this.artifact = artifact;
- return this;
- }
-
- /**
- * Gets the context in which this request is made.
- *
- * @return The context, never {@code null}.
- */
- public String getRequestContext()
- {
- return context;
- }
-
- /**
- * Sets the context in which this request is made.
- *
- * @param context The context, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ArtifactDescriptorPolicyRequest setRequestContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- return this;
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( getArtifact() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorRequest.java b/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorRequest.java
deleted file mode 100644
index 387b1dc..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorRequest.java
+++ /dev/null
@@ -1,190 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.Collections;
-import java.util.List;
-
-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.repository.RemoteRepository;
-
-/**
- * A request to read an artifact descriptor.
- *
- * @see RepositorySystem#readArtifactDescriptor(RepositorySystemSession, ArtifactDescriptorRequest)
- */
-public final class ArtifactDescriptorRequest
-{
-
- private Artifact artifact;
-
- private List<RemoteRepository> repositories = Collections.emptyList();
-
- private String context = "";
-
- private RequestTrace trace;
-
- /**
- * Creates an uninitialized request.
- */
- public ArtifactDescriptorRequest()
- {
- // enables default constructor
- }
-
- /**
- * Creates a request with the specified properties.
- *
- * @param artifact The artifact whose descriptor should be read, may be {@code null}.
- * @param repositories The repositories to resolve the descriptor from, may be {@code null}.
- * @param context The context in which this request is made, may be {@code null}.
- */
- public ArtifactDescriptorRequest( Artifact artifact, List<RemoteRepository> repositories, String context )
- {
- setArtifact( artifact );
- setRepositories( repositories );
- setRequestContext( context );
- }
-
- /**
- * Gets the artifact whose descriptor shall be read.
- *
- * @return The artifact or {@code null} if not set.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Sets the artifact whose descriptor shall be read. Eventually, a valid request must have an artifact set.
- *
- * @param artifact The artifact, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ArtifactDescriptorRequest setArtifact( Artifact artifact )
- {
- this.artifact = artifact;
- return this;
- }
-
- /**
- * Gets the repositories to resolve the descriptor from.
- *
- * @return The repositories, never {@code null}.
- */
- public List<RemoteRepository> getRepositories()
- {
- return repositories;
- }
-
- /**
- * Sets the repositories to resolve the descriptor from.
- *
- * @param repositories The repositories, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ArtifactDescriptorRequest setRepositories( List<RemoteRepository> repositories )
- {
- if ( repositories == null )
- {
- this.repositories = Collections.emptyList();
- }
- else
- {
- this.repositories = repositories;
- }
- return this;
- }
-
- /**
- * Adds the specified repository for the resolution of the artifact descriptor.
- *
- * @param repository The repository to add, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ArtifactDescriptorRequest addRepository( RemoteRepository repository )
- {
- if ( repository != null )
- {
- if ( this.repositories.isEmpty() )
- {
- this.repositories = new ArrayList<RemoteRepository>();
- }
- this.repositories.add( repository );
- }
- return this;
- }
-
- /**
- * Gets the context in which this request is made.
- *
- * @return The context, never {@code null}.
- */
- public String getRequestContext()
- {
- return context;
- }
-
- /**
- * Sets the context in which this request is made.
- *
- * @param context The context, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ArtifactDescriptorRequest setRequestContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- 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 ArtifactDescriptorRequest setTrace( RequestTrace trace )
- {
- this.trace = trace;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getArtifact() + " < " + getRepositories();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorResult.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorResult.java b/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorResult.java
deleted file mode 100644
index 4c53b6e..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactDescriptorResult.java
+++ /dev/null
@@ -1,466 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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 java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.repository.ArtifactRepository;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * The result from reading an artifact descriptor.
- *
- * @see RepositorySystem#readArtifactDescriptor(RepositorySystemSession, ArtifactDescriptorRequest)
- */
-public final class ArtifactDescriptorResult
-{
-
- private final ArtifactDescriptorRequest request;
-
- private List<Exception> exceptions;
-
- private List<Artifact> relocations;
-
- private Collection<Artifact> aliases;
-
- private Artifact artifact;
-
- private ArtifactRepository repository;
-
- private List<Dependency> dependencies;
-
- private List<Dependency> managedDependencies;
-
- private List<RemoteRepository> repositories;
-
- private Map<String, Object> properties;
-
- /**
- * Creates a new result for the specified request.
- *
- * @param request The descriptor request, must not be {@code null}.
- */
- public ArtifactDescriptorResult( ArtifactDescriptorRequest request )
- {
- if ( request == null )
- {
- throw new IllegalArgumentException( "artifact descriptor request has not been specified" );
- }
- this.request = request;
- artifact = request.getArtifact();
- exceptions = Collections.emptyList();
- relocations = Collections.emptyList();
- aliases = Collections.emptyList();
- dependencies = managedDependencies = Collections.emptyList();
- repositories = Collections.emptyList();
- properties = Collections.emptyMap();
- }
-
- /**
- * Gets the descriptor request that was made.
- *
- * @return The descriptor request, never {@code null}.
- */
- public ArtifactDescriptorRequest getRequest()
- {
- return request;
- }
-
- /**
- * Gets the exceptions that occurred while reading the artifact descriptor.
- *
- * @return The exceptions that occurred, never {@code null}.
- */
- public List<Exception> getExceptions()
- {
- return exceptions;
- }
-
- /**
- * Sets the exceptions that occurred while reading the artifact descriptor.
- *
- * @param exceptions The exceptions that occurred, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult setExceptions( List<Exception> exceptions )
- {
- if ( exceptions == null )
- {
- this.exceptions = Collections.emptyList();
- }
- else
- {
- this.exceptions = exceptions;
- }
- return this;
- }
-
- /**
- * Records the specified exception while reading the artifact descriptor.
- *
- * @param exception The exception to record, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult addException( Exception exception )
- {
- if ( exception != null )
- {
- if ( exceptions.isEmpty() )
- {
- exceptions = new ArrayList<Exception>();
- }
- exceptions.add( exception );
- }
- return this;
- }
-
- /**
- * Gets the relocations that were processed to read the artifact descriptor. The returned list denotes the hops that
- * lead to the final artifact coordinates as given by {@link #getArtifact()}.
- *
- * @return The relocations that were processed, never {@code null}.
- */
- public List<Artifact> getRelocations()
- {
- return relocations;
- }
-
- /**
- * Sets the relocations that were processed to read the artifact descriptor.
- *
- * @param relocations The relocations that were processed, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult setRelocations( List<Artifact> relocations )
- {
- if ( relocations == null )
- {
- this.relocations = Collections.emptyList();
- }
- else
- {
- this.relocations = relocations;
- }
- return this;
- }
-
- /**
- * Records the specified relocation hop while locating the artifact descriptor.
- *
- * @param artifact The artifact that got relocated, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult addRelocation( Artifact artifact )
- {
- if ( artifact != null )
- {
- if ( relocations.isEmpty() )
- {
- relocations = new ArrayList<Artifact>();
- }
- relocations.add( artifact );
- }
- return this;
- }
-
- /**
- * Gets the known aliases for this artifact. An alias denotes a different artifact with (almost) the same contents
- * and 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 aliases of the artifact, never {@code null}.
- */
- public Collection<Artifact> getAliases()
- {
- return aliases;
- }
-
- /**
- * Sets the aliases of the artifact.
- *
- * @param aliases The aliases of the artifact, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult setAliases( Collection<Artifact> aliases )
- {
- if ( aliases == null )
- {
- this.aliases = Collections.emptyList();
- }
- else
- {
- this.aliases = aliases;
- }
- return this;
- }
-
- /**
- * Records the specified alias.
- *
- * @param alias The alias for the artifact, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult addAlias( Artifact alias )
- {
- if ( alias != null )
- {
- if ( aliases.isEmpty() )
- {
- aliases = new ArrayList<Artifact>();
- }
- aliases.add( alias );
- }
- return this;
- }
-
- /**
- * Gets the artifact whose descriptor was read. This can be a different artifact than originally requested in case
- * relocations were encountered.
- *
- * @return The artifact after following any relocations, never {@code null}.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Sets the artifact whose descriptor was read.
- *
- * @param artifact The artifact whose descriptor was read, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult setArtifact( Artifact artifact )
- {
- this.artifact = artifact;
- return this;
- }
-
- /**
- * Gets the repository from which the descriptor was eventually resolved.
- *
- * @return The repository from which the descriptor was resolved or {@code null} if unknown.
- */
- public ArtifactRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Sets the repository from which the descriptor was resolved.
- *
- * @param repository The repository from which the descriptor was resolved, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult setRepository( ArtifactRepository repository )
- {
- this.repository = repository;
- return this;
- }
-
- /**
- * Gets the list of direct dependencies of the artifact.
- *
- * @return The list of direct dependencies, never {@code null}
- */
- public List<Dependency> getDependencies()
- {
- return dependencies;
- }
-
- /**
- * Sets the list of direct dependencies of the artifact.
- *
- * @param dependencies The list of direct dependencies, may be {@code null}
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult setDependencies( List<Dependency> dependencies )
- {
- if ( dependencies == null )
- {
- this.dependencies = Collections.emptyList();
- }
- else
- {
- this.dependencies = dependencies;
- }
- return this;
- }
-
- /**
- * Adds the specified direct dependency.
- *
- * @param dependency The direct dependency to add, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult addDependency( Dependency dependency )
- {
- if ( dependency != null )
- {
- if ( dependencies.isEmpty() )
- {
- dependencies = new ArrayList<Dependency>();
- }
- dependencies.add( dependency );
- }
- return this;
- }
-
- /**
- * Gets the dependency management information.
- *
- * @return The dependency management information.
- */
- public List<Dependency> getManagedDependencies()
- {
- return managedDependencies;
- }
-
- /**
- * Sets the dependency management information.
- *
- * @param dependencies The dependency management information, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult setManagedDependencies( List<Dependency> dependencies )
- {
- if ( dependencies == null )
- {
- this.managedDependencies = Collections.emptyList();
- }
- else
- {
- this.managedDependencies = dependencies;
- }
- return this;
- }
-
- /**
- * Adds the specified managed dependency.
- *
- * @param dependency The managed dependency to add, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult addManagedDependency( Dependency dependency )
- {
- if ( dependency != null )
- {
- if ( managedDependencies.isEmpty() )
- {
- managedDependencies = new ArrayList<Dependency>();
- }
- managedDependencies.add( dependency );
- }
- return this;
- }
-
- /**
- * Gets the remote repositories listed in the artifact descriptor.
- *
- * @return The remote repositories listed in the artifact descriptor, never {@code null}.
- */
- public List<RemoteRepository> getRepositories()
- {
- return repositories;
- }
-
- /**
- * Sets the remote repositories listed in the artifact descriptor.
- *
- * @param repositories The remote repositories listed in the artifact descriptor, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult setRepositories( List<RemoteRepository> repositories )
- {
- if ( repositories == null )
- {
- this.repositories = Collections.emptyList();
- }
- else
- {
- this.repositories = repositories;
- }
- return this;
- }
-
- /**
- * Adds the specified remote repository.
- *
- * @param repository The remote repository to add, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult addRepository( RemoteRepository repository )
- {
- if ( repository != null )
- {
- if ( repositories.isEmpty() )
- {
- repositories = new ArrayList<RemoteRepository>();
- }
- repositories.add( repository );
- }
- return this;
- }
-
- /**
- * Gets any additional information about the artifact in form of key-value pairs. <em>Note:</em> Regardless of their
- * actual type, all property values must be treated as being read-only.
- *
- * @return The additional information about the artifact, never {@code null}.
- */
- public Map<String, Object> getProperties()
- {
- return properties;
- }
-
- /**
- * Sets any additional information about the artifact in form of key-value pairs.
- *
- * @param properties The additional information about the artifact, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactDescriptorResult setProperties( Map<String, Object> properties )
- {
- if ( properties == null )
- {
- this.properties = Collections.emptyMap();
- }
- else
- {
- this.properties = properties;
- }
- return this;
- }
-
- @Override
- public String toString()
- {
- return getArtifact() + " -> " + getDependencies();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactRequest.java b/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactRequest.java
deleted file mode 100644
index a220207..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactRequest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.Collections;
-import java.util.List;
-
-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.graph.DependencyNode;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * A request to resolve an artifact.
- *
- * @see RepositorySystem#resolveArtifacts(RepositorySystemSession, java.util.Collection)
- * @see Artifact#getFile()
- */
-public final class ArtifactRequest
-{
-
- private Artifact artifact;
-
- private DependencyNode node;
-
- private List<RemoteRepository> repositories = Collections.emptyList();
-
- private String context = "";
-
- private RequestTrace trace;
-
- /**
- * Creates an uninitialized request.
- */
- public ArtifactRequest()
- {
- // enables default constructor
- }
-
- /**
- * Creates a request with the specified properties.
- *
- * @param artifact The artifact to resolve, may be {@code null}.
- * @param repositories The repositories to resolve the artifact from, may be {@code null}.
- * @param context The context in which this request is made, may be {@code null}.
- */
- public ArtifactRequest( Artifact artifact, List<RemoteRepository> repositories, String context )
- {
- setArtifact( artifact );
- setRepositories( repositories );
- setRequestContext( context );
- }
-
- /**
- * Creates a request from the specified dependency node.
- *
- * @param node The dependency node to resolve, may be {@code null}.
- */
- public ArtifactRequest( DependencyNode node )
- {
- setDependencyNode( node );
- setRepositories( node.getRepositories() );
- setRequestContext( node.getRequestContext() );
- }
-
- /**
- * Gets the artifact to resolve.
- *
- * @return The artifact to resolve or {@code null}.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Sets the artifact to resolve.
- *
- * @param artifact The artifact to resolve, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ArtifactRequest setArtifact( Artifact artifact )
- {
- this.artifact = artifact;
- return this;
- }
-
- /**
- * Gets the dependency node (if any) for which to resolve the artifact.
- *
- * @return The dependency node to resolve or {@code null} if unknown.
- */
- public DependencyNode getDependencyNode()
- {
- return node;
- }
-
- /**
- * Sets the dependency node to resolve.
- *
- * @param node The dependency node to resolve, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ArtifactRequest setDependencyNode( DependencyNode node )
- {
- this.node = node;
- if ( node != null )
- {
- setArtifact( node.getDependency().getArtifact() );
- }
- return this;
- }
-
- /**
- * Gets the repositories to resolve the artifact from.
- *
- * @return The repositories, never {@code null}.
- */
- public List<RemoteRepository> getRepositories()
- {
- return repositories;
- }
-
- /**
- * Sets the repositories to resolve the artifact from.
- *
- * @param repositories The repositories, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ArtifactRequest setRepositories( List<RemoteRepository> repositories )
- {
- if ( repositories == null )
- {
- this.repositories = Collections.emptyList();
- }
- else
- {
- this.repositories = repositories;
- }
- return this;
- }
-
- /**
- * Adds the specified repository for the resolution.
- *
- * @param repository The repository to add, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ArtifactRequest addRepository( RemoteRepository repository )
- {
- if ( repository != null )
- {
- if ( this.repositories.isEmpty() )
- {
- this.repositories = new ArrayList<RemoteRepository>();
- }
- this.repositories.add( repository );
- }
- return this;
- }
-
- /**
- * Gets the context in which this request is made.
- *
- * @return The context, never {@code null}.
- */
- public String getRequestContext()
- {
- return context;
- }
-
- /**
- * Sets the context in which this request is made.
- *
- * @param context The context, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ArtifactRequest setRequestContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- 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 ArtifactRequest setTrace( RequestTrace trace )
- {
- this.trace = trace;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getArtifact() + " < " + getRepositories();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactResolutionException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactResolutionException.java b/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactResolutionException.java
deleted file mode 100644
index bfae4a0..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactResolutionException.java
+++ /dev/null
@@ -1,173 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.Collections;
-import java.util.List;
-
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.transfer.ArtifactNotFoundException;
-import org.eclipse.aether.transfer.RepositoryOfflineException;
-
-/**
- * Thrown in case of a unresolvable artifacts.
- */
-public class ArtifactResolutionException
- extends RepositoryException
-{
-
- private final transient List<ArtifactResult> results;
-
- /**
- * Creates a new exception with the specified results.
- *
- * @param results The resolution results at the point the exception occurred, may be {@code null}.
- */
- public ArtifactResolutionException( List<ArtifactResult> results )
- {
- super( getMessage( results ), getCause( results ) );
- this.results = ( results != null ) ? results : Collections.<ArtifactResult>emptyList();
- }
-
- /**
- * Creates a new exception with the specified results and detail message.
- *
- * @param results The resolution results at the point the exception occurred, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public ArtifactResolutionException( List<ArtifactResult> results, String message )
- {
- super( message, getCause( results ) );
- this.results = ( results != null ) ? results : Collections.<ArtifactResult>emptyList();
- }
-
- /**
- * Creates a new exception with the specified results, detail message and cause.
- *
- * @param results The resolution results at the point the exception occurred, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public ArtifactResolutionException( List<ArtifactResult> results, String message, Throwable cause )
- {
- super( message, cause );
- this.results = ( results != null ) ? results : Collections.<ArtifactResult>emptyList();
- }
-
- /**
- * Gets the resolution results at the point the exception occurred. Despite being incomplete, callers might want to
- * use these results to fail gracefully and continue their operation with whatever interim data has been gathered.
- *
- * @return The resolution results or {@code null} if unknown.
- */
- public List<ArtifactResult> getResults()
- {
- return results;
- }
-
- /**
- * Gets the first result from {@link #getResults()}. This is a convenience method for cases where callers know only
- * a single result/request is involved.
- *
- * @return The (first) resolution result or {@code null} if none.
- */
- public ArtifactResult getResult()
- {
- return ( results != null && !results.isEmpty() ) ? results.get( 0 ) : null;
- }
-
- private static String getMessage( List<? extends ArtifactResult> results )
- {
- StringBuilder buffer = new StringBuilder( 256 );
-
- buffer.append( "The following artifacts could not be resolved: " );
-
- int unresolved = 0;
-
- String sep = "";
- for ( ArtifactResult result : results )
- {
- if ( !result.isResolved() )
- {
- unresolved++;
-
- buffer.append( sep );
- buffer.append( result.getRequest().getArtifact() );
- sep = ", ";
- }
- }
-
- Throwable cause = getCause( results );
- if ( cause != null )
- {
- if ( unresolved == 1 )
- {
- buffer.setLength( 0 );
- buffer.append( cause.getMessage() );
- }
- else
- {
- buffer.append( ": " ).append( cause.getMessage() );
- }
- }
-
- return buffer.toString();
- }
-
- private static Throwable getCause( List<? extends ArtifactResult> results )
- {
- for ( ArtifactResult result : results )
- {
- if ( !result.isResolved() )
- {
- Throwable notFound = null, offline = null;
- for ( Throwable t : result.getExceptions() )
- {
- if ( t instanceof ArtifactNotFoundException )
- {
- if ( notFound == null )
- {
- notFound = t;
- }
- if ( offline == null && t.getCause() instanceof RepositoryOfflineException )
- {
- offline = t;
- }
- }
- else
- {
- return t;
- }
-
- }
- if ( offline != null )
- {
- return offline;
- }
- if ( notFound != null )
- {
- return notFound;
- }
- }
- }
- return null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactResult.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactResult.java b/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactResult.java
deleted file mode 100644
index 5ae820b..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/ArtifactResult.java
+++ /dev/null
@@ -1,188 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.Collections;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.repository.ArtifactRepository;
-import org.eclipse.aether.transfer.ArtifactNotFoundException;
-
-/**
- * The result of an artifact resolution request.
- *
- * @see RepositorySystem#resolveArtifacts(RepositorySystemSession, java.util.Collection)
- * @see Artifact#getFile()
- */
-public final class ArtifactResult
-{
-
- private final ArtifactRequest request;
-
- private List<Exception> exceptions;
-
- private Artifact artifact;
-
- private ArtifactRepository repository;
-
- /**
- * Creates a new result for the specified request.
- *
- * @param request The resolution request, must not be {@code null}.
- */
- public ArtifactResult( ArtifactRequest request )
- {
- if ( request == null )
- {
- throw new IllegalArgumentException( "resolution request has not been specified" );
- }
- this.request = request;
- exceptions = Collections.emptyList();
- }
-
- /**
- * Gets the resolution request that was made.
- *
- * @return The resolution request, never {@code null}.
- */
- public ArtifactRequest getRequest()
- {
- return request;
- }
-
- /**
- * Gets the resolved artifact (if any). Use {@link #getExceptions()} to query the errors that occurred while trying
- * to resolve the artifact.
- *
- * @return The resolved artifact or {@code null} if the resolution failed.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Sets the resolved artifact.
- *
- * @param artifact The resolved artifact, may be {@code null} if the resolution failed.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactResult setArtifact( Artifact artifact )
- {
- this.artifact = artifact;
- return this;
- }
-
- /**
- * Gets the exceptions that occurred while resolving the artifact. Note that this list can be non-empty even if the
- * artifact was successfully resolved, e.g. when one of the contacted remote repositories didn't contain the
- * artifact but a later repository eventually contained it.
- *
- * @return The exceptions that occurred, never {@code null}.
- * @see #isResolved()
- */
- public List<Exception> getExceptions()
- {
- return exceptions;
- }
-
- /**
- * Records the specified exception while resolving the artifact.
- *
- * @param exception The exception to record, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactResult addException( Exception exception )
- {
- if ( exception != null )
- {
- if ( exceptions.isEmpty() )
- {
- exceptions = new ArrayList<Exception>();
- }
- exceptions.add( exception );
- }
- return this;
- }
-
- /**
- * Gets the repository from which the artifact was eventually resolved. Note that successive resolutions of the same
- * artifact might yield different results if the employed local repository does not track the origin of an artifact.
- *
- * @return The repository from which the artifact was resolved or {@code null} if unknown.
- */
- public ArtifactRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Sets the repository from which the artifact was resolved.
- *
- * @param repository The repository from which the artifact was resolved, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public ArtifactResult setRepository( ArtifactRepository repository )
- {
- this.repository = repository;
- return this;
- }
-
- /**
- * Indicates whether the requested artifact was resolved. Note that the artifact might have been successfully
- * resolved despite {@link #getExceptions()} indicating transfer errors while trying to fetch the artifact from some
- * of the specified remote repositories.
- *
- * @return {@code true} if the artifact was resolved, {@code false} otherwise.
- * @see Artifact#getFile()
- */
- public boolean isResolved()
- {
- return getArtifact() != null && getArtifact().getFile() != null;
- }
-
- /**
- * Indicates whether the requested artifact is not present in any of the specified repositories.
- *
- * @return {@code true} if the artifact is not present in any repository, {@code false} otherwise.
- */
- public boolean isMissing()
- {
- for ( Exception e : getExceptions() )
- {
- if ( !( e instanceof ArtifactNotFoundException ) )
- {
- return false;
- }
- }
- return !isResolved();
- }
-
- @Override
- public String toString()
- {
- return getArtifact() + " < " + getRepository();
- }
-
-}
[36/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
deleted file mode 100644
index 148bf4d..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
+++ /dev/null
@@ -1,398 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Arrays;
-import java.util.List;
-import java.util.ListIterator;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositoryCache;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.impl.RemoteRepositoryManager;
-import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationSelector;
-import org.eclipse.aether.repository.MirrorSelector;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.ProxySelector;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.util.StringUtils;
-
-/**
- */
-@Named
-public class DefaultRemoteRepositoryManager
- implements RemoteRepositoryManager, Service
-{
-
- private static final class LoggedMirror
- {
-
- private final Object[] keys;
-
- public LoggedMirror( RemoteRepository original, RemoteRepository mirror )
- {
- keys = new Object[] { mirror.getId(), mirror.getUrl(), original.getId(), original.getUrl() };
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( !( obj instanceof LoggedMirror ) )
- {
- return false;
- }
- LoggedMirror that = (LoggedMirror) obj;
- return Arrays.equals( keys, that.keys );
- }
-
- @Override
- public int hashCode()
- {
- return Arrays.hashCode( keys );
- }
-
- }
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private UpdatePolicyAnalyzer updatePolicyAnalyzer;
-
- private ChecksumPolicyProvider checksumPolicyProvider;
-
- public DefaultRemoteRepositoryManager()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultRemoteRepositoryManager( UpdatePolicyAnalyzer updatePolicyAnalyzer,
- ChecksumPolicyProvider checksumPolicyProvider, LoggerFactory loggerFactory )
- {
- setUpdatePolicyAnalyzer( updatePolicyAnalyzer );
- setChecksumPolicyProvider( checksumPolicyProvider );
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setUpdatePolicyAnalyzer( locator.getService( UpdatePolicyAnalyzer.class ) );
- setChecksumPolicyProvider( locator.getService( ChecksumPolicyProvider.class ) );
- }
-
- public DefaultRemoteRepositoryManager setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultRemoteRepositoryManager setUpdatePolicyAnalyzer( UpdatePolicyAnalyzer updatePolicyAnalyzer )
- {
- if ( updatePolicyAnalyzer == null )
- {
- throw new IllegalArgumentException( "update policy analyzer has not been specified" );
- }
- this.updatePolicyAnalyzer = updatePolicyAnalyzer;
- return this;
- }
-
- public DefaultRemoteRepositoryManager setChecksumPolicyProvider( ChecksumPolicyProvider checksumPolicyProvider )
- {
- if ( checksumPolicyProvider == null )
- {
- throw new IllegalArgumentException( "checksum policy provider has not been specified" );
- }
- this.checksumPolicyProvider = checksumPolicyProvider;
- return this;
- }
-
- public List<RemoteRepository> aggregateRepositories( RepositorySystemSession session,
- List<RemoteRepository> dominantRepositories,
- List<RemoteRepository> recessiveRepositories,
- boolean recessiveIsRaw )
- {
- if ( recessiveRepositories.isEmpty() )
- {
- return dominantRepositories;
- }
-
- MirrorSelector mirrorSelector = session.getMirrorSelector();
- AuthenticationSelector authSelector = session.getAuthenticationSelector();
- ProxySelector proxySelector = session.getProxySelector();
-
- List<RemoteRepository> result = new ArrayList<RemoteRepository>( dominantRepositories );
-
- next: for ( RemoteRepository recessiveRepository : recessiveRepositories )
- {
- RemoteRepository repository = recessiveRepository;
-
- if ( recessiveIsRaw )
- {
- RemoteRepository mirrorRepository = mirrorSelector.getMirror( recessiveRepository );
-
- if ( mirrorRepository != null )
- {
- logMirror( session, recessiveRepository, mirrorRepository );
- repository = mirrorRepository;
- }
- }
-
- String key = getKey( repository );
-
- for ( ListIterator<RemoteRepository> it = result.listIterator(); it.hasNext(); )
- {
- RemoteRepository dominantRepository = it.next();
-
- if ( key.equals( getKey( dominantRepository ) ) )
- {
- if ( !dominantRepository.getMirroredRepositories().isEmpty()
- && !repository.getMirroredRepositories().isEmpty() )
- {
- RemoteRepository mergedRepository = mergeMirrors( session, dominantRepository, repository );
- if ( mergedRepository != dominantRepository )
- {
- it.set( mergedRepository );
- }
- }
-
- continue next;
- }
- }
-
- if ( recessiveIsRaw )
- {
- RemoteRepository.Builder builder = null;
- Authentication auth = authSelector.getAuthentication( repository );
- if ( auth != null )
- {
- builder = new RemoteRepository.Builder( repository );
- builder.setAuthentication( auth );
- }
- Proxy proxy = proxySelector.getProxy( repository );
- if ( proxy != null )
- {
- if ( builder == null )
- {
- builder = new RemoteRepository.Builder( repository );
- }
- builder.setProxy( proxy );
- }
- if ( builder != null )
- {
- repository = builder.build();
- }
- }
-
- result.add( repository );
- }
-
- return result;
- }
-
- private void logMirror( RepositorySystemSession session, RemoteRepository original, RemoteRepository mirror )
- {
- if ( !logger.isDebugEnabled() )
- {
- return;
- }
- RepositoryCache cache = session.getCache();
- if ( cache != null )
- {
- Object key = new LoggedMirror( original, mirror );
- if ( cache.get( session, key ) != null )
- {
- return;
- }
- cache.put( session, key, Boolean.TRUE );
- }
- logger.debug( "Using mirror " + mirror.getId() + " (" + mirror.getUrl() + ") for " + original.getId() + " ("
- + original.getUrl() + ")." );
- }
-
- private String getKey( RemoteRepository repository )
- {
- return repository.getId();
- }
-
- private RemoteRepository mergeMirrors( RepositorySystemSession session, RemoteRepository dominant,
- RemoteRepository recessive )
- {
- RemoteRepository.Builder merged = null;
- RepositoryPolicy releases = null, snapshots = null;
-
- next: for ( RemoteRepository rec : recessive.getMirroredRepositories() )
- {
- String recKey = getKey( rec );
-
- for ( RemoteRepository dom : dominant.getMirroredRepositories() )
- {
- if ( recKey.equals( getKey( dom ) ) )
- {
- continue next;
- }
- }
-
- if ( merged == null )
- {
- merged = new RemoteRepository.Builder( dominant );
- releases = dominant.getPolicy( false );
- snapshots = dominant.getPolicy( true );
- }
-
- releases = merge( session, releases, rec.getPolicy( false ), false );
- snapshots = merge( session, snapshots, rec.getPolicy( true ), false );
-
- merged.addMirroredRepository( rec );
- }
-
- if ( merged == null )
- {
- return dominant;
- }
- return merged.setReleasePolicy( releases ).setSnapshotPolicy( snapshots ).build();
- }
-
- public RepositoryPolicy getPolicy( RepositorySystemSession session, RemoteRepository repository, boolean releases,
- boolean snapshots )
- {
- RepositoryPolicy policy1 = releases ? repository.getPolicy( false ) : null;
- RepositoryPolicy policy2 = snapshots ? repository.getPolicy( true ) : null;
- RepositoryPolicy policy = merge( session, policy1, policy2, true );
- return policy;
- }
-
- private RepositoryPolicy merge( RepositorySystemSession session, RepositoryPolicy policy1,
- RepositoryPolicy policy2, boolean globalPolicy )
- {
- RepositoryPolicy policy;
-
- if ( policy2 == null )
- {
- if ( globalPolicy )
- {
- policy = merge( policy1, session.getUpdatePolicy(), session.getChecksumPolicy() );
- }
- else
- {
- policy = policy1;
- }
- }
- else if ( policy1 == null )
- {
- if ( globalPolicy )
- {
- policy = merge( policy2, session.getUpdatePolicy(), session.getChecksumPolicy() );
- }
- else
- {
- policy = policy2;
- }
- }
- else if ( !policy2.isEnabled() )
- {
- if ( globalPolicy )
- {
- policy = merge( policy1, session.getUpdatePolicy(), session.getChecksumPolicy() );
- }
- else
- {
- policy = policy1;
- }
- }
- else if ( !policy1.isEnabled() )
- {
- if ( globalPolicy )
- {
- policy = merge( policy2, session.getUpdatePolicy(), session.getChecksumPolicy() );
- }
- else
- {
- policy = policy2;
- }
- }
- else
- {
- String checksums = session.getChecksumPolicy();
- if ( globalPolicy && !StringUtils.isEmpty( checksums ) )
- {
- // use global override
- }
- else
- {
- checksums =
- checksumPolicyProvider.getEffectiveChecksumPolicy( session, policy1.getChecksumPolicy(),
- policy2.getChecksumPolicy() );
- }
-
- String updates = session.getUpdatePolicy();
- if ( globalPolicy && !StringUtils.isEmpty( updates ) )
- {
- // use global override
- }
- else
- {
- updates =
- updatePolicyAnalyzer.getEffectiveUpdatePolicy( session, policy1.getUpdatePolicy(),
- policy2.getUpdatePolicy() );
- }
-
- policy = new RepositoryPolicy( true, updates, checksums );
- }
-
- return policy;
- }
-
- private RepositoryPolicy merge( RepositoryPolicy policy, String updates, String checksums )
- {
- if ( policy != null )
- {
- if ( StringUtils.isEmpty( updates ) )
- {
- updates = policy.getUpdatePolicy();
- }
- if ( StringUtils.isEmpty( checksums ) )
- {
- checksums = policy.getChecksumPolicy();
- }
- if ( !policy.getUpdatePolicy().equals( updates ) || !policy.getChecksumPolicy().equals( checksums ) )
- {
- policy = new RepositoryPolicy( policy.isEnabled(), updates, checksums );
- }
- }
- return policy;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryConnectorProvider.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryConnectorProvider.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryConnectorProvider.java
deleted file mode 100644
index 10fdc23..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryConnectorProvider.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.List;
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.impl.RepositoryConnectorProvider;
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.RepositoryConnector;
-import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.NoRepositoryConnectorException;
-
-/**
- */
-@Named
-public class DefaultRepositoryConnectorProvider
- implements RepositoryConnectorProvider, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private Collection<RepositoryConnectorFactory> connectorFactories = new ArrayList<RepositoryConnectorFactory>();
-
- public DefaultRepositoryConnectorProvider()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultRepositoryConnectorProvider( Set<RepositoryConnectorFactory> connectorFactories, LoggerFactory loggerFactory )
- {
- setRepositoryConnectorFactories( connectorFactories );
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- connectorFactories = locator.getServices( RepositoryConnectorFactory.class );
- }
-
- public DefaultRepositoryConnectorProvider setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultRepositoryConnectorProvider addRepositoryConnectorFactory( RepositoryConnectorFactory factory )
- {
- if ( factory == null )
- {
- throw new IllegalArgumentException( "repository connector factory has not been specified" );
- }
- connectorFactories.add( factory );
- return this;
- }
-
- public DefaultRepositoryConnectorProvider setRepositoryConnectorFactories( Collection<RepositoryConnectorFactory> factories )
- {
- if ( factories == null )
- {
- this.connectorFactories = new ArrayList<RepositoryConnectorFactory>();
- }
- else
- {
- this.connectorFactories = factories;
- }
- return this;
- }
-
- public RepositoryConnector newRepositoryConnector( RepositorySystemSession session, RemoteRepository repository )
- throws NoRepositoryConnectorException
- {
- if ( repository == null )
- {
- throw new IllegalArgumentException( "remote repository has not been specified" );
- }
-
- PrioritizedComponents<RepositoryConnectorFactory> factories =
- new PrioritizedComponents<RepositoryConnectorFactory>( session );
- for ( RepositoryConnectorFactory factory : this.connectorFactories )
- {
- factories.add( factory, factory.getPriority() );
- }
-
- List<NoRepositoryConnectorException> errors = new ArrayList<NoRepositoryConnectorException>();
- for ( PrioritizedComponent<RepositoryConnectorFactory> factory : factories.getEnabled() )
- {
- try
- {
- RepositoryConnector connector = factory.getComponent().newInstance( session, repository );
-
- if ( logger.isDebugEnabled() )
- {
- StringBuilder buffer = new StringBuilder( 256 );
- buffer.append( "Using connector " ).append( connector.getClass().getSimpleName() );
- Utils.appendClassLoader( buffer, connector );
- buffer.append( " with priority " ).append( factory.getPriority() );
- buffer.append( " for " ).append( repository.getUrl() );
-
- Authentication auth = repository.getAuthentication();
- if ( auth != null )
- {
- buffer.append( " with " ).append( auth );
- }
-
- Proxy proxy = repository.getProxy();
- if ( proxy != null )
- {
- buffer.append( " via " ).append( proxy.getHost() ).append( ':' ).append( proxy.getPort() );
-
- auth = proxy.getAuthentication();
- if ( auth != null )
- {
- buffer.append( " with " ).append( auth );
- }
- }
-
- logger.debug( buffer.toString() );
- }
-
- return connector;
- }
- catch ( NoRepositoryConnectorException e )
- {
- // continue and try next factory
- errors.add( e );
- }
- }
- if ( logger.isDebugEnabled() && errors.size() > 1 )
- {
- String msg = "Could not obtain connector factory for " + repository;
- for ( Exception e : errors )
- {
- logger.debug( msg, e );
- }
- }
-
- StringBuilder buffer = new StringBuilder( 256 );
- if ( factories.isEmpty() )
- {
- buffer.append( "No connector factories available" );
- }
- else
- {
- buffer.append( "Cannot access " ).append( repository.getUrl() );
- buffer.append( " with type " ).append( repository.getContentType() );
- buffer.append( " using the available connector factories: " );
- factories.list( buffer );
- }
-
- throw new NoRepositoryConnectorException( repository, buffer.toString(), errors.size() == 1 ? errors.get( 0 )
- : null );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcher.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcher.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcher.java
deleted file mode 100644
index 2e56c93..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcher.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositoryEvent;
-import org.eclipse.aether.RepositoryListener;
-import org.eclipse.aether.impl.RepositoryEventDispatcher;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-
-/**
- */
-@Named
-public class DefaultRepositoryEventDispatcher
- implements RepositoryEventDispatcher, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private Collection<RepositoryListener> listeners = new ArrayList<RepositoryListener>();
-
- public DefaultRepositoryEventDispatcher()
- {
- // enables no-arg constructor
- }
-
- @Inject
- DefaultRepositoryEventDispatcher( Set<RepositoryListener> listeners, LoggerFactory loggerFactory )
- {
- setRepositoryListeners( listeners );
- setLoggerFactory( loggerFactory );
- }
-
- public DefaultRepositoryEventDispatcher setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultRepositoryEventDispatcher addRepositoryListener( RepositoryListener listener )
- {
- if ( listener == null )
- {
- throw new IllegalArgumentException( "repository listener has not been specified" );
- }
- this.listeners.add( listener );
- return this;
- }
-
- public DefaultRepositoryEventDispatcher setRepositoryListeners( Collection<RepositoryListener> listeners )
- {
- if ( listeners == null )
- {
- this.listeners = new ArrayList<RepositoryListener>();
- }
- else
- {
- this.listeners = listeners;
- }
- return this;
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setRepositoryListeners( locator.getServices( RepositoryListener.class ) );
- }
-
- public void dispatch( RepositoryEvent event )
- {
- if ( !listeners.isEmpty() )
- {
- for ( RepositoryListener listener : listeners )
- {
- dispatch( event, listener );
- }
- }
-
- RepositoryListener listener = event.getSession().getRepositoryListener();
-
- if ( listener != null )
- {
- dispatch( event, listener );
- }
- }
-
- private void dispatch( RepositoryEvent event, RepositoryListener listener )
- {
- try
- {
- switch ( event.getType() )
- {
- case ARTIFACT_DEPLOYED:
- listener.artifactDeployed( event );
- break;
- case ARTIFACT_DEPLOYING:
- listener.artifactDeploying( event );
- break;
- case ARTIFACT_DESCRIPTOR_INVALID:
- listener.artifactDescriptorInvalid( event );
- break;
- case ARTIFACT_DESCRIPTOR_MISSING:
- listener.artifactDescriptorMissing( event );
- break;
- case ARTIFACT_DOWNLOADED:
- listener.artifactDownloaded( event );
- break;
- case ARTIFACT_DOWNLOADING:
- listener.artifactDownloading( event );
- break;
- case ARTIFACT_INSTALLED:
- listener.artifactInstalled( event );
- break;
- case ARTIFACT_INSTALLING:
- listener.artifactInstalling( event );
- break;
- case ARTIFACT_RESOLVED:
- listener.artifactResolved( event );
- break;
- case ARTIFACT_RESOLVING:
- listener.artifactResolving( event );
- break;
- case METADATA_DEPLOYED:
- listener.metadataDeployed( event );
- break;
- case METADATA_DEPLOYING:
- listener.metadataDeploying( event );
- break;
- case METADATA_DOWNLOADED:
- listener.metadataDownloaded( event );
- break;
- case METADATA_DOWNLOADING:
- listener.metadataDownloading( event );
- break;
- case METADATA_INSTALLED:
- listener.metadataInstalled( event );
- break;
- case METADATA_INSTALLING:
- listener.metadataInstalling( event );
- break;
- case METADATA_INVALID:
- listener.metadataInvalid( event );
- break;
- case METADATA_RESOLVED:
- listener.metadataResolved( event );
- break;
- case METADATA_RESOLVING:
- listener.metadataResolving( event );
- break;
- default:
- throw new IllegalStateException( "unknown repository event type " + event.getType() );
- }
- }
- catch ( Exception e )
- {
- logError( e, listener );
- }
- catch ( LinkageError e )
- {
- logError( e, listener );
- }
- }
-
- private void logError( Throwable e, Object listener )
- {
- String msg =
- "Failed to dispatch repository event to " + listener.getClass().getCanonicalName() + ": " + e.getMessage();
-
- if ( logger.isDebugEnabled() )
- {
- logger.warn( msg, e );
- }
- else
- {
- logger.warn( msg );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryLayoutProvider.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryLayoutProvider.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryLayoutProvider.java
deleted file mode 100644
index 9cc6371..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryLayoutProvider.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.List;
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayout;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayoutFactory;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.NoRepositoryLayoutException;
-
-/**
- */
-@Named
-public final class DefaultRepositoryLayoutProvider
- implements RepositoryLayoutProvider, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private Collection<RepositoryLayoutFactory> factories = new ArrayList<RepositoryLayoutFactory>();
-
- public DefaultRepositoryLayoutProvider()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultRepositoryLayoutProvider( Set<RepositoryLayoutFactory> layoutFactories, LoggerFactory loggerFactory )
- {
- setLoggerFactory( loggerFactory );
- setRepositoryLayoutFactories( layoutFactories );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setRepositoryLayoutFactories( locator.getServices( RepositoryLayoutFactory.class ) );
- }
-
- public DefaultRepositoryLayoutProvider setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultRepositoryLayoutProvider addRepositoryLayoutFactory( RepositoryLayoutFactory factory )
- {
- if ( factory == null )
- {
- throw new IllegalArgumentException( "layout factory has not been specified" );
- }
- factories.add( factory );
- return this;
- }
-
- public DefaultRepositoryLayoutProvider setRepositoryLayoutFactories( Collection<RepositoryLayoutFactory> factories )
- {
- if ( factories == null )
- {
- this.factories = new ArrayList<RepositoryLayoutFactory>();
- }
- else
- {
- this.factories = factories;
- }
- return this;
- }
-
- public RepositoryLayout newRepositoryLayout( RepositorySystemSession session, RemoteRepository repository )
- throws NoRepositoryLayoutException
- {
- if ( repository == null )
- {
- throw new IllegalArgumentException( "remote repository has not been specified" );
- }
-
- PrioritizedComponents<RepositoryLayoutFactory> factories =
- new PrioritizedComponents<RepositoryLayoutFactory>( session );
- for ( RepositoryLayoutFactory factory : this.factories )
- {
- factories.add( factory, factory.getPriority() );
- }
-
- List<NoRepositoryLayoutException> errors = new ArrayList<NoRepositoryLayoutException>();
- for ( PrioritizedComponent<RepositoryLayoutFactory> factory : factories.getEnabled() )
- {
- try
- {
- RepositoryLayout layout = factory.getComponent().newInstance( session, repository );
- return layout;
- }
- catch ( NoRepositoryLayoutException e )
- {
- // continue and try next factory
- errors.add( e );
- }
- }
- if ( logger.isDebugEnabled() && errors.size() > 1 )
- {
- String msg = "Could not obtain layout factory for " + repository;
- for ( Exception e : errors )
- {
- logger.debug( msg, e );
- }
- }
-
- StringBuilder buffer = new StringBuilder( 256 );
- if ( factories.isEmpty() )
- {
- buffer.append( "No layout factories registered" );
- }
- else
- {
- buffer.append( "Cannot access " ).append( repository.getUrl() );
- buffer.append( " with type " ).append( repository.getContentType() );
- buffer.append( " using the available layout factories: " );
- factories.list( buffer );
- }
-
- throw new NoRepositoryLayoutException( repository, buffer.toString(), errors.size() == 1 ? errors.get( 0 )
- : null );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
deleted file mode 100644
index b2c453c..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
+++ /dev/null
@@ -1,521 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.List;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.SyncContext;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.CollectRequest;
-import org.eclipse.aether.collection.CollectResult;
-import org.eclipse.aether.collection.DependencyCollectionException;
-import org.eclipse.aether.deployment.DeployRequest;
-import org.eclipse.aether.deployment.DeployResult;
-import org.eclipse.aether.deployment.DeploymentException;
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyVisitor;
-import org.eclipse.aether.impl.ArtifactDescriptorReader;
-import org.eclipse.aether.impl.ArtifactResolver;
-import org.eclipse.aether.impl.DependencyCollector;
-import org.eclipse.aether.impl.Deployer;
-import org.eclipse.aether.impl.Installer;
-import org.eclipse.aether.impl.LocalRepositoryProvider;
-import org.eclipse.aether.impl.MetadataResolver;
-import org.eclipse.aether.impl.RemoteRepositoryManager;
-import org.eclipse.aether.impl.SyncContextFactory;
-import org.eclipse.aether.impl.VersionRangeResolver;
-import org.eclipse.aether.impl.VersionResolver;
-import org.eclipse.aether.installation.InstallRequest;
-import org.eclipse.aether.installation.InstallResult;
-import org.eclipse.aether.installation.InstallationException;
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ArtifactDescriptorException;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResolutionException;
-import org.eclipse.aether.resolution.ArtifactResult;
-import org.eclipse.aether.resolution.DependencyRequest;
-import org.eclipse.aether.resolution.DependencyResolutionException;
-import org.eclipse.aether.resolution.DependencyResult;
-import org.eclipse.aether.resolution.MetadataRequest;
-import org.eclipse.aether.resolution.MetadataResult;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResolutionException;
-import org.eclipse.aether.resolution.VersionRangeResult;
-import org.eclipse.aether.resolution.VersionRequest;
-import org.eclipse.aether.resolution.VersionResolutionException;
-import org.eclipse.aether.resolution.VersionResult;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.util.graph.visitor.FilteringDependencyVisitor;
-import org.eclipse.aether.util.graph.visitor.TreeDependencyVisitor;
-
-/**
- */
-@Named
-public class DefaultRepositorySystem
- implements RepositorySystem, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private VersionResolver versionResolver;
-
- private VersionRangeResolver versionRangeResolver;
-
- private ArtifactResolver artifactResolver;
-
- private MetadataResolver metadataResolver;
-
- private ArtifactDescriptorReader artifactDescriptorReader;
-
- private DependencyCollector dependencyCollector;
-
- private Installer installer;
-
- private Deployer deployer;
-
- private LocalRepositoryProvider localRepositoryProvider;
-
- private SyncContextFactory syncContextFactory;
-
- private RemoteRepositoryManager remoteRepositoryManager;
-
- public DefaultRepositorySystem()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultRepositorySystem( VersionResolver versionResolver, VersionRangeResolver versionRangeResolver,
- ArtifactResolver artifactResolver, MetadataResolver metadataResolver,
- ArtifactDescriptorReader artifactDescriptorReader,
- DependencyCollector dependencyCollector, Installer installer, Deployer deployer,
- LocalRepositoryProvider localRepositoryProvider, SyncContextFactory syncContextFactory,
- RemoteRepositoryManager remoteRepositoryManager, LoggerFactory loggerFactory )
- {
- setVersionResolver( versionResolver );
- setVersionRangeResolver( versionRangeResolver );
- setArtifactResolver( artifactResolver );
- setMetadataResolver( metadataResolver );
- setArtifactDescriptorReader( artifactDescriptorReader );
- setDependencyCollector( dependencyCollector );
- setInstaller( installer );
- setDeployer( deployer );
- setLocalRepositoryProvider( localRepositoryProvider );
- setSyncContextFactory( syncContextFactory );
- setRemoteRepositoryManager( remoteRepositoryManager );
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setVersionResolver( locator.getService( VersionResolver.class ) );
- setVersionRangeResolver( locator.getService( VersionRangeResolver.class ) );
- setArtifactResolver( locator.getService( ArtifactResolver.class ) );
- setMetadataResolver( locator.getService( MetadataResolver.class ) );
- setArtifactDescriptorReader( locator.getService( ArtifactDescriptorReader.class ) );
- setDependencyCollector( locator.getService( DependencyCollector.class ) );
- setInstaller( locator.getService( Installer.class ) );
- setDeployer( locator.getService( Deployer.class ) );
- setLocalRepositoryProvider( locator.getService( LocalRepositoryProvider.class ) );
- setRemoteRepositoryManager( locator.getService( RemoteRepositoryManager.class ) );
- setSyncContextFactory( locator.getService( SyncContextFactory.class ) );
- }
-
- public DefaultRepositorySystem setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultRepositorySystem setVersionResolver( VersionResolver versionResolver )
- {
- if ( versionResolver == null )
- {
- throw new IllegalArgumentException( "version resolver has not been specified" );
- }
- this.versionResolver = versionResolver;
- return this;
- }
-
- public DefaultRepositorySystem setVersionRangeResolver( VersionRangeResolver versionRangeResolver )
- {
- if ( versionRangeResolver == null )
- {
- throw new IllegalArgumentException( "version range resolver has not been specified" );
- }
- this.versionRangeResolver = versionRangeResolver;
- return this;
- }
-
- public DefaultRepositorySystem setArtifactResolver( ArtifactResolver artifactResolver )
- {
- if ( artifactResolver == null )
- {
- throw new IllegalArgumentException( "artifact resolver has not been specified" );
- }
- this.artifactResolver = artifactResolver;
- return this;
- }
-
- public DefaultRepositorySystem setMetadataResolver( MetadataResolver metadataResolver )
- {
- if ( metadataResolver == null )
- {
- throw new IllegalArgumentException( "metadata resolver has not been specified" );
- }
- this.metadataResolver = metadataResolver;
- return this;
- }
-
- public DefaultRepositorySystem setArtifactDescriptorReader( ArtifactDescriptorReader artifactDescriptorReader )
- {
- if ( artifactDescriptorReader == null )
- {
- throw new IllegalArgumentException( "artifact descriptor reader has not been specified" );
- }
- this.artifactDescriptorReader = artifactDescriptorReader;
- return this;
- }
-
- public DefaultRepositorySystem setDependencyCollector( DependencyCollector dependencyCollector )
- {
- if ( dependencyCollector == null )
- {
- throw new IllegalArgumentException( "dependency collector has not been specified" );
- }
- this.dependencyCollector = dependencyCollector;
- return this;
- }
-
- public DefaultRepositorySystem setInstaller( Installer installer )
- {
- if ( installer == null )
- {
- throw new IllegalArgumentException( "installer has not been specified" );
- }
- this.installer = installer;
- return this;
- }
-
- public DefaultRepositorySystem setDeployer( Deployer deployer )
- {
- if ( deployer == null )
- {
- throw new IllegalArgumentException( "deployer has not been specified" );
- }
- this.deployer = deployer;
- return this;
- }
-
- public DefaultRepositorySystem setLocalRepositoryProvider( LocalRepositoryProvider localRepositoryProvider )
- {
- if ( localRepositoryProvider == null )
- {
- throw new IllegalArgumentException( "local repository provider has not been specified" );
- }
- this.localRepositoryProvider = localRepositoryProvider;
- return this;
- }
-
- public DefaultRepositorySystem setSyncContextFactory( SyncContextFactory syncContextFactory )
- {
- if ( syncContextFactory == null )
- {
- throw new IllegalArgumentException( "sync context factory has not been specified" );
- }
- this.syncContextFactory = syncContextFactory;
- return this;
- }
-
- public DefaultRepositorySystem setRemoteRepositoryManager( RemoteRepositoryManager remoteRepositoryManager )
- {
- if ( remoteRepositoryManager == null )
- {
- throw new IllegalArgumentException( "remote repository manager has not been specified" );
- }
- this.remoteRepositoryManager = remoteRepositoryManager;
- return this;
- }
-
- public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
- throws VersionResolutionException
- {
- validateSession( session );
- return versionResolver.resolveVersion( session, request );
- }
-
- public VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request )
- throws VersionRangeResolutionException
- {
- validateSession( session );
- return versionRangeResolver.resolveVersionRange( session, request );
- }
-
- public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session,
- ArtifactDescriptorRequest request )
- throws ArtifactDescriptorException
- {
- validateSession( session );
- return artifactDescriptorReader.readArtifactDescriptor( session, request );
- }
-
- public ArtifactResult resolveArtifact( RepositorySystemSession session, ArtifactRequest request )
- throws ArtifactResolutionException
- {
- validateSession( session );
- return artifactResolver.resolveArtifact( session, request );
- }
-
- public List<ArtifactResult> resolveArtifacts( RepositorySystemSession session,
- Collection<? extends ArtifactRequest> requests )
- throws ArtifactResolutionException
- {
- validateSession( session );
- return artifactResolver.resolveArtifacts( session, requests );
- }
-
- public List<MetadataResult> resolveMetadata( RepositorySystemSession session,
- Collection<? extends MetadataRequest> requests )
- {
- validateSession( session );
- return metadataResolver.resolveMetadata( session, requests );
- }
-
- public CollectResult collectDependencies( RepositorySystemSession session, CollectRequest request )
- throws DependencyCollectionException
- {
- validateSession( session );
- return dependencyCollector.collectDependencies( session, request );
- }
-
- public DependencyResult resolveDependencies( RepositorySystemSession session, DependencyRequest request )
- throws DependencyResolutionException
- {
- validateSession( session );
-
- RequestTrace trace = RequestTrace.newChild( request.getTrace(), request );
-
- DependencyResult result = new DependencyResult( request );
-
- DependencyCollectionException dce = null;
- ArtifactResolutionException are = null;
-
- if ( request.getRoot() != null )
- {
- result.setRoot( request.getRoot() );
- }
- else if ( request.getCollectRequest() != null )
- {
- CollectResult collectResult;
- try
- {
- request.getCollectRequest().setTrace( trace );
- collectResult = dependencyCollector.collectDependencies( session, request.getCollectRequest() );
- }
- catch ( DependencyCollectionException e )
- {
- dce = e;
- collectResult = e.getResult();
- }
- if ( collectResult != null )
- {
- result.setRoot( collectResult.getRoot() );
- result.setCycles( collectResult.getCycles() );
- result.setCollectExceptions( collectResult.getExceptions() );
- }
- }
- else
- {
- throw new IllegalArgumentException( "dependency node or collect request missing" );
- }
-
- if ( result.getRoot() != null )
- {
- ArtifactRequestBuilder builder = new ArtifactRequestBuilder( trace );
- DependencyFilter filter = request.getFilter();
- DependencyVisitor visitor =
- ( filter != null ) ? new FilteringDependencyVisitor( builder, filter ) : builder;
- visitor = new TreeDependencyVisitor( visitor );
- result.getRoot().accept( visitor );
-
- List<ArtifactResult> results;
- try
- {
- List<ArtifactRequest> requests = builder.getRequests();
- results = artifactResolver.resolveArtifacts( session, requests );
- }
- catch ( ArtifactResolutionException e )
- {
- are = e;
- results = e.getResults();
- }
- result.setArtifactResults( results );
-
- updateNodesWithResolvedArtifacts( results );
- }
-
- if ( dce != null )
- {
- throw new DependencyResolutionException( result, dce );
- }
- else if ( are != null )
- {
- throw new DependencyResolutionException( result, are );
- }
-
- return result;
- }
-
- private void updateNodesWithResolvedArtifacts( List<ArtifactResult> results )
- {
- for ( ArtifactResult result : results )
- {
- Artifact artifact = result.getArtifact();
- if ( artifact != null )
- {
- result.getRequest().getDependencyNode().setArtifact( artifact );
- }
- }
- }
-
- public InstallResult install( RepositorySystemSession session, InstallRequest request )
- throws InstallationException
- {
- validateSession( session );
- return installer.install( session, request );
- }
-
- public DeployResult deploy( RepositorySystemSession session, DeployRequest request )
- throws DeploymentException
- {
- validateSession( session );
- return deployer.deploy( session, request );
- }
-
- public LocalRepositoryManager newLocalRepositoryManager( RepositorySystemSession session,
- LocalRepository localRepository )
- {
- try
- {
- return localRepositoryProvider.newLocalRepositoryManager( session, localRepository );
- }
- catch ( NoLocalRepositoryManagerException e )
- {
- throw new IllegalArgumentException( e.getMessage(), e );
- }
- }
-
- public SyncContext newSyncContext( RepositorySystemSession session, boolean shared )
- {
- validateSession( session );
- return syncContextFactory.newInstance( session, shared );
- }
-
- public List<RemoteRepository> newResolutionRepositories( RepositorySystemSession session,
- List<RemoteRepository> repositories )
- {
- validateSession( session );
- repositories =
- remoteRepositoryManager.aggregateRepositories( session, new ArrayList<RemoteRepository>(), repositories,
- true );
- return repositories;
- }
-
- public RemoteRepository newDeploymentRepository( RepositorySystemSession session, RemoteRepository repository )
- {
- validateSession( session );
- RemoteRepository.Builder builder = new RemoteRepository.Builder( repository );
- Authentication auth = session.getAuthenticationSelector().getAuthentication( repository );
- builder.setAuthentication( auth );
- Proxy proxy = session.getProxySelector().getProxy( repository );
- builder.setProxy( proxy );
- return builder.build();
- }
-
- private void validateSession( RepositorySystemSession session )
- {
- if ( session == null )
- {
- throw new IllegalArgumentException( "Invalid repository system session: the session may not be null." );
- }
- if ( session.getLocalRepositoryManager() == null )
- {
- invalidSession( "LocalRepositoryManager" );
- }
- if ( session.getSystemProperties() == null )
- {
- invalidSession( "SystemProperties" );
- }
- if ( session.getUserProperties() == null )
- {
- invalidSession( "UserProperties" );
- }
- if ( session.getConfigProperties() == null )
- {
- invalidSession( "ConfigProperties" );
- }
- if ( session.getMirrorSelector() == null )
- {
- invalidSession( "MirrorSelector" );
- }
- if ( session.getProxySelector() == null )
- {
- invalidSession( "ProxySelector" );
- }
- if ( session.getAuthenticationSelector() == null )
- {
- invalidSession( "AuthenticationSelector" );
- }
- if ( session.getArtifactTypeRegistry() == null )
- {
- invalidSession( "ArtifactTypeRegistry" );
- }
- if ( session.getData() == null )
- {
- invalidSession( "Data" );
- }
- }
-
- private void invalidSession( String name )
- {
- throw new IllegalArgumentException( "Invalid repository system session: " + name + " is not set." );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultSyncContextFactory.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultSyncContextFactory.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultSyncContextFactory.java
deleted file mode 100644
index 69fdbc6..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultSyncContextFactory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.SyncContext;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.impl.SyncContextFactory;
-import org.eclipse.aether.metadata.Metadata;
-
-/**
- * A factory to create synchronization contexts. This default implementation actually does not provide any real
- * synchronization but merely completes the repository system.
- */
-@Named
-public class DefaultSyncContextFactory
- implements SyncContextFactory
-{
-
- public SyncContext newInstance( RepositorySystemSession session, boolean shared )
- {
- return new DefaultSyncContext();
- }
-
- static class DefaultSyncContext
- implements SyncContext
- {
-
- public void acquire( Collection<? extends Artifact> artifact, Collection<? extends Metadata> metadata )
- {
- }
-
- public void close()
- {
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultTransporterProvider.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultTransporterProvider.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultTransporterProvider.java
deleted file mode 100644
index 133fd81..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultTransporterProvider.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.List;
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.spi.connector.transport.TransporterProvider;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.NoTransporterException;
-
-/**
- */
-@Named
-public final class DefaultTransporterProvider
- implements TransporterProvider, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private Collection<TransporterFactory> factories = new ArrayList<TransporterFactory>();
-
- public DefaultTransporterProvider()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultTransporterProvider( Set<TransporterFactory> transporterFactories, LoggerFactory loggerFactory )
- {
- setLoggerFactory( loggerFactory );
- setTransporterFactories( transporterFactories );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setTransporterFactories( locator.getServices( TransporterFactory.class ) );
- }
-
- public DefaultTransporterProvider setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultTransporterProvider addTransporterFactory( TransporterFactory factory )
- {
- if ( factory == null )
- {
- throw new IllegalArgumentException( "transporter factory has not been specified" );
- }
- factories.add( factory );
- return this;
- }
-
- public DefaultTransporterProvider setTransporterFactories( Collection<TransporterFactory> factories )
- {
- if ( factories == null )
- {
- this.factories = new ArrayList<TransporterFactory>();
- }
- else
- {
- this.factories = factories;
- }
- return this;
- }
-
- public Transporter newTransporter( RepositorySystemSession session, RemoteRepository repository )
- throws NoTransporterException
- {
- if ( repository == null )
- {
- throw new IllegalArgumentException( "remote repository has not been specified" );
- }
-
- PrioritizedComponents<TransporterFactory> factories = new PrioritizedComponents<TransporterFactory>( session );
- for ( TransporterFactory factory : this.factories )
- {
- factories.add( factory, factory.getPriority() );
- }
-
- List<NoTransporterException> errors = new ArrayList<NoTransporterException>();
- for ( PrioritizedComponent<TransporterFactory> factory : factories.getEnabled() )
- {
- try
- {
- Transporter transporter = factory.getComponent().newInstance( session, repository );
-
- if ( logger.isDebugEnabled() )
- {
- StringBuilder buffer = new StringBuilder( 256 );
- buffer.append( "Using transporter " ).append( transporter.getClass().getSimpleName() );
- Utils.appendClassLoader( buffer, transporter );
- buffer.append( " with priority " ).append( factory.getPriority() );
- buffer.append( " for " ).append( repository.getUrl() );
- logger.debug( buffer.toString() );
- }
-
- return transporter;
- }
- catch ( NoTransporterException e )
- {
- // continue and try next factory
- errors.add( e );
- }
- }
- if ( logger.isDebugEnabled() && errors.size() > 1 )
- {
- String msg = "Could not obtain transporter factory for " + repository;
- for ( Exception e : errors )
- {
- logger.debug( msg, e );
- }
- }
-
- StringBuilder buffer = new StringBuilder( 256 );
- if ( factories.isEmpty() )
- {
- buffer.append( "No transporter factories registered" );
- }
- else
- {
- buffer.append( "Cannot access " ).append( repository.getUrl() );
- buffer.append( " using the registered transporter factories: " );
- factories.list( buffer );
- }
-
- throw new NoTransporterException( repository, buffer.toString(), errors.size() == 1 ? errors.get( 0 ) : null );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManager.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManager.java
deleted file mode 100644
index eb4eff9..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManager.java
+++ /dev/null
@@ -1,629 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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;
-import java.util.Properties;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.concurrent.ConcurrentHashMap;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.SessionData;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.impl.UpdateCheck;
-import org.eclipse.aether.impl.UpdateCheckManager;
-import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.AuthenticationDigest;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ResolutionErrorPolicy;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.ArtifactNotFoundException;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.transfer.MetadataNotFoundException;
-import org.eclipse.aether.transfer.MetadataTransferException;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- */
-@Named
-public class DefaultUpdateCheckManager
- implements UpdateCheckManager, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private UpdatePolicyAnalyzer updatePolicyAnalyzer;
-
- private static final String UPDATED_KEY_SUFFIX = ".lastUpdated";
-
- private static final String ERROR_KEY_SUFFIX = ".error";
-
- private static final String NOT_FOUND = "";
-
- private static final String SESSION_CHECKS = "updateCheckManager.checks";
-
- static final String CONFIG_PROP_SESSION_STATE = "aether.updateCheckManager.sessionState";
-
- private static final int STATE_ENABLED = 0;
-
- private static final int STATE_BYPASS = 1;
-
- private static final int STATE_DISABLED = 2;
-
- public DefaultUpdateCheckManager()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultUpdateCheckManager( UpdatePolicyAnalyzer updatePolicyAnalyzer, LoggerFactory loggerFactory )
- {
- setUpdatePolicyAnalyzer( updatePolicyAnalyzer );
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setUpdatePolicyAnalyzer( locator.getService( UpdatePolicyAnalyzer.class ) );
- }
-
- public DefaultUpdateCheckManager setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultUpdateCheckManager setUpdatePolicyAnalyzer( UpdatePolicyAnalyzer updatePolicyAnalyzer )
- {
- if ( updatePolicyAnalyzer == null )
- {
- throw new IllegalArgumentException( "update policy analyzer has not been specified" );
- }
- this.updatePolicyAnalyzer = updatePolicyAnalyzer;
- return this;
- }
-
- public void checkArtifact( RepositorySystemSession session, UpdateCheck<Artifact, ArtifactTransferException> check )
- {
- if ( check.getLocalLastUpdated() != 0
- && !isUpdatedRequired( session, check.getLocalLastUpdated(), check.getPolicy() ) )
- {
- if ( logger.isDebugEnabled() )
- {
- logger.debug( "Skipped remote request for " + check.getItem()
- + ", locally installed artifact up-to-date." );
- }
-
- check.setRequired( false );
- return;
- }
-
- Artifact artifact = check.getItem();
- RemoteRepository repository = check.getRepository();
-
- File artifactFile = check.getFile();
- if ( artifactFile == null )
- {
- throw new IllegalArgumentException( String.format( "The artifact '%s' has no file attached", artifact ) );
- }
-
- boolean fileExists = check.isFileValid() && artifactFile.exists();
-
- File touchFile = getTouchFile( artifact, artifactFile );
- Properties props = read( touchFile );
-
- String updateKey = getUpdateKey( session, artifactFile, repository );
- String dataKey = getDataKey( artifact, artifactFile, repository );
-
- String error = getError( props, dataKey );
-
- long lastUpdated;
- if ( error == null )
- {
- if ( fileExists )
- {
- // last update was successful
- lastUpdated = artifactFile.lastModified();
- }
- else
- {
- // this is the first attempt ever
- lastUpdated = 0;
- }
- }
- else if ( error.length() <= 0 )
- {
- // artifact did not exist
- lastUpdated = getLastUpdated( props, dataKey );
- }
- else
- {
- // artifact could not be transferred
- String transferKey = getTransferKey( session, artifact, artifactFile, repository );
- lastUpdated = getLastUpdated( props, transferKey );
- }
-
- if ( lastUpdated == 0 )
- {
- check.setRequired( true );
- }
- else if ( isAlreadyUpdated( session, updateKey ) )
- {
- if ( logger.isDebugEnabled() )
- {
- logger.debug( "Skipped remote request for " + check.getItem()
- + ", already updated during this session." );
- }
-
- check.setRequired( false );
- if ( error != null )
- {
- check.setException( newException( error, artifact, repository ) );
- }
- }
- else if ( isUpdatedRequired( session, lastUpdated, check.getPolicy() ) )
- {
- check.setRequired( true );
- }
- else if ( fileExists )
- {
- if ( logger.isDebugEnabled() )
- {
- logger.debug( "Skipped remote request for " + check.getItem() + ", locally cached artifact up-to-date." );
- }
-
- check.setRequired( false );
- }
- else
- {
- int errorPolicy = Utils.getPolicy( session, artifact, repository );
- int cacheFlag = getCacheFlag( error );
- if ( ( errorPolicy & cacheFlag ) != 0 )
- {
- check.setRequired( false );
- check.setException( newException( error, artifact, repository ) );
- }
- else
- {
- check.setRequired( true );
- }
- }
- }
-
- private static int getCacheFlag( String error )
- {
- if ( error == null || error.length() <= 0 )
- {
- return ResolutionErrorPolicy.CACHE_NOT_FOUND;
- }
- else
- {
- return ResolutionErrorPolicy.CACHE_TRANSFER_ERROR;
- }
- }
-
- private ArtifactTransferException newException( String error, Artifact artifact, RemoteRepository repository )
- {
- if ( error == null || error.length() <= 0 )
- {
- return new ArtifactNotFoundException( artifact, repository, "Failure to find " + artifact + " in "
- + repository.getUrl() + " was cached in the local repository, "
- + "resolution will not be reattempted until the update interval of " + repository.getId()
- + " has elapsed or updates are forced", true );
- }
- else
- {
- return new ArtifactTransferException( artifact, repository, "Failure to transfer " + artifact + " from "
- + repository.getUrl() + " was cached in the local repository, "
- + "resolution will not be reattempted until the update interval of " + repository.getId()
- + " has elapsed or updates are forced. Original error: " + error, true );
- }
- }
-
- public void checkMetadata( RepositorySystemSession session, UpdateCheck<Metadata, MetadataTransferException> check )
- {
- if ( check.getLocalLastUpdated() != 0
- && !isUpdatedRequired( session, check.getLocalLastUpdated(), check.getPolicy() ) )
- {
- if ( logger.isDebugEnabled() )
- {
- logger.debug( "Skipped remote request for " + check.getItem()
- + ", locally installed metadata up-to-date." );
- }
-
- check.setRequired( false );
- return;
- }
-
- Metadata metadata = check.getItem();
- RemoteRepository repository = check.getRepository();
-
- File metadataFile = check.getFile();
- if ( metadataFile == null )
- {
- throw new IllegalArgumentException( String.format( "The metadata '%s' has no file attached", metadata ) );
- }
-
- boolean fileExists = check.isFileValid() && metadataFile.exists();
-
- File touchFile = getTouchFile( metadata, metadataFile );
- Properties props = read( touchFile );
-
- String updateKey = getUpdateKey( session, metadataFile, repository );
- String dataKey = getDataKey( metadata, metadataFile, check.getAuthoritativeRepository() );
-
- String error = getError( props, dataKey );
-
- long lastUpdated;
- if ( error == null )
- {
- if ( fileExists )
- {
- // last update was successful
- lastUpdated = getLastUpdated( props, dataKey );
- }
- else
- {
- // this is the first attempt ever
- lastUpdated = 0;
- }
- }
- else if ( error.length() <= 0 )
- {
- // metadata did not exist
- lastUpdated = getLastUpdated( props, dataKey );
- }
- else
- {
- // metadata could not be transferred
- String transferKey = getTransferKey( session, metadata, metadataFile, repository );
- lastUpdated = getLastUpdated( props, transferKey );
- }
-
- if ( lastUpdated == 0 )
- {
- check.setRequired( true );
- }
- else if ( isAlreadyUpdated( session, updateKey ) )
- {
- if ( logger.isDebugEnabled() )
- {
- logger.debug( "Skipped remote request for " + check.getItem()
- + ", already updated during this session." );
- }
-
- check.setRequired( false );
- if ( error != null )
- {
- check.setException( newException( error, metadata, repository ) );
- }
- }
- else if ( isUpdatedRequired( session, lastUpdated, check.getPolicy() ) )
- {
- check.setRequired( true );
- }
- else if ( fileExists )
- {
- if ( logger.isDebugEnabled() )
- {
- logger.debug( "Skipped remote request for " + check.getItem() + ", locally cached metadata up-to-date." );
- }
-
- check.setRequired( false );
- }
- else
- {
- int errorPolicy = Utils.getPolicy( session, metadata, repository );
- int cacheFlag = getCacheFlag( error );
- if ( ( errorPolicy & cacheFlag ) != 0 )
- {
- check.setRequired( false );
- check.setException( newException( error, metadata, repository ) );
- }
- else
- {
- check.setRequired( true );
- }
- }
- }
-
- private MetadataTransferException newException( String error, Metadata metadata, RemoteRepository repository )
- {
- if ( error == null || error.length() <= 0 )
- {
- return new MetadataNotFoundException( metadata, repository, "Failure to find " + metadata + " in "
- + repository.getUrl() + " was cached in the local repository, "
- + "resolution will not be reattempted until the update interval of " + repository.getId()
- + " has elapsed or updates are forced", true );
- }
- else
- {
- return new MetadataTransferException( metadata, repository, "Failure to transfer " + metadata + " from "
- + repository.getUrl() + " was cached in the local repository, "
- + "resolution will not be reattempted until the update interval of " + repository.getId()
- + " has elapsed or updates are forced. Original error: " + error, true );
- }
- }
-
- private long getLastUpdated( Properties props, String key )
- {
- String value = props.getProperty( key + UPDATED_KEY_SUFFIX, "" );
- try
- {
- return ( value.length() > 0 ) ? Long.parseLong( value ) : 1;
- }
- catch ( NumberFormatException e )
- {
- logger.debug( "Cannot parse lastUpdated date: \'" + value + "\'. Ignoring.", e );
- return 1;
- }
- }
-
- private String getError( Properties props, String key )
- {
- return props.getProperty( key + ERROR_KEY_SUFFIX );
- }
-
- private File getTouchFile( Artifact artifact, File artifactFile )
- {
- return new File( artifactFile.getPath() + ".lastUpdated" );
- }
-
- private File getTouchFile( Metadata metadata, File metadataFile )
- {
- return new File( metadataFile.getParent(), "resolver-status.properties" );
- }
-
- private String getDataKey( Artifact artifact, File artifactFile, RemoteRepository repository )
- {
- Set<String> mirroredUrls = Collections.emptySet();
- if ( repository.isRepositoryManager() )
- {
- mirroredUrls = new TreeSet<String>();
- for ( RemoteRepository mirroredRepository : repository.getMirroredRepositories() )
- {
- mirroredUrls.add( normalizeRepoUrl( mirroredRepository.getUrl() ) );
- }
- }
-
- StringBuilder buffer = new StringBuilder( 1024 );
-
- buffer.append( normalizeRepoUrl( repository.getUrl() ) );
- for ( String mirroredUrl : mirroredUrls )
- {
- buffer.append( '+' ).append( mirroredUrl );
- }
-
- return buffer.toString();
- }
-
- private String getTransferKey( RepositorySystemSession session, Artifact artifact, File artifactFile,
- RemoteRepository repository )
- {
- return getRepoKey( session, repository );
- }
-
- private String getDataKey( Metadata metadata, File metadataFile, RemoteRepository repository )
- {
- return metadataFile.getName();
- }
-
- private String getTransferKey( RepositorySystemSession session, Metadata metadata, File metadataFile,
- RemoteRepository repository )
- {
- return metadataFile.getName() + '/' + getRepoKey( session, repository );
- }
-
- private String getRepoKey( RepositorySystemSession session, RemoteRepository repository )
- {
- StringBuilder buffer = new StringBuilder( 128 );
-
- Proxy proxy = repository.getProxy();
- if ( proxy != null )
- {
- buffer.append( AuthenticationDigest.forProxy( session, repository ) ).append( '@' );
- buffer.append( proxy.getHost() ).append( ':' ).append( proxy.getPort() ).append( '>' );
- }
-
- buffer.append( AuthenticationDigest.forRepository( session, repository ) ).append( '@' );
-
- buffer.append( repository.getContentType() ).append( '-' );
- buffer.append( repository.getId() ).append( '-' );
- buffer.append( normalizeRepoUrl( repository.getUrl() ) );
-
- return buffer.toString();
- }
-
- private String normalizeRepoUrl( String url )
- {
- String result = url;
- if ( url != null && url.length() > 0 && !url.endsWith( "/" ) )
- {
- result = url + '/';
- }
- return result;
- }
-
- private String getUpdateKey( RepositorySystemSession session, File file, RemoteRepository repository )
- {
- return file.getAbsolutePath() + '|' + getRepoKey( session, repository );
- }
-
- private int getSessionState( RepositorySystemSession session )
- {
- String mode = ConfigUtils.getString( session, "true", CONFIG_PROP_SESSION_STATE );
- if ( Boolean.parseBoolean( mode ) )
- {
- // perform update check at most once per session, regardless of update policy
- return STATE_ENABLED;
- }
- else if ( "bypass".equalsIgnoreCase( mode ) )
- {
- // evaluate update policy but record update in session to prevent potential future checks
- return STATE_BYPASS;
- }
- else
- {
- // no session state at all, always evaluate update policy
- return STATE_DISABLED;
- }
- }
-
- private boolean isAlreadyUpdated( RepositorySystemSession session, Object updateKey )
- {
- if ( getSessionState( session ) >= STATE_BYPASS )
- {
- return false;
- }
- SessionData data = session.getData();
- Object checkedFiles = data.get( SESSION_CHECKS );
- if ( !( checkedFiles instanceof Map ) )
- {
- return false;
- }
- return ( (Map<?, ?>) checkedFiles ).containsKey( updateKey );
- }
-
- @SuppressWarnings( "unchecked" )
- private void setUpdated( RepositorySystemSession session, Object updateKey )
- {
- if ( getSessionState( session ) >= STATE_DISABLED )
- {
- return;
- }
- SessionData data = session.getData();
- Object checkedFiles = data.get( SESSION_CHECKS );
- while ( !( checkedFiles instanceof Map ) )
- {
- Object old = checkedFiles;
- checkedFiles = new ConcurrentHashMap<Object, Object>( 256 );
- if ( data.set( SESSION_CHECKS, old, checkedFiles ) )
- {
- break;
- }
- checkedFiles = data.get( SESSION_CHECKS );
- }
- ( (Map<Object, Boolean>) checkedFiles ).put( updateKey, Boolean.TRUE );
- }
-
- private boolean isUpdatedRequired( RepositorySystemSession session, long lastModified, String policy )
- {
- return updatePolicyAnalyzer.isUpdatedRequired( session, lastModified, policy );
- }
-
- private Properties read( File touchFile )
- {
- Properties props = new TrackingFileManager().setLogger( logger ).read( touchFile );
- return ( props != null ) ? props : new Properties();
- }
-
- public void touchArtifact( RepositorySystemSession session, UpdateCheck<Artifact, ArtifactTransferException> check )
- {
- Artifact artifact = check.getItem();
- File artifactFile = check.getFile();
- File touchFile = getTouchFile( artifact, artifactFile );
-
- String updateKey = getUpdateKey( session, artifactFile, check.getRepository() );
- String dataKey = getDataKey( artifact, artifactFile, check.getAuthoritativeRepository() );
- String transferKey = getTransferKey( session, artifact, artifactFile, check.getRepository() );
-
- setUpdated( session, updateKey );
- Properties props = write( touchFile, dataKey, transferKey, check.getException() );
-
- if ( artifactFile.exists() && !hasErrors( props ) )
- {
- touchFile.delete();
- }
- }
-
- private boolean hasErrors( Properties props )
- {
- for ( Object key : props.keySet() )
- {
- if ( key.toString().endsWith( ERROR_KEY_SUFFIX ) )
- {
- return true;
- }
- }
- return false;
- }
-
- public void touchMetadata( RepositorySystemSession session, UpdateCheck<Metadata, MetadataTransferException> check )
- {
- Metadata metadata = check.getItem();
- File metadataFile = check.getFile();
- File touchFile = getTouchFile( metadata, metadataFile );
-
- String updateKey = getUpdateKey( session, metadataFile, check.getRepository() );
- String dataKey = getDataKey( metadata, metadataFile, check.getAuthoritativeRepository() );
- String transferKey = getTransferKey( session, metadata, metadataFile, check.getRepository() );
-
- setUpdated( session, updateKey );
- write( touchFile, dataKey, transferKey, check.getException() );
- }
-
- private Properties write( File touchFile, String dataKey, String transferKey, Exception error )
- {
- Map<String, String> updates = new HashMap<String, String>();
-
- String timestamp = Long.toString( System.currentTimeMillis() );
-
- if ( error == null )
- {
- updates.put( dataKey + ERROR_KEY_SUFFIX, null );
- updates.put( dataKey + UPDATED_KEY_SUFFIX, timestamp );
- updates.put( transferKey + UPDATED_KEY_SUFFIX, null );
- }
- else if ( error instanceof ArtifactNotFoundException || error instanceof MetadataNotFoundException )
- {
- updates.put( dataKey + ERROR_KEY_SUFFIX, NOT_FOUND );
- updates.put( dataKey + UPDATED_KEY_SUFFIX, timestamp );
- updates.put( transferKey + UPDATED_KEY_SUFFIX, null );
- }
- else
- {
- String msg = error.getMessage();
- if ( msg == null || msg.length() <= 0 )
- {
- msg = error.getClass().getSimpleName();
- }
- updates.put( dataKey + ERROR_KEY_SUFFIX, msg );
- updates.put( dataKey + UPDATED_KEY_SUFFIX, null );
- updates.put( transferKey + UPDATED_KEY_SUFFIX, timestamp );
- }
-
- return new TrackingFileManager().setLogger( logger ).update( touchFile, updates );
- }
-
-}
[34/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/package-info.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/package-info.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/package-info.java
deleted file mode 100644
index 813b21d..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/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 various sub components that collectively implement the repository system.
- */
-package org.eclipse.aether.internal.impl;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/slf4j/Slf4jLoggerFactory.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/slf4j/Slf4jLoggerFactory.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/slf4j/Slf4jLoggerFactory.java
deleted file mode 100644
index 840fe21..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/slf4j/Slf4jLoggerFactory.java
+++ /dev/null
@@ -1,201 +0,0 @@
-package org.eclipse.aether.internal.impl.slf4j;
-
-/*
- * 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 javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.sisu.Nullable;
-import org.slf4j.ILoggerFactory;
-import org.slf4j.spi.LocationAwareLogger;
-
-/**
- * A logger factory that delegates to <a href="http://www.slf4j.org/" target="_blank">SLF4J</a> logging.
- */
-@Named( "slf4j" )
-public class Slf4jLoggerFactory
- implements LoggerFactory, Service
-{
-
- private static final boolean AVAILABLE;
-
- static
- {
- boolean available;
- try
- {
- Slf4jLoggerFactory.class.getClassLoader().loadClass( "org.slf4j.ILoggerFactory" );
- available = true;
- }
- catch ( Exception e )
- {
- available = false;
- }
- catch ( LinkageError e )
- {
- available = false;
- }
- AVAILABLE = available;
- }
-
- public static boolean isSlf4jAvailable()
- {
- return AVAILABLE;
- }
-
- private ILoggerFactory factory;
-
- /**
- * Creates an instance of this logger factory.
- */
- public Slf4jLoggerFactory()
- {
- // enables no-arg constructor
- }
-
- @Inject
- Slf4jLoggerFactory( @Nullable ILoggerFactory factory )
- {
- setLoggerFactory( factory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( ILoggerFactory.class ) );
- }
-
- public Slf4jLoggerFactory setLoggerFactory( ILoggerFactory factory )
- {
- this.factory = factory;
- return this;
- }
-
- public Logger getLogger( String name )
- {
- org.slf4j.Logger logger = getFactory().getLogger( name );
- if ( logger instanceof LocationAwareLogger )
- {
- return new Slf4jLoggerEx( (LocationAwareLogger) logger );
- }
- return new Slf4jLogger( logger );
- }
-
- private ILoggerFactory getFactory()
- {
- if ( factory == null )
- {
- factory = org.slf4j.LoggerFactory.getILoggerFactory();
- }
- return factory;
- }
-
- private static final class Slf4jLogger
- implements Logger
- {
-
- private final org.slf4j.Logger logger;
-
- public Slf4jLogger( org.slf4j.Logger logger )
- {
- this.logger = logger;
- }
-
- public boolean isDebugEnabled()
- {
- return logger.isDebugEnabled();
- }
-
- public void debug( String msg )
- {
- logger.debug( msg );
- }
-
- public void debug( String msg, Throwable error )
- {
- logger.debug( msg, error );
- }
-
- public boolean isWarnEnabled()
- {
- return logger.isWarnEnabled();
- }
-
- public void warn( String msg )
- {
- logger.warn( msg );
- }
-
- public void warn( String msg, Throwable error )
- {
- logger.warn( msg, error );
- }
-
- }
-
- private static final class Slf4jLoggerEx
- implements Logger
- {
-
- private static final String FQCN = Slf4jLoggerEx.class.getName();
-
- private final LocationAwareLogger logger;
-
- public Slf4jLoggerEx( LocationAwareLogger logger )
- {
- this.logger = logger;
- }
-
- public boolean isDebugEnabled()
- {
- return logger.isDebugEnabled();
- }
-
- public void debug( String msg )
- {
- logger.log( null, FQCN, LocationAwareLogger.DEBUG_INT, msg, null, null );
- }
-
- public void debug( String msg, Throwable error )
- {
- logger.log( null, FQCN, LocationAwareLogger.DEBUG_INT, msg, null, error );
- }
-
- public boolean isWarnEnabled()
- {
- return logger.isWarnEnabled();
- }
-
- public void warn( String msg )
- {
- logger.log( null, FQCN, LocationAwareLogger.WARN_INT, msg, null, null );
- }
-
- public void warn( String msg, Throwable error )
- {
- logger.log( null, FQCN, LocationAwareLogger.WARN_INT, msg, null, error );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/slf4j/package-info.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/slf4j/package-info.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/slf4j/package-info.java
deleted file mode 100644
index 307c22e..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/slf4j/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 integration with the logging framework <a href="http://www.slf4j.org/" target="_blank">SLF4J</a>.
- */
-package org.eclipse.aether.internal.impl.slf4j;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/site/site.xml
----------------------------------------------------------------------
diff --git a/aether-impl/src/site/site.xml b/aether-impl/src/site/site.xml
deleted file mode 100644
index 3a16bf9..0000000
--- a/aether-impl/src/site/site.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
- <body>
- <menu name="Overview">
- <item name="Introduction" href="index.html"/>
- <item name="JavaDocs" href="apidocs/index.html"/>
- <item name="Source Xref" href="xref/index.html"/>
- <!--item name="FAQ" href="faq.html"/-->
- </menu>
-
- <menu ref="parent"/>
- <menu ref="reports"/>
- </body>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/impl/DefaultServiceLocatorTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/impl/DefaultServiceLocatorTest.java b/aether-impl/src/test/java/org/eclipse/aether/impl/DefaultServiceLocatorTest.java
deleted file mode 100644
index 657b4ac..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/impl/DefaultServiceLocatorTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.impl.ArtifactDescriptorReader;
-import org.eclipse.aether.impl.DefaultServiceLocator;
-import org.eclipse.aether.impl.VersionRangeResolver;
-import org.eclipse.aether.impl.VersionResolver;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.junit.Test;
-
-/**
- */
-public class DefaultServiceLocatorTest
-{
-
- @Test
- public void testGetRepositorySystem()
- {
- DefaultServiceLocator locator = new DefaultServiceLocator();
- locator.addService( ArtifactDescriptorReader.class, StubArtifactDescriptorReader.class );
- locator.addService( VersionResolver.class, StubVersionResolver.class );
- locator.addService( VersionRangeResolver.class, StubVersionRangeResolver.class );
-
- RepositorySystem repoSys = locator.getService( RepositorySystem.class );
- assertNotNull( repoSys );
- }
-
- @Test
- public void testGetServicesUnmodifiable()
- {
- DefaultServiceLocator locator = new DefaultServiceLocator();
- locator.setServices( String.class, "one", "two" );
- List<String> services = locator.getServices( String.class );
- assertNotNull( services );
- try
- {
- services.set( 0, "fail" );
- fail( "service list is modifable" );
- }
- catch ( UnsupportedOperationException e )
- {
- // expected
- }
- }
-
- @Test
- public void testSetInstancesAddClass()
- {
- DefaultServiceLocator locator = new DefaultServiceLocator();
- locator.setServices( String.class, "one", "two" );
- locator.addService( String.class, String.class );
- assertEquals( Arrays.asList( "one", "two", "" ), locator.getServices( String.class ) );
- }
-
- @Test
- public void testInitService()
- {
- DefaultServiceLocator locator = new DefaultServiceLocator();
- locator.setService( DummyService.class, DummyService.class );
- DummyService service = locator.getService( DummyService.class );
- assertNotNull( service );
- assertNotNull( service.locator );
- }
-
- private static class DummyService
- implements Service
- {
-
- public ServiceLocator locator;
-
- public void initService( ServiceLocator locator )
- {
- this.locator = locator;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/impl/StubArtifactDescriptorReader.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/impl/StubArtifactDescriptorReader.java b/aether-impl/src/test/java/org/eclipse/aether/impl/StubArtifactDescriptorReader.java
deleted file mode 100644
index a5e650f..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/impl/StubArtifactDescriptorReader.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.impl.ArtifactDescriptorReader;
-import org.eclipse.aether.resolution.ArtifactDescriptorException;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-
-public class StubArtifactDescriptorReader
- implements ArtifactDescriptorReader
-{
-
- public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session,
- ArtifactDescriptorRequest request )
- throws ArtifactDescriptorException
- {
- ArtifactDescriptorResult result = new ArtifactDescriptorResult( request );
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/impl/StubVersionRangeResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/impl/StubVersionRangeResolver.java b/aether-impl/src/test/java/org/eclipse/aether/impl/StubVersionRangeResolver.java
deleted file mode 100644
index 81e000e..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/impl/StubVersionRangeResolver.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.impl.VersionRangeResolver;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResolutionException;
-import org.eclipse.aether.resolution.VersionRangeResult;
-
-public class StubVersionRangeResolver
- implements VersionRangeResolver
-{
-
- public VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request )
- throws VersionRangeResolutionException
- {
- VersionRangeResult result = new VersionRangeResult( request );
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/impl/StubVersionResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/impl/StubVersionResolver.java b/aether-impl/src/test/java/org/eclipse/aether/impl/StubVersionResolver.java
deleted file mode 100644
index f59fa11..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/impl/StubVersionResolver.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.impl.VersionResolver;
-import org.eclipse.aether.resolution.VersionRequest;
-import org.eclipse.aether.resolution.VersionResolutionException;
-import org.eclipse.aether.resolution.VersionResult;
-
-public class StubVersionResolver
- implements VersionResolver
-{
-
- public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
- throws VersionResolutionException
- {
- VersionResult result = new VersionResult( request );
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/impl/guice/AetherModuleTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/impl/guice/AetherModuleTest.java b/aether-impl/src/test/java/org/eclipse/aether/impl/guice/AetherModuleTest.java
deleted file mode 100644
index efcda19..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/impl/guice/AetherModuleTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.eclipse.aether.impl.guice;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Collections;
-import java.util.Set;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.impl.ArtifactDescriptorReader;
-import org.eclipse.aether.impl.MetadataGeneratorFactory;
-import org.eclipse.aether.impl.StubArtifactDescriptorReader;
-import org.eclipse.aether.impl.StubVersionRangeResolver;
-import org.eclipse.aether.impl.StubVersionResolver;
-import org.eclipse.aether.impl.VersionRangeResolver;
-import org.eclipse.aether.impl.VersionResolver;
-import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.junit.Test;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Guice;
-import com.google.inject.Provides;
-
-public class AetherModuleTest
-{
-
- @Test
- public void testModuleCompleteness()
- {
- assertNotNull( Guice.createInjector( new SystemModule() ).getInstance( RepositorySystem.class ) );
- }
-
- static class SystemModule
- extends AbstractModule
- {
-
- @Override
- protected void configure()
- {
- install( new AetherModule() );
- bind( ArtifactDescriptorReader.class ).to( StubArtifactDescriptorReader.class );
- bind( VersionRangeResolver.class ).to( StubVersionRangeResolver.class );
- bind( VersionResolver.class ).to( StubVersionResolver.class );
- }
-
- @Provides
- public Set<MetadataGeneratorFactory> metadataGeneratorFactories()
- {
- return Collections.emptySet();
- }
-
- @Provides
- public Set<RepositoryConnectorFactory> repositoryConnectorFactories()
- {
- return Collections.emptySet();
- }
-
- @Provides
- public Set<TransporterFactory> transporterFactories()
- {
- return Collections.emptySet();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DataPoolTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DataPoolTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DataPoolTest.java
deleted file mode 100644
index 43651f6..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DataPoolTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-import org.junit.Test;
-
-public class DataPoolTest
-{
-
- private DataPool newDataPool()
- {
- return new DataPool( new DefaultRepositorySystemSession() );
- }
-
- @Test
- public void testArtifactDescriptorCaching()
- {
- ArtifactDescriptorRequest request = new ArtifactDescriptorRequest();
- request.setArtifact( new DefaultArtifact( "gid:aid:1" ) );
- ArtifactDescriptorResult result = new ArtifactDescriptorResult( request );
- result.setArtifact( new DefaultArtifact( "gid:aid:2" ) );
- result.addRelocation( request.getArtifact() );
- result.addDependency( new Dependency( new DefaultArtifact( "gid:dep:3" ), "compile" ) );
- result.addManagedDependency( new Dependency( new DefaultArtifact( "gid:mdep:3" ), "runtime" ) );
- result.addRepository( new RemoteRepository.Builder( "test", "default", "http://localhost" ).build() );
- result.addAlias( new DefaultArtifact( "gid:alias:4" ) );
-
- DataPool pool = newDataPool();
- Object key = pool.toKey( request );
- pool.putDescriptor( key, result );
- ArtifactDescriptorResult cached = pool.getDescriptor( key, request );
- assertNotNull( cached );
- assertEquals( result.getArtifact(), cached.getArtifact() );
- assertEquals( result.getRelocations(), cached.getRelocations() );
- assertEquals( result.getDependencies(), cached.getDependencies() );
- assertEquals( result.getManagedDependencies(), cached.getManagedDependencies() );
- assertEquals( result.getRepositories(), cached.getRepositories() );
- assertEquals( result.getAliases(), cached.getAliases() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java
deleted file mode 100644
index f776e9c..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java
+++ /dev/null
@@ -1,909 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositoryEvent;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.RepositoryEvent.EventType;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.ArtifactProperties;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.impl.UpdateCheckManager;
-import org.eclipse.aether.impl.VersionResolver;
-import org.eclipse.aether.internal.impl.DefaultArtifactResolver;
-import org.eclipse.aether.internal.impl.DefaultUpdateCheckManager;
-import org.eclipse.aether.internal.test.util.TestFileProcessor;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLocalRepositoryManager;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.LocalArtifactRegistration;
-import org.eclipse.aether.repository.LocalArtifactRequest;
-import org.eclipse.aether.repository.LocalArtifactResult;
-import org.eclipse.aether.repository.LocalMetadataRegistration;
-import org.eclipse.aether.repository.LocalMetadataRequest;
-import org.eclipse.aether.repository.LocalMetadataResult;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.repository.WorkspaceReader;
-import org.eclipse.aether.repository.WorkspaceRepository;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResolutionException;
-import org.eclipse.aether.resolution.ArtifactResult;
-import org.eclipse.aether.resolution.VersionRequest;
-import org.eclipse.aether.resolution.VersionResolutionException;
-import org.eclipse.aether.resolution.VersionResult;
-import org.eclipse.aether.spi.connector.ArtifactDownload;
-import org.eclipse.aether.spi.connector.MetadataDownload;
-import org.eclipse.aether.transfer.ArtifactNotFoundException;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.util.repository.SimpleResolutionErrorPolicy;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class DefaultArtifactResolverTest
-{
- private DefaultArtifactResolver resolver;
-
- private DefaultRepositorySystemSession session;
-
- private TestLocalRepositoryManager lrm;
-
- private StubRepositoryConnectorProvider repositoryConnectorProvider;
-
- private Artifact artifact;
-
- private RecordingRepositoryConnector connector;
-
- @Before
- public void setup()
- throws IOException
- {
- UpdateCheckManager updateCheckManager = new StaticUpdateCheckManager( true );
- repositoryConnectorProvider = new StubRepositoryConnectorProvider();
- VersionResolver versionResolver = new StubVersionResolver();
- session = TestUtils.newSession();
- lrm = (TestLocalRepositoryManager) session.getLocalRepositoryManager();
- resolver = new DefaultArtifactResolver();
- resolver.setFileProcessor( new TestFileProcessor() );
- resolver.setRepositoryEventDispatcher( new StubRepositoryEventDispatcher() );
- resolver.setVersionResolver( versionResolver );
- resolver.setUpdateCheckManager( updateCheckManager );
- resolver.setRepositoryConnectorProvider( repositoryConnectorProvider );
- resolver.setRemoteRepositoryManager( new StubRemoteRepositoryManager() );
- resolver.setSyncContextFactory( new StubSyncContextFactory() );
- resolver.setOfflineController( new DefaultOfflineController() );
-
- artifact = new DefaultArtifact( "gid", "aid", "", "ext", "ver" );
-
- connector = new RecordingRepositoryConnector();
- repositoryConnectorProvider.setConnector( connector );
- }
-
- @After
- public void teardown()
- throws Exception
- {
- if ( session.getLocalRepository() != null )
- {
- TestFileUtils.deleteFile( session.getLocalRepository().getBasedir() );
- }
- }
-
- @Test
- public void testResolveLocalArtifactSuccessful()
- throws IOException, ArtifactResolutionException
- {
- File tmpFile = TestFileUtils.createTempFile( "tmp" );
- Map<String, String> properties = new HashMap<String, String>();
- properties.put( ArtifactProperties.LOCAL_PATH, tmpFile.getAbsolutePath() );
- artifact = artifact.setProperties( properties );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- ArtifactResult result = resolver.resolveArtifact( session, request );
-
- assertTrue( result.getExceptions().isEmpty() );
-
- Artifact resolved = result.getArtifact();
- assertNotNull( resolved.getFile() );
- resolved = resolved.setFile( null );
-
- assertEquals( artifact, resolved );
- }
-
- @Test
- public void testResolveLocalArtifactUnsuccessful()
- throws IOException, ArtifactResolutionException
- {
- File tmpFile = TestFileUtils.createTempFile( "tmp" );
- Map<String, String> properties = new HashMap<String, String>();
- properties.put( ArtifactProperties.LOCAL_PATH, tmpFile.getAbsolutePath() );
- artifact = artifact.setProperties( properties );
-
- tmpFile.delete();
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
-
- try
- {
- resolver.resolveArtifact( session, request );
- fail( "expected exception" );
- }
- catch ( ArtifactResolutionException e )
- {
- assertNotNull( e.getResults() );
- assertEquals( 1, e.getResults().size() );
-
- ArtifactResult result = e.getResults().get( 0 );
-
- assertSame( request, result.getRequest() );
-
- assertFalse( result.getExceptions().isEmpty() );
- assertTrue( result.getExceptions().get( 0 ) instanceof ArtifactNotFoundException );
-
- Artifact resolved = result.getArtifact();
- assertNull( resolved );
- }
-
- }
-
- @Test
- public void testResolveRemoteArtifact()
- throws IOException, ArtifactResolutionException
- {
- connector.setExpectGet( artifact );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
-
- ArtifactResult result = resolver.resolveArtifact( session, request );
-
- assertTrue( result.getExceptions().isEmpty() );
-
- Artifact resolved = result.getArtifact();
- assertNotNull( resolved.getFile() );
-
- resolved = resolved.setFile( null );
- assertEquals( artifact, resolved );
-
- connector.assertSeenExpected();
- }
-
- @Test
- public void testResolveRemoteArtifactUnsuccessful()
- throws IOException, ArtifactResolutionException
- {
- RecordingRepositoryConnector connector = new RecordingRepositoryConnector()
- {
-
- @Override
- public void get( Collection<? extends ArtifactDownload> artifactDownloads,
- Collection<? extends MetadataDownload> metadataDownloads )
- {
- super.get( artifactDownloads, metadataDownloads );
- ArtifactDownload download = artifactDownloads.iterator().next();
- ArtifactTransferException exception =
- new ArtifactNotFoundException( download.getArtifact(), null, "not found" );
- download.setException( exception );
- }
-
- };
-
- connector.setExpectGet( artifact );
- repositoryConnectorProvider.setConnector( connector );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
-
- try
- {
- resolver.resolveArtifact( session, request );
- fail( "expected exception" );
- }
- catch ( ArtifactResolutionException e )
- {
- connector.assertSeenExpected();
- assertNotNull( e.getResults() );
- assertEquals( 1, e.getResults().size() );
-
- ArtifactResult result = e.getResults().get( 0 );
-
- assertSame( request, result.getRequest() );
-
- assertFalse( result.getExceptions().isEmpty() );
- assertTrue( result.getExceptions().get( 0 ) instanceof ArtifactNotFoundException );
-
- Artifact resolved = result.getArtifact();
- assertNull( resolved );
- }
-
- }
-
- @Test
- public void testArtifactNotFoundCache()
- throws Exception
- {
- RecordingRepositoryConnector connector = new RecordingRepositoryConnector()
- {
- @Override
- public void get( Collection<? extends ArtifactDownload> artifactDownloads,
- Collection<? extends MetadataDownload> metadataDownloads )
- {
- super.get( artifactDownloads, metadataDownloads );
- for ( ArtifactDownload download : artifactDownloads )
- {
- download.getFile().delete();
- ArtifactTransferException exception =
- new ArtifactNotFoundException( download.getArtifact(), null, "not found" );
- download.setException( exception );
- }
- }
- };
-
- repositoryConnectorProvider.setConnector( connector );
- resolver.setUpdateCheckManager( new DefaultUpdateCheckManager().setUpdatePolicyAnalyzer( new DefaultUpdatePolicyAnalyzer() ) );
-
- session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
- session.setUpdatePolicy( RepositoryPolicy.UPDATE_POLICY_NEVER );
-
- RemoteRepository remoteRepo = new RemoteRepository.Builder( "id", "default", "file:///" ).build();
-
- Artifact artifact1 = artifact;
- Artifact artifact2 = artifact.setVersion( "ver2" );
-
- ArtifactRequest request1 = new ArtifactRequest( artifact1, Arrays.asList( remoteRepo ), "" );
- ArtifactRequest request2 = new ArtifactRequest( artifact2, Arrays.asList( remoteRepo ), "" );
-
- connector.setExpectGet( new Artifact[] { artifact1, artifact2 } );
- try
- {
- resolver.resolveArtifacts( session, Arrays.asList( request1, request2 ) );
- fail( "expected exception" );
- }
- catch ( ArtifactResolutionException e )
- {
- connector.assertSeenExpected();
- }
-
- TestFileUtils.writeString( new File( lrm.getRepository().getBasedir(), lrm.getPathForLocalArtifact( artifact2 ) ),
- "artifact" );
- lrm.setArtifactAvailability( artifact2, false );
-
- DefaultUpdateCheckManagerTest.resetSessionData( session );
- connector.resetActual();
- connector.setExpectGet( new Artifact[0] );
- try
- {
- resolver.resolveArtifacts( session, Arrays.asList( request1, request2 ) );
- fail( "expected exception" );
- }
- catch ( ArtifactResolutionException e )
- {
- connector.assertSeenExpected();
- for ( ArtifactResult result : e.getResults() )
- {
- Throwable t = result.getExceptions().get( 0 );
- assertEquals( t.toString(), true, t instanceof ArtifactNotFoundException );
- assertEquals( t.toString(), true, t.getMessage().contains( "cached" ) );
- }
- }
- }
-
- @Test
- public void testResolveFromWorkspace()
- throws IOException, ArtifactResolutionException
- {
- WorkspaceReader workspace = new WorkspaceReader()
- {
-
- public WorkspaceRepository getRepository()
- {
- return new WorkspaceRepository( "default" );
- }
-
- public List<String> findVersions( Artifact artifact )
- {
- return Arrays.asList( artifact.getVersion() );
- }
-
- public File findArtifact( Artifact artifact )
- {
- try
- {
- return TestFileUtils.createTempFile( artifact.toString() );
- }
- catch ( IOException e )
- {
- throw new RuntimeException( e.getMessage(), e );
- }
- }
- };
- session.setWorkspaceReader( workspace );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
-
- ArtifactResult result = resolver.resolveArtifact( session, request );
-
- assertTrue( result.getExceptions().isEmpty() );
-
- Artifact resolved = result.getArtifact();
- assertNotNull( resolved.getFile() );
-
- assertEquals( resolved.toString(), TestFileUtils.readString( resolved.getFile() ) );
-
- resolved = resolved.setFile( null );
- assertEquals( artifact, resolved );
-
- connector.assertSeenExpected();
- }
-
- @Test
- public void testResolveFromWorkspaceFallbackToRepository()
- throws IOException, ArtifactResolutionException
- {
- WorkspaceReader workspace = new WorkspaceReader()
- {
-
- public WorkspaceRepository getRepository()
- {
- return new WorkspaceRepository( "default" );
- }
-
- public List<String> findVersions( Artifact artifact )
- {
- return Arrays.asList( artifact.getVersion() );
- }
-
- public File findArtifact( Artifact artifact )
- {
- return null;
- }
- };
- session.setWorkspaceReader( workspace );
-
- connector.setExpectGet( artifact );
- repositoryConnectorProvider.setConnector( connector );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
-
- ArtifactResult result = resolver.resolveArtifact( session, request );
-
- assertTrue( "exception on resolveArtifact", result.getExceptions().isEmpty() );
-
- Artifact resolved = result.getArtifact();
- assertNotNull( resolved.getFile() );
-
- resolved = resolved.setFile( null );
- assertEquals( artifact, resolved );
-
- connector.assertSeenExpected();
- }
-
- @Test
- public void testRepositoryEventsSuccessfulLocal()
- throws ArtifactResolutionException, IOException
- {
- RecordingRepositoryListener listener = new RecordingRepositoryListener();
- session.setRepositoryListener( listener );
-
- File tmpFile = TestFileUtils.createTempFile( "tmp" );
- Map<String, String> properties = new HashMap<String, String>();
- properties.put( ArtifactProperties.LOCAL_PATH, tmpFile.getAbsolutePath() );
- artifact = artifact.setProperties( properties );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- resolver.resolveArtifact( session, request );
-
- List<RepositoryEvent> events = listener.getEvents();
- assertEquals( 2, events.size() );
- RepositoryEvent event = events.get( 0 );
- assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() );
- assertNull( event.getException() );
- assertEquals( artifact, event.getArtifact() );
-
- event = events.get( 1 );
- assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() );
- assertNull( event.getException() );
- assertEquals( artifact, event.getArtifact().setFile( null ) );
- }
-
- @Test
- public void testRepositoryEventsUnsuccessfulLocal()
- throws IOException
- {
- RecordingRepositoryListener listener = new RecordingRepositoryListener();
- session.setRepositoryListener( listener );
-
- Map<String, String> properties = new HashMap<String, String>();
- properties.put( ArtifactProperties.LOCAL_PATH, "doesnotexist" );
- artifact = artifact.setProperties( properties );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- try
- {
- resolver.resolveArtifact( session, request );
- fail( "expected exception" );
- }
- catch ( ArtifactResolutionException e )
- {
- }
-
- List<RepositoryEvent> events = listener.getEvents();
- assertEquals( 2, events.size() );
-
- RepositoryEvent event = events.get( 0 );
- assertEquals( artifact, event.getArtifact() );
- assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() );
-
- event = events.get( 1 );
- assertEquals( artifact, event.getArtifact() );
- assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() );
- assertNotNull( event.getException() );
- assertEquals( 1, event.getExceptions().size() );
-
- }
-
- @Test
- public void testRepositoryEventsSuccessfulRemote()
- throws ArtifactResolutionException
- {
- RecordingRepositoryListener listener = new RecordingRepositoryListener();
- session.setRepositoryListener( listener );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
-
- resolver.resolveArtifact( session, request );
-
- List<RepositoryEvent> events = listener.getEvents();
- assertEquals( events.toString(), 4, events.size() );
- RepositoryEvent event = events.get( 0 );
- assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() );
- assertNull( event.getException() );
- assertEquals( artifact, event.getArtifact() );
-
- event = events.get( 1 );
- assertEquals( EventType.ARTIFACT_DOWNLOADING, event.getType() );
- assertNull( event.getException() );
- assertEquals( artifact, event.getArtifact().setFile( null ) );
-
- event = events.get( 2 );
- assertEquals( EventType.ARTIFACT_DOWNLOADED, event.getType() );
- assertNull( event.getException() );
- assertEquals( artifact, event.getArtifact().setFile( null ) );
-
- event = events.get( 3 );
- assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() );
- assertNull( event.getException() );
- assertEquals( artifact, event.getArtifact().setFile( null ) );
- }
-
- @Test
- public void testRepositoryEventsUnsuccessfulRemote()
- throws IOException, ArtifactResolutionException
- {
- RecordingRepositoryConnector connector = new RecordingRepositoryConnector()
- {
-
- @Override
- public void get( Collection<? extends ArtifactDownload> artifactDownloads,
- Collection<? extends MetadataDownload> metadataDownloads )
- {
- super.get( artifactDownloads, metadataDownloads );
- ArtifactDownload download = artifactDownloads.iterator().next();
- ArtifactTransferException exception =
- new ArtifactNotFoundException( download.getArtifact(), null, "not found" );
- download.setException( exception );
- }
-
- };
- repositoryConnectorProvider.setConnector( connector );
-
- RecordingRepositoryListener listener = new RecordingRepositoryListener();
- session.setRepositoryListener( listener );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
-
- try
- {
- resolver.resolveArtifact( session, request );
- fail( "expected exception" );
- }
- catch ( ArtifactResolutionException e )
- {
- }
-
- List<RepositoryEvent> events = listener.getEvents();
- assertEquals( events.toString(), 4, events.size() );
-
- RepositoryEvent event = events.get( 0 );
- assertEquals( artifact, event.getArtifact() );
- assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() );
-
- event = events.get( 1 );
- assertEquals( artifact, event.getArtifact() );
- assertEquals( EventType.ARTIFACT_DOWNLOADING, event.getType() );
-
- event = events.get( 2 );
- assertEquals( artifact, event.getArtifact() );
- assertEquals( EventType.ARTIFACT_DOWNLOADED, event.getType() );
- assertNotNull( event.getException() );
- assertEquals( 1, event.getExceptions().size() );
-
- event = events.get( 3 );
- assertEquals( artifact, event.getArtifact() );
- assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() );
- assertNotNull( event.getException() );
- assertEquals( 1, event.getExceptions().size() );
- }
-
- @Test
- public void testVersionResolverFails()
- {
- resolver.setVersionResolver( new VersionResolver()
- {
-
- public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
- throws VersionResolutionException
- {
- throw new VersionResolutionException( new VersionResult( request ) );
- }
- } );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- try
- {
- resolver.resolveArtifact( session, request );
- fail( "expected exception" );
- }
- catch ( ArtifactResolutionException e )
- {
- connector.assertSeenExpected();
- assertNotNull( e.getResults() );
- assertEquals( 1, e.getResults().size() );
-
- ArtifactResult result = e.getResults().get( 0 );
-
- assertSame( request, result.getRequest() );
-
- assertFalse( result.getExceptions().isEmpty() );
- assertTrue( result.getExceptions().get( 0 ) instanceof VersionResolutionException );
-
- Artifact resolved = result.getArtifact();
- assertNull( resolved );
- }
- }
-
- @Test
- public void testRepositoryEventsOnVersionResolverFail()
- {
- resolver.setVersionResolver( new VersionResolver()
- {
-
- public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
- throws VersionResolutionException
- {
- throw new VersionResolutionException( new VersionResult( request ) );
- }
- } );
-
- RecordingRepositoryListener listener = new RecordingRepositoryListener();
- session.setRepositoryListener( listener );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- try
- {
- resolver.resolveArtifact( session, request );
- fail( "expected exception" );
- }
- catch ( ArtifactResolutionException e )
- {
- }
-
- List<RepositoryEvent> events = listener.getEvents();
- assertEquals( 2, events.size() );
-
- RepositoryEvent event = events.get( 0 );
- assertEquals( artifact, event.getArtifact() );
- assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() );
-
- event = events.get( 1 );
- assertEquals( artifact, event.getArtifact() );
- assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() );
- assertNotNull( event.getException() );
- assertEquals( 1, event.getExceptions().size() );
- }
-
- @Test
- public void testLocalArtifactAvailable()
- throws ArtifactResolutionException
- {
- session.setLocalRepositoryManager( new LocalRepositoryManager()
- {
-
- public LocalRepository getRepository()
- {
- return null;
- }
-
- public String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context )
- {
- return null;
- }
-
- public String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context )
- {
- return null;
- }
-
- public String getPathForLocalMetadata( Metadata metadata )
- {
- return null;
- }
-
- public String getPathForLocalArtifact( Artifact artifact )
- {
- return null;
- }
-
- public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request )
- {
-
- LocalArtifactResult result = new LocalArtifactResult( request );
- result.setAvailable( true );
- try
- {
- result.setFile( TestFileUtils.createTempFile( "" ) );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- }
- return result;
- }
-
- public void add( RepositorySystemSession session, LocalArtifactRegistration request )
- {
- }
-
- public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )
- {
- LocalMetadataResult result = new LocalMetadataResult( request );
- try
- {
- result.setFile( TestFileUtils.createTempFile( "" ) );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- }
- return result;
- }
-
- public void add( RepositorySystemSession session, LocalMetadataRegistration request )
- {
- }
- } );
-
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
-
- ArtifactResult result = resolver.resolveArtifact( session, request );
-
- assertTrue( result.getExceptions().isEmpty() );
-
- Artifact resolved = result.getArtifact();
- assertNotNull( resolved.getFile() );
-
- resolved = resolved.setFile( null );
- assertEquals( artifact, resolved );
-
- }
-
- @Test
- public void testFindInLocalRepositoryWhenVersionWasFoundInLocalRepository()
- throws ArtifactResolutionException
- {
- session.setLocalRepositoryManager( new LocalRepositoryManager()
- {
-
- public LocalRepository getRepository()
- {
- return null;
- }
-
- public String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context )
- {
- return null;
- }
-
- public String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context )
- {
- return null;
- }
-
- public String getPathForLocalMetadata( Metadata metadata )
- {
- return null;
- }
-
- public String getPathForLocalArtifact( Artifact artifact )
- {
- return null;
- }
-
- public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request )
- {
-
- LocalArtifactResult result = new LocalArtifactResult( request );
- result.setAvailable( false );
- try
- {
- result.setFile( TestFileUtils.createTempFile( "" ) );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- }
- return result;
- }
-
- public void add( RepositorySystemSession session, LocalArtifactRegistration request )
- {
- }
-
- public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )
- {
- LocalMetadataResult result = new LocalMetadataResult( request );
- return result;
- }
-
- public void add( RepositorySystemSession session, LocalMetadataRegistration request )
- {
- }
- } );
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
- request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
-
- resolver.setVersionResolver( new VersionResolver()
- {
-
- public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
- throws VersionResolutionException
- {
- return new VersionResult( request ).setRepository( new LocalRepository( "id" ) ).setVersion( request.getArtifact().getVersion() );
- }
- } );
- ArtifactResult result = resolver.resolveArtifact( session, request );
-
- assertTrue( result.getExceptions().isEmpty() );
-
- Artifact resolved = result.getArtifact();
- assertNotNull( resolved.getFile() );
-
- resolved = resolved.setFile( null );
- assertEquals( artifact, resolved );
- }
-
- @Test
- public void testFindInLocalRepositoryWhenVersionRangeWasResolvedFromLocalRepository()
- throws ArtifactResolutionException
- {
- session.setLocalRepositoryManager( new LocalRepositoryManager()
- {
-
- public LocalRepository getRepository()
- {
- return null;
- }
-
- public String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context )
- {
- return null;
- }
-
- public String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context )
- {
- return null;
- }
-
- public String getPathForLocalMetadata( Metadata metadata )
- {
- return null;
- }
-
- public String getPathForLocalArtifact( Artifact artifact )
- {
- return null;
- }
-
- public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request )
- {
-
- LocalArtifactResult result = new LocalArtifactResult( request );
- result.setAvailable( false );
- try
- {
- result.setFile( TestFileUtils.createTempFile( "" ) );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- }
- return result;
- }
-
- public void add( RepositorySystemSession session, LocalArtifactRegistration request )
- {
- }
-
- public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )
- {
- LocalMetadataResult result = new LocalMetadataResult( request );
- return result;
- }
-
- public void add( RepositorySystemSession session, LocalMetadataRegistration request )
- {
- }
-
- } );
- ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
-
- resolver.setVersionResolver( new VersionResolver()
- {
-
- public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
- throws VersionResolutionException
- {
- return new VersionResult( request ).setVersion( request.getArtifact().getVersion() );
- }
- } );
- ArtifactResult result = resolver.resolveArtifact( session, request );
-
- assertTrue( result.getExceptions().isEmpty() );
-
- Artifact resolved = result.getArtifact();
- assertNotNull( resolved.getFile() );
-
- resolved = resolved.setFile( null );
- assertEquals( artifact, resolved );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java
deleted file mode 100644
index 82318e5..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
-import org.eclipse.aether.transfer.TransferResource;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class DefaultChecksumPolicyProviderTest
-{
-
- private static final String CHECKSUM_POLICY_UNKNOWN = "unknown";
-
- private DefaultRepositorySystemSession session;
-
- private DefaultChecksumPolicyProvider provider;
-
- private RemoteRepository repository;
-
- private TransferResource resource;
-
- @Before
- public void setup()
- throws Exception
- {
- session = TestUtils.newSession();
- provider = new DefaultChecksumPolicyProvider();
- repository = new RemoteRepository.Builder( "test", "default", "file:/void" ).build();
- resource = new TransferResource( repository.getUrl(), "file.txt", null, null );
- }
-
- @After
- public void teardown()
- throws Exception
- {
- provider = null;
- session = null;
- repository = null;
- resource = null;
- }
-
- @Test
- public void testNewChecksumPolicy_Fail()
- {
- ChecksumPolicy policy =
- provider.newChecksumPolicy( session, repository, resource, RepositoryPolicy.CHECKSUM_POLICY_FAIL );
- assertNotNull( policy );
- assertEquals( FailChecksumPolicy.class, policy.getClass() );
- }
-
- @Test
- public void testNewChecksumPolicy_Warn()
- {
- ChecksumPolicy policy =
- provider.newChecksumPolicy( session, repository, resource, RepositoryPolicy.CHECKSUM_POLICY_WARN );
- assertNotNull( policy );
- assertEquals( WarnChecksumPolicy.class, policy.getClass() );
- }
-
- @Test
- public void testNewChecksumPolicy_Ignore()
- {
- ChecksumPolicy policy =
- provider.newChecksumPolicy( session, repository, resource, RepositoryPolicy.CHECKSUM_POLICY_IGNORE );
- assertNull( policy );
- }
-
- @Test
- public void testNewChecksumPolicy_Unknown()
- {
- ChecksumPolicy policy = provider.newChecksumPolicy( session, repository, resource, CHECKSUM_POLICY_UNKNOWN );
- assertNotNull( policy );
- assertEquals( WarnChecksumPolicy.class, policy.getClass() );
- }
-
- @Test
- public void testGetEffectiveChecksumPolicy_EqualPolicies()
- {
- String[] policies =
- { RepositoryPolicy.CHECKSUM_POLICY_FAIL, RepositoryPolicy.CHECKSUM_POLICY_WARN,
- RepositoryPolicy.CHECKSUM_POLICY_IGNORE, CHECKSUM_POLICY_UNKNOWN };
- for ( String policy : policies )
- {
- assertEquals( policy, policy, provider.getEffectiveChecksumPolicy( session, policy, policy ) );
- }
- }
-
- @Test
- public void testGetEffectiveChecksumPolicy_DifferentPolicies()
- {
- String[][] testCases =
- { { RepositoryPolicy.CHECKSUM_POLICY_WARN, RepositoryPolicy.CHECKSUM_POLICY_FAIL },
- { RepositoryPolicy.CHECKSUM_POLICY_IGNORE, RepositoryPolicy.CHECKSUM_POLICY_FAIL },
- { RepositoryPolicy.CHECKSUM_POLICY_IGNORE, RepositoryPolicy.CHECKSUM_POLICY_WARN } };
- for ( String[] testCase : testCases )
- {
- assertEquals( testCase[0] + " vs " + testCase[1], testCase[0],
- provider.getEffectiveChecksumPolicy( session, testCase[0], testCase[1] ) );
- assertEquals( testCase[0] + " vs " + testCase[1], testCase[0],
- provider.getEffectiveChecksumPolicy( session, testCase[1], testCase[0] ) );
- }
- }
-
- @Test
- public void testGetEffectiveChecksumPolicy_UnknownPolicies()
- {
- String[][] testCases =
- { { RepositoryPolicy.CHECKSUM_POLICY_WARN, RepositoryPolicy.CHECKSUM_POLICY_FAIL },
- { RepositoryPolicy.CHECKSUM_POLICY_WARN, RepositoryPolicy.CHECKSUM_POLICY_WARN },
- { RepositoryPolicy.CHECKSUM_POLICY_IGNORE, RepositoryPolicy.CHECKSUM_POLICY_IGNORE } };
- for ( String[] testCase : testCases )
- {
- assertEquals( "unknown vs " + testCase[1], testCase[0],
- provider.getEffectiveChecksumPolicy( session, CHECKSUM_POLICY_UNKNOWN, testCase[1] ) );
- assertEquals( "unknown vs " + testCase[1], testCase[0],
- provider.getEffectiveChecksumPolicy( session, testCase[1], CHECKSUM_POLICY_UNKNOWN ) );
- }
- }
-
-}
[49/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/RepositorySystem.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/RepositorySystem.java b/aether-api/src/main/java/org/eclipse/aether/RepositorySystem.java
deleted file mode 100644
index 8706f89..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/RepositorySystem.java
+++ /dev/null
@@ -1,277 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.CollectRequest;
-import org.eclipse.aether.collection.CollectResult;
-import org.eclipse.aether.collection.DependencyCollectionException;
-import org.eclipse.aether.deployment.DeployRequest;
-import org.eclipse.aether.deployment.DeployResult;
-import org.eclipse.aether.deployment.DeploymentException;
-import org.eclipse.aether.installation.InstallRequest;
-import org.eclipse.aether.installation.InstallResult;
-import org.eclipse.aether.installation.InstallationException;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ArtifactDescriptorException;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResolutionException;
-import org.eclipse.aether.resolution.ArtifactResult;
-import org.eclipse.aether.resolution.DependencyRequest;
-import org.eclipse.aether.resolution.DependencyResolutionException;
-import org.eclipse.aether.resolution.DependencyResult;
-import org.eclipse.aether.resolution.MetadataRequest;
-import org.eclipse.aether.resolution.MetadataResult;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResolutionException;
-import org.eclipse.aether.resolution.VersionRangeResult;
-import org.eclipse.aether.resolution.VersionRequest;
-import org.eclipse.aether.resolution.VersionResolutionException;
-import org.eclipse.aether.resolution.VersionResult;
-
-/**
- * The main entry point to the repository system and its functionality. Note that obtaining a concrete implementation of
- * this interface (e.g. via dependency injection, service locator, etc.) is dependent on the application and its
- * specific needs, please consult the online documentation for examples and directions on booting the system.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface RepositorySystem
-{
-
- /**
- * Expands a version range to a list of matching versions, in ascending order. For example, resolves "[3.8,4.0)" to
- * "3.8", "3.8.1", "3.8.2". Note that the returned list of versions is only dependent on the configured repositories
- * and their contents, the list is not processed by the {@link RepositorySystemSession#getVersionFilter() session's
- * version filter}.
- * <p>
- * The supplied request may also refer to a single concrete version rather than a version range. In this case
- * though, the result contains simply the (parsed) input version, regardless of the repositories and their contents.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The version range request, must not be {@code null}.
- * @return The version range result, never {@code null}.
- * @throws VersionRangeResolutionException If the requested range could not be parsed. Note that an empty range does
- * not raise an exception.
- * @see #newResolutionRepositories(RepositorySystemSession, List)
- */
- VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request )
- throws VersionRangeResolutionException;
-
- /**
- * Resolves an artifact's meta version (if any) to a concrete version. For example, resolves "1.0-SNAPSHOT" to
- * "1.0-20090208.132618-23".
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The version request, must not be {@code null}.
- * @return The version result, never {@code null}.
- * @throws VersionResolutionException If the metaversion could not be resolved.
- * @see #newResolutionRepositories(RepositorySystemSession, List)
- */
- VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
- throws VersionResolutionException;
-
- /**
- * Gets information about an artifact like its direct dependencies and potential relocations.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The descriptor request, must not be {@code null}.
- * @return The descriptor result, never {@code null}.
- * @throws ArtifactDescriptorException If the artifact descriptor could not be read.
- * @see RepositorySystemSession#getArtifactDescriptorPolicy()
- * @see #newResolutionRepositories(RepositorySystemSession, List)
- */
- ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session, ArtifactDescriptorRequest request )
- throws ArtifactDescriptorException;
-
- /**
- * Collects the transitive dependencies of an artifact and builds a dependency graph. Note that this operation is
- * only concerned about determining the coordinates of the transitive dependencies. To also resolve the actual
- * artifact files, use {@link #resolveDependencies(RepositorySystemSession, DependencyRequest)}.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The collection request, must not be {@code null}.
- * @return The collection result, never {@code null}.
- * @throws DependencyCollectionException If the dependency tree could not be built.
- * @see RepositorySystemSession#getDependencyTraverser()
- * @see RepositorySystemSession#getDependencyManager()
- * @see RepositorySystemSession#getDependencySelector()
- * @see RepositorySystemSession#getVersionFilter()
- * @see RepositorySystemSession#getDependencyGraphTransformer()
- * @see #newResolutionRepositories(RepositorySystemSession, List)
- */
- CollectResult collectDependencies( RepositorySystemSession session, CollectRequest request )
- throws DependencyCollectionException;
-
- /**
- * Collects and resolves the transitive dependencies of an artifact. This operation is essentially a combination of
- * {@link #collectDependencies(RepositorySystemSession, CollectRequest)} and
- * {@link #resolveArtifacts(RepositorySystemSession, Collection)}.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The dependency request, must not be {@code null}.
- * @return The dependency result, never {@code null}.
- * @throws DependencyResolutionException If the dependency tree could not be built or any dependency artifact could
- * not be resolved.
- * @see #newResolutionRepositories(RepositorySystemSession, List)
- */
- DependencyResult resolveDependencies( RepositorySystemSession session, DependencyRequest request )
- throws DependencyResolutionException;
-
- /**
- * Resolves the path for an artifact. The artifact will be downloaded to the local repository if necessary. An
- * artifact that is already resolved will be skipped and is not re-resolved. In general, callers must not assume any
- * relationship between an artifact's resolved filename and its coordinates. Note that this method assumes that any
- * relocations have already been processed.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The resolution request, must not be {@code null}.
- * @return The resolution result, never {@code null}.
- * @throws ArtifactResolutionException If the artifact could not be resolved.
- * @see Artifact#getFile()
- * @see #newResolutionRepositories(RepositorySystemSession, List)
- */
- ArtifactResult resolveArtifact( RepositorySystemSession session, ArtifactRequest request )
- throws ArtifactResolutionException;
-
- /**
- * Resolves the paths for a collection of artifacts. Artifacts will be downloaded to the local repository if
- * necessary. Artifacts that are already resolved will be skipped and are not re-resolved. In general, callers must
- * not assume any relationship between an artifact's filename and its coordinates. Note that this method assumes
- * that any relocations have already been processed.
- *
- * @param session The repository session, must not be {@code null}.
- * @param requests The resolution requests, must not be {@code null}.
- * @return The resolution results (in request order), never {@code null}.
- * @throws ArtifactResolutionException If any artifact could not be resolved.
- * @see Artifact#getFile()
- * @see #newResolutionRepositories(RepositorySystemSession, List)
- */
- List<ArtifactResult> resolveArtifacts( RepositorySystemSession session,
- Collection<? extends ArtifactRequest> requests )
- throws ArtifactResolutionException;
-
- /**
- * Resolves the paths for a collection of metadata. Metadata will be downloaded to the local repository if
- * necessary, e.g. because it hasn't been cached yet or the cache is deemed outdated.
- *
- * @param session The repository session, must not be {@code null}.
- * @param requests The resolution requests, must not be {@code null}.
- * @return The resolution results (in request order), never {@code null}.
- * @see Metadata#getFile()
- * @see #newResolutionRepositories(RepositorySystemSession, List)
- */
- List<MetadataResult> resolveMetadata( RepositorySystemSession session,
- Collection<? extends MetadataRequest> requests );
-
- /**
- * Installs a collection of artifacts and their accompanying metadata to the local repository.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The installation request, must not be {@code null}.
- * @return The installation result, never {@code null}.
- * @throws InstallationException If any artifact/metadata from the request could not be installed.
- */
- InstallResult install( RepositorySystemSession session, InstallRequest request )
- throws InstallationException;
-
- /**
- * Uploads a collection of artifacts and their accompanying metadata to a remote repository.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The deployment request, must not be {@code null}.
- * @return The deployment result, never {@code null}.
- * @throws DeploymentException If any artifact/metadata from the request could not be deployed.
- * @see #newDeploymentRepository(RepositorySystemSession, RemoteRepository)
- */
- DeployResult deploy( RepositorySystemSession session, DeployRequest request )
- throws DeploymentException;
-
- /**
- * Creates a new manager for the specified local repository. If the specified local repository has no type, the
- * default local repository type of the system will be used. <em>Note:</em> It is expected that this method
- * invocation is one of the last steps of setting up a new session, in particular any configuration properties
- * should have been set already.
- *
- * @param session The repository system session from which to configure the manager, must not be {@code null}.
- * @param localRepository The local repository to create a manager for, must not be {@code null}.
- * @return The local repository manager, never {@code null}.
- * @throws IllegalArgumentException If the specified repository type is not recognized or no base directory is
- * given.
- */
- LocalRepositoryManager newLocalRepositoryManager( RepositorySystemSession session, LocalRepository localRepository );
-
- /**
- * Creates a new synchronization context.
- *
- * @param session The repository session during which the context will be used, must not be {@code null}.
- * @param shared A flag indicating whether access to the artifacts/metadata associated with the new context can be
- * shared among concurrent readers or whether access needs to be exclusive to the calling thread.
- * @return The synchronization context, never {@code null}.
- */
- SyncContext newSyncContext( RepositorySystemSession session, boolean shared );
-
- /**
- * Forms remote repositories suitable for artifact resolution by applying the session's authentication selector and
- * similar network configuration to the given repository prototypes. As noted for
- * {@link RepositorySystemSession#getAuthenticationSelector()} etc. the remote repositories passed to e.g.
- * {@link #resolveArtifact(RepositorySystemSession, ArtifactRequest) resolveArtifact()} are used as is and expected
- * to already carry any required authentication or proxy configuration. This method can be used to apply the
- * authentication/proxy configuration from a session to a bare repository definition to obtain the complete
- * repository definition for use in the resolution request.
- *
- * @param session The repository system session from which to configure the repositories, must not be {@code null}.
- * @param repositories The repository prototypes from which to derive the resolution repositories, must not be
- * {@code null} or contain {@code null} elements.
- * @return The resolution repositories, never {@code null}. Note that there is generally no 1:1 relationship of the
- * obtained repositories to the original inputs due to mirror selection potentially aggregating multiple
- * repositories.
- * @see #newDeploymentRepository(RepositorySystemSession, RemoteRepository)
- */
- List<RemoteRepository> newResolutionRepositories( RepositorySystemSession session,
- List<RemoteRepository> repositories );
-
- /**
- * Forms a remote repository suitable for artifact deployment by applying the session's authentication selector and
- * similar network configuration to the given repository prototype. As noted for
- * {@link RepositorySystemSession#getAuthenticationSelector()} etc. the remote repository passed to
- * {@link #deploy(RepositorySystemSession, DeployRequest) deploy()} is used as is and expected to already carry any
- * required authentication or proxy configuration. This method can be used to apply the authentication/proxy
- * configuration from a session to a bare repository definition to obtain the complete repository definition for use
- * in the deploy request.
- *
- * @param session The repository system session from which to configure the repository, must not be {@code null}.
- * @param repository The repository prototype from which to derive the deployment repository, must not be
- * {@code null}.
- * @return The deployment repository, never {@code null}.
- * @see #newResolutionRepositories(RepositorySystemSession, List)
- */
- RemoteRepository newDeploymentRepository( RepositorySystemSession session, RemoteRepository repository );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/RepositorySystemSession.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/RepositorySystemSession.java b/aether-api/src/main/java/org/eclipse/aether/RepositorySystemSession.java
deleted file mode 100644
index 888f29c..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/RepositorySystemSession.java
+++ /dev/null
@@ -1,263 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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;
-
-import org.eclipse.aether.artifact.ArtifactTypeRegistry;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.collection.DependencyManager;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.repository.AuthenticationSelector;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.MirrorSelector;
-import org.eclipse.aether.repository.ProxySelector;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.repository.WorkspaceReader;
-import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
-import org.eclipse.aether.resolution.ResolutionErrorPolicy;
-import org.eclipse.aether.transfer.TransferListener;
-
-/**
- * Defines settings and components that control the repository system. Once initialized, the session object itself is
- * supposed to be immutable and hence can safely be shared across an entire application and any concurrent threads
- * reading it. Components that wish to tweak some aspects of an existing session should use the copy constructor of
- * {@link DefaultRepositorySystemSession} and its mutators to derive a custom session.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface RepositorySystemSession
-{
-
- /**
- * Indicates whether the repository system operates in offline mode and avoids/refuses any access to remote
- * repositories.
- *
- * @return {@code true} if the repository system is in offline mode, {@code false} otherwise.
- */
- boolean isOffline();
-
- /**
- * Indicates whether repositories declared in artifact descriptors should be ignored during transitive dependency
- * collection. If enabled, only the repositories originally provided with the collect request will be considered.
- *
- * @return {@code true} if additional repositories from artifact descriptors are ignored, {@code false} to merge
- * those with the originally specified repositories.
- */
- boolean isIgnoreArtifactDescriptorRepositories();
-
- /**
- * Gets the policy which controls whether resolutions errors from remote repositories should be cached.
- *
- * @return The resolution error policy for this session or {@code null} if resolution errors should generally not be
- * cached.
- */
- ResolutionErrorPolicy getResolutionErrorPolicy();
-
- /**
- * Gets the policy which controls how errors related to reading artifact descriptors should be handled.
- *
- * @return The descriptor error policy for this session or {@code null} if descriptor errors should generally not be
- * tolerated.
- */
- ArtifactDescriptorPolicy getArtifactDescriptorPolicy();
-
- /**
- * Gets the global checksum policy. If set, the global checksum policy overrides the checksum policies of the remote
- * repositories being used for resolution.
- *
- * @return The global checksum policy or {@code null}/empty if not set and the per-repository policies apply.
- * @see RepositoryPolicy#CHECKSUM_POLICY_FAIL
- * @see RepositoryPolicy#CHECKSUM_POLICY_IGNORE
- * @see RepositoryPolicy#CHECKSUM_POLICY_WARN
- */
- String getChecksumPolicy();
-
- /**
- * Gets the global update policy. If set, the global update policy overrides the update policies of the remote
- * repositories being used for resolution.
- *
- * @return The global update policy or {@code null}/empty if not set and the per-repository policies apply.
- * @see RepositoryPolicy#UPDATE_POLICY_ALWAYS
- * @see RepositoryPolicy#UPDATE_POLICY_DAILY
- * @see RepositoryPolicy#UPDATE_POLICY_NEVER
- */
- String getUpdatePolicy();
-
- /**
- * Gets the local repository used during this session. This is a convenience method for
- * {@link LocalRepositoryManager#getRepository()}.
- *
- * @return The local repository being during this session, never {@code null}.
- */
- LocalRepository getLocalRepository();
-
- /**
- * Gets the local repository manager used during this session.
- *
- * @return The local repository manager used during this session, never {@code null}.
- */
- LocalRepositoryManager getLocalRepositoryManager();
-
- /**
- * Gets the workspace reader used during this session. If set, the workspace reader will usually be consulted first
- * to resolve artifacts.
- *
- * @return The workspace reader for this session or {@code null} if none.
- */
- WorkspaceReader getWorkspaceReader();
-
- /**
- * Gets the listener being notified of actions in the repository system.
- *
- * @return The repository listener or {@code null} if none.
- */
- RepositoryListener getRepositoryListener();
-
- /**
- * Gets the listener being notified of uploads/downloads by the repository system.
- *
- * @return The transfer listener or {@code null} if none.
- */
- TransferListener getTransferListener();
-
- /**
- * Gets the system properties to use, e.g. for processing of artifact descriptors. System properties are usually
- * collected from the runtime environment like {@link System#getProperties()} and environment variables.
- *
- * @return The (read-only) system properties, never {@code null}.
- */
- Map<String, String> getSystemProperties();
-
- /**
- * Gets the user properties to use, e.g. for processing of artifact descriptors. User properties are similar to
- * system properties but are set on the discretion of the user and hence are considered of higher priority than
- * system properties.
- *
- * @return The (read-only) user properties, never {@code null}.
- */
- Map<String, String> getUserProperties();
-
- /**
- * Gets the configuration properties used to tweak internal aspects of the repository system (e.g. thread pooling,
- * connector-specific behavior, etc.)
- *
- * @return The (read-only) configuration properties, never {@code null}.
- * @see ConfigurationProperties
- */
- Map<String, Object> getConfigProperties();
-
- /**
- * Gets the mirror selector to use for repositories discovered in artifact descriptors. Note that this selector is
- * not used for remote repositories which are passed as request parameters to the repository system, those
- * repositories are supposed to denote the effective repositories.
- *
- * @return The mirror selector to use, never {@code null}.
- * @see RepositorySystem#newResolutionRepositories(RepositorySystemSession, java.util.List)
- */
- MirrorSelector getMirrorSelector();
-
- /**
- * Gets the proxy selector to use for repositories discovered in artifact descriptors. Note that this selector is
- * not used for remote repositories which are passed as request parameters to the repository system, those
- * repositories are supposed to have their proxy (if any) already set.
- *
- * @return The proxy selector to use, never {@code null}.
- * @see org.eclipse.aether.repository.RemoteRepository#getProxy()
- * @see RepositorySystem#newResolutionRepositories(RepositorySystemSession, java.util.List)
- */
- ProxySelector getProxySelector();
-
- /**
- * Gets the authentication selector to use for repositories discovered in artifact descriptors. Note that this
- * selector is not used for remote repositories which are passed as request parameters to the repository system,
- * those repositories are supposed to have their authentication (if any) already set.
- *
- * @return The authentication selector to use, never {@code null}.
- * @see org.eclipse.aether.repository.RemoteRepository#getAuthentication()
- * @see RepositorySystem#newResolutionRepositories(RepositorySystemSession, java.util.List)
- */
- AuthenticationSelector getAuthenticationSelector();
-
- /**
- * Gets the registry of artifact types recognized by this session, for instance when processing artifact
- * descriptors.
- *
- * @return The artifact type registry, never {@code null}.
- */
- ArtifactTypeRegistry getArtifactTypeRegistry();
-
- /**
- * Gets the dependency traverser to use for building dependency graphs.
- *
- * @return The dependency traverser to use for building dependency graphs or {@code null} if dependencies are
- * unconditionally traversed.
- */
- DependencyTraverser getDependencyTraverser();
-
- /**
- * Gets the dependency manager to use for building dependency graphs.
- *
- * @return The dependency manager to use for building dependency graphs or {@code null} if dependency management is
- * not performed.
- */
- DependencyManager getDependencyManager();
-
- /**
- * Gets the dependency selector to use for building dependency graphs.
- *
- * @return The dependency selector to use for building dependency graphs or {@code null} if dependencies are
- * unconditionally included.
- */
- DependencySelector getDependencySelector();
-
- /**
- * Gets the version filter to use for building dependency graphs.
- *
- * @return The version filter to use for building dependency graphs or {@code null} if versions aren't filtered.
- */
- VersionFilter getVersionFilter();
-
- /**
- * Gets the dependency graph transformer to use for building dependency graphs.
- *
- * @return The dependency graph transformer to use for building dependency graphs or {@code null} if none.
- */
- DependencyGraphTransformer getDependencyGraphTransformer();
-
- /**
- * Gets the custom data associated with this session.
- *
- * @return The session data, never {@code null}.
- */
- SessionData getData();
-
- /**
- * Gets the cache the repository system may use to save data for future reuse during the session.
- *
- * @return The repository cache or {@code null} if none.
- */
- RepositoryCache getCache();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/RequestTrace.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/RequestTrace.java b/aether-api/src/main/java/org/eclipse/aether/RequestTrace.java
deleted file mode 100644
index 86aaa78..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/RequestTrace.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 trace of nested requests that are performed by the repository system. This trace information can be used to
- * correlate repository events with higher level operations in the application code that eventually caused the events. A
- * single trace can carry an arbitrary object as data which is meant to describe a request/operation that is currently
- * executed. For call hierarchies within the repository system itself, this data will usually be the {@code *Request}
- * object that is currently processed. When invoking methods on the repository system, client code may provide a request
- * trace that has been prepopulated with whatever data is useful for the application to indicate its state for later
- * evaluation when processing the repository events.
- *
- * @see RepositoryEvent#getTrace()
- */
-public class RequestTrace
-{
-
- private final RequestTrace parent;
-
- private final Object data;
-
- /**
- * Creates a child of the specified request trace. This method is basically a convenience that will invoke
- * {@link RequestTrace#newChild(Object) parent.newChild()} when the specified parent trace is not {@code null} or
- * otherwise instantiante a new root trace.
- *
- * @param parent The parent request trace, may be {@code null}.
- * @param data The data to associate with the child trace, may be {@code null}.
- * @return The child trace, never {@code null}.
- */
- public static RequestTrace newChild( RequestTrace parent, Object data )
- {
- if ( parent == null )
- {
- return new RequestTrace( data );
- }
- return parent.newChild( data );
- }
-
- /**
- * Creates a new root trace with the specified data.
- *
- * @param data The data to associate with the trace, may be {@code null}.
- */
- public RequestTrace( Object data )
- {
- this( null, data );
- }
-
- /**
- * Creates a new trace with the specified data and parent
- *
- * @param parent The parent trace, may be {@code null} for a root trace.
- * @param data The data to associate with the trace, may be {@code null}.
- */
- protected RequestTrace( RequestTrace parent, Object data )
- {
- this.parent = parent;
- this.data = data;
- }
-
- /**
- * Gets the data associated with this trace.
- *
- * @return The data associated with this trace or {@code null} if none.
- */
- public final Object getData()
- {
- return data;
- }
-
- /**
- * Gets the parent of this trace.
- *
- * @return The parent of this trace or {@code null} if this is the root of the trace stack.
- */
- public final RequestTrace getParent()
- {
- return parent;
- }
-
- /**
- * Creates a new child of this trace.
- *
- * @param data The data to associate with the child, may be {@code null}.
- * @return The child trace, never {@code null}.
- */
- public RequestTrace newChild( Object data )
- {
- return new RequestTrace( this, data );
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( getData() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/SessionData.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/SessionData.java b/aether-api/src/main/java/org/eclipse/aether/SessionData.java
deleted file mode 100644
index b6efeac..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/SessionData.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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 container for data that is specific to a repository system session. Both components within the repository system
- * and clients of the system may use this storage to associate arbitrary data with a session.
- * <p>
- * Unlike a cache, this session data is not subject to purging. For this same reason, session data should also not be
- * abused as a cache (i.e. for storing values that can be re-calculated) to avoid memory exhaustion.
- * <p>
- * <strong>Note:</strong> Actual implementations must be thread-safe.
- *
- * @see RepositorySystemSession#getData()
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface SessionData
-{
-
- /**
- * Associates the specified session data with the given key.
- *
- * @param key The key under which to store the session data, must not be {@code null}.
- * @param value The data to associate with the key, may be {@code null} to remove the mapping.
- */
- void set( Object key, Object value );
-
- /**
- * Associates the specified session data with the given key if the key is currently mapped to the given value. This
- * method provides an atomic compare-and-update of some key's value.
- *
- * @param key The key under which to store the session data, must not be {@code null}.
- * @param oldValue The expected data currently associated with the key, may be {@code null}.
- * @param newValue The data to associate with the key, may be {@code null} to remove the mapping.
- * @return {@code true} if the key mapping was successfully updated from the old value to the new value,
- * {@code false} if the current key mapping didn't match the expected value and was not updated.
- */
- boolean set( Object key, Object oldValue, Object newValue );
-
- /**
- * Gets the session data associated with the specified key.
- *
- * @param key The key for which to retrieve the session data, must not be {@code null}.
- * @return The session data associated with the key or {@code null} if none.
- */
- Object get( Object key );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/SyncContext.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/SyncContext.java b/aether-api/src/main/java/org/eclipse/aether/SyncContext.java
deleted file mode 100644
index 2d751c0..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/SyncContext.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.eclipse.aether;
-
-/*
- * 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.Closeable;
-import java.util.Collection;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-
-/**
- * A synchronization context used to coordinate concurrent access to artifacts or metadatas. The typical usage of a
- * synchronization context looks like this:
- *
- * <pre>
- * SyncContext syncContext = repositorySystem.newSyncContext( ... );
- * try {
- * syncContext.acquire( artifacts, metadatas );
- * // work with the artifacts and metadatas
- * } finally {
- * syncContext.close();
- * }
- * </pre>
- *
- * Within one thread, synchronization contexts may be nested which can naturally happen in a hierarchy of method calls.
- * The nested synchronization contexts may also acquire overlapping sets of artifacts/metadatas as long as the following
- * conditions are met. If the outer-most context holding a particular resource is exclusive, that resource can be
- * reacquired in any nested context. If however the outer-most context is shared, the resource may only be reacquired by
- * nested contexts if these are also shared.
- * <p>
- * A synchronization context is meant to be utilized by only one thread and as such is not thread-safe.
- * <p>
- * Note that the level of actual synchronization is subject to the implementation and might range from OS-wide to none.
- *
- * @see RepositorySystem#newSyncContext(RepositorySystemSession, boolean)
- */
-public interface SyncContext
- extends Closeable
-{
-
- /**
- * Acquires synchronized access to the specified artifacts and metadatas. The invocation will potentially block
- * until all requested resources can be acquired by the calling thread. Acquiring resources that are already
- * acquired by this synchronization context has no effect. Please also see the class-level documentation for
- * information regarding reentrancy. The method may be invoked multiple times on a synchronization context until all
- * desired resources have been acquired.
- *
- * @param artifacts The artifacts to acquire, may be {@code null} or empty if none.
- * @param metadatas The metadatas to acquire, may be {@code null} or empty if none.
- */
- void acquire( Collection<? extends Artifact> artifacts, Collection<? extends Metadata> metadatas );
-
- /**
- * Releases all previously acquired artifacts/metadatas. If no resources have been acquired before or if this
- * synchronization context has already been closed, this method does nothing.
- */
- void close();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/artifact/AbstractArtifact.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/artifact/AbstractArtifact.java b/aether-api/src/main/java/org/eclipse/aether/artifact/AbstractArtifact.java
deleted file mode 100644
index d89260b..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/artifact/AbstractArtifact.java
+++ /dev/null
@@ -1,230 +0,0 @@
-package org.eclipse.aether.artifact;
-
-/*
- * 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;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * A skeleton class for artifacts.
- */
-public abstract class AbstractArtifact
- implements Artifact
-{
-
- private static final String SNAPSHOT = "SNAPSHOT";
-
- private static final Pattern SNAPSHOT_TIMESTAMP = Pattern.compile( "^(.*-)?([0-9]{8}\\.[0-9]{6}-[0-9]+)$" );
-
- public boolean isSnapshot()
- {
- return isSnapshot( getVersion() );
- }
-
- private static boolean isSnapshot( String version )
- {
- return version.endsWith( SNAPSHOT ) || SNAPSHOT_TIMESTAMP.matcher( version ).matches();
- }
-
- public String getBaseVersion()
- {
- return toBaseVersion( getVersion() );
- }
-
- private static String toBaseVersion( String version )
- {
- String baseVersion;
-
- if ( version == null )
- {
- baseVersion = version;
- }
- else if ( version.startsWith( "[" ) || version.startsWith( "(" ) )
- {
- baseVersion = version;
- }
- else
- {
- Matcher m = SNAPSHOT_TIMESTAMP.matcher( version );
- if ( m.matches() )
- {
- if ( m.group( 1 ) != null )
- {
- baseVersion = m.group( 1 ) + SNAPSHOT;
- }
- else
- {
- baseVersion = SNAPSHOT;
- }
- }
- else
- {
- baseVersion = version;
- }
- }
-
- return baseVersion;
- }
-
- /**
- * Creates a new artifact with the specified coordinates, properties and file.
- *
- * @param version The version of the artifact, may be {@code null}.
- * @param properties The properties of the artifact, may be {@code null} if none. The method may assume immutability
- * of the supplied map, i.e. need not copy it.
- * @param file The resolved file of the artifact, may be {@code null}.
- * @return The new artifact instance, never {@code null}.
- */
- private Artifact newInstance( String version, Map<String, String> properties, File file )
- {
- return new DefaultArtifact( getGroupId(), getArtifactId(), getClassifier(), getExtension(), version, file,
- properties );
- }
-
- public Artifact setVersion( String version )
- {
- String current = getVersion();
- if ( current.equals( version ) || ( version == null && current.length() <= 0 ) )
- {
- return this;
- }
- return newInstance( version, getProperties(), getFile() );
- }
-
- public Artifact setFile( File file )
- {
- File current = getFile();
- if ( ( current == null ) ? file == null : current.equals( file ) )
- {
- return this;
- }
- return newInstance( getVersion(), getProperties(), file );
- }
-
- public Artifact setProperties( Map<String, String> properties )
- {
- Map<String, String> current = getProperties();
- if ( current.equals( properties ) || ( properties == null && current.isEmpty() ) )
- {
- return this;
- }
- return newInstance( getVersion(), copyProperties( properties ), getFile() );
- }
-
- public String getProperty( String key, String defaultValue )
- {
- String value = getProperties().get( key );
- return ( value != null ) ? value : defaultValue;
- }
-
- /**
- * Copies the specified artifact properties. This utility method should be used when creating new artifact 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 );
- buffer.append( getGroupId() );
- buffer.append( ':' ).append( getArtifactId() );
- buffer.append( ':' ).append( getExtension() );
- if ( getClassifier().length() > 0 )
- {
- buffer.append( ':' ).append( getClassifier() );
- }
- buffer.append( ':' ).append( getVersion() );
- return buffer.toString();
- }
-
- /**
- * Compares this artifact with the specified object.
- *
- * @param obj The object to compare this artifact against, may be {@code null}.
- * @return {@code true} if and only if the specified object is another {@link Artifact} with equal coordinates,
- * properties and file, {@code false} otherwise.
- */
- @Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
- return true;
- }
- else if ( !( obj instanceof Artifact ) )
- {
- return false;
- }
-
- Artifact that = (Artifact) obj;
-
- return getArtifactId().equals( that.getArtifactId() ) && getGroupId().equals( that.getGroupId() )
- && getVersion().equals( that.getVersion() ) && getExtension().equals( that.getExtension() )
- && getClassifier().equals( that.getClassifier() ) && eq( getFile(), that.getFile() )
- && getProperties().equals( 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 artifact.
- *
- * @return A hash code for the artifact.
- */
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + getGroupId().hashCode();
- hash = hash * 31 + getArtifactId().hashCode();
- hash = hash * 31 + getExtension().hashCode();
- hash = hash * 31 + getClassifier().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-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/artifact/Artifact.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/artifact/Artifact.java b/aether-api/src/main/java/org/eclipse/aether/artifact/Artifact.java
deleted file mode 100644
index 6323243..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/artifact/Artifact.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package org.eclipse.aether.artifact;
-
-/*
- * 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 specific artifact. In a nutshell, an artifact has identifying coordinates and optionally a file that denotes its
- * data. <em>Note:</em> Artifact instances are supposed to be immutable, e.g. any exposed mutator method returns a new
- * artifact instance and leaves the original instance unchanged. <em>Note:</em> Implementors are strongly advised to
- * inherit from {@link AbstractArtifact} 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 Artifact
-{
-
- /**
- * Gets the group identifier of this artifact, for example "org.apache.maven".
- *
- * @return The group identifier, never {@code null}.
- */
- String getGroupId();
-
- /**
- * Gets the artifact identifier of this artifact, for example "maven-model".
- *
- * @return The artifact identifier, never {@code null}.
- */
- String getArtifactId();
-
- /**
- * Gets the version of this artifact, for example "1.0-20100529-1213". Note that in case of meta versions like
- * "1.0-SNAPSHOT", the artifact's version depends on the state of the artifact. Artifacts that have been resolved or
- * deployed will usually have the meta version expanded.
- *
- * @return The version, never {@code null}.
- */
- String getVersion();
-
- /**
- * Sets the version of the artifact.
- *
- * @param version The version of this artifact, may be {@code null} or empty.
- * @return The new artifact, never {@code null}.
- */
- Artifact setVersion( String version );
-
- /**
- * Gets the base version of this artifact, for example "1.0-SNAPSHOT". In contrast to the {@link #getVersion()}, the
- * base version will always refer to the unresolved meta version.
- *
- * @return The base version, never {@code null}.
- */
- String getBaseVersion();
-
- /**
- * Determines whether this artifact uses a snapshot version.
- *
- * @return {@code true} if the artifact is a snapshot, {@code false} otherwise.
- */
- boolean isSnapshot();
-
- /**
- * Gets the classifier of this artifact, for example "sources".
- *
- * @return The classifier or an empty string if none, never {@code null}.
- */
- String getClassifier();
-
- /**
- * Gets the (file) extension of this artifact, for example "jar" or "tar.gz".
- *
- * @return The file extension (without leading period), never {@code null}.
- */
- String getExtension();
-
- /**
- * Gets the file of this artifact. Note that only resolved artifacts have a file associated with them. In general,
- * callers must not assume any relationship between an artifact's filename and its coordinates.
- *
- * @return The file or {@code null} if the artifact isn't resolved.
- */
- File getFile();
-
- /**
- * Sets the file of the artifact.
- *
- * @param file The file of the artifact, may be {@code null}
- * @return The new artifact, never {@code null}.
- */
- Artifact 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.
- * @see ArtifactProperties
- */
- String getProperty( String key, String defaultValue );
-
- /**
- * Gets the properties of this artifact. Clients may use these properties to associate non-persistent values with an
- * artifact that help later processing when the artifact gets passed around within the application.
- *
- * @return The (read-only) properties, never {@code null}.
- * @see ArtifactProperties
- */
- Map<String, String> getProperties();
-
- /**
- * Sets the properties for the artifact. Note that these properties exist merely in memory and are not persisted
- * when the artifact gets installed/deployed to a repository.
- *
- * @param properties The properties for the artifact, may be {@code null}.
- * @return The new artifact, never {@code null}.
- * @see ArtifactProperties
- */
- Artifact setProperties( Map<String, String> properties );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java b/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java
deleted file mode 100644
index 1108086..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.eclipse.aether.artifact;
-
-/*
- * 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 keys for common properties of artifacts.
- *
- * @see Artifact#getProperties()
- */
-public final class ArtifactProperties
-{
-
- /**
- * A high-level characterization of the artifact, e.g. "maven-plugin" or "test-jar".
- *
- * @see ArtifactType#getId()
- */
- public static final String TYPE = "type";
-
- /**
- * The programming language this artifact is relevant for, e.g. "java" or "none".
- */
- public static final String LANGUAGE = "language";
-
- /**
- * The (expected) path to the artifact on the local filesystem. An artifact which has this property set is assumed
- * to be not present in any regular repository and likewise has no artifact descriptor. Artifact resolution will
- * verify the path and resolve the artifact if the path actually denotes an existing file. If the path isn't valid,
- * resolution will fail and no attempts to search local/remote repositories are made.
- */
- public static final String LOCAL_PATH = "localPath";
-
- /**
- * A boolean flag indicating whether the artifact presents some kind of bundle that physically includes its
- * dependencies, e.g. a fat WAR.
- */
- public static final String INCLUDES_DEPENDENCIES = "includesDependencies";
-
- /**
- * A boolean flag indicating whether the artifact is meant to be used for the compile/runtime/test build path of a
- * consumer project.
- */
- public static final String CONSTITUTES_BUILD_PATH = "constitutesBuildPath";
-
- /**
- * The URL to a web page from which the artifact can be manually downloaded. This URL is not contacted by the
- * repository system but serves as a pointer for the end user to assist in getting artifacts that are not published
- * in a proper repository.
- */
- public static final String DOWNLOAD_URL = "downloadUrl";
-
- private ArtifactProperties()
- {
- // hide constructor
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactType.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactType.java b/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactType.java
deleted file mode 100644
index 5f87217..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactType.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.eclipse.aether.artifact;
-
-/*
- * 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;
-
-/**
- * An artifact type describing artifact characteristics/properties that are common for certain artifacts. Artifact types
- * are a means to simplify the description of an artifact by referring to an artifact type instead of specifying the
- * various properties individually.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @see ArtifactTypeRegistry
- * @see DefaultArtifact#DefaultArtifact(String, String, String, String, String, ArtifactType)
- */
-public interface ArtifactType
-{
-
- /**
- * Gets the identifier of this type, e.g. "maven-plugin" or "test-jar".
- *
- * @return The identifier of this type, never {@code null}.
- * @see ArtifactProperties#TYPE
- */
- String getId();
-
- /**
- * Gets the file extension to use for artifacts of this type (unless explicitly overridden by the artifact).
- *
- * @return The usual file extension, never {@code null}.
- */
- String getExtension();
-
- /**
- * Gets the classifier to use for artifacts of this type (unless explicitly overridden by the artifact).
- *
- * @return The usual classifier or an empty string if none, never {@code null}.
- */
- String getClassifier();
-
- /**
- * Gets the properties to use for artifacts of this type (unless explicitly overridden by the artifact).
- *
- * @return The (read-only) properties, never {@code null}.
- * @see ArtifactProperties
- */
- Map<String, String> getProperties();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactTypeRegistry.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactTypeRegistry.java b/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactTypeRegistry.java
deleted file mode 100644
index f379173..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/artifact/ArtifactTypeRegistry.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.eclipse.aether.artifact;
-
-/*
- * 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 registry of known artifact types.
- *
- * @see org.eclipse.aether.RepositorySystemSession#getArtifactTypeRegistry()
- */
-public interface ArtifactTypeRegistry
-{
-
- /**
- * Gets the artifact type with the specified identifier.
- *
- * @param typeId The identifier of the type, must not be {@code null}.
- * @return The artifact type or {@code null} if no type with the requested identifier exists.
- */
- ArtifactType get( String typeId );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java b/aether-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java
deleted file mode 100644
index 786af74..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java
+++ /dev/null
@@ -1,285 +0,0 @@
-package org.eclipse.aether.artifact;
-
-/*
- * 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;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * A simple 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 DefaultArtifact
- extends AbstractArtifact
-{
-
- private final String groupId;
-
- private final String artifactId;
-
- private final String version;
-
- private final String classifier;
-
- private final String extension;
-
- private final File file;
-
- private final Map<String, String> properties;
-
- /**
- * Creates a new artifact with the specified coordinates. If not specified in the artifact coordinates, the
- * artifact's extension defaults to {@code jar} and classifier to an empty string.
- *
- * @param coords The artifact coordinates in the format
- * {@code <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>}, must not be {@code null}.
- */
- public DefaultArtifact( String coords )
- {
- this( coords, Collections.<String, String>emptyMap() );
- }
-
- /**
- * Creates a new artifact with the specified coordinates and properties. If not specified in the artifact
- * coordinates, the artifact's extension defaults to {@code jar} and classifier to an empty string.
- *
- * @param coords The artifact coordinates in the format
- * {@code <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>}, must not be {@code null}.
- * @param properties The artifact properties, may be {@code null}.
- */
- public DefaultArtifact( String coords, Map<String, String> properties )
- {
- Pattern p = Pattern.compile( "([^: ]+):([^: ]+)(:([^: ]*)(:([^: ]+))?)?:([^: ]+)" );
- Matcher m = p.matcher( coords );
- if ( !m.matches() )
- {
- throw new IllegalArgumentException( "Bad artifact coordinates " + coords
- + ", expected format is <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>" );
- }
- groupId = m.group( 1 );
- artifactId = m.group( 2 );
- extension = get( m.group( 4 ), "jar" );
- classifier = get( m.group( 6 ), "" );
- version = m.group( 7 );
- file = null;
- this.properties = copyProperties( properties );
- }
-
- private static String get( String value, String defaultValue )
- {
- return ( value == null || value.length() <= 0 ) ? defaultValue : value;
- }
-
- /**
- * Creates a new artifact with the specified coordinates and no classifier. Passing {@code null} for any of the
- * coordinates is equivalent to specifying an empty string.
- *
- * @param groupId The group identifier of the artifact, may be {@code null}.
- * @param artifactId The artifact identifier of the artifact, may be {@code null}.
- * @param extension The file extension of the artifact, may be {@code null}.
- * @param version The version of the artifact, may be {@code null}.
- */
- public DefaultArtifact( String groupId, String artifactId, String extension, String version )
- {
- this( groupId, artifactId, "", extension, version );
- }
-
- /**
- * Creates a new artifact with the specified coordinates. Passing {@code null} for any of the coordinates is
- * equivalent to specifying an empty string.
- *
- * @param groupId The group identifier of the artifact, may be {@code null}.
- * @param artifactId The artifact identifier of the artifact, may be {@code null}.
- * @param classifier The classifier of the artifact, may be {@code null}.
- * @param extension The file extension of the artifact, may be {@code null}.
- * @param version The version of the artifact, may be {@code null}.
- */
- public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version )
- {
- this( groupId, artifactId, classifier, extension, version, null, (File) null );
- }
-
- /**
- * Creates a new artifact with the specified coordinates. Passing {@code null} for any of the coordinates is
- * equivalent to specifying an empty string. The optional artifact type provided to this constructor will be used to
- * determine the artifact's classifier and file extension if the corresponding arguments for this constructor are
- * {@code null}.
- *
- * @param groupId The group identifier of the artifact, may be {@code null}.
- * @param artifactId The artifact identifier of the artifact, may be {@code null}.
- * @param classifier The classifier of the artifact, may be {@code null}.
- * @param extension The file extension of the artifact, may be {@code null}.
- * @param version The version of the artifact, may be {@code null}.
- * @param type The artifact type from which to query classifier, file extension and properties, may be {@code null}.
- */
- public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version,
- ArtifactType type )
- {
- this( groupId, artifactId, classifier, extension, version, null, type );
- }
-
- /**
- * Creates a new artifact with the specified coordinates and properties. Passing {@code null} for any of the
- * coordinates is equivalent to specifying an empty string. The optional artifact type provided to this constructor
- * will be used to determine the artifact's classifier and file extension if the corresponding arguments for this
- * constructor are {@code null}. If the artifact type specifies properties, those will get merged with the
- * properties passed directly into the constructor, with the latter properties taking precedence.
- *
- * @param groupId The group identifier of the artifact, may be {@code null}.
- * @param artifactId The artifact identifier of the artifact, may be {@code null}.
- * @param classifier The classifier of the artifact, may be {@code null}.
- * @param extension The file extension of the artifact, may be {@code null}.
- * @param version The version of the artifact, may be {@code null}.
- * @param properties The properties of the artifact, may be {@code null} if none.
- * @param type The artifact type from which to query classifier, file extension and properties, may be {@code null}.
- */
- public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version,
- Map<String, String> properties, ArtifactType type )
- {
- this.groupId = emptify( groupId );
- this.artifactId = emptify( artifactId );
- if ( classifier != null || type == null )
- {
- this.classifier = emptify( classifier );
- }
- else
- {
- this.classifier = emptify( type.getClassifier() );
- }
- if ( extension != null || type == null )
- {
- this.extension = emptify( extension );
- }
- else
- {
- this.extension = emptify( type.getExtension() );
- }
- this.version = emptify( version );
- this.file = null;
- this.properties = merge( properties, ( type != null ) ? type.getProperties() : null );
- }
-
- private static Map<String, String> merge( Map<String, String> dominant, Map<String, String> recessive )
- {
- Map<String, String> properties;
-
- if ( ( dominant == null || dominant.isEmpty() ) && ( recessive == null || recessive.isEmpty() ) )
- {
- properties = Collections.emptyMap();
- }
- else
- {
- properties = new HashMap<String, String>();
- if ( recessive != null )
- {
- properties.putAll( recessive );
- }
- if ( dominant != null )
- {
- properties.putAll( dominant );
- }
- properties = Collections.unmodifiableMap( properties );
- }
-
- return properties;
- }
-
- /**
- * Creates a new artifact with the specified coordinates, properties and file. Passing {@code null} for any of the
- * coordinates is equivalent to specifying an empty string.
- *
- * @param groupId The group identifier of the artifact, may be {@code null}.
- * @param artifactId The artifact identifier of the artifact, may be {@code null}.
- * @param classifier The classifier of the artifact, may be {@code null}.
- * @param extension The file extension of the artifact, may be {@code null}.
- * @param version The version of the artifact, may be {@code null}.
- * @param properties The properties of the artifact, may be {@code null} if none.
- * @param file The resolved file of the artifact, may be {@code null}.
- */
- public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version,
- Map<String, String> properties, File file )
- {
- this.groupId = emptify( groupId );
- this.artifactId = emptify( artifactId );
- this.classifier = emptify( classifier );
- this.extension = emptify( extension );
- this.version = emptify( version );
- this.file = file;
- this.properties = copyProperties( properties );
- }
-
- DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version, 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.classifier = emptify( classifier );
- this.extension = emptify( extension );
- this.version = emptify( version );
- 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 getClassifier()
- {
- return classifier;
- }
-
- public String getExtension()
- {
- return extension;
- }
-
- public File getFile()
- {
- return file;
- }
-
- public Map<String, String> getProperties()
- {
- return properties;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifactType.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifactType.java b/aether-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifactType.java
deleted file mode 100644
index c0d2ad8..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifactType.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package org.eclipse.aether.artifact;
-
-/*
- * 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.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * A simple artifact type.
- */
-public final class DefaultArtifactType
- implements ArtifactType
-{
-
- private final String id;
-
- private final String extension;
-
- private final String classifier;
-
- private final Map<String, String> properties;
-
- /**
- * Creates a new artifact type with the specified identifier. This constructor assumes the usual file extension
- * equals the given type id and that the usual classifier is empty. Additionally, the properties
- * {@link ArtifactProperties#LANGUAGE}, {@link ArtifactProperties#CONSTITUTES_BUILD_PATH} and
- * {@link ArtifactProperties#INCLUDES_DEPENDENCIES} will be set to {@code "none"}, {@code true} and {@code false},
- * respectively.
- *
- * @param id The identifier of the type which will also be used as the value for the {@link ArtifactProperties#TYPE}
- * property, must not be {@code null} or empty.
- */
- public DefaultArtifactType( String id )
- {
- this( id, id, "", "none", false, false );
- }
-
- /**
- * Creates a new artifact type with the specified properties. Additionally, the properties
- * {@link ArtifactProperties#CONSTITUTES_BUILD_PATH} and {@link ArtifactProperties#INCLUDES_DEPENDENCIES} will be
- * set to {@code true} and {@code false}, respectively.
- *
- * @param id The identifier of the type which will also be used as the value for the {@link ArtifactProperties#TYPE}
- * property, must not be {@code null} or empty.
- * @param extension The usual file extension for artifacts of this type, may be {@code null}.
- * @param classifier The usual classifier for artifacts of this type, may be {@code null}.
- * @param language The value for the {@link ArtifactProperties#LANGUAGE} property, may be {@code null}.
- */
- public DefaultArtifactType( String id, String extension, String classifier, String language )
- {
- this( id, extension, classifier, language, true, false );
- }
-
- /**
- * Creates a new artifact type with the specified properties.
- *
- * @param id The identifier of the type which will also be used as the value for the {@link ArtifactProperties#TYPE}
- * property, must not be {@code null} or empty.
- * @param extension The usual file extension for artifacts of this type, may be {@code null}.
- * @param classifier The usual classifier for artifacts of this type, may be {@code null}.
- * @param language The value for the {@link ArtifactProperties#LANGUAGE} property, may be {@code null}.
- * @param constitutesBuildPath The value for the {@link ArtifactProperties#CONSTITUTES_BUILD_PATH} property.
- * @param includesDependencies The value for the {@link ArtifactProperties#INCLUDES_DEPENDENCIES} property.
- */
- public DefaultArtifactType( String id, String extension, String classifier, String language,
- boolean constitutesBuildPath, boolean includesDependencies )
- {
- if ( id == null || id.length() < 0 )
- {
- throw new IllegalArgumentException( "no type id specified" );
- }
- this.id = id;
- this.extension = emptify( extension );
- this.classifier = emptify( classifier );
- Map<String, String> props = new HashMap<String, String>();
- props.put( ArtifactProperties.TYPE, id );
- props.put( ArtifactProperties.LANGUAGE, ( language != null && language.length() > 0 ) ? language : "none" );
- props.put( ArtifactProperties.INCLUDES_DEPENDENCIES, Boolean.toString( includesDependencies ) );
- props.put( ArtifactProperties.CONSTITUTES_BUILD_PATH, Boolean.toString( constitutesBuildPath ) );
- properties = Collections.unmodifiableMap( props );
- }
-
- /**
- * Creates a new artifact type with the specified properties.
- *
- * @param id The identifier of the type, must not be {@code null} or empty.
- * @param extension The usual file extension for artifacts of this type, may be {@code null}.
- * @param classifier The usual classifier for artifacts of this type, may be {@code null}.
- * @param properties The properties for artifacts of this type, may be {@code null}.
- */
- public DefaultArtifactType( String id, String extension, String classifier, Map<String, String> properties )
- {
- if ( id == null || id.length() < 0 )
- {
- throw new IllegalArgumentException( "no type id specified" );
- }
- this.id = id;
- this.extension = emptify( extension );
- this.classifier = emptify( classifier );
- this.properties = AbstractArtifact.copyProperties( properties );
- }
-
- private static String emptify( String str )
- {
- return ( str == null ) ? "" : str;
- }
-
- public String getId()
- {
- return id;
- }
-
- public String getExtension()
- {
- return extension;
- }
-
- public String getClassifier()
- {
- return classifier;
- }
-
- public Map<String, String> getProperties()
- {
- return properties;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/artifact/package-info.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/artifact/package-info.java b/aether-api/src/main/java/org/eclipse/aether/artifact/package-info.java
deleted file mode 100644
index 9a4cc79..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/artifact/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 an artifact, that is the primary entity managed by the repository system.
- */
-package org.eclipse.aether.artifact;
-
[15/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/filter/DependencyFilterUtils.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/filter/DependencyFilterUtils.java b/aether-util/src/main/java/org/eclipse/aether/util/filter/DependencyFilterUtils.java
deleted file mode 100644
index 887c4b1..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/filter/DependencyFilterUtils.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.util.artifact.JavaScopes;
-
-/**
- * A utility class assisting in the creation of dependency node filters.
- */
-public final class DependencyFilterUtils
-{
-
- private DependencyFilterUtils()
- {
- // hide constructor
- }
-
- /**
- * Creates a new filter that negates the specified filter.
- *
- * @param filter The filter to negate, must not be {@code null}.
- * @return The new filter, never {@code null}.
- */
- public static DependencyFilter notFilter( DependencyFilter filter )
- {
- return new NotDependencyFilter( filter );
- }
-
- /**
- * Creates a new filter that combines the specified filters using a logical {@code AND}. If no filters are
- * specified, the resulting filter accepts everything.
- *
- * @param filters The filters to combine, may be {@code null}.
- * @return The new filter, never {@code null}.
- */
- public static DependencyFilter andFilter( DependencyFilter... filters )
- {
- if ( filters != null && filters.length == 1 )
- {
- return filters[0];
- }
- else
- {
- return new AndDependencyFilter( filters );
- }
- }
-
- /**
- * Creates a new filter that combines the specified filters using a logical {@code AND}. If no filters are
- * specified, the resulting filter accepts everything.
- *
- * @param filters The filters to combine, may be {@code null}.
- * @return The new filter, never {@code null}.
- */
- public static DependencyFilter andFilter( Collection<DependencyFilter> filters )
- {
- if ( filters != null && filters.size() == 1 )
- {
- return filters.iterator().next();
- }
- else
- {
- return new AndDependencyFilter( filters );
- }
- }
-
- /**
- * Creates a new filter that combines the specified filters using a logical {@code OR}. If no filters are specified,
- * the resulting filter accepts nothing.
- *
- * @param filters The filters to combine, may be {@code null}.
- * @return The new filter, never {@code null}.
- */
- public static DependencyFilter orFilter( DependencyFilter... filters )
- {
- if ( filters != null && filters.length == 1 )
- {
- return filters[0];
- }
- else
- {
- return new OrDependencyFilter( filters );
- }
- }
-
- /**
- * Creates a new filter that combines the specified filters using a logical {@code OR}. If no filters are specified,
- * the resulting filter accepts nothing.
- *
- * @param filters The filters to combine, may be {@code null}.
- * @return The new filter, never {@code null}.
- */
- public static DependencyFilter orFilter( Collection<DependencyFilter> filters )
- {
- if ( filters != null && filters.size() == 1 )
- {
- return filters.iterator().next();
- }
- else
- {
- return new OrDependencyFilter( filters );
- }
- }
-
- /**
- * Creates a new filter that selects dependencies whose scope matches one or more of the specified classpath types.
- * A classpath type is a set of scopes separated by either {@code ','} or {@code '+'}.
- *
- * @param classpathTypes The classpath types, may be {@code null} or empty to match no dependency.
- * @return The new filter, never {@code null}.
- * @see JavaScopes
- */
- public static DependencyFilter classpathFilter( String... classpathTypes )
- {
- return classpathFilter( ( classpathTypes != null ) ? Arrays.asList( classpathTypes ) : null );
- }
-
- /**
- * Creates a new filter that selects dependencies whose scope matches one or more of the specified classpath types.
- * A classpath type is a set of scopes separated by either {@code ','} or {@code '+'}.
- *
- * @param classpathTypes The classpath types, may be {@code null} or empty to match no dependency.
- * @return The new filter, never {@code null}.
- * @see JavaScopes
- */
- public static DependencyFilter classpathFilter( Collection<String> classpathTypes )
- {
- Collection<String> types = new HashSet<String>();
-
- if ( classpathTypes != null )
- {
- for ( String classpathType : classpathTypes )
- {
- String[] tokens = classpathType.split( "[+,]" );
- for ( String token : tokens )
- {
- token = token.trim();
- if ( token.length() > 0 )
- {
- types.add( token );
- }
- }
- }
- }
-
- Collection<String> included = new HashSet<String>();
- for ( String type : types )
- {
- if ( JavaScopes.COMPILE.equals( type ) )
- {
- Collections.addAll( included, JavaScopes.COMPILE, JavaScopes.PROVIDED, JavaScopes.SYSTEM );
- }
- else if ( JavaScopes.RUNTIME.equals( type ) )
- {
- Collections.addAll( included, JavaScopes.COMPILE, JavaScopes.RUNTIME );
- }
- else if ( JavaScopes.TEST.equals( type ) )
- {
- Collections.addAll( included, JavaScopes.COMPILE, JavaScopes.PROVIDED, JavaScopes.SYSTEM,
- JavaScopes.RUNTIME, JavaScopes.TEST );
- }
- else
- {
- included.add( type );
- }
- }
-
- Collection<String> excluded = new HashSet<String>();
- Collections.addAll( excluded, JavaScopes.COMPILE, JavaScopes.PROVIDED, JavaScopes.SYSTEM, JavaScopes.RUNTIME,
- JavaScopes.TEST );
- excluded.removeAll( included );
-
- return new ScopeDependencyFilter( null, excluded );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/filter/ExclusionsDependencyFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/filter/ExclusionsDependencyFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/filter/ExclusionsDependencyFilter.java
deleted file mode 100644
index 2de4ae8..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/filter/ExclusionsDependencyFilter.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A simple filter to exclude artifacts based on either artifact id or group id and artifact id.
- */
-public final class ExclusionsDependencyFilter
- implements DependencyFilter
-{
-
- private final Set<String> excludes = new HashSet<String>();
-
- /**
- * Creates a new filter using the specified exclude patterns. A pattern can either be of the form
- * {@code groupId:artifactId} (recommended) or just {@code artifactId} (deprecated).
- *
- * @param excludes The exclude patterns, may be {@code null} or empty to exclude no artifacts.
- */
- public ExclusionsDependencyFilter( Collection<String> excludes )
- {
- if ( excludes != null )
- {
- this.excludes.addAll( excludes );
- }
- }
-
- public boolean accept( DependencyNode node, List<DependencyNode> parents )
- {
- Dependency dependency = node.getDependency();
-
- if ( dependency == null )
- {
- return true;
- }
-
- String id = dependency.getArtifact().getArtifactId();
-
- if ( excludes.contains( id ) )
- {
- return false;
- }
-
- id = dependency.getArtifact().getGroupId() + ':' + id;
-
- if ( excludes.contains( id ) )
- {
- return false;
- }
-
- return true;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
-
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- ExclusionsDependencyFilter that = (ExclusionsDependencyFilter) obj;
-
- return this.excludes.equals( that.excludes );
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + excludes.hashCode();
- return hash;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/filter/NotDependencyFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/filter/NotDependencyFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/filter/NotDependencyFilter.java
deleted file mode 100644
index d5fdb24..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/filter/NotDependencyFilter.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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;
-
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A dependency filter that negates another filter.
- */
-public final class NotDependencyFilter
- implements DependencyFilter
-{
-
- private final DependencyFilter filter;
-
- /**
- * Creates a new filter negatint the specified filter.
- *
- * @param filter The filter to negate, must not be {@code null}.
- */
- public NotDependencyFilter( DependencyFilter filter )
- {
- if ( filter == null )
- {
- throw new IllegalArgumentException( "no filter specified" );
- }
- this.filter = filter;
- }
-
- public boolean accept( DependencyNode node, List<DependencyNode> parents )
- {
- return !filter.accept( node, parents );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
-
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- NotDependencyFilter that = (NotDependencyFilter) obj;
-
- return this.filter.equals( that.filter );
- }
-
- @Override
- public int hashCode()
- {
- int hash = getClass().hashCode();
- hash = hash * 31 + filter.hashCode();
- return hash;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/filter/OrDependencyFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/filter/OrDependencyFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/filter/OrDependencyFilter.java
deleted file mode 100644
index 665f6e7..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/filter/OrDependencyFilter.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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.Collections;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A dependency filter that combines zero or more other filters using a logical {@code OR}.
- */
-public final class OrDependencyFilter
- implements DependencyFilter
-{
-
- private final Set<DependencyFilter> filters = new LinkedHashSet<DependencyFilter>();
-
- /**
- * Creates a new filter from the specified filters.
- *
- * @param filters The filters to combine, may be {@code null}.
- */
- public OrDependencyFilter( DependencyFilter... filters )
- {
- if ( filters != null )
- {
- Collections.addAll( this.filters, filters );
- }
- }
-
- /**
- * Creates a new filter from the specified filters.
- *
- * @param filters The filters to combine, may be {@code null}.
- */
- public OrDependencyFilter( Collection<DependencyFilter> filters )
- {
- if ( filters != null )
- {
- this.filters.addAll( filters );
- }
- }
-
- /**
- * Creates a new filter from the specified filters.
- *
- * @param filter1 The first filter to combine, may be {@code null}.
- * @param filter2 The first filter to combine, may be {@code null}.
- * @return The combined filter or {@code null} if both filter were {@code null}.
- */
- public static DependencyFilter newInstance( DependencyFilter filter1, DependencyFilter filter2 )
- {
- if ( filter1 == null )
- {
- return filter2;
- }
- else if ( filter2 == null )
- {
- return filter1;
- }
- return new OrDependencyFilter( filter1, filter2 );
- }
-
- public boolean accept( DependencyNode node, List<DependencyNode> parents )
- {
- for ( DependencyFilter filter : filters )
- {
- if ( filter.accept( node, parents ) )
- {
- return true;
- }
- }
- return false;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
-
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- OrDependencyFilter that = (OrDependencyFilter) obj;
-
- return this.filters.equals( that.filters );
- }
-
- @Override
- public int hashCode()
- {
- int hash = getClass().hashCode();
- hash = hash * 31 + filters.hashCode();
- return hash;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/filter/PatternExclusionsDependencyFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/filter/PatternExclusionsDependencyFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/filter/PatternExclusionsDependencyFilter.java
deleted file mode 100644
index e768614..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/filter/PatternExclusionsDependencyFilter.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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 org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.version.VersionScheme;
-
-/**
- * A simple filter to exclude artifacts from a list of patterns. The artifact pattern syntax is of the form:
- *
- * <pre>
- * [groupId]:[artifactId]:[extension]:[version]
- * </pre>
- * <p>
- * Where each pattern segment is optional and supports full and partial <code>*</code> wildcards. An empty pattern
- * segment is treated as an implicit wildcard. Version can be a range in case a {@link VersionScheme} is specified.
- * </p>
- * <p>
- * For example, <code>org.eclipse.*</code> would match all artifacts whose group id started with
- * <code>org.eclipse.</code> , and <code>:::*-SNAPSHOT</code> would match all snapshot artifacts.
- * </p>
- */
-public final class PatternExclusionsDependencyFilter
- extends AbstractPatternDependencyFilter
-{
-
- /**
- * Creates a new filter using the specified patterns.
- *
- * @param patterns The exclude patterns, may be {@code null} or empty to exclude no artifacts.
- */
- public PatternExclusionsDependencyFilter( final String... patterns )
- {
- super( patterns );
- }
-
- /**
- * Creates a new filter using the specified patterns.
- *
- * @param versionScheme To be used for parsing versions/version ranges. If {@code null} and pattern specifies a
- * range no artifact will be excluded.
- * @param patterns The exclude patterns, may be {@code null} or empty to exclude no artifacts.
- */
- public PatternExclusionsDependencyFilter( final VersionScheme versionScheme, final String... patterns )
- {
- super( versionScheme, patterns );
- }
-
- /**
- * Creates a new filter using the specified patterns.
- *
- * @param patterns The include patterns, may be {@code null} or empty to include no artifacts.
- */
- public PatternExclusionsDependencyFilter( final Collection<String> patterns )
- {
- super( patterns );
- }
-
- /**
- * Creates a new filter using the specified patterns and {@link VersionScheme} .
- *
- * @param versionScheme To be used for parsing versions/version ranges. If {@code null} and pattern specifies a
- * range no artifact will be excluded.
- * @param patterns The exclude patterns, may be {@code null} or empty to exclude no artifacts.
- */
- public PatternExclusionsDependencyFilter( final VersionScheme versionScheme, final Collection<String> patterns )
- {
- super( versionScheme, patterns );
- }
-
- @Override
- protected boolean accept( Artifact artifact )
- {
- return !super.accept( artifact );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/filter/PatternInclusionsDependencyFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/filter/PatternInclusionsDependencyFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/filter/PatternInclusionsDependencyFilter.java
deleted file mode 100644
index e30600b..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/filter/PatternInclusionsDependencyFilter.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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 org.eclipse.aether.version.VersionScheme;
-
-/**
- * A simple filter to include artifacts from a list of patterns. The artifact pattern syntax is of the form:
- *
- * <pre>
- * [groupId]:[artifactId]:[extension]:[version]
- * </pre>
- * <p>
- * Where each pattern segment is optional and supports full and partial <code>*</code> wildcards. An empty pattern
- * segment is treated as an implicit wildcard. Version can be a range in case a {@link VersionScheme} is specified.
- * </p>
- * <p>
- * For example, <code>org.eclipse.*</code> would match all artifacts whose group id started with
- * <code>org.eclipse.</code> , and <code>:::*-SNAPSHOT</code> would match all snapshot artifacts.
- * </p>
- */
-public final class PatternInclusionsDependencyFilter
- extends AbstractPatternDependencyFilter
-{
-
- /**
- * Creates a new filter using the specified patterns.
- *
- * @param patterns The include patterns, may be {@code null} or empty to include no artifacts.
- */
- public PatternInclusionsDependencyFilter( final String... patterns )
- {
- super( patterns );
- }
-
- /**
- * Creates a new filter using the specified patterns.
- *
- * @param versionScheme To be used for parsing versions/version ranges. If {@code null} and pattern specifies a
- * range no artifact will be included.
- * @param patterns The include patterns, may be {@code null} or empty to include no artifacts.
- */
- public PatternInclusionsDependencyFilter( final VersionScheme versionScheme, final String... patterns )
- {
- super( versionScheme, patterns );
- }
-
- /**
- * Creates a new filter using the specified patterns.
- *
- * @param patterns The include patterns, may be {@code null} or empty to include no artifacts.
- */
- public PatternInclusionsDependencyFilter( final Collection<String> patterns )
- {
- super( patterns );
- }
-
- /**
- * Creates a new filter using the specified patterns and {@link VersionScheme} .
- *
- * @param versionScheme To be used for parsing versions/version ranges. If {@code null} and pattern specifies a
- * range no artifact will be included.
- * @param patterns The include patterns, may be {@code null} or empty to include no artifacts.
- */
- public PatternInclusionsDependencyFilter( final VersionScheme versionScheme, final Collection<String> patterns )
- {
- super( versionScheme, patterns );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/filter/ScopeDependencyFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/filter/ScopeDependencyFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/filter/ScopeDependencyFilter.java
deleted file mode 100644
index bc60c41..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/filter/ScopeDependencyFilter.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A dependency filter based on dependency scopes. <em>Note:</em> This filter does not assume any relationships between
- * the scopes. In particular, the filter is not aware of scopes that logically include other scopes.
- *
- * @see Dependency#getScope()
- */
-public final class ScopeDependencyFilter
- implements DependencyFilter
-{
-
- private final Set<String> included = new HashSet<String>();
-
- private final Set<String> excluded = new HashSet<String>();
-
- /**
- * Creates a new filter using the specified includes and excludes.
- *
- * @param included The set of scopes to include, may be {@code null} or empty to include any scope.
- * @param excluded The set of scopes to exclude, may be {@code null} or empty to exclude no scope.
- */
- public ScopeDependencyFilter( Collection<String> included, Collection<String> excluded )
- {
- if ( included != null )
- {
- this.included.addAll( included );
- }
- if ( excluded != null )
- {
- this.excluded.addAll( excluded );
- }
- }
-
- /**
- * Creates a new filter using the specified excludes.
- *
- * @param excluded The set of scopes to exclude, may be {@code null} or empty to exclude no scope.
- */
- public ScopeDependencyFilter( String... excluded )
- {
- if ( excluded != null )
- {
- this.excluded.addAll( Arrays.asList( excluded ) );
- }
- }
-
- public boolean accept( DependencyNode node, List<DependencyNode> parents )
- {
- Dependency dependency = node.getDependency();
-
- if ( dependency == null )
- {
- return true;
- }
-
- String scope = node.getDependency().getScope();
- return ( included.isEmpty() || included.contains( scope ) )
- && ( excluded.isEmpty() || !excluded.contains( scope ) );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
-
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- ScopeDependencyFilter that = (ScopeDependencyFilter) obj;
-
- return this.included.equals( that.included ) && this.excluded.equals( that.excluded );
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + included.hashCode();
- hash = hash * 31 + excluded.hashCode();
- return hash;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/filter/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/filter/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/filter/package-info.java
deleted file mode 100644
index 6547d2e..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/filter/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.
- */
-/**
- * Various dependency filters for selecting nodes in a dependency graph.
- */
-package org.eclipse.aether.util.filter;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java
deleted file mode 100644
index fefb9fb..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java
+++ /dev/null
@@ -1,327 +0,0 @@
-package org.eclipse.aether.util.graph.manager;
-
-/*
- * 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.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.ArtifactProperties;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencyManagement;
-import org.eclipse.aether.collection.DependencyManager;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.Exclusion;
-import org.eclipse.aether.util.artifact.JavaScopes;
-
-/**
- * A dependency manager that mimics the way Maven 2.x works.
- */
-public final class ClassicDependencyManager
- implements DependencyManager
-{
-
- private final int depth;
-
- private final Map<Object, String> managedVersions;
-
- private final Map<Object, String> managedScopes;
-
- private final Map<Object, Boolean> managedOptionals;
-
- private final Map<Object, String> managedLocalPaths;
-
- private final Map<Object, Collection<Exclusion>> managedExclusions;
-
- private int hashCode;
-
- /**
- * Creates a new dependency manager without any management information.
- */
- public ClassicDependencyManager()
- {
- this( 0, Collections.<Object, String>emptyMap(), Collections.<Object, String>emptyMap(),
- Collections.<Object, Boolean>emptyMap(), Collections.<Object, String>emptyMap(),
- Collections.<Object, Collection<Exclusion>>emptyMap() );
- }
-
- private ClassicDependencyManager( int depth, Map<Object, String> managedVersions,
- Map<Object, String> managedScopes, Map<Object, Boolean> managedOptionals,
- Map<Object, String> managedLocalPaths,
- Map<Object, Collection<Exclusion>> managedExclusions )
- {
- this.depth = depth;
- this.managedVersions = managedVersions;
- this.managedScopes = managedScopes;
- this.managedOptionals = managedOptionals;
- this.managedLocalPaths = managedLocalPaths;
- this.managedExclusions = managedExclusions;
- }
-
- public DependencyManager deriveChildManager( DependencyCollectionContext context )
- {
- if ( depth >= 2 )
- {
- return this;
- }
- else if ( depth == 1 )
- {
- return new ClassicDependencyManager( depth + 1, managedVersions, managedScopes, managedOptionals,
- managedLocalPaths, managedExclusions );
- }
-
- Map<Object, String> managedVersions = this.managedVersions;
- Map<Object, String> managedScopes = this.managedScopes;
- Map<Object, Boolean> managedOptionals = this.managedOptionals;
- Map<Object, String> managedLocalPaths = this.managedLocalPaths;
- Map<Object, Collection<Exclusion>> managedExclusions = this.managedExclusions;
-
- for ( Dependency managedDependency : context.getManagedDependencies() )
- {
- Artifact artifact = managedDependency.getArtifact();
- Object key = getKey( artifact );
-
- String version = artifact.getVersion();
- if ( version.length() > 0 && !managedVersions.containsKey( key ) )
- {
- if ( managedVersions == this.managedVersions )
- {
- managedVersions = new HashMap<Object, String>( this.managedVersions );
- }
- managedVersions.put( key, version );
- }
-
- String scope = managedDependency.getScope();
- if ( scope.length() > 0 && !managedScopes.containsKey( key ) )
- {
- if ( managedScopes == this.managedScopes )
- {
- managedScopes = new HashMap<Object, String>( this.managedScopes );
- }
- managedScopes.put( key, scope );
- }
-
- Boolean optional = managedDependency.getOptional();
- if ( optional != null && !managedOptionals.containsKey( key ) )
- {
- if ( managedOptionals == this.managedOptionals )
- {
- managedOptionals = new HashMap<Object, Boolean>( this.managedOptionals );
- }
- managedOptionals.put( key, optional );
- }
-
- String localPath = managedDependency.getArtifact().getProperty( ArtifactProperties.LOCAL_PATH, null );
- if ( localPath != null && !managedLocalPaths.containsKey( key ) )
- {
- if ( managedLocalPaths == this.managedLocalPaths )
- {
- managedLocalPaths = new HashMap<Object, String>( this.managedLocalPaths );
- }
- managedLocalPaths.put( key, localPath );
- }
-
- Collection<Exclusion> exclusions = managedDependency.getExclusions();
- if ( !exclusions.isEmpty() )
- {
- if ( managedExclusions == this.managedExclusions )
- {
- managedExclusions = new HashMap<Object, Collection<Exclusion>>( this.managedExclusions );
- }
- Collection<Exclusion> managed = managedExclusions.get( key );
- if ( managed == null )
- {
- managed = new LinkedHashSet<Exclusion>();
- managedExclusions.put( key, managed );
- }
- managed.addAll( exclusions );
- }
- }
-
- return new ClassicDependencyManager( depth + 1, managedVersions, managedScopes, managedOptionals,
- managedLocalPaths, managedExclusions );
- }
-
- public DependencyManagement manageDependency( Dependency dependency )
- {
- DependencyManagement management = null;
-
- Object key = getKey( dependency.getArtifact() );
-
- if ( depth >= 2 )
- {
- String version = managedVersions.get( key );
- if ( version != null )
- {
- if ( management == null )
- {
- management = new DependencyManagement();
- }
- management.setVersion( version );
- }
-
- String scope = managedScopes.get( key );
- if ( scope != null )
- {
- if ( management == null )
- {
- management = new DependencyManagement();
- }
- management.setScope( scope );
-
- if ( !JavaScopes.SYSTEM.equals( scope )
- && dependency.getArtifact().getProperty( ArtifactProperties.LOCAL_PATH, null ) != null )
- {
- Map<String, String> properties =
- new HashMap<String, String>( dependency.getArtifact().getProperties() );
- properties.remove( ArtifactProperties.LOCAL_PATH );
- management.setProperties( properties );
- }
- }
-
- if ( ( scope != null && JavaScopes.SYSTEM.equals( scope ) )
- || ( scope == null && JavaScopes.SYSTEM.equals( dependency.getScope() ) ) )
- {
- String localPath = managedLocalPaths.get( key );
- if ( localPath != null )
- {
- if ( management == null )
- {
- management = new DependencyManagement();
- }
- Map<String, String> properties =
- new HashMap<String, String>( dependency.getArtifact().getProperties() );
- properties.put( ArtifactProperties.LOCAL_PATH, localPath );
- management.setProperties( properties );
- }
- }
-
- Boolean optional = managedOptionals.get( key );
- if ( optional != null )
- {
- if ( management == null )
- {
- management = new DependencyManagement();
- }
- management.setOptional( optional );
- }
- }
-
- Collection<Exclusion> exclusions = managedExclusions.get( key );
- if ( exclusions != null )
- {
- if ( management == null )
- {
- management = new DependencyManagement();
- }
- Collection<Exclusion> result = new LinkedHashSet<Exclusion>( dependency.getExclusions() );
- result.addAll( exclusions );
- management.setExclusions( result );
- }
-
- return management;
- }
-
- private Object getKey( Artifact a )
- {
- return new Key( a );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- ClassicDependencyManager that = (ClassicDependencyManager) obj;
- return depth == that.depth && managedVersions.equals( that.managedVersions )
- && managedScopes.equals( that.managedScopes ) && managedOptionals.equals( that.managedOptionals )
- && managedExclusions.equals( that.managedExclusions );
- }
-
- @Override
- public int hashCode()
- {
- if ( hashCode == 0 )
- {
- int hash = 17;
- hash = hash * 31 + depth;
- hash = hash * 31 + managedVersions.hashCode();
- hash = hash * 31 + managedScopes.hashCode();
- hash = hash * 31 + managedOptionals.hashCode();
- hash = hash * 31 + managedExclusions.hashCode();
- hashCode = hash;
- }
- return hashCode;
- }
-
- static class Key
- {
-
- private final Artifact artifact;
-
- private final int hashCode;
-
- public Key( Artifact artifact )
- {
- this.artifact = artifact;
-
- int hash = 17;
- hash = hash * 31 + artifact.getGroupId().hashCode();
- hash = hash * 31 + artifact.getArtifactId().hashCode();
- hashCode = hash;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
- return true;
- }
- else if ( !( obj instanceof Key ) )
- {
- return false;
- }
- Key that = (Key) obj;
- return artifact.getArtifactId().equals( that.artifact.getArtifactId() )
- && artifact.getGroupId().equals( that.artifact.getGroupId() )
- && artifact.getExtension().equals( that.artifact.getExtension() )
- && artifact.getClassifier().equals( that.artifact.getClassifier() );
- }
-
- @Override
- public int hashCode()
- {
- return hashCode;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/DependencyManagerUtils.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/DependencyManagerUtils.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/DependencyManagerUtils.java
deleted file mode 100644
index 7719096..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/DependencyManagerUtils.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package org.eclipse.aether.util.graph.manager;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A utility class assisting in analyzing the effects of dependency management.
- */
-public final class DependencyManagerUtils
-{
-
- /**
- * The key in the repository session's {@link RepositorySystemSession#getConfigProperties() configuration
- * properties} used to store a {@link Boolean} flag controlling the verbose mode for dependency management. If
- * enabled, the original attributes of a dependency before its update due to dependency managemnent will be recorded
- * in the node's {@link DependencyNode#getData() custom data} when building a dependency graph.
- */
- public static final String CONFIG_PROP_VERBOSE = "aether.dependencyManager.verbose";
-
- /**
- * The key in the dependency node's {@link DependencyNode#getData() custom data} under which the original version is
- * stored.
- */
- public static final String NODE_DATA_PREMANAGED_VERSION = "premanaged.version";
-
- /**
- * The key in the dependency node's {@link DependencyNode#getData() custom data} under which the original scope is
- * stored.
- */
- public static final String NODE_DATA_PREMANAGED_SCOPE = "premanaged.scope";
-
- /**
- * The key in the dependency node's {@link DependencyNode#getData() custom data} under which the original optional
- * flag is stored.
- */
- public static final String NODE_DATA_PREMANAGED_OPTIONAL = "premanaged.optional";
-
- /**
- * Gets the version or version range of the specified dependency node before dependency management was applied (if
- * any).
- *
- * @param node The dependency node to retrieve the premanaged data for, must not be {@code null}.
- * @return The node's dependency version before dependency management or {@code null} if the version was not managed
- * or if {@link #CONFIG_PROP_VERBOSE} was not enabled.
- */
- public static String getPremanagedVersion( DependencyNode node )
- {
- if ( ( node.getManagedBits() & DependencyNode.MANAGED_VERSION ) == 0 )
- {
- return null;
- }
- return cast( node.getData().get( NODE_DATA_PREMANAGED_VERSION ), String.class );
- }
-
- /**
- * Gets the scope of the specified dependency node before dependency management was applied (if any).
- *
- * @param node The dependency node to retrieve the premanaged data for, must not be {@code null}.
- * @return The node's dependency scope before dependency management or {@code null} if the scope was not managed or
- * if {@link #CONFIG_PROP_VERBOSE} was not enabled.
- */
- public static String getPremanagedScope( DependencyNode node )
- {
- if ( ( node.getManagedBits() & DependencyNode.MANAGED_SCOPE ) == 0 )
- {
- return null;
- }
- return cast( node.getData().get( NODE_DATA_PREMANAGED_SCOPE ), String.class );
- }
-
- /**
- * Gets the optional flag of the specified dependency node before dependency management was applied (if any).
- *
- * @param node The dependency node to retrieve the premanaged data for, must not be {@code null}.
- * @return The node's optional flag before dependency management or {@code null} if the flag was not managed or if
- * {@link #CONFIG_PROP_VERBOSE} was not enabled.
- */
- public static Boolean getPremanagedOptional( DependencyNode node )
- {
- if ( ( node.getManagedBits() & DependencyNode.MANAGED_OPTIONAL ) == 0 )
- {
- return null;
- }
- return cast( node.getData().get( NODE_DATA_PREMANAGED_OPTIONAL ), Boolean.class );
- }
-
- private static <T> T cast( Object obj, Class<T> type )
- {
- return type.isInstance( obj ) ? type.cast( obj ) : null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/NoopDependencyManager.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/NoopDependencyManager.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/NoopDependencyManager.java
deleted file mode 100644
index ae8ee40..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/NoopDependencyManager.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.eclipse.aether.util.graph.manager;
-
-/*
- * 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.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencyManagement;
-import org.eclipse.aether.collection.DependencyManager;
-import org.eclipse.aether.graph.Dependency;
-
-/**
- * A dependency manager that does not do any dependency management.
- */
-public final class NoopDependencyManager
- implements DependencyManager
-{
-
- /**
- * A ready-made instance of this dependency manager which can safely be reused throughout an entire application
- * regardless of multi-threading.
- */
- public static final DependencyManager INSTANCE = new NoopDependencyManager();
-
- /**
- * Creates a new instance of this dependency manager. Usually, {@link #INSTANCE} should be used instead.
- */
- public NoopDependencyManager()
- {
- }
-
- public DependencyManager deriveChildManager( DependencyCollectionContext context )
- {
- return this;
- }
-
- public DependencyManagement manageDependency( Dependency dependency )
- {
- return null;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
- return true;
- }
-
- @Override
- public int hashCode()
- {
- return getClass().hashCode();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
deleted file mode 100644
index aeac09f..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
+++ /dev/null
@@ -1,321 +0,0 @@
-package org.eclipse.aether.util.graph.manager;
-
-/*
- * 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.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.ArtifactProperties;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencyManagement;
-import org.eclipse.aether.collection.DependencyManager;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.Exclusion;
-import org.eclipse.aether.util.artifact.JavaScopes;
-
-/**
- * A dependency manager supporting transitive dependency management.
- *
- * @author Christian Schulte
- * @since 1.2
- */
-public final class TransitiveDependencyManager
- implements DependencyManager
-{
-
- private final int depth;
-
- private final Map<Object, String> managedVersions;
-
- private final Map<Object, String> managedScopes;
-
- private final Map<Object, Boolean> managedOptionals;
-
- private final Map<Object, String> managedLocalPaths;
-
- private final Map<Object, Collection<Exclusion>> managedExclusions;
-
- private int hashCode;
-
- /**
- * Creates a new dependency manager without any management information.
- */
- public TransitiveDependencyManager()
- {
- this( 0, Collections.<Object, String>emptyMap(), Collections.<Object, String>emptyMap(),
- Collections.<Object, Boolean>emptyMap(), Collections.<Object, String>emptyMap(),
- Collections.<Object, Collection<Exclusion>>emptyMap() );
- }
-
- private TransitiveDependencyManager( final int depth,
- final Map<Object, String> managedVersions,
- final Map<Object, String> managedScopes,
- final Map<Object, Boolean> managedOptionals,
- final Map<Object, String> managedLocalPaths,
- final Map<Object, Collection<Exclusion>> managedExclusions )
- {
- super();
- this.depth = depth;
- this.managedVersions = managedVersions;
- this.managedScopes = managedScopes;
- this.managedOptionals = managedOptionals;
- this.managedLocalPaths = managedLocalPaths;
- this.managedExclusions = managedExclusions;
- }
-
- public DependencyManager deriveChildManager( final DependencyCollectionContext context )
- {
- Map<Object, String> versions = this.managedVersions;
- Map<Object, String> scopes = this.managedScopes;
- Map<Object, Boolean> optionals = this.managedOptionals;
- Map<Object, String> localPaths = this.managedLocalPaths;
- Map<Object, Collection<Exclusion>> exclusions = this.managedExclusions;
-
- for ( Dependency managedDependency : context.getManagedDependencies() )
- {
- Artifact artifact = managedDependency.getArtifact();
- Object key = getKey( artifact );
-
- String version = artifact.getVersion();
- if ( version.length() > 0 && !versions.containsKey( key ) )
- {
- if ( versions == this.managedVersions )
- {
- versions = new HashMap<Object, String>( this.managedVersions );
- }
- versions.put( key, version );
- }
-
- String scope = managedDependency.getScope();
- if ( scope.length() > 0 && !scopes.containsKey( key ) )
- {
- if ( scopes == this.managedScopes )
- {
- scopes = new HashMap<Object, String>( this.managedScopes );
- }
- scopes.put( key, scope );
- }
-
- Boolean optional = managedDependency.getOptional();
- if ( optional != null && !optionals.containsKey( key ) )
- {
- if ( optionals == this.managedOptionals )
- {
- optionals = new HashMap<Object, Boolean>( this.managedOptionals );
- }
- optionals.put( key, optional );
- }
-
- String localPath = managedDependency.getArtifact().getProperty( ArtifactProperties.LOCAL_PATH, null );
- if ( localPath != null && !localPaths.containsKey( key ) )
- {
- if ( localPaths == this.managedLocalPaths )
- {
- localPaths = new HashMap<Object, String>( this.managedLocalPaths );
- }
- localPaths.put( key, localPath );
- }
-
- if ( !managedDependency.getExclusions().isEmpty() )
- {
- if ( exclusions == this.managedExclusions )
- {
- exclusions = new HashMap<Object, Collection<Exclusion>>( this.managedExclusions );
- }
- Collection<Exclusion> managed = exclusions.get( key );
- if ( managed == null )
- {
- managed = new LinkedHashSet<Exclusion>();
- exclusions.put( key, managed );
- }
- managed.addAll( managedDependency.getExclusions() );
- }
- }
-
- return new TransitiveDependencyManager( this.depth + 1, versions, scopes, optionals, localPaths, exclusions );
- }
-
- public DependencyManagement manageDependency( Dependency dependency )
- {
- DependencyManagement management = null;
-
- Object key = getKey( dependency.getArtifact() );
-
- if ( depth >= 2 )
- {
- String version = managedVersions.get( key );
- if ( version != null )
- {
- if ( management == null )
- {
- management = new DependencyManagement();
- }
- management.setVersion( version );
- }
-
- String scope = managedScopes.get( key );
- if ( scope != null )
- {
- if ( management == null )
- {
- management = new DependencyManagement();
- }
- management.setScope( scope );
-
- if ( !JavaScopes.SYSTEM.equals( scope )
- && dependency.getArtifact().getProperty( ArtifactProperties.LOCAL_PATH, null ) != null )
- {
- Map<String, String> properties =
- new HashMap<String, String>( dependency.getArtifact().getProperties() );
- properties.remove( ArtifactProperties.LOCAL_PATH );
- management.setProperties( properties );
- }
- }
-
- if ( ( scope != null && JavaScopes.SYSTEM.equals( scope ) )
- || ( scope == null && JavaScopes.SYSTEM.equals( dependency.getScope() ) ) )
- {
- String localPath = managedLocalPaths.get( key );
- if ( localPath != null )
- {
- if ( management == null )
- {
- management = new DependencyManagement();
- }
- Map<String, String> properties =
- new HashMap<String, String>( dependency.getArtifact().getProperties() );
- properties.put( ArtifactProperties.LOCAL_PATH, localPath );
- management.setProperties( properties );
- }
- }
-
- Boolean optional = managedOptionals.get( key );
- if ( optional != null )
- {
- if ( management == null )
- {
- management = new DependencyManagement();
- }
- management.setOptional( optional );
- }
- }
-
- Collection<Exclusion> exclusions = managedExclusions.get( key );
- if ( exclusions != null )
- {
- if ( management == null )
- {
- management = new DependencyManagement();
- }
- Collection<Exclusion> result = new LinkedHashSet<Exclusion>( dependency.getExclusions() );
- result.addAll( exclusions );
- management.setExclusions( result );
- }
-
- return management;
- }
-
- private Object getKey( Artifact a )
- {
- return new Key( a );
- }
-
- @Override
- public boolean equals( final Object obj )
- {
- boolean equal = obj instanceof TransitiveDependencyManager;
-
- if ( equal )
- {
- final TransitiveDependencyManager that = (TransitiveDependencyManager) obj;
- return this.depth == that.depth
- && this.managedVersions.equals( that.managedVersions )
- && this.managedScopes.equals( that.managedScopes )
- && this.managedOptionals.equals( that.managedOptionals )
- && this.managedExclusions.equals( that.managedExclusions );
-
- }
-
- return equal;
- }
-
- @Override
- public int hashCode()
- {
- if ( this.hashCode == 0 )
- {
- int hash = 17;
- hash = hash * 31 + this.depth;
- hash = hash * 31 + this.managedVersions.hashCode();
- hash = hash * 31 + this.managedScopes.hashCode();
- hash = hash * 31 + this.managedOptionals.hashCode();
- hash = hash * 31 + this.managedExclusions.hashCode();
- this.hashCode = hash;
- }
- return this.hashCode;
- }
-
- static class Key
- {
-
- private final Artifact artifact;
-
- private final int hashCode;
-
- public Key( final Artifact artifact )
- {
- this.artifact = artifact;
-
- int hash = 17;
- hash = hash * 31 + artifact.getGroupId().hashCode();
- hash = hash * 31 + artifact.getArtifactId().hashCode();
- this.hashCode = hash;
- }
-
- @Override
- public boolean equals( final Object obj )
- {
- boolean equal = obj instanceof Key;
-
- if ( equal )
- {
- final Key that = (Key) obj;
- return this.artifact.getArtifactId().equals( that.artifact.getArtifactId() )
- && this.artifact.getGroupId().equals( that.artifact.getGroupId() )
- && this.artifact.getExtension().equals( that.artifact.getExtension() )
- && this.artifact.getClassifier().equals( that.artifact.getClassifier() );
-
- }
-
- return equal;
- }
-
- @Override
- public int hashCode()
- {
- return this.hashCode;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/package-info.java
deleted file mode 100644
index 7c7ae12..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/manager/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.
- */
-/**
- * Various dependency managers for building a dependency graph.
- */
-package org.eclipse.aether.util.graph.manager;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/AndDependencySelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/AndDependencySelector.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/AndDependencySelector.java
deleted file mode 100644
index f2a7e38..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/AndDependencySelector.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package org.eclipse.aether.util.graph.selector;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.graph.Dependency;
-
-/**
- * A dependency selector that combines zero or more other selectors using a logical {@code AND}. The resulting selector
- * selects a given dependency if and only if all constituent selectors do so.
- */
-public final class AndDependencySelector
- implements DependencySelector
-{
-
- private final Set<? extends DependencySelector> selectors;
-
- private int hashCode;
-
- /**
- * Creates a new selector from the specified selectors. Prefer
- * {@link #newInstance(DependencySelector, DependencySelector)} if any of the input selectors might be {@code null}.
- *
- * @param selectors The selectors to combine, may be {@code null} but must not contain {@code null} elements.
- */
- public AndDependencySelector( DependencySelector... selectors )
- {
- if ( selectors != null && selectors.length > 0 )
- {
- this.selectors = new LinkedHashSet<DependencySelector>( Arrays.asList( selectors ) );
- }
- else
- {
- this.selectors = Collections.emptySet();
- }
- }
-
- /**
- * Creates a new selector from the specified selectors.
- *
- * @param selectors The selectors to combine, may be {@code null} but must not contain {@code null} elements.
- */
- public AndDependencySelector( Collection<? extends DependencySelector> selectors )
- {
- if ( selectors != null && !selectors.isEmpty() )
- {
- this.selectors = new LinkedHashSet<DependencySelector>( selectors );
- }
- else
- {
- this.selectors = Collections.emptySet();
- }
- }
-
- private AndDependencySelector( Set<DependencySelector> selectors )
- {
- if ( selectors != null && !selectors.isEmpty() )
- {
- this.selectors = selectors;
- }
- else
- {
- this.selectors = Collections.emptySet();
- }
- }
-
- /**
- * Creates a new selector from the specified selectors.
- *
- * @param selector1 The first selector to combine, may be {@code null}.
- * @param selector2 The second selector to combine, may be {@code null}.
- * @return The combined selector or {@code null} if both selectors were {@code null}.
- */
- public static DependencySelector newInstance( DependencySelector selector1, DependencySelector selector2 )
- {
- if ( selector1 == null )
- {
- return selector2;
- }
- else if ( selector2 == null || selector2.equals( selector1 ) )
- {
- return selector1;
- }
- return new AndDependencySelector( selector1, selector2 );
- }
-
- public boolean selectDependency( Dependency dependency )
- {
- for ( DependencySelector selector : selectors )
- {
- if ( !selector.selectDependency( dependency ) )
- {
- return false;
- }
- }
- return true;
- }
-
- public DependencySelector deriveChildSelector( DependencyCollectionContext context )
- {
- int seen = 0;
- Set<DependencySelector> childSelectors = null;
-
- for ( DependencySelector selector : selectors )
- {
- DependencySelector childSelector = selector.deriveChildSelector( context );
- if ( childSelectors != null )
- {
- if ( childSelector != null )
- {
- childSelectors.add( childSelector );
- }
- }
- else if ( selector != childSelector )
- {
- childSelectors = new LinkedHashSet<DependencySelector>();
- if ( seen > 0 )
- {
- for ( DependencySelector s : selectors )
- {
- if ( childSelectors.size() >= seen )
- {
- break;
- }
- childSelectors.add( s );
- }
- }
- if ( childSelector != null )
- {
- childSelectors.add( childSelector );
- }
- }
- else
- {
- seen++;
- }
- }
-
- if ( childSelectors == null )
- {
- return this;
- }
- if ( childSelectors.size() <= 1 )
- {
- if ( childSelectors.isEmpty() )
- {
- return null;
- }
- return childSelectors.iterator().next();
- }
- return new AndDependencySelector( childSelectors );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- AndDependencySelector that = (AndDependencySelector) obj;
- return selectors.equals( that.selectors );
- }
-
- @Override
- public int hashCode()
- {
- if ( hashCode == 0 )
- {
- int hash = 17;
- hash = hash * 31 + selectors.hashCode();
- hashCode = hash;
- }
- return hashCode;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/ExclusionDependencySelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/ExclusionDependencySelector.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/ExclusionDependencySelector.java
deleted file mode 100644
index 221cf4f..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/ExclusionDependencySelector.java
+++ /dev/null
@@ -1,227 +0,0 @@
-package org.eclipse.aether.util.graph.selector;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.TreeSet;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.Exclusion;
-
-/**
- * A dependency selector that applies exclusions based on artifact coordinates.
- *
- * @see Dependency#getExclusions()
- */
-public final class ExclusionDependencySelector
- implements DependencySelector
-{
-
- // sorted and dupe-free array, faster to iterate than LinkedHashSet
- private final Exclusion[] exclusions;
-
- private int hashCode;
-
- /**
- * Creates a new selector without any exclusions.
- */
- public ExclusionDependencySelector()
- {
- this.exclusions = new Exclusion[0];
- }
-
- /**
- * Creates a new selector with the specified exclusions.
- *
- * @param exclusions The exclusions, may be {@code null}.
- */
- public ExclusionDependencySelector( Collection<Exclusion> exclusions )
- {
- if ( exclusions != null && !exclusions.isEmpty() )
- {
- TreeSet<Exclusion> sorted = new TreeSet<Exclusion>( ExclusionComparator.INSTANCE );
- sorted.addAll( exclusions );
- this.exclusions = sorted.toArray( new Exclusion[sorted.size()] );
- }
- else
- {
- this.exclusions = new Exclusion[0];
- }
- }
-
- private ExclusionDependencySelector( Exclusion[] exclusions )
- {
- this.exclusions = exclusions;
- }
-
- public boolean selectDependency( Dependency dependency )
- {
- Artifact artifact = dependency.getArtifact();
- for ( Exclusion exclusion : exclusions )
- {
- if ( matches( exclusion, artifact ) )
- {
- return false;
- }
- }
- return true;
- }
-
- private boolean matches( Exclusion exclusion, Artifact artifact )
- {
- if ( !matches( exclusion.getArtifactId(), artifact.getArtifactId() ) )
- {
- return false;
- }
- if ( !matches( exclusion.getGroupId(), artifact.getGroupId() ) )
- {
- return false;
- }
- if ( !matches( exclusion.getExtension(), artifact.getExtension() ) )
- {
- return false;
- }
- if ( !matches( exclusion.getClassifier(), artifact.getClassifier() ) )
- {
- return false;
- }
- return true;
- }
-
- private boolean matches( String pattern, String value )
- {
- return "*".equals( pattern ) || pattern.equals( value );
- }
-
- public DependencySelector deriveChildSelector( DependencyCollectionContext context )
- {
- Dependency dependency = context.getDependency();
- Collection<Exclusion> exclusions = ( dependency != null ) ? dependency.getExclusions() : null;
- if ( exclusions == null || exclusions.isEmpty() )
- {
- return this;
- }
-
- Exclusion[] merged = this.exclusions;
- int count = merged.length;
- for ( Exclusion exclusion : exclusions )
- {
- int index = Arrays.binarySearch( merged, exclusion, ExclusionComparator.INSTANCE );
- if ( index < 0 )
- {
- index = -( index + 1 );
- if ( count >= merged.length )
- {
- Exclusion[] tmp = new Exclusion[merged.length + exclusions.size()];
- System.arraycopy( merged, 0, tmp, 0, index );
- tmp[index] = exclusion;
- System.arraycopy( merged, index, tmp, index + 1, count - index );
- merged = tmp;
- }
- else
- {
- System.arraycopy( merged, index, merged, index + 1, count - index );
- merged[index] = exclusion;
- }
- count++;
- }
- }
- if ( merged == this.exclusions )
- {
- return this;
- }
- if ( merged.length != count )
- {
- Exclusion[] tmp = new Exclusion[count];
- System.arraycopy( merged, 0, tmp, 0, count );
- merged = tmp;
- }
-
- return new ExclusionDependencySelector( merged );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- ExclusionDependencySelector that = (ExclusionDependencySelector) obj;
- return Arrays.equals( exclusions, that.exclusions );
- }
-
- @Override
- public int hashCode()
- {
- if ( hashCode == 0 )
- {
- int hash = getClass().hashCode();
- hash = hash * 31 + Arrays.hashCode( exclusions );
- hashCode = hash;
- }
- return hashCode;
- }
-
- private static class ExclusionComparator
- implements Comparator<Exclusion>
- {
-
- static final ExclusionComparator INSTANCE = new ExclusionComparator();
-
- public int compare( Exclusion e1, Exclusion e2 )
- {
- if ( e1 == null )
- {
- return ( e2 == null ) ? 0 : 1;
- }
- else if ( e2 == null )
- {
- return -1;
- }
- int rel = e1.getArtifactId().compareTo( e2.getArtifactId() );
- if ( rel == 0 )
- {
- rel = e1.getGroupId().compareTo( e2.getGroupId() );
- if ( rel == 0 )
- {
- rel = e1.getExtension().compareTo( e2.getExtension() );
- if ( rel == 0 )
- {
- rel = e1.getClassifier().compareTo( e2.getClassifier() );
- }
- }
- }
- return rel;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/OptionalDependencySelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/OptionalDependencySelector.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/OptionalDependencySelector.java
deleted file mode 100644
index 69bbda4..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/selector/OptionalDependencySelector.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.eclipse.aether.util.graph.selector;
-
-/*
- * 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.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.graph.Dependency;
-
-/**
- * A dependency selector that excludes optional dependencies which occur beyond level one of the dependency graph.
- *
- * @see Dependency#isOptional()
- */
-public final class OptionalDependencySelector
- implements DependencySelector
-{
-
- private final int depth;
-
- /**
- * Creates a new selector to exclude optional transitive dependencies.
- */
- public OptionalDependencySelector()
- {
- depth = 0;
- }
-
- private OptionalDependencySelector( int depth )
- {
- this.depth = depth;
- }
-
- public boolean selectDependency( Dependency dependency )
- {
- return depth < 2 || !dependency.isOptional();
- }
-
- public DependencySelector deriveChildSelector( DependencyCollectionContext context )
- {
- if ( depth >= 2 )
- {
- return this;
- }
-
- return new OptionalDependencySelector( depth + 1 );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- else if ( null == obj || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- OptionalDependencySelector that = (OptionalDependencySelector) obj;
- return depth == that.depth;
- }
-
- @Override
- public int hashCode()
- {
- int hash = getClass().hashCode();
- hash = hash * 31 + depth;
- return hash;
- }
-
-}
[05/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/RepositorySystem.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/RepositorySystem.java b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositorySystem.java
new file mode 100644
index 0000000..8706f89
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositorySystem.java
@@ -0,0 +1,277 @@
+package org.eclipse.aether;
+
+/*
+ * 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 org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.collection.CollectResult;
+import org.eclipse.aether.collection.DependencyCollectionException;
+import org.eclipse.aether.deployment.DeployRequest;
+import org.eclipse.aether.deployment.DeployResult;
+import org.eclipse.aether.deployment.DeploymentException;
+import org.eclipse.aether.installation.InstallRequest;
+import org.eclipse.aether.installation.InstallResult;
+import org.eclipse.aether.installation.InstallationException;
+import org.eclipse.aether.metadata.Metadata;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.LocalRepositoryManager;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.resolution.ArtifactDescriptorException;
+import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
+import org.eclipse.aether.resolution.ArtifactDescriptorResult;
+import org.eclipse.aether.resolution.ArtifactRequest;
+import org.eclipse.aether.resolution.ArtifactResolutionException;
+import org.eclipse.aether.resolution.ArtifactResult;
+import org.eclipse.aether.resolution.DependencyRequest;
+import org.eclipse.aether.resolution.DependencyResolutionException;
+import org.eclipse.aether.resolution.DependencyResult;
+import org.eclipse.aether.resolution.MetadataRequest;
+import org.eclipse.aether.resolution.MetadataResult;
+import org.eclipse.aether.resolution.VersionRangeRequest;
+import org.eclipse.aether.resolution.VersionRangeResolutionException;
+import org.eclipse.aether.resolution.VersionRangeResult;
+import org.eclipse.aether.resolution.VersionRequest;
+import org.eclipse.aether.resolution.VersionResolutionException;
+import org.eclipse.aether.resolution.VersionResult;
+
+/**
+ * The main entry point to the repository system and its functionality. Note that obtaining a concrete implementation of
+ * this interface (e.g. via dependency injection, service locator, etc.) is dependent on the application and its
+ * specific needs, please consult the online documentation for examples and directions on booting the system.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface RepositorySystem
+{
+
+ /**
+ * Expands a version range to a list of matching versions, in ascending order. For example, resolves "[3.8,4.0)" to
+ * "3.8", "3.8.1", "3.8.2". Note that the returned list of versions is only dependent on the configured repositories
+ * and their contents, the list is not processed by the {@link RepositorySystemSession#getVersionFilter() session's
+ * version filter}.
+ * <p>
+ * The supplied request may also refer to a single concrete version rather than a version range. In this case
+ * though, the result contains simply the (parsed) input version, regardless of the repositories and their contents.
+ *
+ * @param session The repository session, must not be {@code null}.
+ * @param request The version range request, must not be {@code null}.
+ * @return The version range result, never {@code null}.
+ * @throws VersionRangeResolutionException If the requested range could not be parsed. Note that an empty range does
+ * not raise an exception.
+ * @see #newResolutionRepositories(RepositorySystemSession, List)
+ */
+ VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request )
+ throws VersionRangeResolutionException;
+
+ /**
+ * Resolves an artifact's meta version (if any) to a concrete version. For example, resolves "1.0-SNAPSHOT" to
+ * "1.0-20090208.132618-23".
+ *
+ * @param session The repository session, must not be {@code null}.
+ * @param request The version request, must not be {@code null}.
+ * @return The version result, never {@code null}.
+ * @throws VersionResolutionException If the metaversion could not be resolved.
+ * @see #newResolutionRepositories(RepositorySystemSession, List)
+ */
+ VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
+ throws VersionResolutionException;
+
+ /**
+ * Gets information about an artifact like its direct dependencies and potential relocations.
+ *
+ * @param session The repository session, must not be {@code null}.
+ * @param request The descriptor request, must not be {@code null}.
+ * @return The descriptor result, never {@code null}.
+ * @throws ArtifactDescriptorException If the artifact descriptor could not be read.
+ * @see RepositorySystemSession#getArtifactDescriptorPolicy()
+ * @see #newResolutionRepositories(RepositorySystemSession, List)
+ */
+ ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session, ArtifactDescriptorRequest request )
+ throws ArtifactDescriptorException;
+
+ /**
+ * Collects the transitive dependencies of an artifact and builds a dependency graph. Note that this operation is
+ * only concerned about determining the coordinates of the transitive dependencies. To also resolve the actual
+ * artifact files, use {@link #resolveDependencies(RepositorySystemSession, DependencyRequest)}.
+ *
+ * @param session The repository session, must not be {@code null}.
+ * @param request The collection request, must not be {@code null}.
+ * @return The collection result, never {@code null}.
+ * @throws DependencyCollectionException If the dependency tree could not be built.
+ * @see RepositorySystemSession#getDependencyTraverser()
+ * @see RepositorySystemSession#getDependencyManager()
+ * @see RepositorySystemSession#getDependencySelector()
+ * @see RepositorySystemSession#getVersionFilter()
+ * @see RepositorySystemSession#getDependencyGraphTransformer()
+ * @see #newResolutionRepositories(RepositorySystemSession, List)
+ */
+ CollectResult collectDependencies( RepositorySystemSession session, CollectRequest request )
+ throws DependencyCollectionException;
+
+ /**
+ * Collects and resolves the transitive dependencies of an artifact. This operation is essentially a combination of
+ * {@link #collectDependencies(RepositorySystemSession, CollectRequest)} and
+ * {@link #resolveArtifacts(RepositorySystemSession, Collection)}.
+ *
+ * @param session The repository session, must not be {@code null}.
+ * @param request The dependency request, must not be {@code null}.
+ * @return The dependency result, never {@code null}.
+ * @throws DependencyResolutionException If the dependency tree could not be built or any dependency artifact could
+ * not be resolved.
+ * @see #newResolutionRepositories(RepositorySystemSession, List)
+ */
+ DependencyResult resolveDependencies( RepositorySystemSession session, DependencyRequest request )
+ throws DependencyResolutionException;
+
+ /**
+ * Resolves the path for an artifact. The artifact will be downloaded to the local repository if necessary. An
+ * artifact that is already resolved will be skipped and is not re-resolved. In general, callers must not assume any
+ * relationship between an artifact's resolved filename and its coordinates. Note that this method assumes that any
+ * relocations have already been processed.
+ *
+ * @param session The repository session, must not be {@code null}.
+ * @param request The resolution request, must not be {@code null}.
+ * @return The resolution result, never {@code null}.
+ * @throws ArtifactResolutionException If the artifact could not be resolved.
+ * @see Artifact#getFile()
+ * @see #newResolutionRepositories(RepositorySystemSession, List)
+ */
+ ArtifactResult resolveArtifact( RepositorySystemSession session, ArtifactRequest request )
+ throws ArtifactResolutionException;
+
+ /**
+ * Resolves the paths for a collection of artifacts. Artifacts will be downloaded to the local repository if
+ * necessary. Artifacts that are already resolved will be skipped and are not re-resolved. In general, callers must
+ * not assume any relationship between an artifact's filename and its coordinates. Note that this method assumes
+ * that any relocations have already been processed.
+ *
+ * @param session The repository session, must not be {@code null}.
+ * @param requests The resolution requests, must not be {@code null}.
+ * @return The resolution results (in request order), never {@code null}.
+ * @throws ArtifactResolutionException If any artifact could not be resolved.
+ * @see Artifact#getFile()
+ * @see #newResolutionRepositories(RepositorySystemSession, List)
+ */
+ List<ArtifactResult> resolveArtifacts( RepositorySystemSession session,
+ Collection<? extends ArtifactRequest> requests )
+ throws ArtifactResolutionException;
+
+ /**
+ * Resolves the paths for a collection of metadata. Metadata will be downloaded to the local repository if
+ * necessary, e.g. because it hasn't been cached yet or the cache is deemed outdated.
+ *
+ * @param session The repository session, must not be {@code null}.
+ * @param requests The resolution requests, must not be {@code null}.
+ * @return The resolution results (in request order), never {@code null}.
+ * @see Metadata#getFile()
+ * @see #newResolutionRepositories(RepositorySystemSession, List)
+ */
+ List<MetadataResult> resolveMetadata( RepositorySystemSession session,
+ Collection<? extends MetadataRequest> requests );
+
+ /**
+ * Installs a collection of artifacts and their accompanying metadata to the local repository.
+ *
+ * @param session The repository session, must not be {@code null}.
+ * @param request The installation request, must not be {@code null}.
+ * @return The installation result, never {@code null}.
+ * @throws InstallationException If any artifact/metadata from the request could not be installed.
+ */
+ InstallResult install( RepositorySystemSession session, InstallRequest request )
+ throws InstallationException;
+
+ /**
+ * Uploads a collection of artifacts and their accompanying metadata to a remote repository.
+ *
+ * @param session The repository session, must not be {@code null}.
+ * @param request The deployment request, must not be {@code null}.
+ * @return The deployment result, never {@code null}.
+ * @throws DeploymentException If any artifact/metadata from the request could not be deployed.
+ * @see #newDeploymentRepository(RepositorySystemSession, RemoteRepository)
+ */
+ DeployResult deploy( RepositorySystemSession session, DeployRequest request )
+ throws DeploymentException;
+
+ /**
+ * Creates a new manager for the specified local repository. If the specified local repository has no type, the
+ * default local repository type of the system will be used. <em>Note:</em> It is expected that this method
+ * invocation is one of the last steps of setting up a new session, in particular any configuration properties
+ * should have been set already.
+ *
+ * @param session The repository system session from which to configure the manager, must not be {@code null}.
+ * @param localRepository The local repository to create a manager for, must not be {@code null}.
+ * @return The local repository manager, never {@code null}.
+ * @throws IllegalArgumentException If the specified repository type is not recognized or no base directory is
+ * given.
+ */
+ LocalRepositoryManager newLocalRepositoryManager( RepositorySystemSession session, LocalRepository localRepository );
+
+ /**
+ * Creates a new synchronization context.
+ *
+ * @param session The repository session during which the context will be used, must not be {@code null}.
+ * @param shared A flag indicating whether access to the artifacts/metadata associated with the new context can be
+ * shared among concurrent readers or whether access needs to be exclusive to the calling thread.
+ * @return The synchronization context, never {@code null}.
+ */
+ SyncContext newSyncContext( RepositorySystemSession session, boolean shared );
+
+ /**
+ * Forms remote repositories suitable for artifact resolution by applying the session's authentication selector and
+ * similar network configuration to the given repository prototypes. As noted for
+ * {@link RepositorySystemSession#getAuthenticationSelector()} etc. the remote repositories passed to e.g.
+ * {@link #resolveArtifact(RepositorySystemSession, ArtifactRequest) resolveArtifact()} are used as is and expected
+ * to already carry any required authentication or proxy configuration. This method can be used to apply the
+ * authentication/proxy configuration from a session to a bare repository definition to obtain the complete
+ * repository definition for use in the resolution request.
+ *
+ * @param session The repository system session from which to configure the repositories, must not be {@code null}.
+ * @param repositories The repository prototypes from which to derive the resolution repositories, must not be
+ * {@code null} or contain {@code null} elements.
+ * @return The resolution repositories, never {@code null}. Note that there is generally no 1:1 relationship of the
+ * obtained repositories to the original inputs due to mirror selection potentially aggregating multiple
+ * repositories.
+ * @see #newDeploymentRepository(RepositorySystemSession, RemoteRepository)
+ */
+ List<RemoteRepository> newResolutionRepositories( RepositorySystemSession session,
+ List<RemoteRepository> repositories );
+
+ /**
+ * Forms a remote repository suitable for artifact deployment by applying the session's authentication selector and
+ * similar network configuration to the given repository prototype. As noted for
+ * {@link RepositorySystemSession#getAuthenticationSelector()} etc. the remote repository passed to
+ * {@link #deploy(RepositorySystemSession, DeployRequest) deploy()} is used as is and expected to already carry any
+ * required authentication or proxy configuration. This method can be used to apply the authentication/proxy
+ * configuration from a session to a bare repository definition to obtain the complete repository definition for use
+ * in the deploy request.
+ *
+ * @param session The repository system session from which to configure the repository, must not be {@code null}.
+ * @param repository The repository prototype from which to derive the deployment repository, must not be
+ * {@code null}.
+ * @return The deployment repository, never {@code null}.
+ * @see #newResolutionRepositories(RepositorySystemSession, List)
+ */
+ RemoteRepository newDeploymentRepository( RepositorySystemSession session, RemoteRepository repository );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/RepositorySystemSession.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/RepositorySystemSession.java b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositorySystemSession.java
new file mode 100644
index 0000000..888f29c
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/RepositorySystemSession.java
@@ -0,0 +1,263 @@
+package org.eclipse.aether;
+
+/*
+ * 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;
+
+import org.eclipse.aether.artifact.ArtifactTypeRegistry;
+import org.eclipse.aether.collection.DependencyGraphTransformer;
+import org.eclipse.aether.collection.DependencyManager;
+import org.eclipse.aether.collection.DependencySelector;
+import org.eclipse.aether.collection.DependencyTraverser;
+import org.eclipse.aether.collection.VersionFilter;
+import org.eclipse.aether.repository.AuthenticationSelector;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.LocalRepositoryManager;
+import org.eclipse.aether.repository.MirrorSelector;
+import org.eclipse.aether.repository.ProxySelector;
+import org.eclipse.aether.repository.RepositoryPolicy;
+import org.eclipse.aether.repository.WorkspaceReader;
+import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
+import org.eclipse.aether.resolution.ResolutionErrorPolicy;
+import org.eclipse.aether.transfer.TransferListener;
+
+/**
+ * Defines settings and components that control the repository system. Once initialized, the session object itself is
+ * supposed to be immutable and hence can safely be shared across an entire application and any concurrent threads
+ * reading it. Components that wish to tweak some aspects of an existing session should use the copy constructor of
+ * {@link DefaultRepositorySystemSession} and its mutators to derive a custom session.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface RepositorySystemSession
+{
+
+ /**
+ * Indicates whether the repository system operates in offline mode and avoids/refuses any access to remote
+ * repositories.
+ *
+ * @return {@code true} if the repository system is in offline mode, {@code false} otherwise.
+ */
+ boolean isOffline();
+
+ /**
+ * Indicates whether repositories declared in artifact descriptors should be ignored during transitive dependency
+ * collection. If enabled, only the repositories originally provided with the collect request will be considered.
+ *
+ * @return {@code true} if additional repositories from artifact descriptors are ignored, {@code false} to merge
+ * those with the originally specified repositories.
+ */
+ boolean isIgnoreArtifactDescriptorRepositories();
+
+ /**
+ * Gets the policy which controls whether resolutions errors from remote repositories should be cached.
+ *
+ * @return The resolution error policy for this session or {@code null} if resolution errors should generally not be
+ * cached.
+ */
+ ResolutionErrorPolicy getResolutionErrorPolicy();
+
+ /**
+ * Gets the policy which controls how errors related to reading artifact descriptors should be handled.
+ *
+ * @return The descriptor error policy for this session or {@code null} if descriptor errors should generally not be
+ * tolerated.
+ */
+ ArtifactDescriptorPolicy getArtifactDescriptorPolicy();
+
+ /**
+ * Gets the global checksum policy. If set, the global checksum policy overrides the checksum policies of the remote
+ * repositories being used for resolution.
+ *
+ * @return The global checksum policy or {@code null}/empty if not set and the per-repository policies apply.
+ * @see RepositoryPolicy#CHECKSUM_POLICY_FAIL
+ * @see RepositoryPolicy#CHECKSUM_POLICY_IGNORE
+ * @see RepositoryPolicy#CHECKSUM_POLICY_WARN
+ */
+ String getChecksumPolicy();
+
+ /**
+ * Gets the global update policy. If set, the global update policy overrides the update policies of the remote
+ * repositories being used for resolution.
+ *
+ * @return The global update policy or {@code null}/empty if not set and the per-repository policies apply.
+ * @see RepositoryPolicy#UPDATE_POLICY_ALWAYS
+ * @see RepositoryPolicy#UPDATE_POLICY_DAILY
+ * @see RepositoryPolicy#UPDATE_POLICY_NEVER
+ */
+ String getUpdatePolicy();
+
+ /**
+ * Gets the local repository used during this session. This is a convenience method for
+ * {@link LocalRepositoryManager#getRepository()}.
+ *
+ * @return The local repository being during this session, never {@code null}.
+ */
+ LocalRepository getLocalRepository();
+
+ /**
+ * Gets the local repository manager used during this session.
+ *
+ * @return The local repository manager used during this session, never {@code null}.
+ */
+ LocalRepositoryManager getLocalRepositoryManager();
+
+ /**
+ * Gets the workspace reader used during this session. If set, the workspace reader will usually be consulted first
+ * to resolve artifacts.
+ *
+ * @return The workspace reader for this session or {@code null} if none.
+ */
+ WorkspaceReader getWorkspaceReader();
+
+ /**
+ * Gets the listener being notified of actions in the repository system.
+ *
+ * @return The repository listener or {@code null} if none.
+ */
+ RepositoryListener getRepositoryListener();
+
+ /**
+ * Gets the listener being notified of uploads/downloads by the repository system.
+ *
+ * @return The transfer listener or {@code null} if none.
+ */
+ TransferListener getTransferListener();
+
+ /**
+ * Gets the system properties to use, e.g. for processing of artifact descriptors. System properties are usually
+ * collected from the runtime environment like {@link System#getProperties()} and environment variables.
+ *
+ * @return The (read-only) system properties, never {@code null}.
+ */
+ Map<String, String> getSystemProperties();
+
+ /**
+ * Gets the user properties to use, e.g. for processing of artifact descriptors. User properties are similar to
+ * system properties but are set on the discretion of the user and hence are considered of higher priority than
+ * system properties.
+ *
+ * @return The (read-only) user properties, never {@code null}.
+ */
+ Map<String, String> getUserProperties();
+
+ /**
+ * Gets the configuration properties used to tweak internal aspects of the repository system (e.g. thread pooling,
+ * connector-specific behavior, etc.)
+ *
+ * @return The (read-only) configuration properties, never {@code null}.
+ * @see ConfigurationProperties
+ */
+ Map<String, Object> getConfigProperties();
+
+ /**
+ * Gets the mirror selector to use for repositories discovered in artifact descriptors. Note that this selector is
+ * not used for remote repositories which are passed as request parameters to the repository system, those
+ * repositories are supposed to denote the effective repositories.
+ *
+ * @return The mirror selector to use, never {@code null}.
+ * @see RepositorySystem#newResolutionRepositories(RepositorySystemSession, java.util.List)
+ */
+ MirrorSelector getMirrorSelector();
+
+ /**
+ * Gets the proxy selector to use for repositories discovered in artifact descriptors. Note that this selector is
+ * not used for remote repositories which are passed as request parameters to the repository system, those
+ * repositories are supposed to have their proxy (if any) already set.
+ *
+ * @return The proxy selector to use, never {@code null}.
+ * @see org.eclipse.aether.repository.RemoteRepository#getProxy()
+ * @see RepositorySystem#newResolutionRepositories(RepositorySystemSession, java.util.List)
+ */
+ ProxySelector getProxySelector();
+
+ /**
+ * Gets the authentication selector to use for repositories discovered in artifact descriptors. Note that this
+ * selector is not used for remote repositories which are passed as request parameters to the repository system,
+ * those repositories are supposed to have their authentication (if any) already set.
+ *
+ * @return The authentication selector to use, never {@code null}.
+ * @see org.eclipse.aether.repository.RemoteRepository#getAuthentication()
+ * @see RepositorySystem#newResolutionRepositories(RepositorySystemSession, java.util.List)
+ */
+ AuthenticationSelector getAuthenticationSelector();
+
+ /**
+ * Gets the registry of artifact types recognized by this session, for instance when processing artifact
+ * descriptors.
+ *
+ * @return The artifact type registry, never {@code null}.
+ */
+ ArtifactTypeRegistry getArtifactTypeRegistry();
+
+ /**
+ * Gets the dependency traverser to use for building dependency graphs.
+ *
+ * @return The dependency traverser to use for building dependency graphs or {@code null} if dependencies are
+ * unconditionally traversed.
+ */
+ DependencyTraverser getDependencyTraverser();
+
+ /**
+ * Gets the dependency manager to use for building dependency graphs.
+ *
+ * @return The dependency manager to use for building dependency graphs or {@code null} if dependency management is
+ * not performed.
+ */
+ DependencyManager getDependencyManager();
+
+ /**
+ * Gets the dependency selector to use for building dependency graphs.
+ *
+ * @return The dependency selector to use for building dependency graphs or {@code null} if dependencies are
+ * unconditionally included.
+ */
+ DependencySelector getDependencySelector();
+
+ /**
+ * Gets the version filter to use for building dependency graphs.
+ *
+ * @return The version filter to use for building dependency graphs or {@code null} if versions aren't filtered.
+ */
+ VersionFilter getVersionFilter();
+
+ /**
+ * Gets the dependency graph transformer to use for building dependency graphs.
+ *
+ * @return The dependency graph transformer to use for building dependency graphs or {@code null} if none.
+ */
+ DependencyGraphTransformer getDependencyGraphTransformer();
+
+ /**
+ * Gets the custom data associated with this session.
+ *
+ * @return The session data, never {@code null}.
+ */
+ SessionData getData();
+
+ /**
+ * Gets the cache the repository system may use to save data for future reuse during the session.
+ *
+ * @return The repository cache or {@code null} if none.
+ */
+ RepositoryCache getCache();
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/RequestTrace.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/RequestTrace.java b/maven-resolver-api/src/main/java/org/eclipse/aether/RequestTrace.java
new file mode 100644
index 0000000..86aaa78
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/RequestTrace.java
@@ -0,0 +1,117 @@
+package org.eclipse.aether;
+
+/*
+ * 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 trace of nested requests that are performed by the repository system. This trace information can be used to
+ * correlate repository events with higher level operations in the application code that eventually caused the events. A
+ * single trace can carry an arbitrary object as data which is meant to describe a request/operation that is currently
+ * executed. For call hierarchies within the repository system itself, this data will usually be the {@code *Request}
+ * object that is currently processed. When invoking methods on the repository system, client code may provide a request
+ * trace that has been prepopulated with whatever data is useful for the application to indicate its state for later
+ * evaluation when processing the repository events.
+ *
+ * @see RepositoryEvent#getTrace()
+ */
+public class RequestTrace
+{
+
+ private final RequestTrace parent;
+
+ private final Object data;
+
+ /**
+ * Creates a child of the specified request trace. This method is basically a convenience that will invoke
+ * {@link RequestTrace#newChild(Object) parent.newChild()} when the specified parent trace is not {@code null} or
+ * otherwise instantiante a new root trace.
+ *
+ * @param parent The parent request trace, may be {@code null}.
+ * @param data The data to associate with the child trace, may be {@code null}.
+ * @return The child trace, never {@code null}.
+ */
+ public static RequestTrace newChild( RequestTrace parent, Object data )
+ {
+ if ( parent == null )
+ {
+ return new RequestTrace( data );
+ }
+ return parent.newChild( data );
+ }
+
+ /**
+ * Creates a new root trace with the specified data.
+ *
+ * @param data The data to associate with the trace, may be {@code null}.
+ */
+ public RequestTrace( Object data )
+ {
+ this( null, data );
+ }
+
+ /**
+ * Creates a new trace with the specified data and parent
+ *
+ * @param parent The parent trace, may be {@code null} for a root trace.
+ * @param data The data to associate with the trace, may be {@code null}.
+ */
+ protected RequestTrace( RequestTrace parent, Object data )
+ {
+ this.parent = parent;
+ this.data = data;
+ }
+
+ /**
+ * Gets the data associated with this trace.
+ *
+ * @return The data associated with this trace or {@code null} if none.
+ */
+ public final Object getData()
+ {
+ return data;
+ }
+
+ /**
+ * Gets the parent of this trace.
+ *
+ * @return The parent of this trace or {@code null} if this is the root of the trace stack.
+ */
+ public final RequestTrace getParent()
+ {
+ return parent;
+ }
+
+ /**
+ * Creates a new child of this trace.
+ *
+ * @param data The data to associate with the child, may be {@code null}.
+ * @return The child trace, never {@code null}.
+ */
+ public RequestTrace newChild( Object data )
+ {
+ return new RequestTrace( this, data );
+ }
+
+ @Override
+ public String toString()
+ {
+ return String.valueOf( getData() );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/SessionData.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/SessionData.java b/maven-resolver-api/src/main/java/org/eclipse/aether/SessionData.java
new file mode 100644
index 0000000..b6efeac
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/SessionData.java
@@ -0,0 +1,66 @@
+package org.eclipse.aether;
+
+/*
+ * 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 container for data that is specific to a repository system session. Both components within the repository system
+ * and clients of the system may use this storage to associate arbitrary data with a session.
+ * <p>
+ * Unlike a cache, this session data is not subject to purging. For this same reason, session data should also not be
+ * abused as a cache (i.e. for storing values that can be re-calculated) to avoid memory exhaustion.
+ * <p>
+ * <strong>Note:</strong> Actual implementations must be thread-safe.
+ *
+ * @see RepositorySystemSession#getData()
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface SessionData
+{
+
+ /**
+ * Associates the specified session data with the given key.
+ *
+ * @param key The key under which to store the session data, must not be {@code null}.
+ * @param value The data to associate with the key, may be {@code null} to remove the mapping.
+ */
+ void set( Object key, Object value );
+
+ /**
+ * Associates the specified session data with the given key if the key is currently mapped to the given value. This
+ * method provides an atomic compare-and-update of some key's value.
+ *
+ * @param key The key under which to store the session data, must not be {@code null}.
+ * @param oldValue The expected data currently associated with the key, may be {@code null}.
+ * @param newValue The data to associate with the key, may be {@code null} to remove the mapping.
+ * @return {@code true} if the key mapping was successfully updated from the old value to the new value,
+ * {@code false} if the current key mapping didn't match the expected value and was not updated.
+ */
+ boolean set( Object key, Object oldValue, Object newValue );
+
+ /**
+ * Gets the session data associated with the specified key.
+ *
+ * @param key The key for which to retrieve the session data, must not be {@code null}.
+ * @return The session data associated with the key or {@code null} if none.
+ */
+ Object get( Object key );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/SyncContext.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/SyncContext.java b/maven-resolver-api/src/main/java/org/eclipse/aether/SyncContext.java
new file mode 100644
index 0000000..2d751c0
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/SyncContext.java
@@ -0,0 +1,76 @@
+package org.eclipse.aether;
+
+/*
+ * 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.Closeable;
+import java.util.Collection;
+
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.metadata.Metadata;
+
+/**
+ * A synchronization context used to coordinate concurrent access to artifacts or metadatas. The typical usage of a
+ * synchronization context looks like this:
+ *
+ * <pre>
+ * SyncContext syncContext = repositorySystem.newSyncContext( ... );
+ * try {
+ * syncContext.acquire( artifacts, metadatas );
+ * // work with the artifacts and metadatas
+ * } finally {
+ * syncContext.close();
+ * }
+ * </pre>
+ *
+ * Within one thread, synchronization contexts may be nested which can naturally happen in a hierarchy of method calls.
+ * The nested synchronization contexts may also acquire overlapping sets of artifacts/metadatas as long as the following
+ * conditions are met. If the outer-most context holding a particular resource is exclusive, that resource can be
+ * reacquired in any nested context. If however the outer-most context is shared, the resource may only be reacquired by
+ * nested contexts if these are also shared.
+ * <p>
+ * A synchronization context is meant to be utilized by only one thread and as such is not thread-safe.
+ * <p>
+ * Note that the level of actual synchronization is subject to the implementation and might range from OS-wide to none.
+ *
+ * @see RepositorySystem#newSyncContext(RepositorySystemSession, boolean)
+ */
+public interface SyncContext
+ extends Closeable
+{
+
+ /**
+ * Acquires synchronized access to the specified artifacts and metadatas. The invocation will potentially block
+ * until all requested resources can be acquired by the calling thread. Acquiring resources that are already
+ * acquired by this synchronization context has no effect. Please also see the class-level documentation for
+ * information regarding reentrancy. The method may be invoked multiple times on a synchronization context until all
+ * desired resources have been acquired.
+ *
+ * @param artifacts The artifacts to acquire, may be {@code null} or empty if none.
+ * @param metadatas The metadatas to acquire, may be {@code null} or empty if none.
+ */
+ void acquire( Collection<? extends Artifact> artifacts, Collection<? extends Metadata> metadatas );
+
+ /**
+ * Releases all previously acquired artifacts/metadatas. If no resources have been acquired before or if this
+ * synchronization context has already been closed, this method does nothing.
+ */
+ void close();
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/AbstractArtifact.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/AbstractArtifact.java b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/AbstractArtifact.java
new file mode 100644
index 0000000..d89260b
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/AbstractArtifact.java
@@ -0,0 +1,230 @@
+package org.eclipse.aether.artifact;
+
+/*
+ * 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;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * A skeleton class for artifacts.
+ */
+public abstract class AbstractArtifact
+ implements Artifact
+{
+
+ private static final String SNAPSHOT = "SNAPSHOT";
+
+ private static final Pattern SNAPSHOT_TIMESTAMP = Pattern.compile( "^(.*-)?([0-9]{8}\\.[0-9]{6}-[0-9]+)$" );
+
+ public boolean isSnapshot()
+ {
+ return isSnapshot( getVersion() );
+ }
+
+ private static boolean isSnapshot( String version )
+ {
+ return version.endsWith( SNAPSHOT ) || SNAPSHOT_TIMESTAMP.matcher( version ).matches();
+ }
+
+ public String getBaseVersion()
+ {
+ return toBaseVersion( getVersion() );
+ }
+
+ private static String toBaseVersion( String version )
+ {
+ String baseVersion;
+
+ if ( version == null )
+ {
+ baseVersion = version;
+ }
+ else if ( version.startsWith( "[" ) || version.startsWith( "(" ) )
+ {
+ baseVersion = version;
+ }
+ else
+ {
+ Matcher m = SNAPSHOT_TIMESTAMP.matcher( version );
+ if ( m.matches() )
+ {
+ if ( m.group( 1 ) != null )
+ {
+ baseVersion = m.group( 1 ) + SNAPSHOT;
+ }
+ else
+ {
+ baseVersion = SNAPSHOT;
+ }
+ }
+ else
+ {
+ baseVersion = version;
+ }
+ }
+
+ return baseVersion;
+ }
+
+ /**
+ * Creates a new artifact with the specified coordinates, properties and file.
+ *
+ * @param version The version of the artifact, may be {@code null}.
+ * @param properties The properties of the artifact, may be {@code null} if none. The method may assume immutability
+ * of the supplied map, i.e. need not copy it.
+ * @param file The resolved file of the artifact, may be {@code null}.
+ * @return The new artifact instance, never {@code null}.
+ */
+ private Artifact newInstance( String version, Map<String, String> properties, File file )
+ {
+ return new DefaultArtifact( getGroupId(), getArtifactId(), getClassifier(), getExtension(), version, file,
+ properties );
+ }
+
+ public Artifact setVersion( String version )
+ {
+ String current = getVersion();
+ if ( current.equals( version ) || ( version == null && current.length() <= 0 ) )
+ {
+ return this;
+ }
+ return newInstance( version, getProperties(), getFile() );
+ }
+
+ public Artifact setFile( File file )
+ {
+ File current = getFile();
+ if ( ( current == null ) ? file == null : current.equals( file ) )
+ {
+ return this;
+ }
+ return newInstance( getVersion(), getProperties(), file );
+ }
+
+ public Artifact setProperties( Map<String, String> properties )
+ {
+ Map<String, String> current = getProperties();
+ if ( current.equals( properties ) || ( properties == null && current.isEmpty() ) )
+ {
+ return this;
+ }
+ return newInstance( getVersion(), copyProperties( properties ), getFile() );
+ }
+
+ public String getProperty( String key, String defaultValue )
+ {
+ String value = getProperties().get( key );
+ return ( value != null ) ? value : defaultValue;
+ }
+
+ /**
+ * Copies the specified artifact properties. This utility method should be used when creating new artifact 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 );
+ buffer.append( getGroupId() );
+ buffer.append( ':' ).append( getArtifactId() );
+ buffer.append( ':' ).append( getExtension() );
+ if ( getClassifier().length() > 0 )
+ {
+ buffer.append( ':' ).append( getClassifier() );
+ }
+ buffer.append( ':' ).append( getVersion() );
+ return buffer.toString();
+ }
+
+ /**
+ * Compares this artifact with the specified object.
+ *
+ * @param obj The object to compare this artifact against, may be {@code null}.
+ * @return {@code true} if and only if the specified object is another {@link Artifact} with equal coordinates,
+ * properties and file, {@code false} otherwise.
+ */
+ @Override
+ public boolean equals( Object obj )
+ {
+ if ( obj == this )
+ {
+ return true;
+ }
+ else if ( !( obj instanceof Artifact ) )
+ {
+ return false;
+ }
+
+ Artifact that = (Artifact) obj;
+
+ return getArtifactId().equals( that.getArtifactId() ) && getGroupId().equals( that.getGroupId() )
+ && getVersion().equals( that.getVersion() ) && getExtension().equals( that.getExtension() )
+ && getClassifier().equals( that.getClassifier() ) && eq( getFile(), that.getFile() )
+ && getProperties().equals( 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 artifact.
+ *
+ * @return A hash code for the artifact.
+ */
+ @Override
+ public int hashCode()
+ {
+ int hash = 17;
+ hash = hash * 31 + getGroupId().hashCode();
+ hash = hash * 31 + getArtifactId().hashCode();
+ hash = hash * 31 + getExtension().hashCode();
+ hash = hash * 31 + getClassifier().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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/Artifact.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/Artifact.java b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/Artifact.java
new file mode 100644
index 0000000..6323243
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/Artifact.java
@@ -0,0 +1,143 @@
+package org.eclipse.aether.artifact;
+
+/*
+ * 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 specific artifact. In a nutshell, an artifact has identifying coordinates and optionally a file that denotes its
+ * data. <em>Note:</em> Artifact instances are supposed to be immutable, e.g. any exposed mutator method returns a new
+ * artifact instance and leaves the original instance unchanged. <em>Note:</em> Implementors are strongly advised to
+ * inherit from {@link AbstractArtifact} 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 Artifact
+{
+
+ /**
+ * Gets the group identifier of this artifact, for example "org.apache.maven".
+ *
+ * @return The group identifier, never {@code null}.
+ */
+ String getGroupId();
+
+ /**
+ * Gets the artifact identifier of this artifact, for example "maven-model".
+ *
+ * @return The artifact identifier, never {@code null}.
+ */
+ String getArtifactId();
+
+ /**
+ * Gets the version of this artifact, for example "1.0-20100529-1213". Note that in case of meta versions like
+ * "1.0-SNAPSHOT", the artifact's version depends on the state of the artifact. Artifacts that have been resolved or
+ * deployed will usually have the meta version expanded.
+ *
+ * @return The version, never {@code null}.
+ */
+ String getVersion();
+
+ /**
+ * Sets the version of the artifact.
+ *
+ * @param version The version of this artifact, may be {@code null} or empty.
+ * @return The new artifact, never {@code null}.
+ */
+ Artifact setVersion( String version );
+
+ /**
+ * Gets the base version of this artifact, for example "1.0-SNAPSHOT". In contrast to the {@link #getVersion()}, the
+ * base version will always refer to the unresolved meta version.
+ *
+ * @return The base version, never {@code null}.
+ */
+ String getBaseVersion();
+
+ /**
+ * Determines whether this artifact uses a snapshot version.
+ *
+ * @return {@code true} if the artifact is a snapshot, {@code false} otherwise.
+ */
+ boolean isSnapshot();
+
+ /**
+ * Gets the classifier of this artifact, for example "sources".
+ *
+ * @return The classifier or an empty string if none, never {@code null}.
+ */
+ String getClassifier();
+
+ /**
+ * Gets the (file) extension of this artifact, for example "jar" or "tar.gz".
+ *
+ * @return The file extension (without leading period), never {@code null}.
+ */
+ String getExtension();
+
+ /**
+ * Gets the file of this artifact. Note that only resolved artifacts have a file associated with them. In general,
+ * callers must not assume any relationship between an artifact's filename and its coordinates.
+ *
+ * @return The file or {@code null} if the artifact isn't resolved.
+ */
+ File getFile();
+
+ /**
+ * Sets the file of the artifact.
+ *
+ * @param file The file of the artifact, may be {@code null}
+ * @return The new artifact, never {@code null}.
+ */
+ Artifact 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.
+ * @see ArtifactProperties
+ */
+ String getProperty( String key, String defaultValue );
+
+ /**
+ * Gets the properties of this artifact. Clients may use these properties to associate non-persistent values with an
+ * artifact that help later processing when the artifact gets passed around within the application.
+ *
+ * @return The (read-only) properties, never {@code null}.
+ * @see ArtifactProperties
+ */
+ Map<String, String> getProperties();
+
+ /**
+ * Sets the properties for the artifact. Note that these properties exist merely in memory and are not persisted
+ * when the artifact gets installed/deployed to a repository.
+ *
+ * @param properties The properties for the artifact, may be {@code null}.
+ * @return The new artifact, never {@code null}.
+ * @see ArtifactProperties
+ */
+ Artifact setProperties( Map<String, String> properties );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java
new file mode 100644
index 0000000..1108086
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java
@@ -0,0 +1,74 @@
+package org.eclipse.aether.artifact;
+
+/*
+ * 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 keys for common properties of artifacts.
+ *
+ * @see Artifact#getProperties()
+ */
+public final class ArtifactProperties
+{
+
+ /**
+ * A high-level characterization of the artifact, e.g. "maven-plugin" or "test-jar".
+ *
+ * @see ArtifactType#getId()
+ */
+ public static final String TYPE = "type";
+
+ /**
+ * The programming language this artifact is relevant for, e.g. "java" or "none".
+ */
+ public static final String LANGUAGE = "language";
+
+ /**
+ * The (expected) path to the artifact on the local filesystem. An artifact which has this property set is assumed
+ * to be not present in any regular repository and likewise has no artifact descriptor. Artifact resolution will
+ * verify the path and resolve the artifact if the path actually denotes an existing file. If the path isn't valid,
+ * resolution will fail and no attempts to search local/remote repositories are made.
+ */
+ public static final String LOCAL_PATH = "localPath";
+
+ /**
+ * A boolean flag indicating whether the artifact presents some kind of bundle that physically includes its
+ * dependencies, e.g. a fat WAR.
+ */
+ public static final String INCLUDES_DEPENDENCIES = "includesDependencies";
+
+ /**
+ * A boolean flag indicating whether the artifact is meant to be used for the compile/runtime/test build path of a
+ * consumer project.
+ */
+ public static final String CONSTITUTES_BUILD_PATH = "constitutesBuildPath";
+
+ /**
+ * The URL to a web page from which the artifact can be manually downloaded. This URL is not contacted by the
+ * repository system but serves as a pointer for the end user to assist in getting artifacts that are not published
+ * in a proper repository.
+ */
+ public static final String DOWNLOAD_URL = "downloadUrl";
+
+ private ArtifactProperties()
+ {
+ // hide constructor
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactType.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactType.java b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactType.java
new file mode 100644
index 0000000..5f87217
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactType.java
@@ -0,0 +1,67 @@
+package org.eclipse.aether.artifact;
+
+/*
+ * 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;
+
+/**
+ * An artifact type describing artifact characteristics/properties that are common for certain artifacts. Artifact types
+ * are a means to simplify the description of an artifact by referring to an artifact type instead of specifying the
+ * various properties individually.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ * @see ArtifactTypeRegistry
+ * @see DefaultArtifact#DefaultArtifact(String, String, String, String, String, ArtifactType)
+ */
+public interface ArtifactType
+{
+
+ /**
+ * Gets the identifier of this type, e.g. "maven-plugin" or "test-jar".
+ *
+ * @return The identifier of this type, never {@code null}.
+ * @see ArtifactProperties#TYPE
+ */
+ String getId();
+
+ /**
+ * Gets the file extension to use for artifacts of this type (unless explicitly overridden by the artifact).
+ *
+ * @return The usual file extension, never {@code null}.
+ */
+ String getExtension();
+
+ /**
+ * Gets the classifier to use for artifacts of this type (unless explicitly overridden by the artifact).
+ *
+ * @return The usual classifier or an empty string if none, never {@code null}.
+ */
+ String getClassifier();
+
+ /**
+ * Gets the properties to use for artifacts of this type (unless explicitly overridden by the artifact).
+ *
+ * @return The (read-only) properties, never {@code null}.
+ * @see ArtifactProperties
+ */
+ Map<String, String> getProperties();
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactTypeRegistry.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactTypeRegistry.java b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactTypeRegistry.java
new file mode 100644
index 0000000..f379173
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactTypeRegistry.java
@@ -0,0 +1,38 @@
+package org.eclipse.aether.artifact;
+
+/*
+ * 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 registry of known artifact types.
+ *
+ * @see org.eclipse.aether.RepositorySystemSession#getArtifactTypeRegistry()
+ */
+public interface ArtifactTypeRegistry
+{
+
+ /**
+ * Gets the artifact type with the specified identifier.
+ *
+ * @param typeId The identifier of the type, must not be {@code null}.
+ * @return The artifact type or {@code null} if no type with the requested identifier exists.
+ */
+ ArtifactType get( String typeId );
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java
new file mode 100644
index 0000000..786af74
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java
@@ -0,0 +1,285 @@
+package org.eclipse.aether.artifact;
+
+/*
+ * 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;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * A simple 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 DefaultArtifact
+ extends AbstractArtifact
+{
+
+ private final String groupId;
+
+ private final String artifactId;
+
+ private final String version;
+
+ private final String classifier;
+
+ private final String extension;
+
+ private final File file;
+
+ private final Map<String, String> properties;
+
+ /**
+ * Creates a new artifact with the specified coordinates. If not specified in the artifact coordinates, the
+ * artifact's extension defaults to {@code jar} and classifier to an empty string.
+ *
+ * @param coords The artifact coordinates in the format
+ * {@code <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>}, must not be {@code null}.
+ */
+ public DefaultArtifact( String coords )
+ {
+ this( coords, Collections.<String, String>emptyMap() );
+ }
+
+ /**
+ * Creates a new artifact with the specified coordinates and properties. If not specified in the artifact
+ * coordinates, the artifact's extension defaults to {@code jar} and classifier to an empty string.
+ *
+ * @param coords The artifact coordinates in the format
+ * {@code <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>}, must not be {@code null}.
+ * @param properties The artifact properties, may be {@code null}.
+ */
+ public DefaultArtifact( String coords, Map<String, String> properties )
+ {
+ Pattern p = Pattern.compile( "([^: ]+):([^: ]+)(:([^: ]*)(:([^: ]+))?)?:([^: ]+)" );
+ Matcher m = p.matcher( coords );
+ if ( !m.matches() )
+ {
+ throw new IllegalArgumentException( "Bad artifact coordinates " + coords
+ + ", expected format is <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>" );
+ }
+ groupId = m.group( 1 );
+ artifactId = m.group( 2 );
+ extension = get( m.group( 4 ), "jar" );
+ classifier = get( m.group( 6 ), "" );
+ version = m.group( 7 );
+ file = null;
+ this.properties = copyProperties( properties );
+ }
+
+ private static String get( String value, String defaultValue )
+ {
+ return ( value == null || value.length() <= 0 ) ? defaultValue : value;
+ }
+
+ /**
+ * Creates a new artifact with the specified coordinates and no classifier. Passing {@code null} for any of the
+ * coordinates is equivalent to specifying an empty string.
+ *
+ * @param groupId The group identifier of the artifact, may be {@code null}.
+ * @param artifactId The artifact identifier of the artifact, may be {@code null}.
+ * @param extension The file extension of the artifact, may be {@code null}.
+ * @param version The version of the artifact, may be {@code null}.
+ */
+ public DefaultArtifact( String groupId, String artifactId, String extension, String version )
+ {
+ this( groupId, artifactId, "", extension, version );
+ }
+
+ /**
+ * Creates a new artifact with the specified coordinates. Passing {@code null} for any of the coordinates is
+ * equivalent to specifying an empty string.
+ *
+ * @param groupId The group identifier of the artifact, may be {@code null}.
+ * @param artifactId The artifact identifier of the artifact, may be {@code null}.
+ * @param classifier The classifier of the artifact, may be {@code null}.
+ * @param extension The file extension of the artifact, may be {@code null}.
+ * @param version The version of the artifact, may be {@code null}.
+ */
+ public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version )
+ {
+ this( groupId, artifactId, classifier, extension, version, null, (File) null );
+ }
+
+ /**
+ * Creates a new artifact with the specified coordinates. Passing {@code null} for any of the coordinates is
+ * equivalent to specifying an empty string. The optional artifact type provided to this constructor will be used to
+ * determine the artifact's classifier and file extension if the corresponding arguments for this constructor are
+ * {@code null}.
+ *
+ * @param groupId The group identifier of the artifact, may be {@code null}.
+ * @param artifactId The artifact identifier of the artifact, may be {@code null}.
+ * @param classifier The classifier of the artifact, may be {@code null}.
+ * @param extension The file extension of the artifact, may be {@code null}.
+ * @param version The version of the artifact, may be {@code null}.
+ * @param type The artifact type from which to query classifier, file extension and properties, may be {@code null}.
+ */
+ public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version,
+ ArtifactType type )
+ {
+ this( groupId, artifactId, classifier, extension, version, null, type );
+ }
+
+ /**
+ * Creates a new artifact with the specified coordinates and properties. Passing {@code null} for any of the
+ * coordinates is equivalent to specifying an empty string. The optional artifact type provided to this constructor
+ * will be used to determine the artifact's classifier and file extension if the corresponding arguments for this
+ * constructor are {@code null}. If the artifact type specifies properties, those will get merged with the
+ * properties passed directly into the constructor, with the latter properties taking precedence.
+ *
+ * @param groupId The group identifier of the artifact, may be {@code null}.
+ * @param artifactId The artifact identifier of the artifact, may be {@code null}.
+ * @param classifier The classifier of the artifact, may be {@code null}.
+ * @param extension The file extension of the artifact, may be {@code null}.
+ * @param version The version of the artifact, may be {@code null}.
+ * @param properties The properties of the artifact, may be {@code null} if none.
+ * @param type The artifact type from which to query classifier, file extension and properties, may be {@code null}.
+ */
+ public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version,
+ Map<String, String> properties, ArtifactType type )
+ {
+ this.groupId = emptify( groupId );
+ this.artifactId = emptify( artifactId );
+ if ( classifier != null || type == null )
+ {
+ this.classifier = emptify( classifier );
+ }
+ else
+ {
+ this.classifier = emptify( type.getClassifier() );
+ }
+ if ( extension != null || type == null )
+ {
+ this.extension = emptify( extension );
+ }
+ else
+ {
+ this.extension = emptify( type.getExtension() );
+ }
+ this.version = emptify( version );
+ this.file = null;
+ this.properties = merge( properties, ( type != null ) ? type.getProperties() : null );
+ }
+
+ private static Map<String, String> merge( Map<String, String> dominant, Map<String, String> recessive )
+ {
+ Map<String, String> properties;
+
+ if ( ( dominant == null || dominant.isEmpty() ) && ( recessive == null || recessive.isEmpty() ) )
+ {
+ properties = Collections.emptyMap();
+ }
+ else
+ {
+ properties = new HashMap<String, String>();
+ if ( recessive != null )
+ {
+ properties.putAll( recessive );
+ }
+ if ( dominant != null )
+ {
+ properties.putAll( dominant );
+ }
+ properties = Collections.unmodifiableMap( properties );
+ }
+
+ return properties;
+ }
+
+ /**
+ * Creates a new artifact with the specified coordinates, properties and file. Passing {@code null} for any of the
+ * coordinates is equivalent to specifying an empty string.
+ *
+ * @param groupId The group identifier of the artifact, may be {@code null}.
+ * @param artifactId The artifact identifier of the artifact, may be {@code null}.
+ * @param classifier The classifier of the artifact, may be {@code null}.
+ * @param extension The file extension of the artifact, may be {@code null}.
+ * @param version The version of the artifact, may be {@code null}.
+ * @param properties The properties of the artifact, may be {@code null} if none.
+ * @param file The resolved file of the artifact, may be {@code null}.
+ */
+ public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version,
+ Map<String, String> properties, File file )
+ {
+ this.groupId = emptify( groupId );
+ this.artifactId = emptify( artifactId );
+ this.classifier = emptify( classifier );
+ this.extension = emptify( extension );
+ this.version = emptify( version );
+ this.file = file;
+ this.properties = copyProperties( properties );
+ }
+
+ DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version, 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.classifier = emptify( classifier );
+ this.extension = emptify( extension );
+ this.version = emptify( version );
+ 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 getClassifier()
+ {
+ return classifier;
+ }
+
+ public String getExtension()
+ {
+ return extension;
+ }
+
+ public File getFile()
+ {
+ return file;
+ }
+
+ public Map<String, String> getProperties()
+ {
+ return properties;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifactType.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifactType.java b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifactType.java
new file mode 100644
index 0000000..c0d2ad8
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifactType.java
@@ -0,0 +1,146 @@
+package org.eclipse.aether.artifact;
+
+/*
+ * 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.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A simple artifact type.
+ */
+public final class DefaultArtifactType
+ implements ArtifactType
+{
+
+ private final String id;
+
+ private final String extension;
+
+ private final String classifier;
+
+ private final Map<String, String> properties;
+
+ /**
+ * Creates a new artifact type with the specified identifier. This constructor assumes the usual file extension
+ * equals the given type id and that the usual classifier is empty. Additionally, the properties
+ * {@link ArtifactProperties#LANGUAGE}, {@link ArtifactProperties#CONSTITUTES_BUILD_PATH} and
+ * {@link ArtifactProperties#INCLUDES_DEPENDENCIES} will be set to {@code "none"}, {@code true} and {@code false},
+ * respectively.
+ *
+ * @param id The identifier of the type which will also be used as the value for the {@link ArtifactProperties#TYPE}
+ * property, must not be {@code null} or empty.
+ */
+ public DefaultArtifactType( String id )
+ {
+ this( id, id, "", "none", false, false );
+ }
+
+ /**
+ * Creates a new artifact type with the specified properties. Additionally, the properties
+ * {@link ArtifactProperties#CONSTITUTES_BUILD_PATH} and {@link ArtifactProperties#INCLUDES_DEPENDENCIES} will be
+ * set to {@code true} and {@code false}, respectively.
+ *
+ * @param id The identifier of the type which will also be used as the value for the {@link ArtifactProperties#TYPE}
+ * property, must not be {@code null} or empty.
+ * @param extension The usual file extension for artifacts of this type, may be {@code null}.
+ * @param classifier The usual classifier for artifacts of this type, may be {@code null}.
+ * @param language The value for the {@link ArtifactProperties#LANGUAGE} property, may be {@code null}.
+ */
+ public DefaultArtifactType( String id, String extension, String classifier, String language )
+ {
+ this( id, extension, classifier, language, true, false );
+ }
+
+ /**
+ * Creates a new artifact type with the specified properties.
+ *
+ * @param id The identifier of the type which will also be used as the value for the {@link ArtifactProperties#TYPE}
+ * property, must not be {@code null} or empty.
+ * @param extension The usual file extension for artifacts of this type, may be {@code null}.
+ * @param classifier The usual classifier for artifacts of this type, may be {@code null}.
+ * @param language The value for the {@link ArtifactProperties#LANGUAGE} property, may be {@code null}.
+ * @param constitutesBuildPath The value for the {@link ArtifactProperties#CONSTITUTES_BUILD_PATH} property.
+ * @param includesDependencies The value for the {@link ArtifactProperties#INCLUDES_DEPENDENCIES} property.
+ */
+ public DefaultArtifactType( String id, String extension, String classifier, String language,
+ boolean constitutesBuildPath, boolean includesDependencies )
+ {
+ if ( id == null || id.length() < 0 )
+ {
+ throw new IllegalArgumentException( "no type id specified" );
+ }
+ this.id = id;
+ this.extension = emptify( extension );
+ this.classifier = emptify( classifier );
+ Map<String, String> props = new HashMap<String, String>();
+ props.put( ArtifactProperties.TYPE, id );
+ props.put( ArtifactProperties.LANGUAGE, ( language != null && language.length() > 0 ) ? language : "none" );
+ props.put( ArtifactProperties.INCLUDES_DEPENDENCIES, Boolean.toString( includesDependencies ) );
+ props.put( ArtifactProperties.CONSTITUTES_BUILD_PATH, Boolean.toString( constitutesBuildPath ) );
+ properties = Collections.unmodifiableMap( props );
+ }
+
+ /**
+ * Creates a new artifact type with the specified properties.
+ *
+ * @param id The identifier of the type, must not be {@code null} or empty.
+ * @param extension The usual file extension for artifacts of this type, may be {@code null}.
+ * @param classifier The usual classifier for artifacts of this type, may be {@code null}.
+ * @param properties The properties for artifacts of this type, may be {@code null}.
+ */
+ public DefaultArtifactType( String id, String extension, String classifier, Map<String, String> properties )
+ {
+ if ( id == null || id.length() < 0 )
+ {
+ throw new IllegalArgumentException( "no type id specified" );
+ }
+ this.id = id;
+ this.extension = emptify( extension );
+ this.classifier = emptify( classifier );
+ this.properties = AbstractArtifact.copyProperties( properties );
+ }
+
+ private static String emptify( String str )
+ {
+ return ( str == null ) ? "" : str;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public String getExtension()
+ {
+ return extension;
+ }
+
+ public String getClassifier()
+ {
+ return classifier;
+ }
+
+ public Map<String, String> getProperties()
+ {
+ return properties;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/package-info.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/package-info.java b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/package-info.java
new file mode 100644
index 0000000..9a4cc79
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/package-info.java
@@ -0,0 +1,24 @@
+// 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 an artifact, that is the primary entity managed by the repository system.
+ */
+package org.eclipse.aether.artifact;
+
[22/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/DependencyGraphParser.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/DependencyGraphParser.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/DependencyGraphParser.java
deleted file mode 100644
index e4deefb..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/DependencyGraphParser.java
+++ /dev/null
@@ -1,565 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.graph.DefaultDependencyNode;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.VersionScheme;
-
-/**
- * Creates a dependency graph from a text description. <h2>Definition</h2> Each (non-empty) line in the input defines
- * one node of the resulting graph:
- *
- * <pre>
- * line ::= (indent? ("(null)" | node | reference))? comment?
- * comment ::= "#" rest-of-line
- * indent ::= "| "* ("+" | "\\") "- "
- * reference ::= "^" id
- * node ::= coords (range)? space (scope("<" premanagedScope)?)? space "optional"? space ("relocations=" coords ("," coords)*)? ("(" id ")")?
- * coords ::= groupId ":" artifactId (":" extension (":" classifier)?)? ":" version
- * </pre>
- *
- * The special token {@code (null)} may be used to indicate an "empty" root node with no dependency.
- * <p>
- * If {@code indent} is empty, the line defines the root node. Only one root node may be defined. The level is
- * calculated by the distance from the beginning of the line. One level is three characters of indentation.
- * <p>
- * The {@code ^id} syntax allows to reuse a previously built node to share common sub graphs among different parent
- * nodes.
- * <h2>Example</h2>
- *
- * <pre>
- * gid:aid:ver
- * +- gid:aid2:ver scope
- * | \- gid:aid3:ver (id1) # assign id for reference below
- * +- gid:aid4:ext:ver scope
- * \- ^id1 # reuse previous node
- * </pre>
- *
- * <h2>Multiple definitions in one resource</h2>
- * <p>
- * By using {@link #parseMultiResource(String)}, definitions divided by a line beginning with "---" can be read from the
- * same resource. The rest of the line is ignored.
- * <h2>Substitutions</h2>
- * <p>
- * You may define substitutions (see {@link #setSubstitutions(String...)},
- * {@link #DependencyGraphParser(String, Collection)}). Every '%s' in the definition will be substituted by the next
- * String in the defined substitutions.
- * <h3>Example</h3>
- *
- * <pre>
- * parser.setSubstitutions( "foo", "bar" );
- * String def = "gid:%s:ext:ver\n" + "+- gid:%s:ext:ver";
- * </pre>
- *
- * The first node will have "foo" as its artifact id, the second node (child to the first) will have "bar" as its
- * artifact id.
- */
-public class DependencyGraphParser
-{
-
- private final VersionScheme versionScheme;
-
- private final String prefix;
-
- private Collection<String> substitutions;
-
- /**
- * Create a parser with the given prefix and the given substitution strings.
- *
- * @see DependencyGraphParser#parseResource(String)
- */
- public DependencyGraphParser( String prefix, Collection<String> substitutions )
- {
- this.prefix = prefix;
- this.substitutions = substitutions;
- versionScheme = new TestVersionScheme();
- }
-
- /**
- * Create a parser with the given prefix.
- *
- * @see DependencyGraphParser#parseResource(String)
- */
- public DependencyGraphParser( String prefix )
- {
- this( prefix, Collections.<String>emptyList() );
- }
-
- /**
- * Create a parser with an empty prefix.
- */
- public DependencyGraphParser()
- {
- this( "" );
- }
-
- /**
- * Parse the given graph definition.
- */
- public DependencyNode parseLiteral( String dependencyGraph )
- throws IOException
- {
- BufferedReader reader = new BufferedReader( new StringReader( dependencyGraph ) );
- DependencyNode node = parse( reader );
- reader.close();
- return node;
- }
-
- /**
- * Parse the graph definition read from the given classpath resource. If a prefix is set, this method will load the
- * resource from 'prefix + resource'.
- */
- public DependencyNode parseResource( String resource )
- throws IOException
- {
- URL res = this.getClass().getClassLoader().getResource( prefix + resource );
- if ( res == null )
- {
- throw new IOException( "Could not find classpath resource " + prefix + resource );
- }
- return parse( res );
- }
-
- /**
- * Parse multiple graphs in one resource, divided by "---".
- */
- public List<DependencyNode> parseMultiResource( String resource )
- throws IOException
- {
- URL res = this.getClass().getClassLoader().getResource( prefix + resource );
- if ( res == null )
- {
- throw new IOException( "Could not find classpath resource " + prefix + resource );
- }
-
- BufferedReader reader = new BufferedReader( new InputStreamReader( res.openStream(), "UTF-8" ) );
-
- List<DependencyNode> ret = new ArrayList<DependencyNode>();
- DependencyNode root = null;
- while ( ( root = parse( reader ) ) != null )
- {
- ret.add( root );
- }
- return ret;
- }
-
- /**
- * Parse the graph definition read from the given URL.
- */
- public DependencyNode parse( URL resource )
- throws IOException
- {
- InputStream stream = null;
- try
- {
- stream = resource.openStream();
- final DependencyNode node = parse( new BufferedReader( new InputStreamReader( stream, "UTF-8" ) ) );
- stream.close();
- stream = null;
- return node;
- }
- finally
- {
- try
- {
- if ( stream != null )
- {
- stream.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed
- }
- }
- }
-
- private DependencyNode parse( BufferedReader in )
- throws IOException
- {
- Iterator<String> substitutionIterator = ( substitutions != null ) ? substitutions.iterator() : null;
-
- String line = null;
-
- DependencyNode root = null;
- DependencyNode node = null;
- int prevLevel = 0;
-
- Map<String, DependencyNode> nodes = new HashMap<String, DependencyNode>();
- LinkedList<DependencyNode> stack = new LinkedList<DependencyNode>();
- boolean isRootNode = true;
-
- while ( ( line = in.readLine() ) != null )
- {
- line = cutComment( line );
-
- if ( isEmpty( line ) )
- {
- // skip empty line
- continue;
- }
-
- if ( isEOFMarker( line ) )
- {
- // stop parsing
- break;
- }
-
- while ( line.contains( "%s" ) )
- {
- if ( !substitutionIterator.hasNext() )
- {
- throw new IllegalArgumentException( "not enough substitutions to fill placeholders" );
- }
- line = line.replaceFirst( "%s", substitutionIterator.next() );
- }
-
- LineContext ctx = createContext( line );
- if ( prevLevel < ctx.getLevel() )
- {
- // previous node is new parent
- stack.add( node );
- }
-
- // get to real parent
- while ( prevLevel > ctx.getLevel() )
- {
- stack.removeLast();
- prevLevel -= 1;
- }
-
- prevLevel = ctx.getLevel();
-
- if ( ctx.getDefinition() != null && ctx.getDefinition().reference != null )
- {
- String reference = ctx.getDefinition().reference;
- DependencyNode child = nodes.get( reference );
- if ( child == null )
- {
- throw new IllegalArgumentException( "undefined reference " + reference );
- }
- node.getChildren().add( child );
- }
- else
- {
-
- node = build( isRootNode ? null : stack.getLast(), ctx, isRootNode );
-
- if ( isRootNode )
- {
- root = node;
- isRootNode = false;
- }
-
- if ( ctx.getDefinition() != null && ctx.getDefinition().id != null )
- {
- nodes.put( ctx.getDefinition().id, node );
- }
- }
- }
-
- return root;
- }
-
- private boolean isEOFMarker( String line )
- {
- return line.startsWith( "---" );
- }
-
- private static boolean isEmpty( String line )
- {
- return line == null || line.length() == 0;
- }
-
- private static String cutComment( String line )
- {
- int idx = line.indexOf( '#' );
-
- if ( idx != -1 )
- {
- line = line.substring( 0, idx );
- }
-
- return line;
- }
-
- private DependencyNode build( DependencyNode parent, LineContext ctx, boolean isRoot )
- {
- NodeDefinition def = ctx.getDefinition();
- if ( !isRoot && parent == null )
- {
- throw new IllegalArgumentException( "dangling node: " + def );
- }
- else if ( ctx.getLevel() == 0 && parent != null )
- {
- throw new IllegalArgumentException( "inconsistent leveling (parent for level 0?): " + def );
- }
-
- DefaultDependencyNode node;
- if ( def != null )
- {
- DefaultArtifact artifact = new DefaultArtifact( def.coords, def.properties );
- Dependency dependency = new Dependency( artifact, def.scope, def.optional );
- node = new DefaultDependencyNode( parent, dependency );
- int managedBits = 0;
- if ( def.premanagedScope != null )
- {
- managedBits |= DependencyNode.MANAGED_SCOPE;
- node.setData( "premanaged.scope", def.premanagedScope );
- }
- if ( def.premanagedVersion != null )
- {
- managedBits |= DependencyNode.MANAGED_VERSION;
- node.setData( "premanaged.version", def.premanagedVersion );
- }
- node.setManagedBits( managedBits );
- if ( def.relocations != null )
- {
- List<Artifact> relocations = new ArrayList<Artifact>();
- for ( String relocation : def.relocations )
- {
- relocations.add( new DefaultArtifact( relocation ) );
- }
- node.setRelocations( relocations );
- }
- try
- {
- node.setVersion( versionScheme.parseVersion( artifact.getVersion() ) );
- node.setVersionConstraint( versionScheme.parseVersionConstraint( def.range != null ? def.range
- : artifact.getVersion() ) );
- }
- catch ( InvalidVersionSpecificationException e )
- {
- throw new IllegalArgumentException( "bad version: " + e.getMessage(), e );
- }
- }
- else
- {
- node = new DefaultDependencyNode( (Dependency) null );
- }
-
- if ( parent != null )
- {
- parent.getChildren().add( node );
- }
-
- return node;
- }
-
- public String dump( DependencyNode root )
- {
- StringBuilder ret = new StringBuilder();
-
- List<NodeEntry> entries = new ArrayList<NodeEntry>();
-
- addNode( root, 0, entries );
-
- for ( NodeEntry nodeEntry : entries )
- {
- char[] level = new char[( nodeEntry.getLevel() * 3 )];
- Arrays.fill( level, ' ' );
-
- if ( level.length != 0 )
- {
- level[level.length - 3] = '+';
- level[level.length - 2] = '-';
- }
-
- String definition = nodeEntry.getDefinition();
-
- ret.append( level ).append( definition ).append( "\n" );
- }
-
- return ret.toString();
-
- }
-
- private void addNode( DependencyNode root, int level, List<NodeEntry> entries )
- {
-
- NodeEntry entry = new NodeEntry();
- Dependency dependency = root.getDependency();
- StringBuilder defBuilder = new StringBuilder();
- if ( dependency == null )
- {
- defBuilder.append( "(null)" );
- }
- else
- {
- Artifact artifact = dependency.getArtifact();
-
- defBuilder.append( artifact.getGroupId() ).append( ":" ).append( artifact.getArtifactId() ).append( ":" ).append( artifact.getExtension() ).append( ":" ).append( artifact.getVersion() );
- if ( dependency.getScope() != null && ( !"".equals( dependency.getScope() ) ) )
- {
- defBuilder.append( ":" ).append( dependency.getScope() );
- }
-
- Map<String, String> properties = artifact.getProperties();
- if ( !( properties == null || properties.isEmpty() ) )
- {
- for ( Map.Entry<String, String> prop : properties.entrySet() )
- {
- defBuilder.append( ";" ).append( prop.getKey() ).append( "=" ).append( prop.getValue() );
- }
- }
- }
-
- entry.setDefinition( defBuilder.toString() );
- entry.setLevel( level++ );
-
- entries.add( entry );
-
- for ( DependencyNode node : root.getChildren() )
- {
- addNode( node, level, entries );
- }
-
- }
-
- class NodeEntry
- {
- int level;
-
- String definition;
-
- Map<String, String> properties;
-
- public int getLevel()
- {
- return level;
- }
-
- public void setLevel( int level )
- {
- this.level = level;
- }
-
- public String getDefinition()
- {
- return definition;
- }
-
- public void setDefinition( String definition )
- {
- this.definition = definition;
- }
-
- public Map<String, String> getProperties()
- {
- return properties;
- }
-
- public void setProperties( Map<String, String> properties )
- {
- this.properties = properties;
- }
- }
-
- private static LineContext createContext( String line )
- {
- LineContext ctx = new LineContext();
- String definition;
-
- String[] split = line.split( "- " );
- if ( split.length == 1 ) // root
- {
- ctx.setLevel( 0 );
- definition = split[0];
- }
- else
- {
- ctx.setLevel( (int) Math.ceil( (double) split[0].length() / (double) 3 ) );
- definition = split[1];
- }
-
- if ( "(null)".equalsIgnoreCase( definition ) )
- {
- return ctx;
- }
-
- ctx.setDefinition( new NodeDefinition( definition ) );
-
- return ctx;
- }
-
- static class LineContext
- {
- NodeDefinition definition;
-
- int level;
-
- public NodeDefinition getDefinition()
- {
- return definition;
- }
-
- public void setDefinition( NodeDefinition definition )
- {
- this.definition = definition;
- }
-
- public int getLevel()
- {
- return level;
- }
-
- public void setLevel( int level )
- {
- this.level = level;
- }
- }
-
- public Collection<String> getSubstitutions()
- {
- return substitutions;
- }
-
- public void setSubstitutions( Collection<String> substitutions )
- {
- this.substitutions = substitutions;
- }
-
- public void setSubstitutions( String... substitutions )
- {
- setSubstitutions( Arrays.asList( substitutions ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDataReader.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDataReader.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDataReader.java
deleted file mode 100644
index b38c4d6..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDataReader.java
+++ /dev/null
@@ -1,391 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringReader;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.Exclusion;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * @see IniArtifactDescriptorReader
- */
-class IniArtifactDataReader
-{
-
- private String prefix = "";
-
- /**
- * Constructs a data reader with the prefix {@code ""}.
- */
- public IniArtifactDataReader()
- {
- this( "" );
- }
-
- /**
- * Constructs a data reader with the given prefix.
- *
- * @param prefix the prefix to use for loading resources from the classpath.
- */
- public IniArtifactDataReader( String prefix )
- {
- this.prefix = prefix;
-
- }
-
- /**
- * Load an artifact description from the classpath and parse it.
- */
- public ArtifactDescription parse( String resource )
- throws IOException
- {
- URL res = this.getClass().getClassLoader().getResource( prefix + resource );
-
- if ( res == null )
- {
- throw new IOException( "cannot find resource: " + resource );
- }
- return parse( res );
- }
-
- /**
- * Open the given URL and parse ist.
- */
- public ArtifactDescription parse( URL res )
- throws IOException
- {
- return parse( new InputStreamReader( res.openStream(), "UTF-8" ) );
- }
-
- /**
- * Parse the given String.
- */
- public ArtifactDescription parseLiteral( String description )
- throws IOException
- {
- StringReader reader = new StringReader( description );
- return parse( reader );
- }
-
- private enum State
- {
- NONE, RELOCATION, DEPENDENCIES, MANAGEDDEPENDENCIES, REPOSITORIES
- }
-
- private ArtifactDescription parse( Reader reader )
- throws IOException
- {
- State state = State.NONE;
- Map<State, List<String>> sections = new HashMap<State, List<String>>();
- BufferedReader in = null;
- try
- {
- in = new BufferedReader( reader );
- for ( String line = in.readLine(); line != null; line = in.readLine() )
- {
- line = cutComment( line );
- if ( isEmpty( line ) )
- {
- continue;
- }
-
- if ( line.startsWith( "[" ) )
- {
- try
- {
- String name = line.substring( 1, line.length() - 1 );
- name = name.replace( "-", "" ).toUpperCase( Locale.ENGLISH );
- state = State.valueOf( name );
- sections.put( state, new ArrayList<String>() );
- }
- catch ( IllegalArgumentException e )
- {
- throw new IOException( "unknown section: " + line );
- }
- }
- else
- {
- List<String> lines = sections.get( state );
- if ( lines == null )
- {
- throw new IOException( "missing section: " + line );
- }
- lines.add( line.trim() );
- }
- }
-
- in.close();
- in = null;
- }
- finally
- {
- try
- {
- if ( in != null )
- {
- in.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed
- }
- }
-
- Artifact relocation = relocation( sections.get( State.RELOCATION ) );
- List<Dependency> dependencies = dependencies( sections.get( State.DEPENDENCIES ), false );
- List<Dependency> managedDependencies = dependencies( sections.get( State.MANAGEDDEPENDENCIES ), true );
- List<RemoteRepository> repositories = repositories( sections.get( State.REPOSITORIES ) );
-
- ArtifactDescription description =
- new ArtifactDescription( relocation, dependencies, managedDependencies, repositories );
- return description;
- }
-
- private List<RemoteRepository> repositories( List<String> list )
- {
- ArrayList<RemoteRepository> ret = new ArrayList<RemoteRepository>();
- if ( list == null )
- {
- return ret;
- }
- for ( String coords : list )
- {
- String[] split = coords.split( ":", 3 );
- String id = split[0];
- String type = split[1];
- String url = split[2];
-
- ret.add( new RemoteRepository.Builder( id, type, url ).build() );
- }
- return ret;
- }
-
- private List<Dependency> dependencies( List<String> list, boolean managed )
- {
- List<Dependency> ret = new ArrayList<Dependency>();
- if ( list == null )
- {
- return ret;
- }
-
- Collection<Exclusion> exclusions = new ArrayList<Exclusion>();
-
- Boolean optional = null;
- Artifact artifact = null;
- String scope = null;
-
- for ( String coords : list )
- {
- if ( coords.startsWith( "-" ) )
- {
- coords = coords.substring( 1 );
- String[] split = coords.split( ":" );
- exclusions.add( new Exclusion( split[0], split[1], "*", "*" ) );
- }
- else
- {
- if ( artifact != null )
- {
- // commit dependency
- Dependency dep = new Dependency( artifact, scope, optional, exclusions );
- ret.add( dep );
-
- exclusions = new ArrayList<Exclusion>();
- }
-
- ArtifactDefinition def = new ArtifactDefinition( coords );
-
- optional = managed ? def.getOptional() : Boolean.valueOf( Boolean.TRUE.equals( def.getOptional() ) );
-
- scope = "".equals( def.getScope() ) && !managed ? "compile" : def.getScope();
-
- artifact =
- new DefaultArtifact( def.getGroupId(), def.getArtifactId(), "", def.getExtension(),
- def.getVersion() );
- }
- }
- if ( artifact != null )
- {
- // commit dependency
- Dependency dep = new Dependency( artifact, scope, optional, exclusions );
- ret.add( dep );
- }
-
- return ret;
- }
-
- private Artifact relocation( List<String> list )
- {
- if ( list == null || list.isEmpty() )
- {
- return null;
- }
- String coords = list.get( 0 );
- ArtifactDefinition def = new ArtifactDefinition( coords );
- return new DefaultArtifact( def.getGroupId(), def.getArtifactId(), "", def.getExtension(), def.getVersion() );
- }
-
- private static boolean isEmpty( String line )
- {
- return line == null || line.length() == 0;
- }
-
- private static String cutComment( String line )
- {
- int idx = line.indexOf( '#' );
-
- if ( idx != -1 )
- {
- line = line.substring( 0, idx );
- }
-
- return line;
- }
-
- static class Definition
- {
- private String groupId;
-
- private String artifactId;
-
- private String extension;
-
- private String version;
-
- private String scope = "";
-
- private String definition;
-
- private String id = null;
-
- private String reference = null;
-
- private boolean optional = false;
-
- public Definition( String def )
- {
- this.definition = def.trim();
-
- if ( definition.startsWith( "(" ) )
- {
- int idx = definition.indexOf( ')' );
- this.id = definition.substring( 1, idx );
- this.definition = definition.substring( idx + 1 );
- }
- else if ( definition.startsWith( "^" ) )
- {
- this.reference = definition.substring( 1 );
- return;
- }
-
- String[] split = definition.split( ":" );
- if ( split.length < 4 )
- {
- throw new IllegalArgumentException( "Need definition like 'gid:aid:ext:ver[:scope]', but was: "
- + definition );
- }
- groupId = split[0];
- artifactId = split[1];
- extension = split[2];
- version = split[3];
- if ( split.length > 4 )
- {
- scope = split[4];
- }
- if ( split.length > 5 && "true".equalsIgnoreCase( split[5] ) )
- {
- optional = true;
- }
- }
-
- public String getGroupId()
- {
- return groupId;
- }
-
- public String getArtifactId()
- {
- return artifactId;
- }
-
- public String getType()
- {
- return extension;
- }
-
- public String getVersion()
- {
- return version;
- }
-
- public String getScope()
- {
- return scope;
- }
-
- @Override
- public String toString()
- {
- return definition;
- }
-
- public String getId()
- {
- return id;
- }
-
- public String getReference()
- {
- return reference;
- }
-
- public boolean isReference()
- {
- return reference != null;
- }
-
- public boolean hasId()
- {
- return id != null;
- }
-
- public boolean isOptional()
- {
- return optional;
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReader.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReader.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReader.java
deleted file mode 100644
index 4efe880..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReader.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.resolution.ArtifactDescriptorException;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-
-/**
- * An artifact descriptor reader that gets data from a simple text file on the classpath. The data file for an artifact
- * with the coordinates {@code gid:aid:ext:ver} is expected to be named {@code gid_aid_ver.ini} and can optionally have
- * some prefix. The data file can have the following sections:
- * <ul>
- * <li>relocation</li>
- * <li>dependencies</li>
- * <li>managedDependencies</li>
- * <li>repositories</li>
- * </ul>
- * The relocation and dependency sections contain artifact coordinates of the form:
- *
- * <pre>
- * gid:aid:ext:ver[:scope][:optional]
- * </pre>
- *
- * The dependency sections may also specify exclusions:
- *
- * <pre>
- * -gid:aid
- * </pre>
- *
- * A repository definition is of the form:
- *
- * <pre>
- * id:type:url
- * </pre>
- *
- * <h2>Example</h2>
- *
- * <pre>
- * [relocation]
- * gid:aid:ext:ver
- *
- * [dependencies]
- * gid:aid:ext:ver:scope
- * -exclusion:aid
- * gid:aid2:ext:ver:scope:optional
- *
- * [managed-dependencies]
- * gid:aid2:ext:ver2:scope
- * -gid:aid
- * -gid:aid
- *
- * [repositories]
- * id:type:file:///test-repo
- * </pre>
- */
-public class IniArtifactDescriptorReader
-{
- private IniArtifactDataReader reader;
-
- /**
- * Use the given prefix to load the artifact descriptions from the classpath.
- */
- public IniArtifactDescriptorReader( String prefix )
- {
- reader = new IniArtifactDataReader( prefix );
- }
-
- /**
- * Parses the resource {@code $prefix/gid_aid_ver.ini} from the request artifact as an artifact description and
- * wraps it into an ArtifactDescriptorResult.
- */
- public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session,
- ArtifactDescriptorRequest request )
- throws ArtifactDescriptorException
- {
- ArtifactDescriptorResult result = new ArtifactDescriptorResult( request );
- for ( Artifact artifact = request.getArtifact();; )
- {
- String resourceName =
- String.format( "%s_%s_%s.ini", artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
- try
- {
- ArtifactDescription data = reader.parse( resourceName );
- if ( data.getRelocation() != null )
- {
- result.addRelocation( artifact );
- artifact = data.getRelocation();
- }
- else
- {
- result.setArtifact( artifact );
- result.setDependencies( data.getDependencies() );
- result.setManagedDependencies( data.getManagedDependencies() );
- result.setRepositories( data.getRepositories() );
- return result;
- }
- }
- catch ( Exception e )
- {
- throw new ArtifactDescriptorException( result, e.getMessage(), e );
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/NodeBuilder.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/NodeBuilder.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/NodeBuilder.java
deleted file mode 100644
index fdd988a..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/NodeBuilder.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.graph.DefaultDependencyNode;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.VersionScheme;
-
-/**
- * A builder to create dependency nodes for unit testing.
- */
-public class NodeBuilder
-{
-
- private String groupId = "test";
-
- private String artifactId = "";
-
- private String version = "0.1";
-
- private String range;
-
- private String ext = "jar";
-
- private String classifier = "";
-
- private String scope = "compile";
-
- private boolean optional = false;
-
- private String context;
-
- private List<Artifact> relocations = new ArrayList<Artifact>();
-
- private VersionScheme versionScheme = new TestVersionScheme();
-
- private Map<String, String> properties = new HashMap<String, String>( 0 );
-
- public NodeBuilder artifactId( String artifactId )
- {
- this.artifactId = artifactId;
- return this;
- }
-
- public NodeBuilder groupId( String groupId )
- {
- this.groupId = groupId;
- return this;
-
- }
-
- public NodeBuilder ext( String ext )
- {
- this.ext = ext;
- return this;
- }
-
- public NodeBuilder version( String version )
- {
- this.version = version;
- this.range = null;
- return this;
- }
-
- public NodeBuilder range( String range )
- {
- this.range = range;
- return this;
- }
-
- public NodeBuilder scope( String scope )
- {
- this.scope = scope;
- return this;
- }
-
- public NodeBuilder optional( boolean optional )
- {
- this.optional = optional;
- return this;
- }
-
- public NodeBuilder context( String context )
- {
- this.context = context;
- return this;
- }
-
- public NodeBuilder reloc( String artifactId )
- {
- Artifact relocation = new DefaultArtifact( groupId, artifactId, classifier, ext, version );
- relocations.add( relocation );
- return this;
- }
-
- public NodeBuilder reloc( String groupId, String artifactId, String version )
- {
- Artifact relocation = new DefaultArtifact( groupId, artifactId, classifier, ext, version );
- relocations.add( relocation );
- return this;
- }
-
- public NodeBuilder properties( Map<String, String> properties )
- {
- this.properties = properties != null ? properties : Collections.<String, String>emptyMap();
- return this;
- }
-
- public DependencyNode build()
- {
- Dependency dependency = null;
- if ( artifactId != null && artifactId.length() > 0 )
- {
- Artifact artifact =
- new DefaultArtifact( groupId, artifactId, classifier, ext, version, properties, (File) null );
- dependency = new Dependency( artifact, scope, optional );
- }
- DefaultDependencyNode node = new DefaultDependencyNode( dependency );
- if ( artifactId != null && artifactId.length() > 0 )
- {
- try
- {
- node.setVersion( versionScheme.parseVersion( version ) );
- node.setVersionConstraint( versionScheme.parseVersionConstraint( range != null ? range : version ) );
- }
- catch ( InvalidVersionSpecificationException e )
- {
- throw new IllegalArgumentException( "bad version: " + e.getMessage(), e );
- }
- }
- node.setRequestContext( context );
- node.setRelocations( relocations );
- return node;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/NodeDefinition.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/NodeDefinition.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/NodeDefinition.java
deleted file mode 100644
index 64910f1..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/NodeDefinition.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.Collections;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * A definition of a dependency node via a single line of text.
- *
- * @see DependencyGraphParser
- */
-class NodeDefinition
-{
-
- static final String ID = "\\(([-_a-zA-Z0-9]+)\\)";
-
- static final String IDREF = "\\^([-_a-zA-Z0-9]+)";
-
- static final String COORDS = "([^: \\(]+):([^: ]+)(?::([^: ]*)(?::([^: ]+))?)?:([^: \\[\\(<]+)";
-
- private static final String COORDS_NC = NodeDefinition.COORDS.replaceAll( "\\((?=\\[)", "(?:" );
-
- private static final String RANGE_NC = "[\\(\\[][^\\(\\)\\[\\]]+[\\)\\]]";
-
- static final String RANGE = "(" + RANGE_NC + ")";
-
- static final String SCOPE = "(?:scope\\s*=\\s*)?((?!optional)[-_a-zA-Z0-9]+)(?:<([-_a-zA-Z0-9]+))?";
-
- static final String OPTIONAL = "(!?optional)";
-
- static final String RELOCATIONS = "relocations\\s*=\\s*(" + COORDS_NC + "(?:\\s*,\\s*" + COORDS_NC + ")*)";
-
- static final String KEY_VAL = "(?:[-_a-zA-Z0-9]+)\\s*:\\s*(?:[-_a-zA-Z0-9]*)";
-
- static final String PROPS = "props\\s*=\\s*(" + KEY_VAL + "(?:\\s*,\\s*" + KEY_VAL + ")*)";
-
- static final String COORDSX = "(" + COORDS_NC + ")" + RANGE + "?(?:<((?:" + RANGE_NC + ")|\\S+))?";
-
- static final String NODE = COORDSX + "(?:\\s+" + PROPS + ")?" + "(?:\\s+" + SCOPE + ")?" + "(?:\\s+" + OPTIONAL
- + ")?" + "(?:\\s+" + RELOCATIONS + ")?" + "(?:\\s+" + ID + ")?";
-
- static final String LINE = "(?:" + IDREF + ")|(?:" + NODE + ")";
-
- private static final Pattern PATTERN = Pattern.compile( LINE );
-
- private final String def;
-
- String coords;
-
- Map<String, String> properties;
-
- String range;
-
- String premanagedVersion;
-
- String scope;
-
- String premanagedScope;
-
- Boolean optional;
-
- List<String> relocations;
-
- String id;
-
- String reference;
-
- public NodeDefinition( String definition )
- {
- def = definition.trim();
-
- Matcher m = PATTERN.matcher( def );
- if ( !m.matches() )
- {
- throw new IllegalArgumentException( "bad syntax: " + def );
- }
-
- reference = m.group( 1 );
- if ( reference != null )
- {
- return;
- }
-
- coords = m.group( 2 );
- range = m.group( 3 );
- premanagedVersion = m.group( 4 );
-
- String props = m.group( 5 );
- if ( props != null )
- {
- properties = new LinkedHashMap<String, String>();
- for ( String prop : props.split( "\\s*,\\s*" ) )
- {
- int sep = prop.indexOf( ':' );
- String key = prop.substring( 0, sep );
- String val = prop.substring( sep + 1 );
- properties.put( key, val );
- }
- }
-
- scope = m.group( 6 );
- premanagedScope = m.group( 7 );
- optional = ( m.group( 8 ) != null ) ? !m.group( 8 ).startsWith( "!" ) : Boolean.FALSE;
-
- String relocs = m.group( 9 );
- if ( relocs != null )
- {
- relocations = new ArrayList<String>();
- Collections.addAll( relocations, relocs.split( "\\s*,\\s*" ) );
- }
-
- id = m.group( 10 );
- }
-
- @Override
- public String toString()
- {
- return def;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestDependencyCollectionContext.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestDependencyCollectionContext.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestDependencyCollectionContext.java
deleted file mode 100644
index b4f4155..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestDependencyCollectionContext.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.graph.Dependency;
-
-/**
- */
-final class TestDependencyCollectionContext
- implements DependencyCollectionContext
-{
-
- private final RepositorySystemSession session;
-
- private final Artifact artifact;
-
- private final Dependency dependency;
-
- private final List<Dependency> managedDependencies;
-
- public TestDependencyCollectionContext( RepositorySystemSession session, Artifact artifact, Dependency dependency,
- List<Dependency> managedDependencies )
- {
- this.session = session;
- this.artifact = ( dependency != null ) ? dependency.getArtifact() : artifact;
- this.dependency = dependency;
- this.managedDependencies = managedDependencies;
- }
-
- public RepositorySystemSession getSession()
- {
- return session;
- }
-
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- public Dependency getDependency()
- {
- return dependency;
- }
-
- public List<Dependency> getManagedDependencies()
- {
- return managedDependencies;
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( getDependency() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestDependencyGraphTransformationContext.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestDependencyGraphTransformationContext.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestDependencyGraphTransformationContext.java
deleted file mode 100644
index c3da4d9..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestDependencyGraphTransformationContext.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.HashMap;
-import java.util.Map;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-
-/**
- */
-class TestDependencyGraphTransformationContext
- implements DependencyGraphTransformationContext
-{
-
- private final RepositorySystemSession session;
-
- private final Map<Object, Object> map;
-
- public TestDependencyGraphTransformationContext( RepositorySystemSession session )
- {
- this.session = session;
- this.map = new HashMap<Object, Object>();
- }
-
- public RepositorySystemSession getSession()
- {
- return session;
- }
-
- public Object get( Object key )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "key must not be null" );
- }
- return map.get( key );
- }
-
- public Object put( Object key, Object value )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "key must not be null" );
- }
- if ( value != null )
- {
- return map.put( key, value );
- }
- else
- {
- return map.remove( key );
- }
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( map );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestFileProcessor.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestFileProcessor.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestFileProcessor.java
deleted file mode 100644
index 6744583..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestFileProcessor.java
+++ /dev/null
@@ -1,223 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.BufferedOutputStream;
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-
-import org.eclipse.aether.spi.io.FileProcessor;
-
-/**
- * A simple file processor implementation to help satisfy component requirements during tests.
- */
-public class TestFileProcessor
- implements FileProcessor
-{
-
- private static void close( Closeable closeable )
- {
- if ( closeable != null )
- {
- try
- {
- closeable.close();
- }
- catch ( IOException e )
- {
- // too bad but who cares
- }
- }
- }
-
- public boolean mkdirs( File directory )
- {
- if ( directory == null )
- {
- return false;
- }
-
- if ( directory.exists() )
- {
- return false;
- }
- if ( directory.mkdir() )
- {
- return true;
- }
-
- File canonDir = null;
- try
- {
- canonDir = directory.getCanonicalFile();
- }
- catch ( IOException e )
- {
- return false;
- }
-
- File parentDir = canonDir.getParentFile();
- return ( parentDir != null && ( mkdirs( parentDir ) || parentDir.exists() ) && canonDir.mkdir() );
- }
-
- public void write( File file, String data )
- throws IOException
- {
- mkdirs( file.getParentFile() );
-
- FileOutputStream fos = null;
- try
- {
- fos = new FileOutputStream( file );
-
- if ( data != null )
- {
- fos.write( data.getBytes( "UTF-8" ) );
- }
-
- // allow output to report any flush/close errors
- fos.close();
- fos = null;
- }
- finally
- {
- close( fos );
- }
- }
-
- public void write( File target, InputStream source )
- throws IOException
- {
- mkdirs( target.getAbsoluteFile().getParentFile() );
-
- OutputStream fos = null;
- try
- {
- fos = new BufferedOutputStream( new FileOutputStream( target ) );
-
- copy( fos, source, null );
-
- // allow output to report any flush/close errors
- fos.close();
- fos = null;
- }
- finally
- {
- close( fos );
- }
- }
-
- public void copy( File source, File target )
- throws IOException
- {
- copy( source, target, null );
- }
-
- public long copy( File source, File target, ProgressListener listener )
- throws IOException
- {
- InputStream fis = null;
- OutputStream fos = null;
- try
- {
- fis = new FileInputStream( source );
-
- mkdirs( target.getAbsoluteFile().getParentFile() );
-
- fos = new BufferedOutputStream( new FileOutputStream( target ) );
-
- final long total = copy( fos, fis, listener );
-
- // allow output to report any flush/close errors
- fos.close();
- fos = null;
-
- fis.close();
- fis = null;
-
- return total;
- }
- finally
- {
- close( fis );
- close( fos );
- }
- }
-
- private long copy( OutputStream os, InputStream is, ProgressListener listener )
- throws IOException
- {
- long total = 0;
-
- ByteBuffer buffer = ByteBuffer.allocate( 1024 * 32 );
- byte[] array = buffer.array();
-
- while ( true )
- {
- int bytes = is.read( array );
- if ( bytes < 0 )
- {
- break;
- }
-
- os.write( array, 0, bytes );
-
- total += bytes;
-
- if ( listener != null && bytes > 0 )
- {
- try
- {
- buffer.rewind();
- buffer.limit( bytes );
- listener.progressed( buffer );
- }
- catch ( Exception e )
- {
- // too bad
- }
- }
- }
-
- return total;
- }
-
- public void move( File source, File target )
- throws IOException
- {
- target.delete();
-
- if ( !source.renameTo( target ) )
- {
- copy( source, target );
-
- target.setLastModified( source.lastModified() );
-
- source.delete();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestFileUtils.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestFileUtils.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestFileUtils.java
deleted file mode 100644
index be04bdc..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestFileUtils.java
+++ /dev/null
@@ -1,331 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.BufferedOutputStream;
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.RandomAccessFile;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Properties;
-import java.util.UUID;
-
-/**
- * Provides utility methods to read and write (temporary) files.
- */
-public class TestFileUtils
-{
-
- private static final File TMP = new File( System.getProperty( "java.io.tmpdir" ), "aether-"
- + UUID.randomUUID().toString().substring( 0, 8 ) );
-
- static
- {
- Runtime.getRuntime().addShutdownHook( new Thread()
- {
- @Override
- public void run()
- {
- try
- {
- deleteFile( TMP );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- }
- }
- } );
- }
-
- private TestFileUtils()
- {
- // hide constructor
- }
-
- public static void deleteTempFiles()
- throws IOException
- {
- deleteFile( TMP );
- }
-
- public static void deleteFile( File file )
- throws IOException
- {
- if ( file == null )
- {
- return;
- }
-
- Collection<File> undeletables = new ArrayList<File>();
-
- delete( file, undeletables );
-
- if ( !undeletables.isEmpty() )
- {
- throw new IOException( "Failed to delete " + undeletables );
- }
- }
-
- private static void delete( File file, Collection<File> undeletables )
- {
- String[] children = file.list();
- if ( children != null )
- {
- for ( String child : children )
- {
- delete( new File( file, child ), undeletables );
- }
- }
-
- if ( !del( file ) )
- {
- undeletables.add( file.getAbsoluteFile() );
- }
- }
-
- private static boolean del( File file )
- {
- for ( int i = 0; i < 10; i++ )
- {
- if ( file.delete() || !file.exists() )
- {
- return true;
- }
- }
- return false;
- }
-
- public static boolean mkdirs( File directory )
- {
- if ( directory == null )
- {
- return false;
- }
-
- if ( directory.exists() )
- {
- return false;
- }
- if ( directory.mkdir() )
- {
- return true;
- }
-
- File canonDir = null;
- try
- {
- canonDir = directory.getCanonicalFile();
- }
- catch ( IOException e )
- {
- return false;
- }
-
- File parentDir = canonDir.getParentFile();
- return ( parentDir != null && ( mkdirs( parentDir ) || parentDir.exists() ) && canonDir.mkdir() );
- }
-
- public static File createTempFile( String contents )
- throws IOException
- {
- return createTempFile( contents.getBytes( "UTF-8" ), 1 );
- }
-
- public static File createTempFile( byte[] pattern, int repeat )
- throws IOException
- {
- mkdirs( TMP );
- File tmpFile = File.createTempFile( "tmpfile-", ".data", TMP );
- writeBytes( tmpFile, pattern, repeat );
- return tmpFile;
- }
-
- public static File createTempDir()
- throws IOException
- {
- return createTempDir( "" );
- }
-
- public static File createTempDir( String suffix )
- throws IOException
- {
- mkdirs( TMP );
- File tmpFile = File.createTempFile( "tmpdir-", suffix, TMP );
- deleteFile( tmpFile );
- mkdirs( tmpFile );
- return tmpFile;
- }
-
- private static void close( Closeable c )
- throws IOException
- {
- if ( c != null )
- {
- try
- {
- c.close();
- }
- catch ( IOException e )
- {
- // ignore
- }
- }
- }
-
- public static long copyFile( File source, File target )
- throws IOException
- {
- FileInputStream fis = null;
- OutputStream fos = null;
- try
- {
- fis = new FileInputStream( source );
-
- mkdirs( target.getParentFile() );
-
- fos = new BufferedOutputStream( new FileOutputStream( target ) );
-
- long total = 0;
-
- for ( byte[] buffer = new byte[ 1024 * 32 ];; )
- {
- int bytes = fis.read( buffer );
- if ( bytes < 0 )
- {
- break;
- }
-
- fos.write( buffer, 0, bytes );
-
- total += bytes;
- }
-
- fos.close();
- fos = null;
-
- fis.close();
- fis = null;
-
- return total;
- }
- finally
- {
- close( fis );
- close( fos );
- }
- }
-
- public static byte[] readBytes( File file )
- throws IOException
- {
- RandomAccessFile in = null;
- try
- {
- in = new RandomAccessFile( file, "r" );
- byte[] actual = new byte[(int) in.length()];
- in.readFully( actual );
- in.close();
- in = null;
- return actual;
- }
- finally
- {
- close( in );
- }
- }
-
- public static void writeBytes( File file, byte[] pattern, int repeat )
- throws IOException
- {
- file.deleteOnExit();
- file.getParentFile().mkdirs();
- OutputStream out = null;
- try
- {
- out = new BufferedOutputStream( new FileOutputStream( file ) );
- for ( int i = 0; i < repeat; i++ )
- {
- out.write( pattern );
- }
- out.close();
- out = null;
- }
- finally
- {
- close( out );
- }
- }
-
- public static String readString( File file )
- throws IOException
- {
- byte[] content = readBytes( file );
- return new String( content, "UTF-8" );
- }
-
- public static void writeString( File file, String content )
- throws IOException
- {
- writeBytes( file, content.getBytes( "UTF-8" ), 1 );
- }
-
- public static void readProps( File file, Properties props )
- throws IOException
- {
- FileInputStream fis = null;
- try
- {
- fis = new FileInputStream( file );
- props.load( fis );
- fis.close();
- fis = null;
- }
- finally
- {
- close( fis );
- }
- }
-
- public static void writeProps( File file, Properties props )
- throws IOException
- {
- file.getParentFile().mkdirs();
-
- FileOutputStream fos = null;
- try
- {
- fos = new FileOutputStream( file );
- props.store( fos, "aether-test" );
- fos.close();
- fos = null;
- }
- finally
- {
- close( fos );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestLocalRepositoryManager.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestLocalRepositoryManager.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestLocalRepositoryManager.java
deleted file mode 100644
index f97fb78..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestLocalRepositoryManager.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.io.IOException;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.LocalArtifactRegistration;
-import org.eclipse.aether.repository.LocalArtifactRequest;
-import org.eclipse.aether.repository.LocalArtifactResult;
-import org.eclipse.aether.repository.LocalMetadataRegistration;
-import org.eclipse.aether.repository.LocalMetadataRequest;
-import org.eclipse.aether.repository.LocalMetadataResult;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * A simplistic local repository manager that uses a temporary base directory.
- */
-public class TestLocalRepositoryManager
- implements LocalRepositoryManager
-{
-
- private LocalRepository localRepository;
-
- private Set<Artifact> unavailableArtifacts = new HashSet<Artifact>();
-
- private Set<Artifact> artifactRegistrations = new HashSet<Artifact>();
-
- private Set<Metadata> metadataRegistrations = new HashSet<Metadata>();
-
- public TestLocalRepositoryManager()
- {
- try
- {
- localRepository = new LocalRepository( TestFileUtils.createTempDir( "test-local-repo" ) );
- }
- catch ( IOException e )
- {
- throw new IllegalStateException( e );
- }
- }
-
- public LocalRepository getRepository()
- {
- return localRepository;
- }
-
- public String getPathForLocalArtifact( Artifact artifact )
- {
- String artifactId = artifact.getArtifactId();
- String groupId = artifact.getGroupId();
- String extension = artifact.getExtension();
- String version = artifact.getVersion();
- String classifier = artifact.getClassifier();
-
- String path =
- String.format( "%s/%s/%s/%s-%s-%s%s.%s", groupId, artifactId, version, groupId, artifactId, version,
- classifier, extension );
- return path;
- }
-
- public String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context )
- {
- return getPathForLocalArtifact( artifact );
- }
-
- public String getPathForLocalMetadata( Metadata metadata )
- {
- String artifactId = metadata.getArtifactId();
- String groupId = metadata.getGroupId();
- String version = metadata.getVersion();
- return String.format( "%s/%s/%s/%s-%s-%s.xml", groupId, artifactId, version, groupId, artifactId, version );
- }
-
- public String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context )
- {
- return getPathForLocalMetadata( metadata );
- }
-
- public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request )
- {
- Artifact artifact = request.getArtifact();
-
- LocalArtifactResult result = new LocalArtifactResult( request );
- File file = new File( localRepository.getBasedir(), getPathForLocalArtifact( artifact ) );
- result.setFile( file.isFile() ? file : null );
- result.setAvailable( file.isFile() && !unavailableArtifacts.contains( artifact ) );
-
- return result;
- }
-
- public void add( RepositorySystemSession session, LocalArtifactRegistration request )
- {
- artifactRegistrations.add( request.getArtifact() );
- }
-
- public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )
- {
- Metadata metadata = request.getMetadata();
-
- LocalMetadataResult result = new LocalMetadataResult( request );
- File file = new File( localRepository.getBasedir(), getPathForLocalMetadata( metadata ) );
- result.setFile( file.isFile() ? file : null );
-
- return result;
- }
-
- public void add( RepositorySystemSession session, LocalMetadataRegistration request )
- {
- metadataRegistrations.add( request.getMetadata() );
- }
-
- public Set<Artifact> getArtifactRegistration()
- {
- return artifactRegistrations;
- }
-
- public Set<Metadata> getMetadataRegistration()
- {
- return metadataRegistrations;
- }
-
- public void setArtifactAvailability( Artifact artifact, boolean available )
- {
- if ( available )
- {
- unavailableArtifacts.remove( artifact );
- }
- else
- {
- unavailableArtifacts.add( artifact );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestLoggerFactory.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestLoggerFactory.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestLoggerFactory.java
deleted file mode 100644
index ea92825..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestLoggerFactory.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.PrintStream;
-
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-
-/**
- * A logger factory that writes to some {@link PrintStream}.
- */
-public final class TestLoggerFactory
- implements LoggerFactory
-{
-
- private final Logger logger;
-
- /**
- * Creates a new logger factory that writes to {@link System#out}.
- */
- public TestLoggerFactory()
- {
- this( null );
- }
-
- /**
- * Creates a new logger factory that writes to the specified print stream.
- */
- public TestLoggerFactory( PrintStream out )
- {
- logger = new TestLogger( out );
- }
-
- public Logger getLogger( String name )
- {
- return logger;
- }
-
- private static final class TestLogger
- implements Logger
- {
-
- private final PrintStream out;
-
- public TestLogger( PrintStream out )
- {
- this.out = ( out != null ) ? out : System.out;
- }
-
- public boolean isWarnEnabled()
- {
- return true;
- }
-
- public void warn( String msg, Throwable error )
- {
- out.println( "[WARN] " + msg );
- if ( error != null )
- {
- error.printStackTrace( out );
- }
- }
-
- public void warn( String msg )
- {
- warn( msg, null );
- }
-
- public boolean isDebugEnabled()
- {
- return true;
- }
-
- public void debug( String msg, Throwable error )
- {
- out.println( "[DEBUG] " + msg );
- if ( error != null )
- {
- error.printStackTrace( out );
- }
- }
-
- public void debug( String msg )
- {
- debug( msg, null );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestUtils.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestUtils.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestUtils.java
deleted file mode 100644
index cc0c4cb..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestUtils.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.resolution.VersionRangeResult;
-
-/**
- * Utility methods to help unit testing.
- */
-public class TestUtils
-{
-
- private TestUtils()
- {
- // hide constructor
- }
-
- /**
- * Creates a new repository session whose local repository manager is initialized with an instance of
- * {@link TestLocalRepositoryManager}.
- */
- public static DefaultRepositorySystemSession newSession()
- {
- DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
- session.setLocalRepositoryManager( new TestLocalRepositoryManager() );
- return session;
- }
-
- /**
- * Creates a new dependency collection context.
- */
- public static DependencyCollectionContext newCollectionContext( RepositorySystemSession session,
- Dependency dependency,
- List<Dependency> managedDependencies )
- {
- return new TestDependencyCollectionContext( session, null, dependency, managedDependencies );
- }
-
- /**
- * Creates a new dependency collection context.
- */
- public static DependencyCollectionContext newCollectionContext( RepositorySystemSession session, Artifact artifact,
- Dependency dependency,
- List<Dependency> managedDependencies )
- {
- return new TestDependencyCollectionContext( session, artifact, dependency, managedDependencies );
- }
-
- /**
- * Creates a new dependency graph transformation context.
- */
- public static DependencyGraphTransformationContext newTransformationContext( RepositorySystemSession session )
- {
- return new TestDependencyGraphTransformationContext( session );
- }
-
- /**
- * Creates a new version filter context from the specified session and version range result.
- */
- public static VersionFilter.VersionFilterContext newVersionFilterContext( RepositorySystemSession session,
- VersionRangeResult rangeResult )
- {
- return new TestVersionFilterContext( session, rangeResult );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersion.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersion.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersion.java
deleted file mode 100644
index 0fc9bab..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersion.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.version.Version;
-
-/**
- * Version ordering by {@link String#compareToIgnoreCase(String)}.
- */
-final class TestVersion
- implements Version
-{
-
- private String version;
-
- public TestVersion( String version )
- {
- this.version = version == null ? "" : version;
- }
-
- public int compareTo( Version o )
- {
- return version.compareTo( o.toString() );
- }
-
- @Override
- public int hashCode()
- {
- final int prime = 31;
- int result = 1;
- result = prime * result + ( ( version == null ) ? 0 : version.hashCode() );
- return result;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null )
- {
- return false;
- }
- if ( getClass() != obj.getClass() )
- {
- return false;
- }
- TestVersion other = (TestVersion) obj;
- if ( version == null )
- {
- if ( other.version != null )
- {
- return false;
- }
- }
- else if ( !version.equals( other.version ) )
- {
- return false;
- }
- return true;
- }
-
- @Override
- public String toString()
- {
- return version;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionConstraint.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionConstraint.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionConstraint.java
deleted file mode 100644
index bd84687..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestVersionConstraint.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-import org.eclipse.aether.version.VersionRange;
-
-/**
- * A constraint on versions for a dependency.
- */
-final class TestVersionConstraint
- implements VersionConstraint
-{
-
- private final VersionRange range;
-
- private final Version version;
-
- /**
- * Creates a version constraint from the specified version range.
- *
- * @param range The version range, must not be {@code null}.
- */
- public TestVersionConstraint( VersionRange range )
- {
- if ( range == null )
- {
- throw new IllegalArgumentException( "version range missing" );
- }
- this.range = range;
- this.version = null;
- }
-
- /**
- * Creates a version constraint from the specified version.
- *
- * @param version The version, must not be {@code null}.
- */
- public TestVersionConstraint( Version version )
- {
- if ( version == null )
- {
- throw new IllegalArgumentException( "version missing" );
- }
- this.version = version;
- this.range = null;
- }
-
- public VersionRange getRange()
- {
- return range;
- }
-
- public Version getVersion()
- {
- return version;
- }
-
- public boolean containsVersion( Version version )
- {
- if ( range == null )
- {
- return version.equals( this.version );
- }
- else
- {
- return range.containsVersion( version );
- }
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( ( range == null ) ? version : range );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- TestVersionConstraint that = (TestVersionConstraint) obj;
-
- return eq( range, that.range ) && eq( version, that.getVersion() );
- }
-
- private static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + hash( getRange() );
- hash = hash * 31 + hash( getVersion() );
- return hash;
- }
-
- private static int hash( Object obj )
- {
- return obj != null ? obj.hashCode() : 0;
- }
-
-}
[28/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_276_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_276_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_276_4.1-SNAPSHOT.ini
deleted file mode 100644
index e77a448..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_276_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,27 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:74:pom:3.5.0-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:175:pom:2.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:177:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_277_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_277_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_277_4.0-SNAPSHOT.ini
deleted file mode 100644
index 32817bd..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_277_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:278:pom:1.8.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:279:pom:4.0-SNAPSHOT
-10:280:pom:4.0-SNAPSHOT
-10:281:pom:4.0-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_279_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_279_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_279_4.0-SNAPSHOT.ini
deleted file mode 100644
index bcece4b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_279_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_280_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_280_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_280_4.0-SNAPSHOT.ini
deleted file mode 100644
index 632411e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_280_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-10:279:pom:4.0-SNAPSHOT
-10:281:pom:4.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:278:pom:1.8.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:282:pom:2.0-SNAPSHOT
-1:283:pom:1.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:279:pom:4.0-SNAPSHOT
-10:277:pom:4.0-SNAPSHOT
-10:281:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_281_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_281_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_281_4.0-SNAPSHOT.ini
deleted file mode 100644
index 2d02b8b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_281_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-10:279:pom:4.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:279:pom:4.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_284_2.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_284_2.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_284_2.0-SNAPSHOT.ini
deleted file mode 100644
index 651b3eb..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_284_2.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-10:11:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:204:pom:1.6.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.18-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:61:pom:1.2.12-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_284_2.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_284_2.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_284_2.1-SNAPSHOT.ini
deleted file mode 100644
index e49da21..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_284_2.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-10:11:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_285_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_285_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_285_4.0-SNAPSHOT.ini
deleted file mode 100644
index e6ac42f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_285_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:52:pom:1.8-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:160:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_285_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_285_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_285_4.1-SNAPSHOT.ini
deleted file mode 100644
index 0bab48a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_285_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,20 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_286_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_286_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_286_4.0-SNAPSHOT.ini
deleted file mode 100644
index 5fed984..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_286_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,45 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:287:pom:1.1.2.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:222:pom:beta8-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:174:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:172:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:156:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:288:pom:4.0-SNAPSHOT
-10:257:pom:4.0-SNAPSHOT
-1:158:pom:3.5-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_286_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_286_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_286_4.1-SNAPSHOT.ini
deleted file mode 100644
index 46ea57f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_286_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,45 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:287:pom:1.1.2.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:222:pom:beta8-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:172:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:156:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:288:pom:4.1-SNAPSHOT
-10:257:pom:4.1-SNAPSHOT
-1:158:pom:3.5-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_288_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_288_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_288_4.0-SNAPSHOT.ini
deleted file mode 100644
index d788c25..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_288_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,25 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_288_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_288_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_288_4.1-SNAPSHOT.ini
deleted file mode 100644
index db3c523..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_288_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,25 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_291_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_291_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_291_4.0-SNAPSHOT.ini
deleted file mode 100644
index a3dfe58..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_291_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,69 +0,0 @@
-[dependencies]
-1:181:pom:1.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:83:pom:1.10.0-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:3:pom:1.28-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:41:pom:5.0-SNAPSHOT
-1:197:pom:5.1.3-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:172:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:261:pom:4.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-10:233:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_291_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_291_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_291_4.1-SNAPSHOT.ini
deleted file mode 100644
index db6e739..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_291_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,74 +0,0 @@
-[dependencies]
-10:242:pom:4.1-SNAPSHOT
-1:181:pom:1.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:83:pom:1.10.0-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:365:pom:3.4.1-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:3:pom:1.28-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:41:pom:5.0-SNAPSHOT
-1:197:pom:5.1.3-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:172:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:261:pom:4.1-SNAPSHOT
-10:42:pom:4.1-SNAPSHOT
-10:12:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-10:233:pom:4.1-SNAPSHOT
-1:365:pom:3.4.1-SNAPSHOT
-10:366:pom:4.1-SNAPSHOT
-1:260:pom:2.3.3-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_292_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_292_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_292_4.0-SNAPSHOT.ini
deleted file mode 100644
index 69fc9f9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_292_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,47 +0,0 @@
-[dependencies]
-1:182:pom:3.2-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:222:pom:beta8-SNAPSHOT
-1:197:pom:5.1.3-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:293:pom:0.2.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:294:pom:4.0-SNAPSHOT
-10:295:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:220:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:231:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:156:pom:4.0-SNAPSHOT
-10:235:pom:4.0-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_292_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_292_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_292_4.1-SNAPSHOT.ini
deleted file mode 100644
index d77271d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_292_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,48 +0,0 @@
-[dependencies]
-1:182:pom:3.2-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:222:pom:beta8-SNAPSHOT
-1:197:pom:5.1.3-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.4.C-SNAPSHOT
-1:293:pom:0.2.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:294:pom:4.1-SNAPSHOT
-10:295:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:220:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:231:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:156:pom:4.1-SNAPSHOT
-10:235:pom:4.1-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:32:pom:720-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_294_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_294_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_294_4.0-SNAPSHOT.ini
deleted file mode 100644
index d32b540..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_294_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:295:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:235:pom:4.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_294_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_294_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_294_4.1-SNAPSHOT.ini
deleted file mode 100644
index 3a2d866..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_294_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,27 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:295:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:235:pom:4.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_295_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_295_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_295_4.0-SNAPSHOT.ini
deleted file mode 100644
index e9c0f6b..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_295_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_295_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_295_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_295_4.1-SNAPSHOT.ini
deleted file mode 100644
index 256b19f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_295_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_297_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_297_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_297_4.0-SNAPSHOT.ini
deleted file mode 100644
index 4a8f0bc..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_297_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,33 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-10:220:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:298:pom:4.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-1:299:pom:7.20-SNAPSHOT
-1:300:pom:7.1.8-SNAPSHOT
-10:301:pom:4.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:306:pom:4.0-SNAPSHOT
-10:307:pom:4.0-SNAPSHOT
-10:203:pom:4.0-SNAPSHOT
-10:316:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_297_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_297_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_297_4.1-SNAPSHOT.ini
deleted file mode 100644
index 8e71771..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_297_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,32 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-10:220:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:298:pom:4.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-1:299:pom:7.20-SNAPSHOT
-10:301:pom:4.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:306:pom:4.1-SNAPSHOT
-10:307:pom:4.1-SNAPSHOT
-10:203:pom:4.1-SNAPSHOT
-10:316:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_298_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_298_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_298_4.0-SNAPSHOT.ini
deleted file mode 100644
index 1c97dd8..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_298_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,33 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:288:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_298_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_298_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_298_4.1-SNAPSHOT.ini
deleted file mode 100644
index efab19c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_298_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,33 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:288:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_301_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_301_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_301_4.0-SNAPSHOT.ini
deleted file mode 100644
index 9626f66..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_301_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,47 +0,0 @@
-[dependencies]
-1:302:pom:1.015-SNAPSHOT
-1:73:pom:2.3.1-SNAPSHOT
-1:74:pom:3.5.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:156:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:61:pom:1.2.12-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:181:pom:1.0-SNAPSHOT
-1:182:pom:3.2-SNAPSHOT
-1:50:pom:3.4.1-SNAPSHOT
-1:158:pom:3.5-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:51:pom:1.6.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-10:303:pom:4.0-SNAPSHOT
-10:174:pom:4.0-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:189:pom:4.0-SNAPSHOT
-10:202:pom:4.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:305:pom:4.0-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_301_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_301_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_301_4.1-SNAPSHOT.ini
deleted file mode 100644
index b5d06af..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_301_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,49 +0,0 @@
-[dependencies]
-1:302:pom:1.015-SNAPSHOT
-1:73:pom:2.3.1-SNAPSHOT
-1:73:pom:2.4.1-SNAPSHOT
-1:74:pom:3.5.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:156:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:153:pom:1.1.1-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:61:pom:1.2.12-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:181:pom:1.0-SNAPSHOT
-1:182:pom:3.2-SNAPSHOT
-1:50:pom:3.4.1-SNAPSHOT
-1:158:pom:3.5-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:51:pom:1.6.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-10:303:pom:4.1-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:359:pom:4.1-SNAPSHOT
-10:189:pom:4.1-SNAPSHOT
-10:202:pom:4.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:305:pom:4.1-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_303_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_303_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_303_4.0-SNAPSHOT.ini
deleted file mode 100644
index e3c6a74..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_303_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:304:pom:9.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_303_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_303_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_303_4.1-SNAPSHOT.ini
deleted file mode 100644
index e3c6a74..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_303_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:304:pom:9.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_305_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_305_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_305_4.0-SNAPSHOT.ini
deleted file mode 100644
index 3610429..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_305_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,42 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.4-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:78:pom:2.6-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:287:pom:1.3-SNAPSHOT
-1:222:pom:1.1.1-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:172:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:257:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_305_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_305_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_305_4.1-SNAPSHOT.ini
deleted file mode 100644
index d9287b0..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_305_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,43 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.4-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:78:pom:2.6-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:287:pom:1.3-SNAPSHOT
-1:222:pom:1.1.1-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:172:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:357:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:257:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_306_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_306_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_306_4.0-SNAPSHOT.ini
deleted file mode 100644
index 6d1f2a3..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_306_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,36 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:230:pom:4.0-SNAPSHOT
-10:226:pom:4.0-SNAPSHOT
-10:231:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:285:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:238:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_306_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_306_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_306_4.1-SNAPSHOT.ini
deleted file mode 100644
index 41467e9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_306_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,36 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:230:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:231:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:285:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:238:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_307_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_307_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_307_4.0-SNAPSHOT.ini
deleted file mode 100644
index c495bb1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_307_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,63 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:308:pom:1.8-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:309:pom:1.15.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:310:pom:4.2.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:188:pom:1.9-SNAPSHOT
-1:311:pom:2.3.0-SNAPSHOT
-1:312:pom:4.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:313:pom:2.2-SNAPSHOT
-1:314:pom:6.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:251:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-10:233:pom:4.0-SNAPSHOT
-10:172:pom:4.0-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:315:pom:4.0-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-10:257:pom:4.0-SNAPSHOT
-10:174:pom:4.0-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-10:305:pom:4.0-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_307_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_307_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_307_4.1-SNAPSHOT.ini
deleted file mode 100644
index 59b3b89..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_307_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,64 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:308:pom:1.8-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:309:pom:1.15.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:310:pom:4.2.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:188:pom:1.9-SNAPSHOT
-1:311:pom:2.3.0-SNAPSHOT
-1:312:pom:4.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:313:pom:2.2-SNAPSHOT
-1:314:pom:6.0-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:251:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-10:233:pom:4.1-SNAPSHOT
-10:172:pom:4.1-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:315:pom:4.1-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-10:257:pom:4.1-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-10:305:pom:4.1-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_315_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_315_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_315_4.0-SNAPSHOT.ini
deleted file mode 100644
index e6e9bef..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_315_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,35 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:24:pom:1.2.10-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:211:pom:1.0-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:202:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:235:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:174:pom:4.0-SNAPSHOT
-10:203:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_315_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_315_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_315_4.1-SNAPSHOT.ini
deleted file mode 100644
index 50bb544..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_315_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,38 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:24:pom:1.2.10-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:211:pom:1.0-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:359:pom:4.1-SNAPSHOT
-10:189:pom:4.1-SNAPSHOT
-10:202:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:235:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
-10:203:pom:4.1-SNAPSHOT
-1:367:pom:8.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_316_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_316_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_316_4.0-SNAPSHOT.ini
deleted file mode 100644
index b8afaed..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_316_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:232:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_316_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_316_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_316_4.1-SNAPSHOT.ini
deleted file mode 100644
index 9639623..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_316_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_317_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_317_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_317_4.0-SNAPSHOT.ini
deleted file mode 100644
index db57585..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_317_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,20 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:318:pom:4.0-SNAPSHOT
-10:321:pom:4.0-SNAPSHOT
-10:319:pom:4.0-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-1:51:pom:1.6.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:118:pom:10.5.3.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_317_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_317_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_317_4.1-SNAPSHOT.ini
deleted file mode 100644
index 1cd43be..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_317_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,20 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:318:pom:4.1-SNAPSHOT
-10:321:pom:4.1-SNAPSHOT
-10:319:pom:4.1-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-1:51:pom:1.6.2-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:118:pom:10.5.3.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_318_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_318_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_318_4.0-SNAPSHOT.ini
deleted file mode 100644
index 84fda91..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_318_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[dependencies]
-10:173:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:319:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_318_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_318_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_318_4.1-SNAPSHOT.ini
deleted file mode 100644
index 11992b8..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_318_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,22 +0,0 @@
-[dependencies]
-10:173:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:319:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_319_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_319_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_319_4.0-SNAPSHOT.ini
deleted file mode 100644
index 61d1f3f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_319_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,19 +0,0 @@
-[dependencies]
-10:173:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:174:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:318:pom:4.0-SNAPSHOT
-10:320:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_319_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_319_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_319_4.1-SNAPSHOT.ini
deleted file mode 100644
index 69e9d08..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_319_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,19 +0,0 @@
-[dependencies]
-10:173:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:318:pom:4.1-SNAPSHOT
-10:320:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_320_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_320_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_320_4.0-SNAPSHOT.ini
deleted file mode 100644
index e5274a8..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_320_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:173:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:318:pom:4.0-SNAPSHOT
-10:319:pom:4.0-SNAPSHOT
-1:201:pom:3.5.2-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_320_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_320_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_320_4.1-SNAPSHOT.ini
deleted file mode 100644
index 3b1f588..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_320_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:173:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:318:pom:4.1-SNAPSHOT
-10:319:pom:4.1-SNAPSHOT
-1:201:pom:3.5.2-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_321_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_321_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_321_4.0-SNAPSHOT.ini
deleted file mode 100644
index 521563c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_321_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:15:pom:1.36.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:322:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_321_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_321_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_321_4.1-SNAPSHOT.ini
deleted file mode 100644
index 224a33e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_321_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:15:pom:1.36.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:322:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_322_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_322_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_322_4.0-SNAPSHOT.ini
deleted file mode 100644
index 13f3b0a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_322_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-[dependencies]
-1:82:pom:9.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:85:pom:6.4-SNAPSHOT
-1:85:pom:9.1-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:26:pom:3.8.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:94:pom:4.0-SNAPSHOT
-1:323:pom:11.0-SNAPSHOT
-1:324:pom:5.1-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:225:pom:4.0-SNAPSHOT
-10:325:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:335:pom:4.0-SNAPSHOT
-10:336:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_322_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_322_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_322_4.1-SNAPSHOT.ini
deleted file mode 100644
index bf492b7..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_322_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,31 +0,0 @@
-[dependencies]
-1:82:pom:9.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:85:pom:6.4-SNAPSHOT
-1:85:pom:9.1-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:26:pom:3.8.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:94:pom:4.0-SNAPSHOT
-1:323:pom:11.0-SNAPSHOT
-1:324:pom:5.1-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:21:pom:3.2.1.2-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:225:pom:4.1-SNAPSHOT
-10:325:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:335:pom:4.1-SNAPSHOT
-10:336:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_325_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_325_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_325_4.0-SNAPSHOT.ini
deleted file mode 100644
index 861c27c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_325_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,33 +0,0 @@
-[dependencies]
-1:326:pom:0.9.7-SNAPSHOT
-1:24:pom:1.2.10-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:94:pom:4.0-SNAPSHOT
-1:323:pom:11.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:240:pom:720-SNAPSHOT
-1:116:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:207:pom:4.0-SNAPSHOT
-10:327:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:329:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
-10:238:pom:4.0-SNAPSHOT
-10:331:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:332:pom:4.0-SNAPSHOT
-10:330:pom:4.0-SNAPSHOT
-10:333:pom:4.0-SNAPSHOT
-10:334:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_325_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_325_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_325_4.1-SNAPSHOT.ini
deleted file mode 100644
index 29005f4..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_325_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,33 +0,0 @@
-[dependencies]
-1:326:pom:0.9.7-SNAPSHOT
-1:24:pom:1.2.10-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:94:pom:4.0-SNAPSHOT
-1:323:pom:11.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:240:pom:720-SNAPSHOT
-1:116:pom:4.0-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:207:pom:4.1-SNAPSHOT
-10:327:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:329:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
-10:238:pom:4.1-SNAPSHOT
-10:331:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:332:pom:4.1-SNAPSHOT
-10:330:pom:4.1-SNAPSHOT
-10:333:pom:4.1-SNAPSHOT
-10:334:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_327_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_327_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_327_4.0-SNAPSHOT.ini
deleted file mode 100644
index da3b6e2..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_327_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:328:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:238:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_327_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_327_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_327_4.1-SNAPSHOT.ini
deleted file mode 100644
index e2bfac8..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_327_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:328:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:238:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_328_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_328_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_328_4.0-SNAPSHOT.ini
deleted file mode 100644
index 60b3e5f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_328_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,53 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.4.1-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:172:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:246:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:251:pom:4.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:291:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:315:pom:4.0-SNAPSHOT
-10:233:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:288:pom:4.0-SNAPSHOT
-10:257:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:286:pom:4.0-SNAPSHOT
-10:174:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_328_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_328_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_328_4.1-SNAPSHOT.ini
deleted file mode 100644
index 33b7339..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_328_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,53 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.4.1-SNAPSHOT
-1:50:pom:3.5-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:19:pom:6.3-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:172:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:246:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:251:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:291:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:315:pom:4.1-SNAPSHOT
-10:233:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:288:pom:4.1-SNAPSHOT
-10:257:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:286:pom:4.1-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_329_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_329_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_329_4.0-SNAPSHOT.ini
deleted file mode 100644
index d1fa191..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_329_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-1:24:pom:1.2.10-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:212:pom:4.0-SNAPSHOT
-10:238:pom:4.0-SNAPSHOT
-10:330:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_329_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_329_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_329_4.1-SNAPSHOT.ini
deleted file mode 100644
index c931d50..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_329_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-1:24:pom:1.2.10-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:212:pom:4.1-SNAPSHOT
-10:238:pom:4.1-SNAPSHOT
-10:330:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_330_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_330_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_330_4.0-SNAPSHOT.ini
deleted file mode 100644
index c2c4561..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_330_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_330_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_330_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_330_4.1-SNAPSHOT.ini
deleted file mode 100644
index c2c4561..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_330_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_331_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_331_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_331_4.0-SNAPSHOT.ini
deleted file mode 100644
index 7c00f7e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_331_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,24 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:238:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:288:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_331_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_331_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_331_4.1-SNAPSHOT.ini
deleted file mode 100644
index f68cbb3..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_331_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,24 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:238:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:288:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_332_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_332_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_332_4.0-SNAPSHOT.ini
deleted file mode 100644
index 9f5e6d6..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_332_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-10:238:pom:4.0-SNAPSHOT
-10:331:pom:4.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-10:330:pom:4.0-SNAPSHOT
-10:333:pom:4.0-SNAPSHOT
-10:334:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_332_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_332_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_332_4.1-SNAPSHOT.ini
deleted file mode 100644
index 1e32f44..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_332_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-10:238:pom:4.1-SNAPSHOT
-10:331:pom:4.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-10:330:pom:4.1-SNAPSHOT
-10:333:pom:4.1-SNAPSHOT
-10:334:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_333_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_333_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_333_4.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_333_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_333_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_333_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_333_4.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_333_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_334_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_334_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_334_4.0-SNAPSHOT.ini
deleted file mode 100644
index 2be90d3..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_334_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,24 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:238:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:331:pom:4.0-SNAPSHOT
-10:288:pom:4.0-SNAPSHOT
-10:286:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_334_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_334_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_334_4.1-SNAPSHOT.ini
deleted file mode 100644
index b5897b1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_334_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,24 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:118:pom:10.2.2.0-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:239:pom:3.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:154:pom:3.3-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:238:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:331:pom:4.1-SNAPSHOT
-10:288:pom:4.1-SNAPSHOT
-10:286:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_335_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_335_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_335_4.0-SNAPSHOT.ini
deleted file mode 100644
index c291a39..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_335_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:83:pom:1.10.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-1:16:pom:1.8.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_335_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_335_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_335_4.1-SNAPSHOT.ini
deleted file mode 100644
index f268bc5..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_335_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-1:83:pom:1.10.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-1:16:pom:1.8.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_336_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_336_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_336_4.0-SNAPSHOT.ini
deleted file mode 100644
index 29f58e8..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_336_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,16 +0,0 @@
-[dependencies]
-1:326:pom:0.9.7-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:26:pom:3.8.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:94:pom:4.0-SNAPSHOT
-1:323:pom:11.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:102:pom:1.busObj.1-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:322:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_336_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_336_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_336_4.1-SNAPSHOT.ini
deleted file mode 100644
index 13f3f91..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_336_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,16 +0,0 @@
-[dependencies]
-1:326:pom:0.9.7-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:26:pom:3.8.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:94:pom:4.0-SNAPSHOT
-1:323:pom:11.0-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:102:pom:1.busObj.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:322:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_337_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_337_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_337_4.0-SNAPSHOT.ini
deleted file mode 100644
index 05b1294..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_337_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
[18/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java b/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
deleted file mode 100644
index d9011a5..0000000
--- a/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
+++ /dev/null
@@ -1,1309 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.net.ConnectException;
-import java.net.ServerSocket;
-import java.net.SocketTimeoutException;
-import java.net.URI;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.apache.http.client.HttpResponseException;
-import org.apache.http.conn.ConnectTimeoutException;
-import org.apache.http.pool.ConnPoolControl;
-import org.apache.http.pool.PoolStats;
-import org.eclipse.aether.ConfigurationProperties;
-import org.eclipse.aether.DefaultRepositoryCache;
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.GetTask;
-import org.eclipse.aether.spi.connector.transport.PeekTask;
-import org.eclipse.aether.spi.connector.transport.PutTask;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.transfer.NoTransporterException;
-import org.eclipse.aether.transfer.TransferCancelledException;
-import org.eclipse.aether.util.repository.AuthenticationBuilder;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TestName;
-
-/**
- */
-public class HttpTransporterTest
-{
-
- static
- {
- System.setProperty( "javax.net.ssl.trustStore",
- new File( "src/test/resources/ssl/server-store" ).getAbsolutePath() );
- System.setProperty( "javax.net.ssl.trustStorePassword", "server-pwd" );
- System.setProperty( "javax.net.ssl.keyStore",
- new File( "src/test/resources/ssl/client-store" ).getAbsolutePath() );
- System.setProperty( "javax.net.ssl.keyStorePassword", "client-pwd" );
- }
-
- private static final String REPO_ID = "test";
-
- @Rule
- public TestName testName = new TestName();
-
- private DefaultRepositorySystemSession session;
-
- private TransporterFactory factory;
-
- private Transporter transporter;
-
- private File repoDir;
-
- private HttpServer httpServer;
-
- private Authentication auth;
-
- private Proxy proxy;
-
- private RemoteRepository newRepo( String url )
- {
- return new RemoteRepository.Builder( REPO_ID, "default", url ).setAuthentication( auth ).setProxy( proxy ).build();
- }
-
- private void newTransporter( String url )
- throws Exception
- {
- if ( transporter != null )
- {
- transporter.close();
- transporter = null;
- }
- transporter = factory.newInstance( session, newRepo( url ) );
- }
-
- @Before
- public void setUp()
- throws Exception
- {
- System.out.println( "=== " + testName.getMethodName() + " ===" );
- session = TestUtils.newSession();
- factory = new HttpTransporterFactory( new TestLoggerFactory() );
- repoDir = TestFileUtils.createTempDir();
- TestFileUtils.writeString( new File( repoDir, "file.txt" ), "test" );
- TestFileUtils.writeString( new File( repoDir, "dir/file.txt" ), "test" );
- TestFileUtils.writeString( new File( repoDir, "empty.txt" ), "" );
- TestFileUtils.writeString( new File( repoDir, "some space.txt" ), "space" );
- File resumable = new File( repoDir, "resume.txt" );
- TestFileUtils.writeString( resumable, "resumable" );
- resumable.setLastModified( System.currentTimeMillis() - 90 * 1000 );
- httpServer = new HttpServer().setRepoDir( repoDir ).start();
- newTransporter( httpServer.getHttpUrl() );
- }
-
- @After
- public void tearDown()
- throws Exception
- {
- if ( transporter != null )
- {
- transporter.close();
- transporter = null;
- }
- if ( httpServer != null )
- {
- httpServer.stop();
- httpServer = null;
- }
- factory = null;
- session = null;
- }
-
- @Test
- public void testClassify()
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( new FileNotFoundException() ) );
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( new HttpResponseException( 403, "Forbidden" ) ) );
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( new HttpResponseException( 404, "Not Found" ) ) );
- }
-
- @Test
- public void testPeek()
- throws Exception
- {
- transporter.peek( new PeekTask( URI.create( "repo/file.txt" ) ) );
- }
-
- @Test
- public void testPeek_NotFound()
- throws Exception
- {
- try
- {
- transporter.peek( new PeekTask( URI.create( "repo/missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( HttpResponseException e )
- {
- assertEquals( 404, e.getStatusCode() );
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testPeek_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.peek( new PeekTask( URI.create( "repo/missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testPeek_Authenticated()
- throws Exception
- {
- httpServer.setAuthentication( "testuser", "testpass" );
- auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- newTransporter( httpServer.getHttpUrl() );
- transporter.peek( new PeekTask( URI.create( "repo/file.txt" ) ) );
- }
-
- @Test
- public void testPeek_Unauthenticated()
- throws Exception
- {
- httpServer.setAuthentication( "testuser", "testpass" );
- try
- {
- transporter.peek( new PeekTask( URI.create( "repo/file.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( HttpResponseException e )
- {
- assertEquals( 401, e.getStatusCode() );
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testPeek_ProxyAuthenticated()
- throws Exception
- {
- httpServer.setProxyAuthentication( "testuser", "testpass" );
- auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort(), auth );
- newTransporter( "http://bad.localhost:1/" );
- transporter.peek( new PeekTask( URI.create( "repo/file.txt" ) ) );
- }
-
- @Test
- public void testPeek_ProxyUnauthenticated()
- throws Exception
- {
- httpServer.setProxyAuthentication( "testuser", "testpass" );
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort() );
- newTransporter( "http://bad.localhost:1/" );
- try
- {
- transporter.peek( new PeekTask( URI.create( "repo/file.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( HttpResponseException e )
- {
- assertEquals( 407, e.getStatusCode() );
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testPeek_SSL()
- throws Exception
- {
- httpServer.addSslConnector();
- newTransporter( httpServer.getHttpsUrl() );
- transporter.peek( new PeekTask( URI.create( "repo/file.txt" ) ) );
- }
-
- @Test
- public void testPeek_Redirect()
- throws Exception
- {
- httpServer.addSslConnector();
- transporter.peek( new PeekTask( URI.create( "redirect/file.txt" ) ) );
- transporter.peek( new PeekTask( URI.create( "redirect/file.txt?scheme=https" ) ) );
- }
-
- @Test
- public void testGet_ToMemory()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "repo/file.txt" ) ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( task.getDataString(), listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_ToFile()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "failure" );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "repo/file.txt" ) ).setDataFile( file ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", TestFileUtils.readString( file ) );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "test", listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_EmptyResource()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "failure" );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "repo/empty.txt" ) ).setDataFile( file ).setListener( listener );
- transporter.get( task );
- assertEquals( "", TestFileUtils.readString( file ) );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 0, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- assertEquals( "", listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_EncodedResourcePath()
- throws Exception
- {
- GetTask task = new GetTask( URI.create( "repo/some%20space.txt" ) );
- transporter.get( task );
- assertEquals( "space", task.getDataString() );
- }
-
- @Test
- public void testGet_Authenticated()
- throws Exception
- {
- httpServer.setAuthentication( "testuser", "testpass" );
- auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- newTransporter( httpServer.getHttpUrl() );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "repo/file.txt" ) ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( task.getDataString(), listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_Unauthenticated()
- throws Exception
- {
- httpServer.setAuthentication( "testuser", "testpass" );
- try
- {
- transporter.get( new GetTask( URI.create( "repo/file.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( HttpResponseException e )
- {
- assertEquals( 401, e.getStatusCode() );
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_ProxyAuthenticated()
- throws Exception
- {
- httpServer.setProxyAuthentication( "testuser", "testpass" );
- Authentication auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort(), auth );
- newTransporter( "http://bad.localhost:1/" );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "repo/file.txt" ) ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( task.getDataString(), listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_ProxyUnauthenticated()
- throws Exception
- {
- httpServer.setProxyAuthentication( "testuser", "testpass" );
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort() );
- newTransporter( "http://bad.localhost:1/" );
- try
- {
- transporter.get( new GetTask( URI.create( "repo/file.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( HttpResponseException e )
- {
- assertEquals( 407, e.getStatusCode() );
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_SSL()
- throws Exception
- {
- httpServer.addSslConnector();
- newTransporter( httpServer.getHttpsUrl() );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "repo/file.txt" ) ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( task.getDataString(), listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_WebDav()
- throws Exception
- {
- httpServer.setWebDav( HttpServer.WebDav.REQUIRED );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "repo/dir/file.txt" ) ).setListener( listener );
- ( (HttpTransporter) transporter ).getState().setWebDav( true );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( task.getDataString(), listener.baos.toString( "UTF-8" ) );
- assertEquals( httpServer.getLogEntries().toString(), 1, httpServer.getLogEntries().size() );
- }
-
- @Test
- public void testGet_Redirect()
- throws Exception
- {
- httpServer.addSslConnector();
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "redirect/file.txt?scheme=https" ) ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( task.getDataString(), listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_Resume()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "re" );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "repo/resume.txt" ) ).setDataFile( file, true ).setListener( listener );
- transporter.get( task );
- assertEquals( "resumable", TestFileUtils.readString( file ) );
- assertEquals( 1, listener.startedCount );
- assertEquals( 2, listener.dataOffset );
- assertEquals( 9, listener.dataLength );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "sumable", listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_ResumeLocalContentsOutdated()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "re" );
- file.setLastModified( System.currentTimeMillis() - 5 * 60 * 1000 );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "repo/resume.txt" ) ).setDataFile( file, true ).setListener( listener );
- transporter.get( task );
- assertEquals( "resumable", TestFileUtils.readString( file ) );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 9, listener.dataLength );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "resumable", listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_ResumeRangesNotSupportedByServer()
- throws Exception
- {
- httpServer.setRangeSupport( false );
- File file = TestFileUtils.createTempFile( "re" );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "repo/resume.txt" ) ).setDataFile( file, true ).setListener( listener );
- transporter.get( task );
- assertEquals( "resumable", TestFileUtils.readString( file ) );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 9, listener.dataLength );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "resumable", listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_Checksums_Nexus()
- throws Exception
- {
- httpServer.setChecksumHeader( HttpServer.ChecksumHeader.NEXUS );
- GetTask task = new GetTask( URI.create( "repo/file.txt" ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", task.getChecksums().get( "SHA-1" ) );
- }
-
- @Test
- public void testGet_FileHandleLeak()
- throws Exception
- {
- for ( int i = 0; i < 100; i++ )
- {
- File file = TestFileUtils.createTempFile( "failure" );
- transporter.get( new GetTask( URI.create( "repo/file.txt" ) ).setDataFile( file ) );
- assertTrue( i + ", " + file.getAbsolutePath(), file.delete() );
- }
- }
-
- @Test
- public void testGet_NotFound()
- throws Exception
- {
- try
- {
- transporter.get( new GetTask( URI.create( "repo/missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( HttpResponseException e )
- {
- assertEquals( 404, e.getStatusCode() );
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.get( new GetTask( URI.create( "repo/file.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_StartCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelStart = true;
- GetTask task = new GetTask( URI.create( "repo/file.txt" ) ).setListener( listener );
- try
- {
- transporter.get( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- }
-
- @Test
- public void testGet_ProgressCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelProgress = true;
- GetTask task = new GetTask( URI.create( "repo/file.txt" ) ).setListener( listener );
- try
- {
- transporter.get( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 1, listener.progressedCount );
- }
-
- @Test
- public void testPut_FromMemory()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_FromFile()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "upload" );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataFile( file );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_EmptyResource()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 0, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- assertEquals( "", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_EncodedResourcePath()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task =
- new PutTask( URI.create( "repo/some%20space.txt" ) ).setListener( listener ).setDataString( "OK" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 2, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "OK", TestFileUtils.readString( new File( repoDir, "some space.txt" ) ) );
- }
-
- @Test
- public void testPut_Authenticated_ExpectContinue()
- throws Exception
- {
- httpServer.setAuthentication( "testuser", "testpass" );
- auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- newTransporter( httpServer.getHttpUrl() );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_Authenticated_ExpectContinueBroken()
- throws Exception
- {
- httpServer.setAuthentication( "testuser", "testpass" );
- httpServer.setExpectSupport( HttpServer.ExpectContinue.BROKEN );
- auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- newTransporter( httpServer.getHttpUrl() );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_Authenticated_ExpectContinueRejected()
- throws Exception
- {
- httpServer.setAuthentication( "testuser", "testpass" );
- httpServer.setExpectSupport( HttpServer.ExpectContinue.FAIL );
- auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- newTransporter( httpServer.getHttpUrl() );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_Authenticated_ExpectContinueRejected_ExplicitlyConfiguredHeader()
- throws Exception
- {
- Map<String, String> headers = new HashMap<String, String>();
- headers.put( "Expect", "100-continue" );
- session.setConfigProperty( ConfigurationProperties.HTTP_HEADERS + ".test", headers );
- httpServer.setAuthentication( "testuser", "testpass" );
- httpServer.setExpectSupport( HttpServer.ExpectContinue.FAIL );
- auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- newTransporter( httpServer.getHttpUrl() );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_Unauthenticated()
- throws Exception
- {
- httpServer.setAuthentication( "testuser", "testpass" );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- try
- {
- transporter.put( task );
- fail( "Expected error" );
- }
- catch ( HttpResponseException e )
- {
- assertEquals( 401, e.getStatusCode() );
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- }
-
- @Test
- public void testPut_ProxyAuthenticated()
- throws Exception
- {
- httpServer.setProxyAuthentication( "testuser", "testpass" );
- Authentication auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort(), auth );
- newTransporter( "http://bad.localhost:1/" );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_ProxyUnauthenticated()
- throws Exception
- {
- httpServer.setProxyAuthentication( "testuser", "testpass" );
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort() );
- newTransporter( "http://bad.localhost:1/" );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- try
- {
- transporter.put( task );
- fail( "Expected error" );
- }
- catch ( HttpResponseException e )
- {
- assertEquals( 407, e.getStatusCode() );
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- }
-
- @Test
- public void testPut_SSL()
- throws Exception
- {
- httpServer.addSslConnector();
- httpServer.setAuthentication( "testuser", "testpass" );
- auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- newTransporter( httpServer.getHttpsUrl() );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "file.txt" ) ) );
- }
-
- @Test
- public void testPut_WebDav()
- throws Exception
- {
- httpServer.setWebDav( HttpServer.WebDav.REQUIRED );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task =
- new PutTask( URI.create( "repo/dir1/dir2/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "dir1/dir2/file.txt" ) ) );
-
- assertEquals( 5, httpServer.getLogEntries().size() );
- assertEquals( "OPTIONS", httpServer.getLogEntries().get( 0 ).method );
- assertEquals( "MKCOL", httpServer.getLogEntries().get( 1 ).method );
- assertEquals( "/repo/dir1/dir2/", httpServer.getLogEntries().get( 1 ).path );
- assertEquals( "MKCOL", httpServer.getLogEntries().get( 2 ).method );
- assertEquals( "/repo/dir1/", httpServer.getLogEntries().get( 2 ).path );
- assertEquals( "MKCOL", httpServer.getLogEntries().get( 3 ).method );
- assertEquals( "/repo/dir1/dir2/", httpServer.getLogEntries().get( 3 ).path );
- assertEquals( "PUT", httpServer.getLogEntries().get( 4 ).method );
- }
-
- @Test
- public void testPut_WebDavOptional_ManuallyDisabled()
- throws Exception
- {
- session.setConfigProperty( "aether.connector.http.webDav." + REPO_ID, "false" );
- httpServer.setWebDav( HttpServer.WebDav.OPTIONAL );
- newTransporter( httpServer.getHttpUrl() );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task =
- new PutTask( URI.create( "repo/dir1/dir2/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "dir1/dir2/file.txt" ) ) );
-
- assertEquals( httpServer.getLogEntries().toString(), 2, httpServer.getLogEntries().size() );
- assertEquals( "OPTIONS", httpServer.getLogEntries().get( 0 ).method );
- assertEquals( "PUT", httpServer.getLogEntries().get( 1 ).method );
- }
-
- @Test
- public void testPut_WebDavOptional_AutomaticallyDisabled_Artifactory()
- throws Exception
- {
- testPut_WebDavOptional_AutomaticallyDisabled( "Artifactory/3.3.0" );
- }
-
- @Test
- public void testPut_WebDavOptional_AutomaticallyDisabled_Nexus()
- throws Exception
- {
- testPut_WebDavOptional_AutomaticallyDisabled( "Nexus/2.9.0-02" );
- }
-
- private void testPut_WebDavOptional_AutomaticallyDisabled( String server )
- throws Exception
- {
- httpServer.setServer( server );
- httpServer.setWebDav( HttpServer.WebDav.OPTIONAL );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task =
- new PutTask( URI.create( "repo/dir1/dir2/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "dir1/dir2/file.txt" ) ) );
-
- assertEquals( httpServer.getLogEntries().toString(), 2, httpServer.getLogEntries().size() );
- assertEquals( "OPTIONS", httpServer.getLogEntries().get( 0 ).method );
- assertEquals( "PUT", httpServer.getLogEntries().get( 1 ).method );
- }
-
- @Test
- public void testPut_FileHandleLeak()
- throws Exception
- {
- for ( int i = 0; i < 100; i++ )
- {
- File src = TestFileUtils.createTempFile( "upload" );
- File dst = new File( repoDir, "file.txt" );
- transporter.put( new PutTask( URI.create( "repo/file.txt" ) ).setDataFile( src ) );
- assertTrue( i + ", " + src.getAbsolutePath(), src.delete() );
- assertTrue( i + ", " + dst.getAbsolutePath(), dst.delete() );
- }
- }
-
- @Test
- public void testPut_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.put( new PutTask( URI.create( "repo/missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testPut_StartCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelStart = true;
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- try
- {
- transporter.put( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- }
-
- @Test
- public void testPut_ProgressCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelProgress = true;
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- try
- {
- transporter.put( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 1, listener.progressedCount );
- }
-
- @Test
- public void testGetPut_AuthCache()
- throws Exception
- {
- httpServer.setAuthentication( "testuser", "testpass" );
- auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- newTransporter( httpServer.getHttpUrl() );
- GetTask get = new GetTask( URI.create( "repo/file.txt" ) );
- transporter.get( get );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "repo/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 1, listener.startedCount );
- }
-
- @Test( timeout = 20000 )
- public void testConcurrency()
- throws Exception
- {
- httpServer.setAuthentication( "testuser", "testpass" );
- auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- newTransporter( httpServer.getHttpUrl() );
- final AtomicReference<Throwable> error = new AtomicReference<Throwable>();
- Thread threads[] = new Thread[20];
- for ( int i = 0; i < threads.length; i++ )
- {
- final String path = "repo/file.txt?i=" + i;
- threads[i] = new Thread()
- {
- @Override
- public void run()
- {
- try
- {
- for ( int j = 0; j < 100; j++ )
- {
- GetTask task = new GetTask( URI.create( path ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- }
- }
- catch ( Throwable t )
- {
- error.compareAndSet( null, t );
- System.err.println( path );
- t.printStackTrace();
- }
- }
- };
- threads[i].setName( "Task-" + i );
- }
- for ( Thread thread : threads )
- {
- thread.start();
- }
- for ( Thread thread : threads )
- {
- thread.join();
- }
- assertNull( String.valueOf( error.get() ), error.get() );
- }
-
- @Test( timeout = 1000 )
- public void testConnectTimeout()
- throws Exception
- {
- session.setConfigProperty( ConfigurationProperties.CONNECT_TIMEOUT, 100 );
- int port = 1;
- newTransporter( "http://localhost:" + port );
- try
- {
- transporter.get( new GetTask( URI.create( "repo/file.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( ConnectTimeoutException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- catch ( ConnectException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test( timeout = 1000 )
- public void testRequestTimeout()
- throws Exception
- {
- session.setConfigProperty( ConfigurationProperties.REQUEST_TIMEOUT, 100 );
- ServerSocket server = new ServerSocket( 0 );
- newTransporter( "http://localhost:" + server.getLocalPort() );
- try
- {
- try
- {
- transporter.get( new GetTask( URI.create( "repo/file.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( SocketTimeoutException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
- finally
- {
- server.close();
- }
- }
-
- @Test
- public void testUserAgent()
- throws Exception
- {
- session.setConfigProperty( ConfigurationProperties.USER_AGENT, "SomeTest/1.0" );
- newTransporter( httpServer.getHttpUrl() );
- transporter.get( new GetTask( URI.create( "repo/file.txt" ) ) );
- assertEquals( 1, httpServer.getLogEntries().size() );
- for ( HttpServer.LogEntry log : httpServer.getLogEntries() )
- {
- assertEquals( "SomeTest/1.0", log.headers.get( "User-Agent" ) );
- }
- }
-
- @Test
- public void testCustomHeaders()
- throws Exception
- {
- Map<String, String> headers = new HashMap<String, String>();
- headers.put( "User-Agent", "Custom/1.0" );
- headers.put( "X-CustomHeader", "Custom-Value" );
- session.setConfigProperty( ConfigurationProperties.USER_AGENT, "SomeTest/1.0" );
- session.setConfigProperty( ConfigurationProperties.HTTP_HEADERS + ".test", headers );
- newTransporter( httpServer.getHttpUrl() );
- transporter.get( new GetTask( URI.create( "repo/file.txt" ) ) );
- assertEquals( 1, httpServer.getLogEntries().size() );
- for ( HttpServer.LogEntry log : httpServer.getLogEntries() )
- {
- for ( Map.Entry<String, String> entry : headers.entrySet() )
- {
- assertEquals( entry.getKey(), entry.getValue(), log.headers.get( entry.getKey() ) );
- }
- }
- }
-
- @Test
- public void testCredentialEncoding_Default()
- throws Exception
- {
- testCredentialEncoding( null );
- }
-
- @Test
- public void testCredentialEncoding_Utf8()
- throws Exception
- {
- testCredentialEncoding( "UTF-8" );
- }
-
- private void testCredentialEncoding( String encoding )
- throws Exception
- {
- session.setConfigProperty( ConfigurationProperties.HTTP_CREDENTIAL_ENCODING, encoding );
- String username = "testuser", password = "\u00e4\u00f6\u00fc";
- httpServer.setAuthentication( username, password );
- httpServer.setCredentialEncoding( encoding );
- auth = new AuthenticationBuilder().addUsername( username ).addPassword( password ).build();
- newTransporter( httpServer.getHttpUrl() );
- transporter.get( new GetTask( URI.create( "repo/file.txt" ) ) );
- }
-
- @Test
- public void testServerAuthScope_FollowsSslRedirect()
- throws Exception
- {
- String username = "testuser", password = "testpass";
- httpServer.setAuthentication( username, password );
- httpServer.addSslConnector();
- auth = new AuthenticationBuilder().addUsername( username ).addPassword( password ).build();
- newTransporter( httpServer.getHttpUrl() );
- transporter.get( new GetTask( URI.create( "redirect/file.txt?scheme=https" ) ) );
- }
-
- @Test
- public void testServerAuthScope_FollowsRedirectToDifferentHost_EnabledByRepoId()
- throws Exception
- {
- session.setConfigProperty( ConfigurationProperties.HTTP_REDIRECTED_AUTHENTICATION + "." + REPO_ID, "true" );
- String username = "testuser", password = "testpass";
- httpServer.setAuthentication( username, password );
- auth = new AuthenticationBuilder().addUsername( username ).addPassword( password ).build();
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort() );
- newTransporter( "http://redirect.localhost:1/" );
- GetTask task = new GetTask( URI.create( "redirect/file.txt?host=" + httpServer.getHost() ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- }
-
- @Test
- public void testServerAuthScope_FollowsRedirectToDifferentHost_EnabledByHostName()
- throws Exception
- {
- session.setConfigProperty( ConfigurationProperties.HTTP_REDIRECTED_AUTHENTICATION, " REDIRECT.localhost , foo" );
- String username = "testuser", password = "testpass";
- httpServer.setAuthentication( username, password );
- auth = new AuthenticationBuilder().addUsername( username ).addPassword( password ).build();
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort() );
- newTransporter( "http://redirect.localhost:1/" );
- GetTask task = new GetTask( URI.create( "redirect/file.txt?host=" + httpServer.getHost() ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- }
-
- @Test
- public void testServerAuthScope_FollowsRedirectToDifferentHost_DisabledByDefault()
- throws Exception
- {
- String username = "testuser", password = "testpass";
- httpServer.setAuthentication( username, password );
- auth = new AuthenticationBuilder().addUsername( username ).addPassword( password ).build();
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort() );
- newTransporter( "http://redirect.localhost:1/" );
- GetTask task = new GetTask( URI.create( "redirect/file.txt?host=" + httpServer.getHost() ) );
- try
- {
- transporter.get( task );
- fail( "Server auth must not be used for redirect destination" );
- }
- catch ( HttpResponseException e )
- {
- assertEquals( 401, e.getStatusCode() );
- }
- }
-
- @Test
- public void testServerAuthScope_NotUsedForProxy()
- throws Exception
- {
- String username = "testuser", password = "testpass";
- httpServer.setProxyAuthentication( username, password );
- auth = new AuthenticationBuilder().addUsername( username ).addPassword( password ).build();
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort() );
- newTransporter( "http://" + httpServer.getHost() + ":12/" );
- try
- {
- transporter.get( new GetTask( URI.create( "repo/file.txt" ) ) );
- fail( "Server auth must not be used as proxy auth" );
- }
- catch ( HttpResponseException e )
- {
- assertEquals( 407, e.getStatusCode() );
- }
- }
-
- @Test
- public void testProxyAuthScope_NotUsedForServer()
- throws Exception
- {
- String username = "testuser", password = "testpass";
- httpServer.setAuthentication( username, password );
- Authentication auth = new AuthenticationBuilder().addUsername( username ).addPassword( password ).build();
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort(), auth );
- newTransporter( "http://" + httpServer.getHost() + ":12/" );
- try
- {
- transporter.get( new GetTask( URI.create( "repo/file.txt" ) ) );
- fail( "Proxy auth must not be used as server auth" );
- }
- catch ( HttpResponseException e )
- {
- assertEquals( 401, e.getStatusCode() );
- }
- }
-
- @Test
- public void testAuthSchemeReuse()
- throws Exception
- {
- httpServer.setAuthentication( "testuser", "testpass" );
- httpServer.setProxyAuthentication( "proxyuser", "proxypass" );
- session.setCache( new DefaultRepositoryCache() );
- auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- Authentication auth = new AuthenticationBuilder().addUsername( "proxyuser" ).addPassword( "proxypass" ).build();
- proxy = new Proxy( Proxy.TYPE_HTTP, httpServer.getHost(), httpServer.getHttpPort(), auth );
- newTransporter( "http://bad.localhost:1/" );
- GetTask task = new GetTask( URI.create( "repo/file.txt" ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( 3, httpServer.getLogEntries().size() );
- httpServer.getLogEntries().clear();
- newTransporter( "http://bad.localhost:1/" );
- task = new GetTask( URI.create( "repo/file.txt" ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( 1, httpServer.getLogEntries().size() );
- assertNotNull( httpServer.getLogEntries().get( 0 ).headers.get( "Authorization" ) );
- assertNotNull( httpServer.getLogEntries().get( 0 ).headers.get( "Proxy-Authorization" ) );
- }
-
- @Test
- public void testConnectionReuse()
- throws Exception
- {
- httpServer.addSslConnector();
- session.setCache( new DefaultRepositoryCache() );
- for ( int i = 0; i < 3; i++ )
- {
- newTransporter( httpServer.getHttpsUrl() );
- GetTask task = new GetTask( URI.create( "repo/file.txt" ) );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- }
- PoolStats stats =
- ( (ConnPoolControl<?>) ( (HttpTransporter) transporter ).getState().getConnectionManager() ).getTotalStats();
- assertEquals( stats.toString(), 1, stats.getAvailable() );
- }
-
- @Test( expected = NoTransporterException.class )
- public void testInit_BadProtocol()
- throws Exception
- {
- newTransporter( "bad:/void" );
- }
-
- @Test( expected = NoTransporterException.class )
- public void testInit_BadUrl()
- throws Exception
- {
- newTransporter( "http://localhost:NaN" );
- }
-
- @Test
- public void testInit_CaseInsensitiveProtocol()
- throws Exception
- {
- newTransporter( "http://localhost" );
- newTransporter( "HTTP://localhost" );
- newTransporter( "Http://localhost" );
- newTransporter( "https://localhost" );
- newTransporter( "HTTPS://localhost" );
- newTransporter( "HttpS://localhost" );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/RecordingTransportListener.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/RecordingTransportListener.java b/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/RecordingTransportListener.java
deleted file mode 100644
index d88a320..0000000
--- a/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/RecordingTransportListener.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-
-import org.eclipse.aether.spi.connector.transport.TransportListener;
-import org.eclipse.aether.transfer.TransferCancelledException;
-
-class RecordingTransportListener
- extends TransportListener
-{
-
- public final ByteArrayOutputStream baos = new ByteArrayOutputStream( 1024 );
-
- public long dataOffset;
-
- public long dataLength;
-
- public int startedCount;
-
- public int progressedCount;
-
- public boolean cancelStart;
-
- public boolean cancelProgress;
-
- @Override
- public void transportStarted( long dataOffset, long dataLength )
- throws TransferCancelledException
- {
- startedCount++;
- progressedCount = 0;
- this.dataLength = dataLength;
- this.dataOffset = dataOffset;
- baos.reset();
- if ( cancelStart )
- {
- throw new TransferCancelledException();
- }
- }
-
- @Override
- public void transportProgressed( ByteBuffer data )
- throws TransferCancelledException
- {
- progressedCount++;
- baos.write( data.array(), data.arrayOffset() + data.position(), data.remaining() );
- if ( cancelProgress )
- {
- throw new TransferCancelledException();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/UriUtilsTest.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/UriUtilsTest.java b/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/UriUtilsTest.java
deleted file mode 100644
index e3ea9fa..0000000
--- a/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/UriUtilsTest.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.junit.Test;
-
-public class UriUtilsTest
-{
-
- private String resolve( URI base, String ref )
- {
- return UriUtils.resolve( base, URI.create( ref ) ).toString();
- }
-
- @Test
- public void testResolve_BaseEmptyPath()
- {
- URI base = URI.create( "http://host" );
- assertEquals( "http://host/file.jar", resolve( base, "file.jar" ) );
- assertEquals( "http://host/dir/file.jar", resolve( base, "dir/file.jar" ) );
- assertEquals( "http://host?arg=val", resolve( base, "?arg=val" ) );
- assertEquals( "http://host/file?arg=val", resolve( base, "file?arg=val" ) );
- assertEquals( "http://host/dir/file?arg=val", resolve( base, "dir/file?arg=val" ) );
- }
-
- @Test
- public void testResolve_BaseRootPath()
- {
- URI base = URI.create( "http://host/" );
- assertEquals( "http://host/file.jar", resolve( base, "file.jar" ) );
- assertEquals( "http://host/dir/file.jar", resolve( base, "dir/file.jar" ) );
- assertEquals( "http://host/?arg=val", resolve( base, "?arg=val" ) );
- assertEquals( "http://host/file?arg=val", resolve( base, "file?arg=val" ) );
- assertEquals( "http://host/dir/file?arg=val", resolve( base, "dir/file?arg=val" ) );
- }
-
- @Test
- public void testResolve_BasePathTrailingSlash()
- {
- URI base = URI.create( "http://host/sub/dir/" );
- assertEquals( "http://host/sub/dir/file.jar", resolve( base, "file.jar" ) );
- assertEquals( "http://host/sub/dir/dir/file.jar", resolve( base, "dir/file.jar" ) );
- assertEquals( "http://host/sub/dir/?arg=val", resolve( base, "?arg=val" ) );
- assertEquals( "http://host/sub/dir/file?arg=val", resolve( base, "file?arg=val" ) );
- assertEquals( "http://host/sub/dir/dir/file?arg=val", resolve( base, "dir/file?arg=val" ) );
- }
-
- @Test
- public void testResolve_BasePathNoTrailingSlash()
- {
- URI base = URI.create( "http://host/sub/d%20r" );
- assertEquals( "http://host/sub/d%20r/file.jar", resolve( base, "file.jar" ) );
- assertEquals( "http://host/sub/d%20r/dir/file.jar", resolve( base, "dir/file.jar" ) );
- assertEquals( "http://host/sub/d%20r?arg=val", resolve( base, "?arg=val" ) );
- assertEquals( "http://host/sub/d%20r/file?arg=val", resolve( base, "file?arg=val" ) );
- assertEquals( "http://host/sub/d%20r/dir/file?arg=val", resolve( base, "dir/file?arg=val" ) );
- }
-
- private List<URI> getDirs( String base, String uri )
- {
- return UriUtils.getDirectories( ( base != null ) ? URI.create( base ) : null, URI.create( uri ) );
- }
-
- private void assertUris( List<URI> actual, String... expected )
- {
- List<String> uris = new ArrayList<String>( actual.size() );
- for ( URI uri : actual )
- {
- uris.add( uri.toString() );
- }
- assertEquals( Arrays.asList( expected ), uris );
- }
-
- @Test
- public void testGetDirectories_NoBase()
- {
- List<URI> parents = getDirs( null, "http://host/repo/sub/dir/file.jar" );
- assertUris( parents, "http://host/repo/sub/dir/", "http://host/repo/sub/", "http://host/repo/" );
-
- parents = getDirs( null, "http://host/repo/sub/dir/?file.jar" );
- assertUris( parents, "http://host/repo/sub/dir/", "http://host/repo/sub/", "http://host/repo/" );
-
- parents = getDirs( null, "http://host/" );
- assertUris( parents );
- }
-
- @Test
- public void testGetDirectories_ExplicitBaseTrailingSlash()
- {
- List<URI> parents = getDirs( "http://host/repo/", "http://host/repo/sub/dir/file.jar" );
- assertUris( parents, "http://host/repo/sub/dir/", "http://host/repo/sub/" );
-
- parents = getDirs( "http://host/repo/", "http://host/repo/sub/dir/?file.jar" );
- assertUris( parents, "http://host/repo/sub/dir/", "http://host/repo/sub/" );
-
- parents = getDirs( "http://host/repo/", "http://host/" );
- assertUris( parents );
- }
-
- @Test
- public void testGetDirectories_ExplicitBaseNoTrailingSlash()
- {
- List<URI> parents = getDirs( "http://host/repo", "http://host/repo/sub/dir/file.jar" );
- assertUris( parents, "http://host/repo/sub/dir/", "http://host/repo/sub/" );
-
- parents = getDirs( "http://host/repo", "http://host/repo/sub/dir/?file.jar" );
- assertUris( parents, "http://host/repo/sub/dir/", "http://host/repo/sub/" );
-
- parents = getDirs( "http://host/repo", "http://host/" );
- assertUris( parents );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/test/resources/logback.xml b/aether-transport-http/src/test/resources/logback.xml
deleted file mode 100644
index 6990840..0000000
--- a/aether-transport-http/src/test/resources/logback.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- ! 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.
- !-->
-
-<configuration>
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
- </encoder>
- </appender>
-
- <root level="DEBUG">
- <appender-ref ref="STDOUT" />
- </root>
-
- <logger name="org.apache.http.wire" level="INFO" />
- <logger name="org.eclipse.jetty" level="INFO" />
-</configuration>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/test/resources/ssl/README.txt
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/test/resources/ssl/README.txt b/aether-transport-http/src/test/resources/ssl/README.txt
deleted file mode 100644
index b1be71c..0000000
--- a/aether-transport-http/src/test/resources/ssl/README.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-client-store generated via
-> keytool -genkey -alias localhost -keypass client-pwd -keystore client-store -storepass client-pwd -validity 4096 -dname "cn=localhost, ou=None, L=Seattle, ST=Washington, o=ExampleOrg, c=US" -keyalg RSA
-
-server-store generated via
-> keytool -genkey -alias localhost -keypass server-pwd -keystore server-store -storepass server-pwd -validity 4096 -dname "cn=localhost, ou=None, L=Seattle, ST=Washington, o=ExampleOrg, c=US" -keyalg RSA
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/test/resources/ssl/client-store
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/test/resources/ssl/client-store b/aether-transport-http/src/test/resources/ssl/client-store
deleted file mode 100644
index fbfb39d..0000000
Binary files a/aether-transport-http/src/test/resources/ssl/client-store and /dev/null differ
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-http/src/test/resources/ssl/server-store
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/test/resources/ssl/server-store b/aether-transport-http/src/test/resources/ssl/server-store
deleted file mode 100644
index 6137fee..0000000
Binary files a/aether-transport-http/src/test/resources/ssl/server-store and /dev/null differ
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/pom.xml
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/pom.xml b/aether-transport-wagon/pom.xml
deleted file mode 100644
index bd3ad2a..0000000
--- a/aether-transport-wagon/pom.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- 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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>aether-transport-wagon</artifactId>
-
- <name>Aether Transport Wagon</name>
- <description>
- A transport implementation based on Maven Wagon.
- </description>
-
- <properties>
- <wagonVersion>1.0</wagonVersion>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-spi</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-util</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.wagon</groupId>
- <artifactId>wagon-provider-api</artifactId>
- <version>${wagonVersion}</version>
- </dependency>
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-component-annotations</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-classworlds</artifactId>
- <version>2.4.2</version>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-utils</artifactId>
- <version>3.0.24</version>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.eclipse.sisu</groupId>
- <artifactId>org.eclipse.sisu.plexus</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.sonatype.sisu</groupId>
- <artifactId>sisu-guice</artifactId>
- <classifier>no_aop</classifier>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-test-util</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-component-metadata</artifactId>
- </plugin>
- <plugin>
- <groupId>org.eclipse.sisu</groupId>
- <artifactId>sisu-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-</project>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/PlexusWagonConfigurator.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/PlexusWagonConfigurator.java b/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/PlexusWagonConfigurator.java
deleted file mode 100644
index 808d2b7..0000000
--- a/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/PlexusWagonConfigurator.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package org.eclipse.aether.internal.transport.wagon;
-
-/*
- * 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.apache.maven.wagon.Wagon;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.classworlds.realm.ClassRealm;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.component.configurator.AbstractComponentConfigurator;
-import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
-import org.codehaus.plexus.component.configurator.ConfigurationListener;
-import org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
-import org.codehaus.plexus.configuration.PlexusConfiguration;
-import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.eclipse.aether.transport.wagon.WagonConfigurator;
-
-/**
- * A wagon configurator based on the Plexus component configuration framework.
- */
-@Component( role = WagonConfigurator.class, hint = "plexus" )
-public class PlexusWagonConfigurator
- implements WagonConfigurator
-{
-
- @Requirement
- private PlexusContainer container;
-
- /**
- * Creates an uninitialized wagon configurator.
- *
- * @noreference This constructor only supports the Plexus IoC container and should not be called directly by
- * clients.
- */
- public PlexusWagonConfigurator()
- {
- // enables no-arg constructor
- }
-
- /**
- * Creates a wagon configurator using the specified Plexus container.
- *
- * @param container The Plexus container instance to use, must not be {@code null}.
- */
- public PlexusWagonConfigurator( PlexusContainer container )
- {
- if ( container == null )
- {
- throw new IllegalArgumentException( "plexus container has not been specified" );
- }
- this.container = container;
- }
-
- public void configure( Wagon wagon, Object configuration )
- throws Exception
- {
- PlexusConfiguration config = null;
- if ( configuration instanceof PlexusConfiguration )
- {
- config = (PlexusConfiguration) configuration;
- }
- else if ( configuration instanceof Xpp3Dom )
- {
- config = new XmlPlexusConfiguration( (Xpp3Dom) configuration );
- }
- else if ( configuration == null )
- {
- return;
- }
- else
- {
- throw new IllegalArgumentException( "Unexpected configuration type: " + configuration.getClass().getName() );
- }
-
- WagonComponentConfigurator configurator = new WagonComponentConfigurator();
-
- configurator.configureComponent( wagon, config, container.getContainerRealm() );
- }
-
- static class WagonComponentConfigurator
- extends AbstractComponentConfigurator
- {
-
- @Override
- public void configureComponent( Object component, PlexusConfiguration configuration,
- ExpressionEvaluator expressionEvaluator, ClassRealm containerRealm,
- ConfigurationListener listener )
- throws ComponentConfigurationException
- {
- ObjectWithFieldsConverter converter = new ObjectWithFieldsConverter();
-
- converter.processConfiguration( converterLookup, component, containerRealm, configuration,
- expressionEvaluator, listener );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/PlexusWagonProvider.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/PlexusWagonProvider.java b/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/PlexusWagonProvider.java
deleted file mode 100644
index 6f40f0d..0000000
--- a/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/PlexusWagonProvider.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.eclipse.aether.internal.transport.wagon;
-
-/*
- * 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.apache.maven.wagon.Wagon;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.eclipse.aether.transport.wagon.WagonProvider;
-
-/**
- * A wagon provider backed by a Plexus container and the wagons registered with this container.
- */
-@Component( role = WagonProvider.class, hint = "plexus" )
-public class PlexusWagonProvider
- implements WagonProvider
-{
-
- @Requirement
- private PlexusContainer container;
-
- /**
- * Creates an uninitialized wagon provider.
- *
- * @noreference This constructor only supports the Plexus IoC container and should not be called directly by
- * clients.
- */
- public PlexusWagonProvider()
- {
- // enables no-arg constructor
- }
-
- /**
- * Creates a wagon provider using the specified Plexus container.
- *
- * @param container The Plexus container instance to use, must not be {@code null}.
- */
- public PlexusWagonProvider( PlexusContainer container )
- {
- if ( container == null )
- {
- throw new IllegalArgumentException( "plexus container has not been specified" );
- }
- this.container = container;
- }
-
- public Wagon lookup( String roleHint )
- throws Exception
- {
- return container.lookup( Wagon.class, roleHint );
- }
-
- public void release( Wagon wagon )
- {
- try
- {
- if ( wagon != null )
- {
- container.release( wagon );
- }
- }
- catch ( Exception e )
- {
- // too bad
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/package-info.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/package-info.java b/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/package-info.java
deleted file mode 100644
index df14e9c..0000000
--- a/aether-transport-wagon/src/main/java/org/eclipse/aether/internal/transport/wagon/package-info.java
+++ /dev/null
@@ -1,25 +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.
- */
-/**
- * Integration with the Plexus IoC container which is the native runtime environment expected by many wagon
- * implementations.
- */
-package org.eclipse.aether.internal.transport.wagon;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonCancelledException.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonCancelledException.java b/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonCancelledException.java
deleted file mode 100644
index 105917f..0000000
--- a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonCancelledException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.transfer.TransferCancelledException;
-
-/**
- * Unchecked exception to allow the checked {@link TransferCancelledException} to bubble up from a wagon.
- */
-class WagonCancelledException
- extends RuntimeException
-{
-
- public WagonCancelledException( TransferCancelledException cause )
- {
- super( cause );
- }
-
- public static Exception unwrap( Exception e )
- {
- if ( e instanceof WagonCancelledException )
- {
- e = (Exception) e.getCause();
- }
- return e;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonConfigurator.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonConfigurator.java b/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonConfigurator.java
deleted file mode 100644
index 42399cb..0000000
--- a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonConfigurator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.apache.maven.wagon.Wagon;
-
-/**
- * A component to configure wagon instances with provider-specific parameters.
- */
-public interface WagonConfigurator
-{
-
- /**
- * Configures the specified wagon instance with the given configuration.
- *
- * @param wagon The wagon instance to configure, must not be {@code null}.
- * @param configuration The configuration to apply to the wagon instance, must not be {@code null}.
- * @throws Exception If the configuration could not be applied to the wagon.
- */
- void configure( Wagon wagon, Object configuration )
- throws Exception;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonProvider.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonProvider.java b/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonProvider.java
deleted file mode 100644
index 77bf9d6..0000000
--- a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.apache.maven.wagon.Wagon;
-
-/**
- * A component to acquire and release wagon instances for uploads/downloads.
- */
-public interface WagonProvider
-{
-
- /**
- * Acquires a wagon instance that matches the specified role hint. The role hint is derived from the URI scheme,
- * e.g. "http" or "file".
- *
- * @param roleHint The role hint to get a wagon for, must not be {@code null}.
- * @return The requested wagon instance, never {@code null}.
- * @throws Exception If no wagon could be retrieved for the specified role hint.
- */
- Wagon lookup( String roleHint )
- throws Exception;
-
- /**
- * Releases the specified wagon. A wagon provider may either free any resources allocated for the wagon instance or
- * return the instance back to a pool for future use.
- *
- * @param wagon The wagon to release, may be {@code null}.
- */
- void release( Wagon wagon );
-
-}
[39/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/SyncContextFactory.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/SyncContextFactory.java b/aether-impl/src/main/java/org/eclipse/aether/impl/SyncContextFactory.java
deleted file mode 100644
index 95086d1..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/SyncContextFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.SyncContext;
-
-/**
- * A factory to create synchronization contexts. A synchronization context is used to coordinate concurrent access to
- * artifacts or metadata.
- *
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface SyncContextFactory
-{
-
- /**
- * Creates a new synchronization context.
- *
- * @param session The repository session during which the context will be used, must not be {@code null}.
- * @param shared A flag indicating whether access to the artifacts/metadata associated with the new context can be
- * shared among concurrent readers or whether access needs to be exclusive to the calling thread.
- * @return The synchronization context, never {@code null}.
- * @see RepositorySystem#newSyncContext(RepositorySystemSession, boolean)
- */
- SyncContext newInstance( RepositorySystemSession session, boolean shared );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/UpdateCheck.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/UpdateCheck.java b/aether-impl/src/main/java/org/eclipse/aether/impl/UpdateCheck.java
deleted file mode 100644
index b77d2bc..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/UpdateCheck.java
+++ /dev/null
@@ -1,285 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * A request to check if an update of an artifact/metadata from a remote repository is needed.
- *
- * @param <T>
- * @param <E>
- * @see UpdateCheckManager
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public final class UpdateCheck<T, E extends RepositoryException>
-{
-
- private long localLastUpdated;
-
- private T item;
-
- private File file;
-
- private boolean fileValid = true;
-
- private String policy;
-
- private RemoteRepository repository;
-
- private RemoteRepository authoritativeRepository;
-
- private boolean required;
-
- private E exception;
-
- /**
- * Creates an uninitialized update check request.
- */
- public UpdateCheck()
- {
- }
-
- /**
- * Gets the last-modified timestamp of the corresponding item produced by a local installation. If non-zero, a
- * remote update will be surpressed if the local item is up-to-date, even if the remote item has not been cached
- * locally.
- *
- * @return The last-modified timestamp of the corresponding item produced by a local installation or {@code 0} to
- * ignore any local item.
- */
- public long getLocalLastUpdated()
- {
- return localLastUpdated;
- }
-
- /**
- * Sets the last-modified timestamp of the corresponding item produced by a local installation. If non-zero, a
- * remote update will be surpressed if the local item is up-to-date, even if the remote item has not been cached
- * locally.
- *
- * @param localLastUpdated The last-modified timestamp of the corresponding item produced by a local installation or
- * {@code 0} to ignore any local item.
- * @return This object for chaining.
- */
- public UpdateCheck<T, E> setLocalLastUpdated( long localLastUpdated )
- {
- this.localLastUpdated = localLastUpdated;
- return this;
- }
-
- /**
- * Gets the item of the check.
- *
- * @return The item of the check, never {@code null}.
- */
- public T getItem()
- {
- return item;
- }
-
- /**
- * Sets the item of the check.
- *
- * @param item The item of the check, must not be {@code null}.
- * @return This object for chaining.
- */
- public UpdateCheck<T, E> setItem( T item )
- {
- this.item = item;
- return this;
- }
-
- /**
- * Returns the local file of the item.
- *
- * @return The local file of the item.
- */
- public File getFile()
- {
- return file;
- }
-
- /**
- * Sets the local file of the item.
- *
- * @param file The file of the item, never {@code null} .
- * @return This object for chaining.
- */
- public UpdateCheck<T, E> setFile( File file )
- {
- this.file = file;
- return this;
- }
-
- /**
- * Indicates whether the local file given by {@link #getFile()}, if existent, should be considered valid or not. An
- * invalid file is equivalent to a physically missing file.
- *
- * @return {@code true} if the file should be considered valid if existent, {@code false} if the file should be
- * treated as if it was missing.
- */
- public boolean isFileValid()
- {
- return fileValid;
- }
-
- /**
- * Controls whether the local file given by {@link #getFile()}, if existent, should be considered valid or not. An
- * invalid file is equivalent to a physically missing file.
- *
- * @param fileValid {@code true} if the file should be considered valid if existent, {@code false} if the file
- * should be treated as if it was missing.
- * @return This object for chaining.
- */
- public UpdateCheck<T, E> setFileValid( boolean fileValid )
- {
- this.fileValid = fileValid;
- return this;
- }
-
- /**
- * Gets the policy to use for the check.
- *
- * @return The policy to use for the check.
- * @see org.eclipse.aether.repository.RepositoryPolicy
- */
- public String getPolicy()
- {
- return policy;
- }
-
- /**
- * Sets the policy to use for the check.
- *
- * @param policy The policy to use for the check, may be {@code null}.
- * @return This object for chaining.
- * @see org.eclipse.aether.repository.RepositoryPolicy
- */
- public UpdateCheck<T, E> setPolicy( String policy )
- {
- this.policy = policy;
- return this;
- }
-
- /**
- * Gets the repository from which a potential update/download will performed.
- *
- * @return The repository to use for the check.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Sets the repository from which a potential update/download will performed.
- *
- * @param repository The repository to use for the check, must not be {@code null}.
- * @return This object for chaining.
- */
- public UpdateCheck<T, E> setRepository( RemoteRepository repository )
- {
- this.repository = repository;
- return this;
- }
-
- /**
- * Gets the repository which ultimately hosts the metadata to update. This will be different from the repository
- * given by {@link #getRepository()} in case the latter denotes a repository manager.
- *
- * @return The actual repository hosting the authoritative copy of the metadata to update, never {@code null} for a
- * metadata update check.
- */
- public RemoteRepository getAuthoritativeRepository()
- {
- return authoritativeRepository != null ? authoritativeRepository : repository;
- }
-
- /**
- * Sets the repository which ultimately hosts the metadata to update. This will be different from the repository
- * given by {@link #getRepository()} in case the latter denotes a repository manager.
- *
- * @param authoritativeRepository The actual repository hosting the authoritative copy of the metadata to update,
- * must not be {@code null} for a metadata update check.
- * @return This object for chaining.
- */
- public UpdateCheck<T, E> setAuthoritativeRepository( RemoteRepository authoritativeRepository )
- {
- this.authoritativeRepository = authoritativeRepository;
- return this;
- }
-
- /**
- * Gets the result of a check, denoting whether the remote repository should be checked for updates.
- *
- * @return The result of a check.
- */
- public boolean isRequired()
- {
- return required;
- }
-
- /**
- * Sets the result of an update check.
- *
- * @param required The result of an update check. In case of {@code false} and the local file given by
- * {@link #getFile()} does actually not exist, {@link #setException(RepositoryException)} should be used
- * to provide the previous/cached failure that explains the absence of the file.
- * @return This object for chaining.
- */
- public UpdateCheck<T, E> setRequired( boolean required )
- {
- this.required = required;
- return this;
- }
-
- /**
- * Gets the exception that occurred during the update check.
- *
- * @return The occurred exception or {@code null} if the update check was successful.
- */
- public E getException()
- {
- return exception;
- }
-
- /**
- * Sets the exception for this update check.
- *
- * @param exception The exception for this update check, may be {@code null} if the check was successful.
- * @return This object for chaining.
- */
- public UpdateCheck<T, E> setException( E exception )
- {
- this.exception = exception;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getPolicy() + ": " + getFile() + " < " + getRepository();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/UpdateCheckManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/UpdateCheckManager.java b/aether-impl/src/main/java/org/eclipse/aether/impl/UpdateCheckManager.java
deleted file mode 100644
index cd35df0..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/UpdateCheckManager.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.transfer.MetadataTransferException;
-
-/**
- * Determines if updates of artifacts and metadata from remote repositories are needed.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface UpdateCheckManager
-{
-
- /**
- * Checks whether an artifact has to be updated from a remote repository.
- *
- * @param session The repository system session during which the request is made, must not be {@code null}.
- * @param check The update check request, must not be {@code null}.
- */
- void checkArtifact( RepositorySystemSession session, UpdateCheck<Artifact, ArtifactTransferException> check );
-
- /**
- * Updates the timestamp for the artifact contained in the update check.
- *
- * @param session The repository system session during which the request is made, must not be {@code null}.
- * @param check The update check request, must not be {@code null}.
- */
- void touchArtifact( RepositorySystemSession session, UpdateCheck<Artifact, ArtifactTransferException> check );
-
- /**
- * Checks whether metadata has to be updated from a remote repository.
- *
- * @param session The repository system session during which the request is made, must not be {@code null}.
- * @param check The update check request, must not be {@code null}.
- */
- void checkMetadata( RepositorySystemSession session, UpdateCheck<Metadata, MetadataTransferException> check );
-
- /**
- * Updates the timestamp for the metadata contained in the update check.
- *
- * @param session The repository system session during which the request is made, must not be {@code null}.
- * @param check The update check request, must not be {@code null}.
- */
- void touchMetadata( RepositorySystemSession session, UpdateCheck<Metadata, MetadataTransferException> check );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/UpdatePolicyAnalyzer.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/UpdatePolicyAnalyzer.java b/aether-impl/src/main/java/org/eclipse/aether/impl/UpdatePolicyAnalyzer.java
deleted file mode 100644
index ce8018a..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/UpdatePolicyAnalyzer.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystemSession;
-
-/**
- * Evaluates update policies.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface UpdatePolicyAnalyzer
-{
-
- /**
- * Returns the policy with the shorter update interval.
- *
- * @param session The repository system session during which the request is made, must not be {@code null}.
- * @param policy1 A policy to compare, may be {@code null}.
- * @param policy2 A policy to compare, may be {@code null}.
- * @return The policy with the shorter update interval.
- */
- String getEffectiveUpdatePolicy( RepositorySystemSession session, String policy1, String policy2 );
-
- /**
- * Determines whether the specified modification timestamp satisfies the freshness constraint expressed by the given
- * update policy.
- *
- * @param session The repository system session during which the check is made, must not be {@code null}.
- * @param lastModified The timestamp to check against the update policy.
- * @param policy The update policy, may be {@code null}.
- * @return {@code true} if the specified timestamp is older than acceptable by the update policy, {@code false}
- * otherwise.
- */
- boolean isUpdatedRequired( RepositorySystemSession session, long lastModified, String policy );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/VersionRangeResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/VersionRangeResolver.java b/aether-impl/src/main/java/org/eclipse/aether/impl/VersionRangeResolver.java
deleted file mode 100644
index 89bf706..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/VersionRangeResolver.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResolutionException;
-import org.eclipse.aether.resolution.VersionRangeResult;
-
-/**
- * Parses and evaluates version ranges encountered in dependency declarations.
- *
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface VersionRangeResolver
-{
-
- /**
- * Expands a version range to a list of matching versions, in ascending order. For example, resolves "[3.8,4.0)" to
- * "3.8", "3.8.1", "3.8.2". The returned list of versions is only dependent on the configured repositories and their
- * contents, the list is not processed by the {@link RepositorySystemSession#getVersionFilter() session's version
- * filter}.
- * <p>
- * The supplied request may also refer to a single concrete version rather than a version range. In this case
- * though, the result contains simply the (parsed) input version, regardless of the repositories and their contents.
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The version range request, must not be {@code null}.
- * @return The version range result, never {@code null}.
- * @throws VersionRangeResolutionException If the requested range could not be parsed. Note that an empty range does
- * not raise an exception.
- * @see RepositorySystem#resolveVersionRange(RepositorySystemSession, VersionRangeRequest)
- */
- VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request )
- throws VersionRangeResolutionException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/VersionResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/VersionResolver.java b/aether-impl/src/main/java/org/eclipse/aether/impl/VersionResolver.java
deleted file mode 100644
index e6a8a10..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/VersionResolver.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * 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.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.resolution.VersionRequest;
-import org.eclipse.aether.resolution.VersionResolutionException;
-import org.eclipse.aether.resolution.VersionResult;
-
-/**
- * Evaluates artifact meta/pseudo versions.
- *
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface VersionResolver
-{
-
- /**
- * Resolves an artifact's meta version (if any) to a concrete version. For example, resolves "1.0-SNAPSHOT" to
- * "1.0-20090208.132618-23" or "RELEASE"/"LATEST" to "2.0".
- *
- * @param session The repository session, must not be {@code null}.
- * @param request The version request, must not be {@code null}
- * @return The version result, never {@code null}.
- * @throws VersionResolutionException If the metaversion could not be resolved.
- * @see RepositorySystem#resolveVersion(RepositorySystemSession, VersionRequest)
- */
- VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
- throws VersionResolutionException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java b/aether-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java
deleted file mode 100644
index f775fb1..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package org.eclipse.aether.impl.guice;
-
-/*
- * 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.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.eclipse.aether.RepositoryListener;
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.impl.ArtifactResolver;
-import org.eclipse.aether.impl.DependencyCollector;
-import org.eclipse.aether.impl.Deployer;
-import org.eclipse.aether.impl.Installer;
-import org.eclipse.aether.impl.LocalRepositoryProvider;
-import org.eclipse.aether.impl.MetadataResolver;
-import org.eclipse.aether.impl.OfflineController;
-import org.eclipse.aether.impl.RemoteRepositoryManager;
-import org.eclipse.aether.impl.RepositoryConnectorProvider;
-import org.eclipse.aether.impl.RepositoryEventDispatcher;
-import org.eclipse.aether.impl.SyncContextFactory;
-import org.eclipse.aether.impl.UpdateCheckManager;
-import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
-import org.eclipse.aether.internal.impl.DefaultArtifactResolver;
-import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
-import org.eclipse.aether.internal.impl.DefaultDependencyCollector;
-import org.eclipse.aether.internal.impl.DefaultDeployer;
-import org.eclipse.aether.internal.impl.DefaultFileProcessor;
-import org.eclipse.aether.internal.impl.DefaultInstaller;
-import org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider;
-import org.eclipse.aether.internal.impl.DefaultMetadataResolver;
-import org.eclipse.aether.internal.impl.DefaultOfflineController;
-import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
-import org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider;
-import org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher;
-import org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider;
-import org.eclipse.aether.internal.impl.DefaultRepositorySystem;
-import org.eclipse.aether.internal.impl.DefaultSyncContextFactory;
-import org.eclipse.aether.internal.impl.DefaultTransporterProvider;
-import org.eclipse.aether.internal.impl.DefaultUpdateCheckManager;
-import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
-import org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory;
-import org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory;
-import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
-import org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayoutFactory;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
-import org.eclipse.aether.spi.connector.transport.TransporterProvider;
-import org.eclipse.aether.spi.io.FileProcessor;
-import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.slf4j.ILoggerFactory;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-import com.google.inject.name.Names;
-
-/**
- * A ready-made <a href="http://code.google.com/p/google-guice/" target="_blank">Guice</a> module that sets up bindings
- * for all components from this library. To acquire a complete repository system, clients need to bind an artifact
- * descriptor reader, a version resolver, a version range resolver, zero or more metadata generator factories, some
- * repository connector and transporter factories to access remote repositories.
- *
- * @noextend This class must not be extended by clients and will eventually be marked {@code final} without prior
- * notice.
- */
-public class AetherModule
- extends AbstractModule
-{
-
- /**
- * Creates a new instance of this Guice module, typically for invoking
- * {@link com.google.inject.Binder#install(com.google.inject.Module)}.
- */
- public AetherModule()
- {
- }
-
- /**
- * Configures Guice with bindings for Aether components provided by this library.
- */
- @Override
- protected void configure()
- {
- bind( RepositorySystem.class ) //
- .to( DefaultRepositorySystem.class ).in( Singleton.class );
- bind( ArtifactResolver.class ) //
- .to( DefaultArtifactResolver.class ).in( Singleton.class );
- bind( DependencyCollector.class ) //
- .to( DefaultDependencyCollector.class ).in( Singleton.class );
- bind( Deployer.class ) //
- .to( DefaultDeployer.class ).in( Singleton.class );
- bind( Installer.class ) //
- .to( DefaultInstaller.class ).in( Singleton.class );
- bind( MetadataResolver.class ) //
- .to( DefaultMetadataResolver.class ).in( Singleton.class );
- bind( RepositoryLayoutProvider.class ) //
- .to( DefaultRepositoryLayoutProvider.class ).in( Singleton.class );
- bind( RepositoryLayoutFactory.class ).annotatedWith( Names.named( "maven2" ) ) //
- .to( Maven2RepositoryLayoutFactory.class ).in( Singleton.class );
- bind( TransporterProvider.class ) //
- .to( DefaultTransporterProvider.class ).in( Singleton.class );
- bind( ChecksumPolicyProvider.class ) //
- .to( DefaultChecksumPolicyProvider.class ).in( Singleton.class );
- bind( RepositoryConnectorProvider.class ) //
- .to( DefaultRepositoryConnectorProvider.class ).in( Singleton.class );
- bind( RemoteRepositoryManager.class ) //
- .to( DefaultRemoteRepositoryManager.class ).in( Singleton.class );
- bind( UpdateCheckManager.class ) //
- .to( DefaultUpdateCheckManager.class ).in( Singleton.class );
- bind( UpdatePolicyAnalyzer.class ) //
- .to( DefaultUpdatePolicyAnalyzer.class ).in( Singleton.class );
- bind( FileProcessor.class ) //
- .to( DefaultFileProcessor.class ).in( Singleton.class );
- bind( SyncContextFactory.class ) //
- .to( DefaultSyncContextFactory.class ).in( Singleton.class );
- bind( RepositoryEventDispatcher.class ) //
- .to( DefaultRepositoryEventDispatcher.class ).in( Singleton.class );
- bind( OfflineController.class ) //
- .to( DefaultOfflineController.class ).in( Singleton.class );
- bind( LocalRepositoryProvider.class ) //
- .to( DefaultLocalRepositoryProvider.class ).in( Singleton.class );
- bind( LocalRepositoryManagerFactory.class ).annotatedWith( Names.named( "simple" ) ) //
- .to( SimpleLocalRepositoryManagerFactory.class ).in( Singleton.class );
- bind( LocalRepositoryManagerFactory.class ).annotatedWith( Names.named( "enhanced" ) ) //
- .to( EnhancedLocalRepositoryManagerFactory.class ).in( Singleton.class );
- if ( Slf4jLoggerFactory.isSlf4jAvailable() )
- {
- bindSlf4j();
- }
- else
- {
- bind( LoggerFactory.class ) //
- .toInstance( NullLoggerFactory.INSTANCE );
- }
-
- }
-
- private void bindSlf4j()
- {
- install( new Slf4jModule() );
- }
-
- @Provides
- @Singleton
- Set<LocalRepositoryManagerFactory> provideLocalRepositoryManagerFactories( @Named( "simple" ) LocalRepositoryManagerFactory simple,
- @Named( "enhanced" ) LocalRepositoryManagerFactory enhanced )
- {
- Set<LocalRepositoryManagerFactory> factories = new HashSet<LocalRepositoryManagerFactory>();
- factories.add( simple );
- factories.add( enhanced );
- return Collections.unmodifiableSet( factories );
- }
-
- @Provides
- @Singleton
- Set<RepositoryLayoutFactory> provideRepositoryLayoutFactories( @Named( "maven2" ) RepositoryLayoutFactory maven2 )
- {
- Set<RepositoryLayoutFactory> factories = new HashSet<RepositoryLayoutFactory>();
- factories.add( maven2 );
- return Collections.unmodifiableSet( factories );
- }
-
- @Provides
- @Singleton
- Set<RepositoryListener> providesRepositoryListeners()
- {
- return Collections.emptySet();
- }
-
- private static class Slf4jModule
- extends AbstractModule
- {
-
- @Override
- protected void configure()
- {
- bind( LoggerFactory.class ) //
- .to( Slf4jLoggerFactory.class );
- }
-
- @Provides
- @Singleton
- ILoggerFactory getLoggerFactory()
- {
- return org.slf4j.LoggerFactory.getILoggerFactory();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/guice/package-info.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/guice/package-info.java b/aether-impl/src/main/java/org/eclipse/aether/impl/guice/package-info.java
deleted file mode 100644
index e3f8fd3..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/guice/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 integration with the dependency injection framework <a href="http://code.google.com/p/google-guice/" target="_blank">Google Guice</a>.
- */
-package org.eclipse.aether.impl.guice;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/impl/package-info.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/package-info.java b/aether-impl/src/main/java/org/eclipse/aether/impl/package-info.java
deleted file mode 100644
index 959a431..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/package-info.java
+++ /dev/null
@@ -1,30 +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 provisional interfaces defining the various sub components that implement the repository system. Aether Core
- * provides stock implementations for most of these components but not all. To obtain a complete/runnable repository
- * system, the application needs to provide implementations of the following component contracts:
- * {@link org.eclipse.aether.impl.ArtifactDescriptorReader}, {@link org.eclipse.aether.impl.VersionResolver},
- * {@link org.eclipse.aether.impl.VersionRangeResolver} and potentially
- * {@link org.eclipse.aether.impl.MetadataGeneratorFactory}. Said components basically define the file format of the
- * metadata that is used to reason about an artifact's dependencies and available versions.
- */
-package org.eclipse.aether.impl;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/AbstractChecksumPolicy.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/AbstractChecksumPolicy.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/AbstractChecksumPolicy.java
deleted file mode 100644
index 368e31b..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/AbstractChecksumPolicy.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.spi.connector.checksum.ChecksumPolicy;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.ChecksumFailureException;
-import org.eclipse.aether.transfer.TransferResource;
-
-abstract class AbstractChecksumPolicy
- implements ChecksumPolicy
-
-{
-
- protected final Logger logger;
-
- protected final TransferResource resource;
-
- protected AbstractChecksumPolicy( LoggerFactory loggerFactory, TransferResource resource )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- this.resource = resource;
- }
-
- public boolean onChecksumMatch( String algorithm, int kind )
- {
- return true;
- }
-
- public void onChecksumMismatch( String algorithm, int kind, ChecksumFailureException exception )
- throws ChecksumFailureException
- {
- if ( ( kind & KIND_UNOFFICIAL ) == 0 )
- {
- throw exception;
- }
- }
-
- public void onChecksumError( String algorithm, int kind, ChecksumFailureException exception )
- throws ChecksumFailureException
- {
- logger.debug( "Could not validate " + algorithm + " checksum for " + resource.getResourceName(), exception );
- }
-
- public void onNoMoreChecksums()
- throws ChecksumFailureException
- {
- throw new ChecksumFailureException( "Checksum validation failed, no checksums available" );
- }
-
- public void onTransferRetry()
- {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ArtifactRequestBuilder.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ArtifactRequestBuilder.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ArtifactRequestBuilder.java
deleted file mode 100644
index f9773dc..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ArtifactRequestBuilder.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.List;
-
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.graph.DependencyVisitor;
-import org.eclipse.aether.resolution.ArtifactRequest;
-
-/**
- */
-class ArtifactRequestBuilder
- implements DependencyVisitor
-{
-
- private final RequestTrace trace;
-
- private List<ArtifactRequest> requests;
-
- public ArtifactRequestBuilder( RequestTrace trace )
- {
- this.trace = trace;
- this.requests = new ArrayList<ArtifactRequest>();
- }
-
- public List<ArtifactRequest> getRequests()
- {
- return requests;
- }
-
- public boolean visitEnter( DependencyNode node )
- {
- if ( node.getDependency() != null )
- {
- ArtifactRequest request = new ArtifactRequest( node );
- request.setTrace( trace );
- requests.add( request );
- }
-
- return true;
- }
-
- public boolean visitLeave( DependencyNode node )
- {
- return true;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/CacheUtils.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/CacheUtils.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/CacheUtils.java
deleted file mode 100644
index d7e8f01..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/CacheUtils.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Iterator;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.ArtifactRepository;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.repository.WorkspaceReader;
-import org.eclipse.aether.repository.WorkspaceRepository;
-
-/**
- * @deprecated To be deleted without replacement.
- */
-@Deprecated
-public final class CacheUtils
-{
-
- public static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
- public static int hash( Object obj )
- {
- return obj != null ? obj.hashCode() : 0;
- }
-
- public static int repositoriesHashCode( List<RemoteRepository> repositories )
- {
- int result = 17;
- for ( RemoteRepository repository : repositories )
- {
- result = 31 * result + repositoryHashCode( repository );
- }
- return result;
- }
-
- private static int repositoryHashCode( RemoteRepository repository )
- {
- int result = 17;
- result = 31 * result + hash( repository.getUrl() );
- return result;
- }
-
- private static boolean repositoryEquals( RemoteRepository r1, RemoteRepository r2 )
- {
- if ( r1 == r2 )
- {
- return true;
- }
-
- return eq( r1.getId(), r2.getId() ) && eq( r1.getUrl(), r2.getUrl() )
- && policyEquals( r1.getPolicy( false ), r2.getPolicy( false ) )
- && policyEquals( r1.getPolicy( true ), r2.getPolicy( true ) );
- }
-
- private static boolean policyEquals( RepositoryPolicy p1, RepositoryPolicy p2 )
- {
- if ( p1 == p2 )
- {
- return true;
- }
- // update policy doesn't affect contents
- return p1.isEnabled() == p2.isEnabled() && eq( p1.getChecksumPolicy(), p2.getChecksumPolicy() );
- }
-
- public static boolean repositoriesEquals( List<RemoteRepository> r1, List<RemoteRepository> r2 )
- {
- if ( r1.size() != r2.size() )
- {
- return false;
- }
-
- for ( Iterator<RemoteRepository> it1 = r1.iterator(), it2 = r2.iterator(); it1.hasNext(); )
- {
- if ( !repositoryEquals( it1.next(), it2.next() ) )
- {
- return false;
- }
- }
-
- return true;
- }
-
- public static WorkspaceRepository getWorkspace( RepositorySystemSession session )
- {
- WorkspaceReader reader = session.getWorkspaceReader();
- return ( reader != null ) ? reader.getRepository() : null;
- }
-
- public static ArtifactRepository getRepository( RepositorySystemSession session,
- List<RemoteRepository> repositories, Class<?> repoClass,
- String repoId )
- {
- if ( repoClass != null )
- {
- if ( WorkspaceRepository.class.isAssignableFrom( repoClass ) )
- {
- return session.getWorkspaceReader().getRepository();
- }
- else if ( LocalRepository.class.isAssignableFrom( repoClass ) )
- {
- return session.getLocalRepository();
- }
- else
- {
- for ( RemoteRepository repository : repositories )
- {
- if ( repoId.equals( repository.getId() ) )
- {
- return repository;
- }
- }
- }
- }
- return null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/CachingArtifactTypeRegistry.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/CachingArtifactTypeRegistry.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/CachingArtifactTypeRegistry.java
deleted file mode 100644
index bde4103..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/CachingArtifactTypeRegistry.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.HashMap;
-import java.util.Map;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.ArtifactType;
-import org.eclipse.aether.artifact.ArtifactTypeRegistry;
-
-/**
- * A short-lived artifact type registry that caches results from a presumedly slower type registry.
- */
-class CachingArtifactTypeRegistry
- implements ArtifactTypeRegistry
-{
-
- private final ArtifactTypeRegistry delegate;
-
- private final Map<String, ArtifactType> types;
-
- public static ArtifactTypeRegistry newInstance( RepositorySystemSession session )
- {
- return newInstance( session.getArtifactTypeRegistry() );
- }
-
- public static ArtifactTypeRegistry newInstance( ArtifactTypeRegistry delegate )
- {
- return ( delegate != null ) ? new CachingArtifactTypeRegistry( delegate ) : null;
- }
-
- private CachingArtifactTypeRegistry( ArtifactTypeRegistry delegate )
- {
- this.delegate = delegate;
- types = new HashMap<String, ArtifactType>();
- }
-
- public ArtifactType get( String typeId )
- {
- ArtifactType type = types.get( typeId );
-
- if ( type == null )
- {
- type = delegate.get( typeId );
- types.put( typeId, type );
- }
-
- return type;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DataPool.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DataPool.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DataPool.java
deleted file mode 100644
index fa41003..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DataPool.java
+++ /dev/null
@@ -1,420 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import org.eclipse.aether.RepositoryCache;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.DependencyManager;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.repository.ArtifactRepository;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ArtifactDescriptorException;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResult;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-
-/**
- */
-final class DataPool
-{
-
- private static final String OBJECT_POOL = DataPool.class.getName() + "$Objects";
-
- private static final String DESCRIPTORS = DataPool.class.getName() + "$Descriptors";
-
- public static final ArtifactDescriptorResult NO_DESCRIPTOR =
- new ArtifactDescriptorResult( new ArtifactDescriptorRequest() );
-
- private ObjectPool objectPool;
-
- private Map<Object, Descriptor> descriptors;
-
- private Map<Object, Constraint> constraints = new HashMap<Object, Constraint>();
-
- private Map<Object, List<DependencyNode>> nodes = new HashMap<Object, List<DependencyNode>>( 256 );
-
- @SuppressWarnings( "unchecked" )
- public DataPool( RepositorySystemSession session )
- {
- RepositoryCache cache = session.getCache();
-
- if ( cache != null )
- {
- objectPool = (ObjectPool) cache.get( session, OBJECT_POOL );
- descriptors = (Map<Object, Descriptor>) cache.get( session, DESCRIPTORS );
- }
-
- if ( objectPool == null )
- {
- objectPool = new ObjectPool();
- if ( cache != null )
- {
- cache.put( session, OBJECT_POOL, objectPool );
- }
- }
-
- if ( descriptors == null )
- {
- descriptors = Collections.synchronizedMap( new WeakHashMap<Object, Descriptor>( 256 ) );
- if ( cache != null )
- {
- cache.put( session, DESCRIPTORS, descriptors );
- }
- }
- }
-
- public Dependency intern( Dependency dependency )
- {
- return objectPool.intern( dependency );
- }
-
- public Object toKey( ArtifactDescriptorRequest request )
- {
- return request.getArtifact();
- }
-
- public ArtifactDescriptorResult getDescriptor( Object key, ArtifactDescriptorRequest request )
- {
- Descriptor descriptor = descriptors.get( key );
- if ( descriptor != null )
- {
- return descriptor.toResult( request );
- }
- return null;
- }
-
- public void putDescriptor( Object key, ArtifactDescriptorResult result )
- {
- descriptors.put( key, new GoodDescriptor( result ) );
- }
-
- public void putDescriptor( Object key, ArtifactDescriptorException e )
- {
- descriptors.put( key, BadDescriptor.INSTANCE );
- }
-
- public Object toKey( VersionRangeRequest request )
- {
- return new ConstraintKey( request );
- }
-
- public VersionRangeResult getConstraint( Object key, VersionRangeRequest request )
- {
- Constraint constraint = constraints.get( key );
- if ( constraint != null )
- {
- return constraint.toResult( request );
- }
- return null;
- }
-
- public void putConstraint( Object key, VersionRangeResult result )
- {
- constraints.put( key, new Constraint( result ) );
- }
-
- public Object toKey( Artifact artifact, List<RemoteRepository> repositories, DependencySelector selector,
- DependencyManager manager, DependencyTraverser traverser, VersionFilter filter )
- {
- return new GraphKey( artifact, repositories, selector, manager, traverser, filter );
- }
-
- public List<DependencyNode> getChildren( Object key )
- {
- return nodes.get( key );
- }
-
- public void putChildren( Object key, List<DependencyNode> children )
- {
- nodes.put( key, children );
- }
-
- abstract static class Descriptor
- {
-
- public abstract ArtifactDescriptorResult toResult( ArtifactDescriptorRequest request );
-
- }
-
- static final class GoodDescriptor
- extends Descriptor
- {
-
- final Artifact artifact;
-
- final List<Artifact> relocations;
-
- final Collection<Artifact> aliases;
-
- final List<RemoteRepository> repositories;
-
- final List<Dependency> dependencies;
-
- final List<Dependency> managedDependencies;
-
- public GoodDescriptor( ArtifactDescriptorResult result )
- {
- artifact = result.getArtifact();
- relocations = result.getRelocations();
- aliases = result.getAliases();
- dependencies = result.getDependencies();
- managedDependencies = result.getManagedDependencies();
- repositories = result.getRepositories();
- }
-
- public ArtifactDescriptorResult toResult( ArtifactDescriptorRequest request )
- {
- ArtifactDescriptorResult result = new ArtifactDescriptorResult( request );
- result.setArtifact( artifact );
- result.setRelocations( relocations );
- result.setAliases( aliases );
- result.setDependencies( dependencies );
- result.setManagedDependencies( managedDependencies );
- result.setRepositories( repositories );
- return result;
- }
-
- }
-
- static final class BadDescriptor
- extends Descriptor
- {
-
- static final BadDescriptor INSTANCE = new BadDescriptor();
-
- public ArtifactDescriptorResult toResult( ArtifactDescriptorRequest request )
- {
- return NO_DESCRIPTOR;
- }
-
- }
-
- static final class Constraint
- {
-
- final VersionRepo[] repositories;
-
- final VersionConstraint versionConstraint;
-
- public Constraint( VersionRangeResult result )
- {
- versionConstraint = result.getVersionConstraint();
- List<Version> versions = result.getVersions();
- repositories = new VersionRepo[versions.size()];
- int i = 0;
- for ( Version version : versions )
- {
- repositories[i++] = new VersionRepo( version, result.getRepository( version ) );
- }
- }
-
- public VersionRangeResult toResult( VersionRangeRequest request )
- {
- VersionRangeResult result = new VersionRangeResult( request );
- for ( VersionRepo vr : repositories )
- {
- result.addVersion( vr.version );
- result.setRepository( vr.version, vr.repo );
- }
- result.setVersionConstraint( versionConstraint );
- return result;
- }
-
- static final class VersionRepo
- {
-
- final Version version;
-
- final ArtifactRepository repo;
-
- VersionRepo( Version version, ArtifactRepository repo )
- {
- this.version = version;
- this.repo = repo;
- }
-
- }
-
- }
-
- static final class ConstraintKey
- {
-
- private final Artifact artifact;
-
- private final List<RemoteRepository> repositories;
-
- private final int hashCode;
-
- public ConstraintKey( VersionRangeRequest request )
- {
- artifact = request.getArtifact();
- repositories = request.getRepositories();
- hashCode = artifact.hashCode();
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
- return true;
- }
- else if ( !( obj instanceof ConstraintKey ) )
- {
- return false;
- }
- ConstraintKey that = (ConstraintKey) obj;
- return artifact.equals( that.artifact ) && equals( repositories, that.repositories );
- }
-
- private static boolean equals( List<RemoteRepository> repos1, List<RemoteRepository> repos2 )
- {
- if ( repos1.size() != repos2.size() )
- {
- return false;
- }
- for ( int i = 0, n = repos1.size(); i < n; i++ )
- {
- RemoteRepository repo1 = repos1.get( i );
- RemoteRepository repo2 = repos2.get( i );
- if ( repo1.isRepositoryManager() != repo2.isRepositoryManager() )
- {
- return false;
- }
- if ( repo1.isRepositoryManager() )
- {
- if ( !equals( repo1.getMirroredRepositories(), repo2.getMirroredRepositories() ) )
- {
- return false;
- }
- }
- else if ( !repo1.getUrl().equals( repo2.getUrl() ) )
- {
- return false;
- }
- else if ( repo1.getPolicy( true ).isEnabled() != repo2.getPolicy( true ).isEnabled() )
- {
- return false;
- }
- else if ( repo1.getPolicy( false ).isEnabled() != repo2.getPolicy( false ).isEnabled() )
- {
- return false;
- }
- }
- return true;
- }
-
- @Override
- public int hashCode()
- {
- return hashCode;
- }
-
- }
-
- static final class GraphKey
- {
-
- private final Artifact artifact;
-
- private final List<RemoteRepository> repositories;
-
- private final DependencySelector selector;
-
- private final DependencyManager manager;
-
- private final DependencyTraverser traverser;
-
- private final VersionFilter filter;
-
- private final int hashCode;
-
- public GraphKey( Artifact artifact, List<RemoteRepository> repositories, DependencySelector selector,
- DependencyManager manager, DependencyTraverser traverser, VersionFilter filter )
- {
- this.artifact = artifact;
- this.repositories = repositories;
- this.selector = selector;
- this.manager = manager;
- this.traverser = traverser;
- this.filter = filter;
-
- int hash = 17;
- hash = hash * 31 + artifact.hashCode();
- hash = hash * 31 + repositories.hashCode();
- hash = hash * 31 + hash( selector );
- hash = hash * 31 + hash( manager );
- hash = hash * 31 + hash( traverser );
- hash = hash * 31 + hash( filter );
- hashCode = hash;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
- return true;
- }
- else if ( !( obj instanceof GraphKey ) )
- {
- return false;
- }
- GraphKey that = (GraphKey) obj;
- return artifact.equals( that.artifact ) && repositories.equals( that.repositories )
- && eq( selector, that.selector ) && eq( manager, that.manager ) && eq( traverser, that.traverser )
- && eq( filter, that.filter );
- }
-
- @Override
- public int hashCode()
- {
- return hashCode;
- }
-
- private static <T> boolean eq( T o1, T o2 )
- {
- return ( o1 != null ) ? o1.equals( o2 ) : o2 == null;
- }
-
- private static int hash( Object o )
- {
- return ( o != null ) ? o.hashCode() : 0;
- }
-
- }
-
-}
[37/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDeployer.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDeployer.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDeployer.java
deleted file mode 100644
index 56951fa..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDeployer.java
+++ /dev/null
@@ -1,663 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.IdentityHashMap;
-import java.util.List;
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositoryEvent;
-import org.eclipse.aether.RepositoryEvent.EventType;
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.SyncContext;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.deployment.DeployRequest;
-import org.eclipse.aether.deployment.DeployResult;
-import org.eclipse.aether.deployment.DeploymentException;
-import org.eclipse.aether.impl.Deployer;
-import org.eclipse.aether.impl.MetadataGenerator;
-import org.eclipse.aether.impl.MetadataGeneratorFactory;
-import org.eclipse.aether.impl.OfflineController;
-import org.eclipse.aether.impl.RemoteRepositoryManager;
-import org.eclipse.aether.impl.RepositoryConnectorProvider;
-import org.eclipse.aether.impl.RepositoryEventDispatcher;
-import org.eclipse.aether.impl.SyncContextFactory;
-import org.eclipse.aether.impl.UpdateCheck;
-import org.eclipse.aether.impl.UpdateCheckManager;
-import org.eclipse.aether.metadata.MergeableMetadata;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.spi.connector.ArtifactUpload;
-import org.eclipse.aether.spi.connector.MetadataDownload;
-import org.eclipse.aether.spi.connector.MetadataUpload;
-import org.eclipse.aether.spi.connector.RepositoryConnector;
-import org.eclipse.aether.spi.io.FileProcessor;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.transfer.MetadataNotFoundException;
-import org.eclipse.aether.transfer.MetadataTransferException;
-import org.eclipse.aether.transfer.NoRepositoryConnectorException;
-import org.eclipse.aether.transfer.RepositoryOfflineException;
-import org.eclipse.aether.transfer.TransferCancelledException;
-import org.eclipse.aether.transfer.TransferEvent;
-
-/**
- */
-@Named
-public class DefaultDeployer
- implements Deployer, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private FileProcessor fileProcessor;
-
- private RepositoryEventDispatcher repositoryEventDispatcher;
-
- private RepositoryConnectorProvider repositoryConnectorProvider;
-
- private RemoteRepositoryManager remoteRepositoryManager;
-
- private UpdateCheckManager updateCheckManager;
-
- private Collection<MetadataGeneratorFactory> metadataFactories = new ArrayList<MetadataGeneratorFactory>();
-
- private SyncContextFactory syncContextFactory;
-
- private OfflineController offlineController;
-
- public DefaultDeployer()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultDeployer( FileProcessor fileProcessor, RepositoryEventDispatcher repositoryEventDispatcher,
- RepositoryConnectorProvider repositoryConnectorProvider,
- RemoteRepositoryManager remoteRepositoryManager, UpdateCheckManager updateCheckManager,
- Set<MetadataGeneratorFactory> metadataFactories, SyncContextFactory syncContextFactory,
- OfflineController offlineController, LoggerFactory loggerFactory )
- {
- setFileProcessor( fileProcessor );
- setRepositoryEventDispatcher( repositoryEventDispatcher );
- setRepositoryConnectorProvider( repositoryConnectorProvider );
- setRemoteRepositoryManager( remoteRepositoryManager );
- setUpdateCheckManager( updateCheckManager );
- setMetadataGeneratorFactories( metadataFactories );
- setSyncContextFactory( syncContextFactory );
- setLoggerFactory( loggerFactory );
- setOfflineController( offlineController );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setFileProcessor( locator.getService( FileProcessor.class ) );
- setRepositoryEventDispatcher( locator.getService( RepositoryEventDispatcher.class ) );
- setRepositoryConnectorProvider( locator.getService( RepositoryConnectorProvider.class ) );
- setRemoteRepositoryManager( locator.getService( RemoteRepositoryManager.class ) );
- setUpdateCheckManager( locator.getService( UpdateCheckManager.class ) );
- setMetadataGeneratorFactories( locator.getServices( MetadataGeneratorFactory.class ) );
- setSyncContextFactory( locator.getService( SyncContextFactory.class ) );
- setOfflineController( locator.getService( OfflineController.class ) );
- }
-
- public DefaultDeployer setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultDeployer setFileProcessor( FileProcessor fileProcessor )
- {
- if ( fileProcessor == null )
- {
- throw new IllegalArgumentException( "file processor has not been specified" );
- }
- this.fileProcessor = fileProcessor;
- return this;
- }
-
- public DefaultDeployer setRepositoryEventDispatcher( RepositoryEventDispatcher repositoryEventDispatcher )
- {
- if ( repositoryEventDispatcher == null )
- {
- throw new IllegalArgumentException( "repository event dispatcher has not been specified" );
- }
- this.repositoryEventDispatcher = repositoryEventDispatcher;
- return this;
- }
-
- public DefaultDeployer setRepositoryConnectorProvider( RepositoryConnectorProvider repositoryConnectorProvider )
- {
- if ( repositoryConnectorProvider == null )
- {
- throw new IllegalArgumentException( "repository connector provider has not been specified" );
- }
- this.repositoryConnectorProvider = repositoryConnectorProvider;
- return this;
- }
-
- public DefaultDeployer setRemoteRepositoryManager( RemoteRepositoryManager remoteRepositoryManager )
- {
- if ( remoteRepositoryManager == null )
- {
- throw new IllegalArgumentException( "remote repository manager has not been specified" );
- }
- this.remoteRepositoryManager = remoteRepositoryManager;
- return this;
- }
-
- public DefaultDeployer setUpdateCheckManager( UpdateCheckManager updateCheckManager )
- {
- if ( updateCheckManager == null )
- {
- throw new IllegalArgumentException( "update check manager has not been specified" );
- }
- this.updateCheckManager = updateCheckManager;
- return this;
- }
-
- public DefaultDeployer addMetadataGeneratorFactory( MetadataGeneratorFactory factory )
- {
- if ( factory == null )
- {
- throw new IllegalArgumentException( "metadata generator factory has not been specified" );
- }
- metadataFactories.add( factory );
- return this;
- }
-
- public DefaultDeployer setMetadataGeneratorFactories( Collection<MetadataGeneratorFactory> metadataFactories )
- {
- if ( metadataFactories == null )
- {
- this.metadataFactories = new ArrayList<MetadataGeneratorFactory>();
- }
- else
- {
- this.metadataFactories = metadataFactories;
- }
- return this;
- }
-
- public DefaultDeployer setSyncContextFactory( SyncContextFactory syncContextFactory )
- {
- if ( syncContextFactory == null )
- {
- throw new IllegalArgumentException( "sync context factory has not been specified" );
- }
- this.syncContextFactory = syncContextFactory;
- return this;
- }
-
- public DefaultDeployer setOfflineController( OfflineController offlineController )
- {
- if ( offlineController == null )
- {
- throw new IllegalArgumentException( "offline controller has not been specified" );
- }
- this.offlineController = offlineController;
- return this;
- }
-
- public DeployResult deploy( RepositorySystemSession session, DeployRequest request )
- throws DeploymentException
- {
- try
- {
- Utils.checkOffline( session, offlineController, request.getRepository() );
- }
- catch ( RepositoryOfflineException e )
- {
- throw new DeploymentException( "Cannot deploy while " + request.getRepository().getId() + " ("
- + request.getRepository().getUrl() + ") is in offline mode", e );
- }
-
- SyncContext syncContext = syncContextFactory.newInstance( session, false );
-
- try
- {
- return deploy( syncContext, session, request );
- }
- finally
- {
- syncContext.close();
- }
- }
-
- private DeployResult deploy( SyncContext syncContext, RepositorySystemSession session, DeployRequest request )
- throws DeploymentException
- {
- DeployResult result = new DeployResult( request );
-
- RequestTrace trace = RequestTrace.newChild( request.getTrace(), request );
-
- RemoteRepository repository = request.getRepository();
-
- RepositoryConnector connector;
- try
- {
- connector = repositoryConnectorProvider.newRepositoryConnector( session, repository );
- }
- catch ( NoRepositoryConnectorException e )
- {
- throw new DeploymentException( "Failed to deploy artifacts/metadata: " + e.getMessage(), e );
- }
-
- try
- {
- List<? extends MetadataGenerator> generators = getMetadataGenerators( session, request );
-
- List<ArtifactUpload> artifactUploads = new ArrayList<ArtifactUpload>();
- List<MetadataUpload> metadataUploads = new ArrayList<MetadataUpload>();
- IdentityHashMap<Metadata, Object> processedMetadata = new IdentityHashMap<Metadata, Object>();
-
- EventCatapult catapult = new EventCatapult( session, trace, repository, repositoryEventDispatcher );
-
- List<Artifact> artifacts = new ArrayList<Artifact>( request.getArtifacts() );
-
- List<Metadata> metadatas = Utils.prepareMetadata( generators, artifacts );
-
- syncContext.acquire( artifacts, Utils.combine( request.getMetadata(), metadatas ) );
-
- for ( Metadata metadata : metadatas )
- {
- upload( metadataUploads, session, metadata, repository, connector, catapult );
- processedMetadata.put( metadata, null );
- }
-
- for ( int i = 0; i < artifacts.size(); i++ )
- {
- Artifact artifact = artifacts.get( i );
-
- for ( MetadataGenerator generator : generators )
- {
- artifact = generator.transformArtifact( artifact );
- }
-
- artifacts.set( i, artifact );
-
- ArtifactUpload upload = new ArtifactUpload( artifact, artifact.getFile() );
- upload.setTrace( trace );
- upload.setListener( new ArtifactUploadListener( catapult, upload, logger ) );
- artifactUploads.add( upload );
- }
-
- connector.put( artifactUploads, null );
-
- for ( ArtifactUpload upload : artifactUploads )
- {
- if ( upload.getException() != null )
- {
- throw new DeploymentException( "Failed to deploy artifacts: " + upload.getException().getMessage(),
- upload.getException() );
- }
- result.addArtifact( upload.getArtifact() );
- }
-
- metadatas = Utils.finishMetadata( generators, artifacts );
-
- syncContext.acquire( null, metadatas );
-
- for ( Metadata metadata : metadatas )
- {
- upload( metadataUploads, session, metadata, repository, connector, catapult );
- processedMetadata.put( metadata, null );
- }
-
- for ( Metadata metadata : request.getMetadata() )
- {
- if ( !processedMetadata.containsKey( metadata ) )
- {
- upload( metadataUploads, session, metadata, repository, connector, catapult );
- processedMetadata.put( metadata, null );
- }
- }
-
- connector.put( null, metadataUploads );
-
- for ( MetadataUpload upload : metadataUploads )
- {
- if ( upload.getException() != null )
- {
- throw new DeploymentException( "Failed to deploy metadata: " + upload.getException().getMessage(),
- upload.getException() );
- }
- result.addMetadata( upload.getMetadata() );
- }
- }
- finally
- {
- connector.close();
- }
-
- return result;
- }
-
- private List<? extends MetadataGenerator> getMetadataGenerators( RepositorySystemSession session,
- DeployRequest request )
- {
- PrioritizedComponents<MetadataGeneratorFactory> factories =
- Utils.sortMetadataGeneratorFactories( session, this.metadataFactories );
-
- List<MetadataGenerator> generators = new ArrayList<MetadataGenerator>();
-
- for ( PrioritizedComponent<MetadataGeneratorFactory> factory : factories.getEnabled() )
- {
- MetadataGenerator generator = factory.getComponent().newInstance( session, request );
- if ( generator != null )
- {
- generators.add( generator );
- }
- }
-
- return generators;
- }
-
- private void upload( Collection<MetadataUpload> metadataUploads, RepositorySystemSession session,
- Metadata metadata, RemoteRepository repository, RepositoryConnector connector,
- EventCatapult catapult )
- throws DeploymentException
- {
- LocalRepositoryManager lrm = session.getLocalRepositoryManager();
- File basedir = lrm.getRepository().getBasedir();
-
- File dstFile = new File( basedir, lrm.getPathForRemoteMetadata( metadata, repository, "" ) );
-
- if ( metadata instanceof MergeableMetadata )
- {
- if ( !( (MergeableMetadata) metadata ).isMerged() )
- {
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.METADATA_RESOLVING );
- event.setTrace( catapult.getTrace() );
- event.setMetadata( metadata );
- event.setRepository( repository );
- repositoryEventDispatcher.dispatch( event.build() );
-
- event = new RepositoryEvent.Builder( session, EventType.METADATA_DOWNLOADING );
- event.setTrace( catapult.getTrace() );
- event.setMetadata( metadata );
- event.setRepository( repository );
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- RepositoryPolicy policy = getPolicy( session, repository, metadata.getNature() );
- MetadataDownload download = new MetadataDownload();
- download.setMetadata( metadata );
- download.setFile( dstFile );
- download.setChecksumPolicy( policy.getChecksumPolicy() );
- download.setListener( SafeTransferListener.wrap( session, logger ) );
- download.setTrace( catapult.getTrace() );
- connector.get( null, Arrays.asList( download ) );
-
- Exception error = download.getException();
-
- if ( error instanceof MetadataNotFoundException )
- {
- dstFile.delete();
- }
-
- {
- RepositoryEvent.Builder event =
- new RepositoryEvent.Builder( session, EventType.METADATA_DOWNLOADED );
- event.setTrace( catapult.getTrace() );
- event.setMetadata( metadata );
- event.setRepository( repository );
- event.setException( error );
- event.setFile( dstFile );
- repositoryEventDispatcher.dispatch( event.build() );
-
- event = new RepositoryEvent.Builder( session, EventType.METADATA_RESOLVED );
- event.setTrace( catapult.getTrace() );
- event.setMetadata( metadata );
- event.setRepository( repository );
- event.setException( error );
- event.setFile( dstFile );
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- if ( error != null && !( error instanceof MetadataNotFoundException ) )
- {
- throw new DeploymentException( "Failed to retrieve remote metadata " + metadata + ": "
- + error.getMessage(), error );
- }
- }
-
- try
- {
- ( (MergeableMetadata) metadata ).merge( dstFile, dstFile );
- }
- catch ( RepositoryException e )
- {
- throw new DeploymentException( "Failed to update metadata " + metadata + ": " + e.getMessage(), e );
- }
- }
- else
- {
- if ( metadata.getFile() == null )
- {
- throw new DeploymentException( "Failed to update metadata " + metadata + ": No file attached." );
- }
- try
- {
- fileProcessor.copy( metadata.getFile(), dstFile );
- }
- catch ( IOException e )
- {
- throw new DeploymentException( "Failed to update metadata " + metadata + ": " + e.getMessage(), e );
- }
- }
-
- UpdateCheck<Metadata, MetadataTransferException> check = new UpdateCheck<Metadata, MetadataTransferException>();
- check.setItem( metadata );
- check.setFile( dstFile );
- check.setRepository( repository );
- check.setAuthoritativeRepository( repository );
- updateCheckManager.touchMetadata( session, check );
-
- MetadataUpload upload = new MetadataUpload( metadata, dstFile );
- upload.setTrace( catapult.getTrace() );
- upload.setListener( new MetadataUploadListener( catapult, upload, logger ) );
- metadataUploads.add( upload );
- }
-
- private RepositoryPolicy getPolicy( RepositorySystemSession session, RemoteRepository repository,
- Metadata.Nature nature )
- {
- boolean releases = !Metadata.Nature.SNAPSHOT.equals( nature );
- boolean snapshots = !Metadata.Nature.RELEASE.equals( nature );
- return remoteRepositoryManager.getPolicy( session, repository, releases, snapshots );
- }
-
- static final class EventCatapult
- {
-
- private final RepositorySystemSession session;
-
- private final RequestTrace trace;
-
- private final RemoteRepository repository;
-
- private final RepositoryEventDispatcher dispatcher;
-
- public EventCatapult( RepositorySystemSession session, RequestTrace trace, RemoteRepository repository,
- RepositoryEventDispatcher dispatcher )
- {
- this.session = session;
- this.trace = trace;
- this.repository = repository;
- this.dispatcher = dispatcher;
- }
-
- public RepositorySystemSession getSession()
- {
- return session;
- }
-
- public RequestTrace getTrace()
- {
- return trace;
- }
-
- public void artifactDeploying( Artifact artifact, File file )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.ARTIFACT_DEPLOYING );
- event.setTrace( trace );
- event.setArtifact( artifact );
- event.setRepository( repository );
- event.setFile( file );
-
- dispatcher.dispatch( event.build() );
- }
-
- public void artifactDeployed( Artifact artifact, File file, ArtifactTransferException exception )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.ARTIFACT_DEPLOYED );
- event.setTrace( trace );
- event.setArtifact( artifact );
- event.setRepository( repository );
- event.setFile( file );
- event.setException( exception );
-
- dispatcher.dispatch( event.build() );
- }
-
- public void metadataDeploying( Metadata metadata, File file )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.METADATA_DEPLOYING );
- event.setTrace( trace );
- event.setMetadata( metadata );
- event.setRepository( repository );
- event.setFile( file );
-
- dispatcher.dispatch( event.build() );
- }
-
- public void metadataDeployed( Metadata metadata, File file, Exception exception )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.METADATA_DEPLOYED );
- event.setTrace( trace );
- event.setMetadata( metadata );
- event.setRepository( repository );
- event.setFile( file );
- event.setException( exception );
-
- dispatcher.dispatch( event.build() );
- }
-
- }
-
- static final class ArtifactUploadListener
- extends SafeTransferListener
- {
-
- private final EventCatapult catapult;
-
- private final ArtifactUpload transfer;
-
- public ArtifactUploadListener( EventCatapult catapult, ArtifactUpload transfer, Logger logger )
- {
- super( catapult.getSession(), logger );
- this.catapult = catapult;
- this.transfer = transfer;
- }
-
- @Override
- public void transferInitiated( TransferEvent event )
- throws TransferCancelledException
- {
- super.transferInitiated( event );
- catapult.artifactDeploying( transfer.getArtifact(), transfer.getFile() );
- }
-
- @Override
- public void transferFailed( TransferEvent event )
- {
- super.transferFailed( event );
- catapult.artifactDeployed( transfer.getArtifact(), transfer.getFile(), transfer.getException() );
- }
-
- @Override
- public void transferSucceeded( TransferEvent event )
- {
- super.transferSucceeded( event );
- catapult.artifactDeployed( transfer.getArtifact(), transfer.getFile(), null );
- }
-
- }
-
- static final class MetadataUploadListener
- extends SafeTransferListener
- {
-
- private final EventCatapult catapult;
-
- private final MetadataUpload transfer;
-
- public MetadataUploadListener( EventCatapult catapult, MetadataUpload transfer, Logger logger )
- {
- super( catapult.getSession(), logger );
- this.catapult = catapult;
- this.transfer = transfer;
- }
-
- @Override
- public void transferInitiated( TransferEvent event )
- throws TransferCancelledException
- {
- super.transferInitiated( event );
- catapult.metadataDeploying( transfer.getMetadata(), transfer.getFile() );
- }
-
- @Override
- public void transferFailed( TransferEvent event )
- {
- super.transferFailed( event );
- catapult.metadataDeployed( transfer.getMetadata(), transfer.getFile(), transfer.getException() );
- }
-
- @Override
- public void transferSucceeded( TransferEvent event )
- {
- super.transferSucceeded( event );
- catapult.metadataDeployed( transfer.getMetadata(), transfer.getFile(), null );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultFileProcessor.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultFileProcessor.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultFileProcessor.java
deleted file mode 100644
index ea0665e..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultFileProcessor.java
+++ /dev/null
@@ -1,261 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-
-import javax.inject.Named;
-
-import org.eclipse.aether.spi.io.FileProcessor;
-
-/**
- * A utility class helping with file-based operations.
- */
-@Named
-public class DefaultFileProcessor
- implements FileProcessor
-{
-
- /**
- * Thread-safe variant of {@link File#mkdirs()}. Creates the directory named by the given abstract pathname,
- * including any necessary but nonexistent parent directories. Note that if this operation fails it may have
- * succeeded in creating some of the necessary parent directories.
- *
- * @param directory The directory to create, may be {@code null}.
- * @return {@code true} if and only if the directory was created, along with all necessary parent directories;
- * {@code false} otherwise
- */
- public boolean mkdirs( File directory )
- {
- if ( directory == null )
- {
- return false;
- }
-
- if ( directory.exists() )
- {
- return false;
- }
- if ( directory.mkdir() )
- {
- return true;
- }
-
- File canonDir;
- try
- {
- canonDir = directory.getCanonicalFile();
- }
- catch ( IOException e )
- {
- return false;
- }
-
- File parentDir = canonDir.getParentFile();
- return ( parentDir != null && ( mkdirs( parentDir ) || parentDir.exists() ) && canonDir.mkdir() );
- }
-
- public void write( File target, String data )
- throws IOException
- {
- mkdirs( target.getAbsoluteFile().getParentFile() );
-
- OutputStream fos = null;
- try
- {
- fos = new FileOutputStream( target );
-
- if ( data != null )
- {
- fos.write( data.getBytes( "UTF-8" ) );
- }
-
- // allow output to report any flush/close errors
- fos.close();
- fos = null;
- }
- finally
- {
- try
- {
- if ( fos != null )
- {
- fos.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed
- }
- }
- }
-
- public void write( File target, InputStream source )
- throws IOException
- {
- mkdirs( target.getAbsoluteFile().getParentFile() );
-
- OutputStream fos = null;
- try
- {
- fos = new FileOutputStream( target );
-
- copy( fos, source, null );
-
- // allow output to report any flush/close errors
- fos.close();
- fos = null;
- }
- finally
- {
- try
- {
- if ( fos != null )
- {
- fos.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed
- }
- }
- }
-
- public void copy( File source, File target )
- throws IOException
- {
- copy( source, target, null );
- }
-
- public long copy( File source, File target, ProgressListener listener )
- throws IOException
- {
- long total = 0;
-
- InputStream fis = null;
- OutputStream fos = null;
- try
- {
- fis = new FileInputStream( source );
-
- mkdirs( target.getAbsoluteFile().getParentFile() );
-
- fos = new FileOutputStream( target );
-
- total = copy( fos, fis, listener );
-
- // allow output to report any flush/close errors
- fos.close();
- fos = null;
-
- fis.close();
- fis = null;
- }
- finally
- {
- try
- {
- if ( fos != null )
- {
- fos.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed
- }
- finally
- {
- try
- {
- if ( fis != null )
- {
- fis.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed
- }
- }
- }
-
- return total;
- }
-
- private long copy( OutputStream os, InputStream is, ProgressListener listener )
- throws IOException
- {
- long total = 0;
-
- ByteBuffer buffer = ByteBuffer.allocate( 1024 * 32 );
- byte[] array = buffer.array();
-
- while ( true )
- {
- int bytes = is.read( array );
- if ( bytes < 0 )
- {
- break;
- }
-
- os.write( array, 0, bytes );
-
- total += bytes;
-
- if ( listener != null && bytes > 0 )
- {
- try
- {
- buffer.rewind();
- buffer.limit( bytes );
- listener.progressed( buffer );
- }
- catch ( Exception e )
- {
- // too bad
- }
- }
- }
-
- return total;
- }
-
- public void move( File source, File target )
- throws IOException
- {
- if ( !source.renameTo( target ) )
- {
- copy( source, target );
-
- target.setLastModified( source.lastModified() );
-
- source.delete();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java
deleted file mode 100644
index ea95371..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java
+++ /dev/null
@@ -1,391 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.ArrayList;
-import java.util.Collection;
-import java.util.IdentityHashMap;
-import java.util.List;
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositoryEvent;
-import org.eclipse.aether.RepositoryEvent.EventType;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.SyncContext;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.impl.Installer;
-import org.eclipse.aether.impl.MetadataGenerator;
-import org.eclipse.aether.impl.MetadataGeneratorFactory;
-import org.eclipse.aether.impl.RepositoryEventDispatcher;
-import org.eclipse.aether.impl.SyncContextFactory;
-import org.eclipse.aether.installation.InstallRequest;
-import org.eclipse.aether.installation.InstallResult;
-import org.eclipse.aether.installation.InstallationException;
-import org.eclipse.aether.metadata.MergeableMetadata;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.LocalArtifactRegistration;
-import org.eclipse.aether.repository.LocalMetadataRegistration;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.spi.io.FileProcessor;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-
-/**
- */
-@Named
-public class DefaultInstaller
- implements Installer, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private FileProcessor fileProcessor;
-
- private RepositoryEventDispatcher repositoryEventDispatcher;
-
- private Collection<MetadataGeneratorFactory> metadataFactories = new ArrayList<MetadataGeneratorFactory>();
-
- private SyncContextFactory syncContextFactory;
-
- public DefaultInstaller()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultInstaller( FileProcessor fileProcessor, RepositoryEventDispatcher repositoryEventDispatcher,
- Set<MetadataGeneratorFactory> metadataFactories, SyncContextFactory syncContextFactory,
- LoggerFactory loggerFactory )
- {
- setFileProcessor( fileProcessor );
- setRepositoryEventDispatcher( repositoryEventDispatcher );
- setMetadataGeneratorFactories( metadataFactories );
- setSyncContextFactory( syncContextFactory );
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setFileProcessor( locator.getService( FileProcessor.class ) );
- setRepositoryEventDispatcher( locator.getService( RepositoryEventDispatcher.class ) );
- setMetadataGeneratorFactories( locator.getServices( MetadataGeneratorFactory.class ) );
- setSyncContextFactory( locator.getService( SyncContextFactory.class ) );
- }
-
- public DefaultInstaller setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultInstaller setFileProcessor( FileProcessor fileProcessor )
- {
- if ( fileProcessor == null )
- {
- throw new IllegalArgumentException( "file processor has not been specified" );
- }
- this.fileProcessor = fileProcessor;
- return this;
- }
-
- public DefaultInstaller setRepositoryEventDispatcher( RepositoryEventDispatcher repositoryEventDispatcher )
- {
- if ( repositoryEventDispatcher == null )
- {
- throw new IllegalArgumentException( "repository event dispatcher has not been specified" );
- }
- this.repositoryEventDispatcher = repositoryEventDispatcher;
- return this;
- }
-
- public DefaultInstaller addMetadataGeneratorFactory( MetadataGeneratorFactory factory )
- {
- if ( factory == null )
- {
- throw new IllegalArgumentException( "metadata generator factory has not been specified" );
- }
- metadataFactories.add( factory );
- return this;
- }
-
- public DefaultInstaller setMetadataGeneratorFactories( Collection<MetadataGeneratorFactory> metadataFactories )
- {
- if ( metadataFactories == null )
- {
- this.metadataFactories = new ArrayList<MetadataGeneratorFactory>();
- }
- else
- {
- this.metadataFactories = metadataFactories;
- }
- return this;
- }
-
- public DefaultInstaller setSyncContextFactory( SyncContextFactory syncContextFactory )
- {
- if ( syncContextFactory == null )
- {
- throw new IllegalArgumentException( "sync context factory has not been specified" );
- }
- this.syncContextFactory = syncContextFactory;
- return this;
- }
-
- public InstallResult install( RepositorySystemSession session, InstallRequest request )
- throws InstallationException
- {
- SyncContext syncContext = syncContextFactory.newInstance( session, false );
-
- try
- {
- return install( syncContext, session, request );
- }
- finally
- {
- syncContext.close();
- }
- }
-
- private InstallResult install( SyncContext syncContext, RepositorySystemSession session, InstallRequest request )
- throws InstallationException
- {
- InstallResult result = new InstallResult( request );
-
- RequestTrace trace = RequestTrace.newChild( request.getTrace(), request );
-
- List<? extends MetadataGenerator> generators = getMetadataGenerators( session, request );
-
- List<Artifact> artifacts = new ArrayList<Artifact>( request.getArtifacts() );
-
- IdentityHashMap<Metadata, Object> processedMetadata = new IdentityHashMap<Metadata, Object>();
-
- List<Metadata> metadatas = Utils.prepareMetadata( generators, artifacts );
-
- syncContext.acquire( artifacts, Utils.combine( request.getMetadata(), metadatas ) );
-
- for ( Metadata metadata : metadatas )
- {
- install( session, trace, metadata );
- processedMetadata.put( metadata, null );
- result.addMetadata( metadata );
- }
-
- for ( int i = 0; i < artifacts.size(); i++ )
- {
- Artifact artifact = artifacts.get( i );
-
- for ( MetadataGenerator generator : generators )
- {
- artifact = generator.transformArtifact( artifact );
- }
-
- artifacts.set( i, artifact );
-
- install( session, trace, artifact );
- result.addArtifact( artifact );
- }
-
- metadatas = Utils.finishMetadata( generators, artifacts );
-
- syncContext.acquire( null, metadatas );
-
- for ( Metadata metadata : metadatas )
- {
- install( session, trace, metadata );
- processedMetadata.put( metadata, null );
- result.addMetadata( metadata );
- }
-
- for ( Metadata metadata : request.getMetadata() )
- {
- if ( !processedMetadata.containsKey( metadata ) )
- {
- install( session, trace, metadata );
- result.addMetadata( metadata );
- }
- }
-
- return result;
- }
-
- private List<? extends MetadataGenerator> getMetadataGenerators( RepositorySystemSession session,
- InstallRequest request )
- {
- PrioritizedComponents<MetadataGeneratorFactory> factories =
- Utils.sortMetadataGeneratorFactories( session, this.metadataFactories );
-
- List<MetadataGenerator> generators = new ArrayList<MetadataGenerator>();
-
- for ( PrioritizedComponent<MetadataGeneratorFactory> factory : factories.getEnabled() )
- {
- MetadataGenerator generator = factory.getComponent().newInstance( session, request );
- if ( generator != null )
- {
- generators.add( generator );
- }
- }
-
- return generators;
- }
-
- private void install( RepositorySystemSession session, RequestTrace trace, Artifact artifact )
- throws InstallationException
- {
- LocalRepositoryManager lrm = session.getLocalRepositoryManager();
-
- File srcFile = artifact.getFile();
-
- File dstFile = new File( lrm.getRepository().getBasedir(), lrm.getPathForLocalArtifact( artifact ) );
-
- artifactInstalling( session, trace, artifact, dstFile );
-
- Exception exception = null;
- try
- {
- if ( dstFile.equals( srcFile ) )
- {
- throw new IllegalArgumentException( "Cannot install " + dstFile + " to same path" );
- }
-
- boolean copy =
- "pom".equals( artifact.getExtension() ) || srcFile.lastModified() != dstFile.lastModified()
- || srcFile.length() != dstFile.length() || !srcFile.exists();
-
- if ( copy )
- {
- fileProcessor.copy( srcFile, dstFile );
- dstFile.setLastModified( srcFile.lastModified() );
- }
- else
- {
- logger.debug( "Skipped re-installing " + srcFile + " to " + dstFile + ", seems unchanged" );
- }
-
- lrm.add( session, new LocalArtifactRegistration( artifact ) );
- }
- catch ( Exception e )
- {
- exception = e;
- throw new InstallationException( "Failed to install artifact " + artifact + ": " + e.getMessage(), e );
- }
- finally
- {
- artifactInstalled( session, trace, artifact, dstFile, exception );
- }
- }
-
- private void install( RepositorySystemSession session, RequestTrace trace, Metadata metadata )
- throws InstallationException
- {
- LocalRepositoryManager lrm = session.getLocalRepositoryManager();
-
- File dstFile = new File( lrm.getRepository().getBasedir(), lrm.getPathForLocalMetadata( metadata ) );
-
- metadataInstalling( session, trace, metadata, dstFile );
-
- Exception exception = null;
- try
- {
- if ( metadata instanceof MergeableMetadata )
- {
- ( (MergeableMetadata) metadata ).merge( dstFile, dstFile );
- }
- else
- {
- if ( dstFile.equals( metadata.getFile() ) )
- {
- throw new IllegalArgumentException( "Cannot install " + dstFile + " to same path" );
- }
- fileProcessor.copy( metadata.getFile(), dstFile );
- }
-
- lrm.add( session, new LocalMetadataRegistration( metadata ) );
- }
- catch ( Exception e )
- {
- exception = e;
- throw new InstallationException( "Failed to install metadata " + metadata + ": " + e.getMessage(), e );
- }
- finally
- {
- metadataInstalled( session, trace, metadata, dstFile, exception );
- }
- }
-
- private void artifactInstalling( RepositorySystemSession session, RequestTrace trace, Artifact artifact,
- File dstFile )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.ARTIFACT_INSTALLING );
- event.setTrace( trace );
- event.setArtifact( artifact );
- event.setRepository( session.getLocalRepositoryManager().getRepository() );
- event.setFile( dstFile );
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- private void artifactInstalled( RepositorySystemSession session, RequestTrace trace, Artifact artifact,
- File dstFile, Exception exception )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.ARTIFACT_INSTALLED );
- event.setTrace( trace );
- event.setArtifact( artifact );
- event.setRepository( session.getLocalRepositoryManager().getRepository() );
- event.setFile( dstFile );
- event.setException( exception );
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- private void metadataInstalling( RepositorySystemSession session, RequestTrace trace, Metadata metadata,
- File dstFile )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.METADATA_INSTALLING );
- event.setTrace( trace );
- event.setMetadata( metadata );
- event.setRepository( session.getLocalRepositoryManager().getRepository() );
- event.setFile( dstFile );
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- private void metadataInstalled( RepositorySystemSession session, RequestTrace trace, Metadata metadata,
- File dstFile, Exception exception )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.METADATA_INSTALLED );
- event.setTrace( trace );
- event.setMetadata( metadata );
- event.setRepository( session.getLocalRepositoryManager().getRepository() );
- event.setFile( dstFile );
- event.setException( exception );
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalRepositoryProvider.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalRepositoryProvider.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalRepositoryProvider.java
deleted file mode 100644
index 1f0597a..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalRepositoryProvider.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.List;
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.impl.LocalRepositoryProvider;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
-import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-
-/**
- */
-@Named
-public class DefaultLocalRepositoryProvider
- implements LocalRepositoryProvider, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private Collection<LocalRepositoryManagerFactory> managerFactories = new ArrayList<LocalRepositoryManagerFactory>();
-
- public DefaultLocalRepositoryProvider()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultLocalRepositoryProvider( Set<LocalRepositoryManagerFactory> factories, LoggerFactory loggerFactory )
- {
- setLocalRepositoryManagerFactories( factories );
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setLocalRepositoryManagerFactories( locator.getServices( LocalRepositoryManagerFactory.class ) );
- }
-
- public DefaultLocalRepositoryProvider setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultLocalRepositoryProvider addLocalRepositoryManagerFactory( LocalRepositoryManagerFactory factory )
- {
- if ( factory == null )
- {
- throw new IllegalArgumentException( "Local repository manager factory has not been specified." );
- }
- managerFactories.add( factory );
- return this;
- }
-
- public DefaultLocalRepositoryProvider setLocalRepositoryManagerFactories( Collection<LocalRepositoryManagerFactory> factories )
- {
- if ( factories == null )
- {
- managerFactories = new ArrayList<LocalRepositoryManagerFactory>( 2 );
- }
- else
- {
- managerFactories = factories;
- }
- return this;
- }
-
- public LocalRepositoryManager newLocalRepositoryManager( RepositorySystemSession session, LocalRepository repository )
- throws NoLocalRepositoryManagerException
- {
- PrioritizedComponents<LocalRepositoryManagerFactory> factories =
- new PrioritizedComponents<LocalRepositoryManagerFactory>( session );
- for ( LocalRepositoryManagerFactory factory : this.managerFactories )
- {
- factories.add( factory, factory.getPriority() );
- }
-
- List<NoLocalRepositoryManagerException> errors = new ArrayList<NoLocalRepositoryManagerException>();
- for ( PrioritizedComponent<LocalRepositoryManagerFactory> factory : factories.getEnabled() )
- {
- try
- {
- LocalRepositoryManager manager = factory.getComponent().newInstance( session, repository );
-
- if ( logger.isDebugEnabled() )
- {
- StringBuilder buffer = new StringBuilder( 256 );
- buffer.append( "Using manager " ).append( manager.getClass().getSimpleName() );
- Utils.appendClassLoader( buffer, manager );
- buffer.append( " with priority " ).append( factory.getPriority() );
- buffer.append( " for " ).append( repository.getBasedir() );
-
- logger.debug( buffer.toString() );
- }
-
- return manager;
- }
- catch ( NoLocalRepositoryManagerException e )
- {
- // continue and try next factory
- errors.add( e );
- }
- }
- if ( logger.isDebugEnabled() && errors.size() > 1 )
- {
- String msg = "Could not obtain local repository manager for " + repository;
- for ( Exception e : errors )
- {
- logger.debug( msg, e );
- }
- }
-
- StringBuilder buffer = new StringBuilder( 256 );
- if ( factories.isEmpty() )
- {
- buffer.append( "No local repository managers registered" );
- }
- else
- {
- buffer.append( "Cannot access " ).append( repository.getBasedir() );
- buffer.append( " with type " ).append( repository.getContentType() );
- buffer.append( " using the available factories " );
- factories.list( buffer );
- }
-
- throw new NoLocalRepositoryManagerException( repository, buffer.toString(), errors.size() == 1 ? errors.get( 0 )
- : null );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultMetadataResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultMetadataResolver.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultMetadataResolver.java
deleted file mode 100644
index c751112..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultMetadataResolver.java
+++ /dev/null
@@ -1,658 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositoryEvent;
-import org.eclipse.aether.RepositoryEvent.EventType;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.SyncContext;
-import org.eclipse.aether.impl.MetadataResolver;
-import org.eclipse.aether.impl.OfflineController;
-import org.eclipse.aether.impl.RemoteRepositoryManager;
-import org.eclipse.aether.impl.RepositoryConnectorProvider;
-import org.eclipse.aether.impl.RepositoryEventDispatcher;
-import org.eclipse.aether.impl.SyncContextFactory;
-import org.eclipse.aether.impl.UpdateCheck;
-import org.eclipse.aether.impl.UpdateCheckManager;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.ArtifactRepository;
-import org.eclipse.aether.repository.LocalMetadataRegistration;
-import org.eclipse.aether.repository.LocalMetadataRequest;
-import org.eclipse.aether.repository.LocalMetadataResult;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.resolution.MetadataRequest;
-import org.eclipse.aether.resolution.MetadataResult;
-import org.eclipse.aether.spi.connector.MetadataDownload;
-import org.eclipse.aether.spi.connector.RepositoryConnector;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.MetadataNotFoundException;
-import org.eclipse.aether.transfer.MetadataTransferException;
-import org.eclipse.aether.transfer.NoRepositoryConnectorException;
-import org.eclipse.aether.transfer.RepositoryOfflineException;
-import org.eclipse.aether.util.ConfigUtils;
-import org.eclipse.aether.util.concurrency.RunnableErrorForwarder;
-import org.eclipse.aether.util.concurrency.WorkerThreadFactory;
-
-/**
- */
-@Named
-public class DefaultMetadataResolver
- implements MetadataResolver, Service
-{
-
- private static final String CONFIG_PROP_THREADS = "aether.metadataResolver.threads";
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private RepositoryEventDispatcher repositoryEventDispatcher;
-
- private UpdateCheckManager updateCheckManager;
-
- private RepositoryConnectorProvider repositoryConnectorProvider;
-
- private RemoteRepositoryManager remoteRepositoryManager;
-
- private SyncContextFactory syncContextFactory;
-
- private OfflineController offlineController;
-
- public DefaultMetadataResolver()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultMetadataResolver( RepositoryEventDispatcher repositoryEventDispatcher,
- UpdateCheckManager updateCheckManager,
- RepositoryConnectorProvider repositoryConnectorProvider,
- RemoteRepositoryManager remoteRepositoryManager, SyncContextFactory syncContextFactory,
- OfflineController offlineController, LoggerFactory loggerFactory )
- {
- setRepositoryEventDispatcher( repositoryEventDispatcher );
- setUpdateCheckManager( updateCheckManager );
- setRepositoryConnectorProvider( repositoryConnectorProvider );
- setRemoteRepositoryManager( remoteRepositoryManager );
- setSyncContextFactory( syncContextFactory );
- setOfflineController( offlineController );
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setRepositoryEventDispatcher( locator.getService( RepositoryEventDispatcher.class ) );
- setUpdateCheckManager( locator.getService( UpdateCheckManager.class ) );
- setRepositoryConnectorProvider( locator.getService( RepositoryConnectorProvider.class ) );
- setRemoteRepositoryManager( locator.getService( RemoteRepositoryManager.class ) );
- setSyncContextFactory( locator.getService( SyncContextFactory.class ) );
- setOfflineController( locator.getService( OfflineController.class ) );
- }
-
- public DefaultMetadataResolver setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultMetadataResolver setRepositoryEventDispatcher( RepositoryEventDispatcher repositoryEventDispatcher )
- {
- if ( repositoryEventDispatcher == null )
- {
- throw new IllegalArgumentException( "repository event dispatcher has not been specified" );
- }
- this.repositoryEventDispatcher = repositoryEventDispatcher;
- return this;
- }
-
- public DefaultMetadataResolver setUpdateCheckManager( UpdateCheckManager updateCheckManager )
- {
- if ( updateCheckManager == null )
- {
- throw new IllegalArgumentException( "update check manager has not been specified" );
- }
- this.updateCheckManager = updateCheckManager;
- return this;
- }
-
- public DefaultMetadataResolver setRepositoryConnectorProvider( RepositoryConnectorProvider repositoryConnectorProvider )
- {
- if ( repositoryConnectorProvider == null )
- {
- throw new IllegalArgumentException( "repository connector provider has not been specified" );
- }
- this.repositoryConnectorProvider = repositoryConnectorProvider;
- return this;
- }
-
- public DefaultMetadataResolver setRemoteRepositoryManager( RemoteRepositoryManager remoteRepositoryManager )
- {
- if ( remoteRepositoryManager == null )
- {
- throw new IllegalArgumentException( "remote repository manager has not been specified" );
- }
- this.remoteRepositoryManager = remoteRepositoryManager;
- return this;
- }
-
- public DefaultMetadataResolver setSyncContextFactory( SyncContextFactory syncContextFactory )
- {
- if ( syncContextFactory == null )
- {
- throw new IllegalArgumentException( "sync context factory has not been specified" );
- }
- this.syncContextFactory = syncContextFactory;
- return this;
- }
-
- public DefaultMetadataResolver setOfflineController( OfflineController offlineController )
- {
- if ( offlineController == null )
- {
- throw new IllegalArgumentException( "offline controller has not been specified" );
- }
- this.offlineController = offlineController;
- return this;
- }
-
- public List<MetadataResult> resolveMetadata( RepositorySystemSession session,
- Collection<? extends MetadataRequest> requests )
- {
- SyncContext syncContext = syncContextFactory.newInstance( session, false );
-
- try
- {
- Collection<Metadata> metadata = new ArrayList<Metadata>( requests.size() );
- for ( MetadataRequest request : requests )
- {
- metadata.add( request.getMetadata() );
- }
-
- syncContext.acquire( null, metadata );
-
- return resolve( session, requests );
- }
- finally
- {
- syncContext.close();
- }
- }
-
- private List<MetadataResult> resolve( RepositorySystemSession session,
- Collection<? extends MetadataRequest> requests )
- {
- List<MetadataResult> results = new ArrayList<MetadataResult>( requests.size() );
-
- List<ResolveTask> tasks = new ArrayList<ResolveTask>( requests.size() );
-
- Map<File, Long> localLastUpdates = new HashMap<File, Long>();
-
- for ( MetadataRequest request : requests )
- {
- RequestTrace trace = RequestTrace.newChild( request.getTrace(), request );
-
- MetadataResult result = new MetadataResult( request );
- results.add( result );
-
- Metadata metadata = request.getMetadata();
- RemoteRepository repository = request.getRepository();
-
- if ( repository == null )
- {
- LocalRepository localRepo = session.getLocalRepositoryManager().getRepository();
-
- metadataResolving( session, trace, metadata, localRepo );
-
- File localFile = getLocalFile( session, metadata );
-
- if ( localFile != null )
- {
- metadata = metadata.setFile( localFile );
- result.setMetadata( metadata );
- }
- else
- {
- result.setException( new MetadataNotFoundException( metadata, localRepo ) );
- }
-
- metadataResolved( session, trace, metadata, localRepo, result.getException() );
- continue;
- }
-
- List<RemoteRepository> repositories = getEnabledSourceRepositories( repository, metadata.getNature() );
-
- if ( repositories.isEmpty() )
- {
- continue;
- }
-
- metadataResolving( session, trace, metadata, repository );
- LocalRepositoryManager lrm = session.getLocalRepositoryManager();
- LocalMetadataRequest localRequest =
- new LocalMetadataRequest( metadata, repository, request.getRequestContext() );
- LocalMetadataResult lrmResult = lrm.find( session, localRequest );
-
- File metadataFile = lrmResult.getFile();
-
- try
- {
- Utils.checkOffline( session, offlineController, repository );
- }
- catch ( RepositoryOfflineException e )
- {
- if ( metadataFile != null )
- {
- metadata = metadata.setFile( metadataFile );
- result.setMetadata( metadata );
- }
- else
- {
- String msg =
- "Cannot access " + repository.getId() + " (" + repository.getUrl()
- + ") in offline mode and the metadata " + metadata
- + " has not been downloaded from it before";
- result.setException( new MetadataNotFoundException( metadata, repository, msg, e ) );
- }
-
- metadataResolved( session, trace, metadata, repository, result.getException() );
- continue;
- }
-
- Long localLastUpdate = null;
- if ( request.isFavorLocalRepository() )
- {
- File localFile = getLocalFile( session, metadata );
- localLastUpdate = localLastUpdates.get( localFile );
- if ( localLastUpdate == null )
- {
- localLastUpdate = localFile != null ? localFile.lastModified() : 0;
- localLastUpdates.put( localFile, localLastUpdate );
- }
- }
-
- List<UpdateCheck<Metadata, MetadataTransferException>> checks =
- new ArrayList<UpdateCheck<Metadata, MetadataTransferException>>();
- Exception exception = null;
- for ( RemoteRepository repo : repositories )
- {
- UpdateCheck<Metadata, MetadataTransferException> check =
- new UpdateCheck<Metadata, MetadataTransferException>();
- check.setLocalLastUpdated( ( localLastUpdate != null ) ? localLastUpdate : 0 );
- check.setItem( metadata );
-
- // use 'main' installation file for the check (-> use requested repository)
- File checkFile =
- new File(
- session.getLocalRepository().getBasedir(),
- session.getLocalRepositoryManager().getPathForRemoteMetadata( metadata, repository,
- request.getRequestContext() ) );
- check.setFile( checkFile );
- check.setRepository( repository );
- check.setAuthoritativeRepository( repo );
- check.setPolicy( getPolicy( session, repo, metadata.getNature() ).getUpdatePolicy() );
-
- if ( lrmResult.isStale() )
- {
- checks.add( check );
- }
- else
- {
- updateCheckManager.checkMetadata( session, check );
- if ( check.isRequired() )
- {
- checks.add( check );
- }
- else if ( exception == null )
- {
- exception = check.getException();
- }
- }
- }
-
- if ( !checks.isEmpty() )
- {
- RepositoryPolicy policy = getPolicy( session, repository, metadata.getNature() );
-
- // install path may be different from lookup path
- File installFile =
- new File(
- session.getLocalRepository().getBasedir(),
- session.getLocalRepositoryManager().getPathForRemoteMetadata( metadata,
- request.getRepository(),
- request.getRequestContext() ) );
-
- ResolveTask task =
- new ResolveTask( session, trace, result, installFile, checks, policy.getChecksumPolicy() );
- tasks.add( task );
- }
- else
- {
- result.setException( exception );
- if ( metadataFile != null )
- {
- metadata = metadata.setFile( metadataFile );
- result.setMetadata( metadata );
- }
- metadataResolved( session, trace, metadata, repository, result.getException() );
- }
- }
-
- if ( !tasks.isEmpty() )
- {
- int threads = ConfigUtils.getInteger( session, 4, CONFIG_PROP_THREADS );
- Executor executor = getExecutor( Math.min( tasks.size(), threads ) );
- try
- {
- RunnableErrorForwarder errorForwarder = new RunnableErrorForwarder();
-
- for ( ResolveTask task : tasks )
- {
- executor.execute( errorForwarder.wrap( task ) );
- }
-
- errorForwarder.await();
-
- for ( ResolveTask task : tasks )
- {
- task.result.setException( task.exception );
- }
- }
- finally
- {
- shutdown( executor );
- }
- for ( ResolveTask task : tasks )
- {
- Metadata metadata = task.request.getMetadata();
- // re-lookup metadata for resolve
- LocalMetadataRequest localRequest =
- new LocalMetadataRequest( metadata, task.request.getRepository(), task.request.getRequestContext() );
- File metadataFile = session.getLocalRepositoryManager().find( session, localRequest ).getFile();
- if ( metadataFile != null )
- {
- metadata = metadata.setFile( metadataFile );
- task.result.setMetadata( metadata );
- }
- if ( task.result.getException() == null )
- {
- task.result.setUpdated( true );
- }
- metadataResolved( session, task.trace, metadata, task.request.getRepository(),
- task.result.getException() );
- }
- }
-
- return results;
- }
-
- private File getLocalFile( RepositorySystemSession session, Metadata metadata )
- {
- LocalRepositoryManager lrm = session.getLocalRepositoryManager();
- LocalMetadataResult localResult = lrm.find( session, new LocalMetadataRequest( metadata, null, null ) );
- File localFile = localResult.getFile();
- return localFile;
- }
-
- private List<RemoteRepository> getEnabledSourceRepositories( RemoteRepository repository, Metadata.Nature nature )
- {
- List<RemoteRepository> repositories = new ArrayList<RemoteRepository>();
-
- if ( repository.isRepositoryManager() )
- {
- for ( RemoteRepository repo : repository.getMirroredRepositories() )
- {
- if ( isEnabled( repo, nature ) )
- {
- repositories.add( repo );
- }
- }
- }
- else if ( isEnabled( repository, nature ) )
- {
- repositories.add( repository );
- }
-
- return repositories;
- }
-
- private boolean isEnabled( RemoteRepository repository, Metadata.Nature nature )
- {
- if ( !Metadata.Nature.SNAPSHOT.equals( nature ) && repository.getPolicy( false ).isEnabled() )
- {
- return true;
- }
- if ( !Metadata.Nature.RELEASE.equals( nature ) && repository.getPolicy( true ).isEnabled() )
- {
- return true;
- }
- return false;
- }
-
- private RepositoryPolicy getPolicy( RepositorySystemSession session, RemoteRepository repository,
- Metadata.Nature nature )
- {
- boolean releases = !Metadata.Nature.SNAPSHOT.equals( nature );
- boolean snapshots = !Metadata.Nature.RELEASE.equals( nature );
- return remoteRepositoryManager.getPolicy( session, repository, releases, snapshots );
- }
-
- private void metadataResolving( RepositorySystemSession session, RequestTrace trace, Metadata metadata,
- ArtifactRepository repository )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.METADATA_RESOLVING );
- event.setTrace( trace );
- event.setMetadata( metadata );
- event.setRepository( repository );
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- private void metadataResolved( RepositorySystemSession session, RequestTrace trace, Metadata metadata,
- ArtifactRepository repository, Exception exception )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.METADATA_RESOLVED );
- event.setTrace( trace );
- event.setMetadata( metadata );
- event.setRepository( repository );
- event.setException( exception );
- event.setFile( metadata.getFile() );
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- private void metadataDownloading( RepositorySystemSession session, RequestTrace trace, Metadata metadata,
- ArtifactRepository repository )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.METADATA_DOWNLOADING );
- event.setTrace( trace );
- event.setMetadata( metadata );
- event.setRepository( repository );
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- private void metadataDownloaded( RepositorySystemSession session, RequestTrace trace, Metadata metadata,
- ArtifactRepository repository, File file, Exception exception )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.METADATA_DOWNLOADED );
- event.setTrace( trace );
- event.setMetadata( metadata );
- event.setRepository( repository );
- event.setException( exception );
- event.setFile( file );
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- private Executor getExecutor( int threads )
- {
- if ( threads <= 1 )
- {
- return new Executor()
- {
- public void execute( Runnable command )
- {
- command.run();
- }
- };
- }
- else
- {
- return new ThreadPoolExecutor( threads, threads, 3, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(),
- new WorkerThreadFactory( null ) );
- }
- }
-
- private void shutdown( Executor executor )
- {
- if ( executor instanceof ExecutorService )
- {
- ( (ExecutorService) executor ).shutdown();
- }
- }
-
- class ResolveTask
- implements Runnable
- {
-
- final RepositorySystemSession session;
-
- final RequestTrace trace;
-
- final MetadataResult result;
-
- final MetadataRequest request;
-
- final File metadataFile;
-
- final String policy;
-
- final List<UpdateCheck<Metadata, MetadataTransferException>> checks;
-
- volatile MetadataTransferException exception;
-
- public ResolveTask( RepositorySystemSession session, RequestTrace trace, MetadataResult result,
- File metadataFile, List<UpdateCheck<Metadata, MetadataTransferException>> checks,
- String policy )
- {
- this.session = session;
- this.trace = trace;
- this.result = result;
- this.request = result.getRequest();
- this.metadataFile = metadataFile;
- this.policy = policy;
- this.checks = checks;
- }
-
- public void run()
- {
- Metadata metadata = request.getMetadata();
- RemoteRepository requestRepository = request.getRepository();
-
- metadataDownloading( session, trace, metadata, requestRepository );
-
- try
- {
- List<RemoteRepository> repositories = new ArrayList<RemoteRepository>();
- for ( UpdateCheck<Metadata, MetadataTransferException> check : checks )
- {
- repositories.add( check.getAuthoritativeRepository() );
- }
-
- MetadataDownload download = new MetadataDownload();
- download.setMetadata( metadata );
- download.setRequestContext( request.getRequestContext() );
- download.setFile( metadataFile );
- download.setChecksumPolicy( policy );
- download.setRepositories( repositories );
- download.setListener( SafeTransferListener.wrap( session, logger ) );
- download.setTrace( trace );
-
- RepositoryConnector connector =
- repositoryConnectorProvider.newRepositoryConnector( session, requestRepository );
- try
- {
- connector.get( null, Arrays.asList( download ) );
- }
- finally
- {
- connector.close();
- }
-
- exception = download.getException();
-
- if ( exception == null )
- {
-
- List<String> contexts = Collections.singletonList( request.getRequestContext() );
- LocalMetadataRegistration registration =
- new LocalMetadataRegistration( metadata, requestRepository, contexts );
-
- session.getLocalRepositoryManager().add( session, registration );
- }
- else if ( request.isDeleteLocalCopyIfMissing() && exception instanceof MetadataNotFoundException )
- {
- download.getFile().delete();
- }
- }
- catch ( NoRepositoryConnectorException e )
- {
- exception = new MetadataTransferException( metadata, requestRepository, e );
- }
-
- /*
- * NOTE: Touch after registration with local repo to ensure concurrent resolution is not rejected with
- * "already updated" via session data when actual update to local repo is still pending.
- */
- for ( UpdateCheck<Metadata, MetadataTransferException> check : checks )
- {
- updateCheckManager.touchMetadata( session, check.setException( exception ) );
- }
-
- metadataDownloaded( session, trace, metadata, requestRepository, metadataFile, exception );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultOfflineController.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultOfflineController.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultOfflineController.java
deleted file mode 100644
index 938a9e1..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultOfflineController.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.regex.Pattern;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.impl.OfflineController;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.RepositoryOfflineException;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- *
- */
-@Named
-public class DefaultOfflineController
- implements OfflineController, Service
-{
-
- static final String CONFIG_PROP_OFFLINE_PROTOCOLS = "aether.offline.protocols";
-
- static final String CONFIG_PROP_OFFLINE_HOSTS = "aether.offline.hosts";
-
- private static final Pattern SEP = Pattern.compile( "\\s*,\\s*" );
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- public DefaultOfflineController()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultOfflineController( LoggerFactory loggerFactory )
- {
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- }
-
- public DefaultOfflineController setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public void checkOffline( RepositorySystemSession session, RemoteRepository repository )
- throws RepositoryOfflineException
- {
- if ( isOfflineProtocol( session, repository ) || isOfflineHost( session, repository ) )
- {
- return;
- }
-
- throw new RepositoryOfflineException( repository );
- }
-
- private boolean isOfflineProtocol( RepositorySystemSession session, RemoteRepository repository )
- {
- String[] protocols = getConfig( session, CONFIG_PROP_OFFLINE_PROTOCOLS );
- if ( protocols != null )
- {
- String protocol = repository.getProtocol();
- if ( protocol.length() > 0 )
- {
- for ( String p : protocols )
- {
- if ( p.equalsIgnoreCase( protocol ) )
- {
- return true;
- }
- }
- }
- }
- return false;
- }
-
- private boolean isOfflineHost( RepositorySystemSession session, RemoteRepository repository )
- {
- String[] hosts = getConfig( session, CONFIG_PROP_OFFLINE_HOSTS );
- if ( hosts != null )
- {
- String host = repository.getHost();
- if ( host.length() > 0 )
- {
- for ( String h : hosts )
- {
- if ( h.equalsIgnoreCase( host ) )
- {
- return true;
- }
- }
- }
- }
- return false;
- }
-
- private String[] getConfig( RepositorySystemSession session, String key )
- {
- String value = ConfigUtils.getString( session, "", key ).trim();
- if ( value.length() <= 0 )
- {
- return null;
- }
- return SEP.split( value );
- }
-
-}
[07/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/repository/JreProxySelectorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/repository/JreProxySelectorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/repository/JreProxySelectorTest.java
deleted file mode 100644
index 8eac55b..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/repository/JreProxySelectorTest.java
+++ /dev/null
@@ -1,184 +0,0 @@
-package org.eclipse.aether.util.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 static org.junit.Assert.*;
-
-import java.io.IOException;
-import java.net.Authenticator;
-import java.net.InetSocketAddress;
-import java.net.PasswordAuthentication;
-import java.net.SocketAddress;
-import java.net.URI;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.ProxySelector;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class JreProxySelectorTest
-{
-
- private abstract class AbstractProxySelector
- extends java.net.ProxySelector
- {
- @Override
- public void connectFailed( URI uri, SocketAddress sa, IOException ioe )
- {
- }
- }
-
- private ProxySelector selector = new JreProxySelector();
-
- private java.net.ProxySelector original;
-
- @Before
- public void init()
- {
- original = java.net.ProxySelector.getDefault();
- }
-
- @After
- public void exit()
- {
- java.net.ProxySelector.setDefault( original );
- Authenticator.setDefault( null );
- }
-
- @Test
- public void testGetProxy_InvalidUrl()
- throws Exception
- {
- RemoteRepository repo = new RemoteRepository.Builder( "test", "default", "http://host:invalid" ).build();
- assertNull( selector.getProxy( repo ) );
- }
-
- @Test
- public void testGetProxy_OpaqueUrl()
- throws Exception
- {
- RemoteRepository repo = new RemoteRepository.Builder( "test", "default", "classpath:base" ).build();
- assertNull( selector.getProxy( repo ) );
- }
-
- @Test
- public void testGetProxy_NullSelector()
- throws Exception
- {
- RemoteRepository repo = new RemoteRepository.Builder( "test", "default", "http://repo.eclipse.org/" ).build();
- java.net.ProxySelector.setDefault( null );
- assertNull( selector.getProxy( repo ) );
- }
-
- @Test
- public void testGetProxy_NoProxies()
- throws Exception
- {
- RemoteRepository repo = new RemoteRepository.Builder( "test", "default", "http://repo.eclipse.org/" ).build();
- java.net.ProxySelector.setDefault( new AbstractProxySelector()
- {
- @Override
- public List<java.net.Proxy> select( URI uri )
- {
- return Collections.emptyList();
- }
-
- } );
- assertNull( selector.getProxy( repo ) );
- }
-
- @Test
- public void testGetProxy_DirectProxy()
- throws Exception
- {
- RemoteRepository repo = new RemoteRepository.Builder( "test", "default", "http://repo.eclipse.org/" ).build();
- final InetSocketAddress addr = InetSocketAddress.createUnresolved( "proxy", 8080 );
- java.net.ProxySelector.setDefault( new AbstractProxySelector()
- {
- @Override
- public List<java.net.Proxy> select( URI uri )
- {
- return Arrays.asList( java.net.Proxy.NO_PROXY, new java.net.Proxy( java.net.Proxy.Type.HTTP, addr ) );
- }
-
- } );
- assertNull( selector.getProxy( repo ) );
- }
-
- @Test
- public void testGetProxy_HttpProxy()
- throws Exception
- {
- final RemoteRepository repo =
- new RemoteRepository.Builder( "test", "default", "http://repo.eclipse.org/" ).build();
- final URL url = new URL( repo.getUrl() );
- final InetSocketAddress addr = InetSocketAddress.createUnresolved( "proxy", 8080 );
- java.net.ProxySelector.setDefault( new AbstractProxySelector()
- {
- @Override
- public List<java.net.Proxy> select( URI uri )
- {
- if ( repo.getHost().equalsIgnoreCase( uri.getHost() ) )
- {
- return Arrays.asList( new java.net.Proxy( java.net.Proxy.Type.HTTP, addr ) );
- }
- return Collections.emptyList();
- }
-
- } );
- Authenticator.setDefault( new Authenticator()
- {
- @Override
- protected PasswordAuthentication getPasswordAuthentication()
- {
- if ( Authenticator.RequestorType.PROXY.equals( getRequestorType() )
- && addr.getHostName().equals( getRequestingHost() ) && addr.getPort() == getRequestingPort()
- && url.equals( getRequestingURL() ) )
- {
- return new PasswordAuthentication( "proxyuser", "proxypass".toCharArray() );
- }
- return super.getPasswordAuthentication();
- }
- } );
-
- Proxy proxy = selector.getProxy( repo );
- assertNotNull( proxy );
- assertEquals( addr.getHostName(), proxy.getHost() );
- assertEquals( addr.getPort(), proxy.getPort() );
- assertEquals( Proxy.TYPE_HTTP, proxy.getType() );
-
- RemoteRepository repo2 = new RemoteRepository.Builder( repo ).setProxy( proxy ).build();
- Authentication auth = proxy.getAuthentication();
- assertNotNull( auth );
- AuthenticationContext authCtx = AuthenticationContext.forProxy( new DefaultRepositorySystemSession(), repo2 );
- assertEquals( "proxyuser", authCtx.get( AuthenticationContext.USERNAME ) );
- assertEquals( "proxypass", authCtx.get( AuthenticationContext.PASSWORD ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/repository/SecretAuthenticationTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/repository/SecretAuthenticationTest.java b/aether-util/src/test/java/org/eclipse/aether/util/repository/SecretAuthenticationTest.java
deleted file mode 100644
index df4afaf..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/repository/SecretAuthenticationTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package org.eclipse.aether.util.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 static org.junit.Assert.*;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.AuthenticationDigest;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.junit.Test;
-
-public class SecretAuthenticationTest
-{
-
- private RepositorySystemSession newSession()
- {
- return new DefaultRepositorySystemSession();
- }
-
- private RemoteRepository newRepo( Authentication auth )
- {
- return new RemoteRepository.Builder( "test", "default", "http://localhost" ).setAuthentication( auth ).build();
- }
-
- private AuthenticationContext newContext( Authentication auth )
- {
- return AuthenticationContext.forRepository( newSession(), newRepo( auth ) );
- }
-
- private String newDigest( Authentication auth )
- {
- return AuthenticationDigest.forRepository( newSession(), newRepo( auth ) );
- }
-
- @Test
- public void testConstructor_CopyChars()
- {
- char[] value = { 'v', 'a', 'l' };
- new SecretAuthentication( "key", value );
- assertArrayEquals( new char[] { 'v', 'a', 'l' }, value );
- }
-
- @Test
- public void testFill()
- {
- Authentication auth = new SecretAuthentication( "key", "value" );
- AuthenticationContext context = newContext( auth );
- assertEquals( null, context.get( "another-key" ) );
- assertEquals( "value", context.get( "key" ) );
- }
-
- @Test
- public void testDigest()
- {
- Authentication auth1 = new SecretAuthentication( "key", "value" );
- Authentication auth2 = new SecretAuthentication( "key", "value" );
- String digest1 = newDigest( auth1 );
- String digest2 = newDigest( auth2 );
- assertEquals( digest1, digest2 );
-
- Authentication auth3 = new SecretAuthentication( "key", "Value" );
- String digest3 = newDigest( auth3 );
- assertFalse( digest3.equals( digest1 ) );
-
- Authentication auth4 = new SecretAuthentication( "Key", "value" );
- String digest4 = newDigest( auth4 );
- assertFalse( digest4.equals( digest1 ) );
- }
-
- @Test
- public void testEquals()
- {
- Authentication auth1 = new SecretAuthentication( "key", "value" );
- Authentication auth2 = new SecretAuthentication( "key", "value" );
- Authentication auth3 = new SecretAuthentication( "key", "Value" );
- assertEquals( auth1, auth2 );
- assertFalse( auth1.equals( auth3 ) );
- assertFalse( auth1.equals( null ) );
- }
-
- @Test
- public void testHashCode()
- {
- Authentication auth1 = new SecretAuthentication( "key", "value" );
- Authentication auth2 = new SecretAuthentication( "key", "value" );
- assertEquals( auth1.hashCode(), auth2.hashCode() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/repository/StringAuthenticationTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/repository/StringAuthenticationTest.java b/aether-util/src/test/java/org/eclipse/aether/util/repository/StringAuthenticationTest.java
deleted file mode 100644
index 8f89299..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/repository/StringAuthenticationTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.eclipse.aether.util.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 static org.junit.Assert.*;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.AuthenticationDigest;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.junit.Test;
-
-public class StringAuthenticationTest
-{
-
- private RepositorySystemSession newSession()
- {
- return new DefaultRepositorySystemSession();
- }
-
- private RemoteRepository newRepo( Authentication auth )
- {
- return new RemoteRepository.Builder( "test", "default", "http://localhost" ).setAuthentication( auth ).build();
- }
-
- private AuthenticationContext newContext( Authentication auth )
- {
- return AuthenticationContext.forRepository( newSession(), newRepo( auth ) );
- }
-
- private String newDigest( Authentication auth )
- {
- return AuthenticationDigest.forRepository( newSession(), newRepo( auth ) );
- }
-
- @Test
- public void testFill()
- {
- Authentication auth = new StringAuthentication( "key", "value" );
- AuthenticationContext context = newContext( auth );
- assertEquals( null, context.get( "another-key" ) );
- assertEquals( "value", context.get( "key" ) );
- }
-
- @Test
- public void testDigest()
- {
- Authentication auth1 = new StringAuthentication( "key", "value" );
- Authentication auth2 = new StringAuthentication( "key", "value" );
- String digest1 = newDigest( auth1 );
- String digest2 = newDigest( auth2 );
- assertEquals( digest1, digest2 );
-
- Authentication auth3 = new StringAuthentication( "key", "Value" );
- String digest3 = newDigest( auth3 );
- assertFalse( digest3.equals( digest1 ) );
-
- Authentication auth4 = new StringAuthentication( "Key", "value" );
- String digest4 = newDigest( auth4 );
- assertFalse( digest4.equals( digest1 ) );
- }
-
- @Test
- public void testEquals()
- {
- Authentication auth1 = new StringAuthentication( "key", "value" );
- Authentication auth2 = new StringAuthentication( "key", "value" );
- Authentication auth3 = new StringAuthentication( "key", "Value" );
- assertEquals( auth1, auth2 );
- assertFalse( auth1.equals( auth3 ) );
- assertFalse( auth1.equals( null ) );
- }
-
- @Test
- public void testHashCode()
- {
- Authentication auth1 = new StringAuthentication( "key", "value" );
- Authentication auth2 = new StringAuthentication( "key", "value" );
- assertEquals( auth1.hashCode(), auth2.hashCode() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/version/AbstractVersionTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/version/AbstractVersionTest.java b/aether-util/src/test/java/org/eclipse/aether/util/version/AbstractVersionTest.java
deleted file mode 100644
index 52541db..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/version/AbstractVersionTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.eclipse.aether.util.version;
-
-/*
- * 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 static org.junit.Assert.assertEquals;
-
-import org.eclipse.aether.version.Version;
-
-/**
- */
-abstract class AbstractVersionTest
-{
-
- protected static final int X_LT_Y = -1;
-
- protected static final int X_EQ_Y = 0;
-
- protected static final int X_GT_Y = 1;
-
- protected abstract Version newVersion( String version );
-
- protected void assertOrder( int expected, String version1, String version2 )
- {
- Version v1 = newVersion( version1 );
- Version v2 = newVersion( version2 );
-
- if ( expected > 0 )
- {
- assertEquals( "expected " + v1 + " > " + v2, 1, Integer.signum( v1.compareTo( v2 ) ) );
- assertEquals( "expected " + v2 + " < " + v1, -1, Integer.signum( v2.compareTo( v1 ) ) );
- assertEquals( "expected " + v1 + " != " + v2, false, v1.equals( v2 ) );
- assertEquals( "expected " + v2 + " != " + v1, false, v2.equals( v1 ) );
- }
- else if ( expected < 0 )
- {
- assertEquals( "expected " + v1 + " < " + v2, -1, Integer.signum( v1.compareTo( v2 ) ) );
- assertEquals( "expected " + v2 + " > " + v1, 1, Integer.signum( v2.compareTo( v1 ) ) );
- assertEquals( "expected " + v1 + " != " + v2, false, v1.equals( v2 ) );
- assertEquals( "expected " + v2 + " != " + v1, false, v2.equals( v1 ) );
- }
- else
- {
- assertEquals( "expected " + v1 + " == " + v2, 0, v1.compareTo( v2 ) );
- assertEquals( "expected " + v2 + " == " + v1, 0, v2.compareTo( v1 ) );
- assertEquals( "expected " + v1 + " == " + v2, true, v1.equals( v2 ) );
- assertEquals( "expected " + v2 + " == " + v1, true, v2.equals( v1 ) );
- assertEquals( "expected #(" + v1 + ") == #(" + v1 + ")", v1.hashCode(), v2.hashCode() );
- }
- }
-
- protected void assertSequence( String... versions )
- {
- for ( int i = 0; i < versions.length - 1; i++ )
- {
- for ( int j = i + 1; j < versions.length; j++ )
- {
- assertOrder( X_LT_Y, versions[i], versions[j] );
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionRangeTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionRangeTest.java b/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionRangeTest.java
deleted file mode 100644
index 85d007f..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionRangeTest.java
+++ /dev/null
@@ -1,167 +0,0 @@
-package org.eclipse.aether.util.version;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.util.version.GenericVersion;
-import org.eclipse.aether.util.version.GenericVersionRange;
-import org.eclipse.aether.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionRange;
-import org.junit.Test;
-
-public class GenericVersionRangeTest
-{
-
- private Version newVersion( String version )
- {
- return new GenericVersion( version );
- }
-
- private VersionRange parseValid( String range )
- {
- try
- {
- return new GenericVersionRange( range );
- }
- catch ( InvalidVersionSpecificationException e )
- {
- AssertionError error =
- new AssertionError( range + " should be valid but failed to parse due to: " + e.getMessage() );
- error.initCause( e );
- throw error;
- }
- }
-
- private void parseInvalid( String range )
- {
- try
- {
- new GenericVersionRange( range );
- fail( range + " should be invalid" );
- }
- catch ( InvalidVersionSpecificationException e )
- {
- assertTrue( true );
- }
- }
-
- private void assertContains( VersionRange range, String version )
- {
- assertTrue( range + " should contain " + version, range.containsVersion( newVersion( version ) ) );
- }
-
- private void assertNotContains( VersionRange range, String version )
- {
- assertFalse( range + " should not contain " + version, range.containsVersion( newVersion( version ) ) );
- }
-
- @Test
- public void testLowerBoundInclusiveUpperBoundInclusive()
- {
- VersionRange range = parseValid( "[1,2]" );
- assertContains( range, "1" );
- assertContains( range, "1.1-SNAPSHOT" );
- assertContains( range, "2" );
- assertEquals( range, parseValid( range.toString() ) );
- }
-
- @Test
- public void testLowerBoundInclusiveUpperBoundExclusive()
- {
- VersionRange range = parseValid( "[1.2.3.4.5,1.2.3.4.6)" );
- assertContains( range, "1.2.3.4.5" );
- assertNotContains( range, "1.2.3.4.6" );
- assertEquals( range, parseValid( range.toString() ) );
- }
-
- @Test
- public void testLowerBoundExclusiveUpperBoundInclusive()
- {
- VersionRange range = parseValid( "(1a,1b]" );
- assertNotContains( range, "1a" );
- assertContains( range, "1b" );
- assertEquals( range, parseValid( range.toString() ) );
- }
-
- @Test
- public void testLowerBoundExclusiveUpperBoundExclusive()
- {
- VersionRange range = parseValid( "(1,3)" );
- assertNotContains( range, "1" );
- assertContains( range, "2-SNAPSHOT" );
- assertNotContains( range, "3" );
- assertEquals( range, parseValid( range.toString() ) );
- }
-
- @Test
- public void testSingleVersion()
- {
- VersionRange range = parseValid( "[1]" );
- assertContains( range, "1" );
- assertEquals( range, parseValid( range.toString() ) );
-
- range = parseValid( "[1,1]" );
- assertContains( range, "1" );
- assertEquals( range, parseValid( range.toString() ) );
- }
-
- @Test
- public void testSingleWildcardVersion()
- {
- VersionRange range = parseValid( "[1.2.*]" );
- assertContains( range, "1.2-alpha-1" );
- assertContains( range, "1.2-SNAPSHOT" );
- assertContains( range, "1.2" );
- assertContains( range, "1.2.9999999" );
- assertNotContains( range, "1.3-rc-1" );
- assertEquals( range, parseValid( range.toString() ) );
- }
-
- @Test
- public void testMissingOpenCloseDelimiter()
- {
- parseInvalid( "1.0" );
- }
-
- @Test
- public void testMissingOpenDelimiter()
- {
- parseInvalid( "1.0]" );
- parseInvalid( "1.0)" );
- }
-
- @Test
- public void testMissingCloseDelimiter()
- {
- parseInvalid( "[1.0" );
- parseInvalid( "(1.0" );
- }
-
- @Test
- public void testTooManyVersions()
- {
- parseInvalid( "[1,2,3]" );
- parseInvalid( "(1,2,3)" );
- parseInvalid( "[1,2,3)" );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionSchemeTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionSchemeTest.java b/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionSchemeTest.java
deleted file mode 100644
index f52f73d..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionSchemeTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package org.eclipse.aether.util.version;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.util.version.GenericVersion;
-import org.eclipse.aether.util.version.GenericVersionScheme;
-import org.eclipse.aether.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.VersionConstraint;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class GenericVersionSchemeTest
-{
-
- private GenericVersionScheme scheme;
-
- @Before
- public void setUp()
- throws Exception
- {
- scheme = new GenericVersionScheme();
- }
-
- private InvalidVersionSpecificationException parseInvalid( String constraint )
- {
- try
- {
- scheme.parseVersionConstraint( constraint );
- fail( "expected exception for constraint " + constraint );
- return null;
- }
- catch ( InvalidVersionSpecificationException e )
- {
- return e;
- }
- }
-
- @Test
- public void testEnumeratedVersions()
- throws InvalidVersionSpecificationException
- {
- VersionConstraint c = scheme.parseVersionConstraint( "1.0" );
- assertEquals( "1.0", c.getVersion().toString() );
- assertTrue( c.containsVersion( new GenericVersion( "1.0" ) ) );
-
- c = scheme.parseVersionConstraint( "[1.0]" );
- assertEquals( null, c.getVersion() );
- assertTrue( c.containsVersion( new GenericVersion( "1.0" ) ) );
-
- c = scheme.parseVersionConstraint( "[1.0],[2.0]" );
- assertTrue( c.containsVersion( new GenericVersion( "1.0" ) ) );
- assertTrue( c.containsVersion( new GenericVersion( "2.0" ) ) );
-
- c = scheme.parseVersionConstraint( "[1.0],[2.0],[3.0]" );
- assertContains( c, "1.0", "2.0", "3.0" );
- assertNotContains( c, "1.5" );
-
- c = scheme.parseVersionConstraint( "[1,3),(3,5)" );
- assertContains( c, "1", "2", "4" );
- assertNotContains( c, "3", "5" );
-
- c = scheme.parseVersionConstraint( "[1,3),(3,)" );
- assertContains( c, "1", "2", "4" );
- assertNotContains( c, "3" );
- }
-
- private void assertNotContains( VersionConstraint c, String... versions )
- {
- assertContains( String.format( "%s: %%s should not be contained\n", c.toString() ), c, false, versions );
- }
-
- private void assertContains( String msg, VersionConstraint c, boolean b, String... versions )
- {
- for ( String v : versions )
- {
- assertEquals( String.format( msg, v ), b, c.containsVersion( new GenericVersion( v ) ) );
- }
- }
-
- private void assertContains( VersionConstraint c, String... versions )
- {
- assertContains( String.format( "%s: %%s should be contained\n", c.toString() ), c, true, versions );
- }
-
- @Test
- public void testInvalid()
- {
- parseInvalid( "[1," );
- parseInvalid( "[1,2],(3," );
- parseInvalid( "[1,2],3" );
- }
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionTest.java b/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionTest.java
deleted file mode 100644
index ae891af..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/version/GenericVersionTest.java
+++ /dev/null
@@ -1,345 +0,0 @@
-package org.eclipse.aether.util.version;
-
-/*
- * 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.Locale;
-
-import org.eclipse.aether.util.version.GenericVersion;
-import org.eclipse.aether.version.Version;
-import org.junit.Test;
-
-/**
- */
-public class GenericVersionTest
- extends AbstractVersionTest
-{
-
- protected Version newVersion( String version )
- {
- return new GenericVersion( version );
- }
-
- @Test
- public void testEmptyVersion()
- {
- assertOrder( X_EQ_Y, "0", "" );
- }
-
- @Test
- public void testNumericOrdering()
- {
- assertOrder( X_LT_Y, "2", "10" );
- assertOrder( X_LT_Y, "1.2", "1.10" );
- assertOrder( X_LT_Y, "1.0.2", "1.0.10" );
- assertOrder( X_LT_Y, "1.0.0.2", "1.0.0.10" );
- assertOrder( X_LT_Y, "1.0.20101206.111434.1", "1.0.20101206.111435.1" );
- assertOrder( X_LT_Y, "1.0.20101206.111434.2", "1.0.20101206.111434.10" );
- }
-
- @Test
- public void testDelimiters()
- {
- assertOrder( X_EQ_Y, "1.0", "1-0" );
- assertOrder( X_EQ_Y, "1.0", "1_0" );
- assertOrder( X_EQ_Y, "1.a", "1a" );
- }
-
- @Test
- public void testLeadingZerosAreSemanticallyIrrelevant()
- {
- assertOrder( X_EQ_Y, "1", "01" );
- assertOrder( X_EQ_Y, "1.2", "1.002" );
- assertOrder( X_EQ_Y, "1.2.3", "1.2.0003" );
- assertOrder( X_EQ_Y, "1.2.3.4", "1.2.3.00004" );
- }
-
- @Test
- public void testTrailingZerosAreSemanticallyIrrelevant()
- {
- assertOrder( X_EQ_Y, "1", "1.0.0.0.0.0.0.0.0.0.0.0.0.0" );
- assertOrder( X_EQ_Y, "1", "1-0-0-0-0-0-0-0-0-0-0-0-0-0" );
- assertOrder( X_EQ_Y, "1", "1.0-0.0-0.0-0.0-0.0-0.0-0.0" );
- assertOrder( X_EQ_Y, "1", "1.0000000000000" );
- assertOrder( X_EQ_Y, "1.0", "1.0.0" );
- }
-
- @Test
- public void testTrailingZerosBeforeQualifierAreSemanticallyIrrelevant()
- {
- assertOrder( X_EQ_Y, "1.0-ga", "1.0.0-ga" );
- assertOrder( X_EQ_Y, "1.0.ga", "1.0.0.ga" );
- assertOrder( X_EQ_Y, "1.0ga", "1.0.0ga" );
-
- assertOrder( X_EQ_Y, "1.0-alpha", "1.0.0-alpha" );
- assertOrder( X_EQ_Y, "1.0.alpha", "1.0.0.alpha" );
- assertOrder( X_EQ_Y, "1.0alpha", "1.0.0alpha" );
- assertOrder( X_EQ_Y, "1.0-alpha-snapshot", "1.0.0-alpha-snapshot" );
- assertOrder( X_EQ_Y, "1.0.alpha.snapshot", "1.0.0.alpha.snapshot" );
-
- assertOrder( X_EQ_Y, "1.x.0-alpha", "1.x.0.0-alpha" );
- assertOrder( X_EQ_Y, "1.x.0.alpha", "1.x.0.0.alpha" );
- assertOrder( X_EQ_Y, "1.x.0-alpha-snapshot", "1.x.0.0-alpha-snapshot" );
- assertOrder( X_EQ_Y, "1.x.0.alpha.snapshot", "1.x.0.0.alpha.snapshot" );
- }
-
- @Test
- public void testTrailingDelimitersAreSemanticallyIrrelevant()
- {
- assertOrder( X_EQ_Y, "1", "1............." );
- assertOrder( X_EQ_Y, "1", "1-------------" );
- assertOrder( X_EQ_Y, "1.0", "1............." );
- assertOrder( X_EQ_Y, "1.0", "1-------------" );
- }
-
- @Test
- public void testInitialDelimiters()
- {
- assertOrder( X_EQ_Y, "0.1", ".1" );
- assertOrder( X_EQ_Y, "0.0.1", "..1" );
- assertOrder( X_EQ_Y, "0.1", "-1" );
- assertOrder( X_EQ_Y, "0.0.1", "--1" );
- }
-
- @Test
- public void testConsecutiveDelimiters()
- {
- assertOrder( X_EQ_Y, "1.0.1", "1..1" );
- assertOrder( X_EQ_Y, "1.0.0.1", "1...1" );
- assertOrder( X_EQ_Y, "1.0.1", "1--1" );
- assertOrder( X_EQ_Y, "1.0.0.1", "1---1" );
- }
-
- @Test
- public void testUnlimitedNumberOfVersionComponents()
- {
- assertOrder( X_GT_Y, "1.0.1.2.3.4.5.6.7.8.9.0.1.2.10", "1.0.1.2.3.4.5.6.7.8.9.0.1.2.3" );
- }
-
- @Test
- public void testUnlimitedNumberOfDigitsInNumericComponent()
- {
- assertOrder( X_GT_Y, "1.1234567890123456789012345678901", "1.123456789012345678901234567891" );
- }
-
- @Test
- public void testTransitionFromDigitToLetterAndViceVersaIsEqualivantToDelimiter()
- {
- assertOrder( X_EQ_Y, "1alpha10", "1.alpha.10" );
- assertOrder( X_EQ_Y, "1alpha10", "1-alpha-10" );
-
- assertOrder( X_GT_Y, "1.alpha10", "1.alpha2" );
- assertOrder( X_GT_Y, "10alpha", "1alpha" );
- }
-
- @Test
- public void testWellKnownQualifierOrdering()
- {
- assertOrder( X_EQ_Y, "1-alpha1", "1-a1" );
- assertOrder( X_LT_Y, "1-alpha", "1-beta" );
- assertOrder( X_EQ_Y, "1-beta1", "1-b1" );
- assertOrder( X_LT_Y, "1-beta", "1-milestone" );
- assertOrder( X_EQ_Y, "1-milestone1", "1-m1" );
- assertOrder( X_LT_Y, "1-milestone", "1-rc" );
- assertOrder( X_EQ_Y, "1-rc", "1-cr" );
- assertOrder( X_LT_Y, "1-rc", "1-snapshot" );
- assertOrder( X_LT_Y, "1-snapshot", "1" );
- assertOrder( X_EQ_Y, "1", "1-ga" );
- assertOrder( X_EQ_Y, "1", "1.ga.0.ga" );
- assertOrder( X_EQ_Y, "1.0", "1-ga" );
- assertOrder( X_EQ_Y, "1", "1-ga.ga" );
- assertOrder( X_EQ_Y, "1", "1-ga-ga" );
- assertOrder( X_EQ_Y, "A", "A.ga.ga" );
- assertOrder( X_EQ_Y, "A", "A-ga-ga" );
- assertOrder( X_EQ_Y, "1", "1-final" );
- assertOrder( X_LT_Y, "1", "1-sp" );
-
- assertOrder( X_LT_Y, "A.rc.1", "A.ga.1" );
- assertOrder( X_GT_Y, "A.sp.1", "A.ga.1" );
- assertOrder( X_LT_Y, "A.rc.x", "A.ga.x" );
- assertOrder( X_GT_Y, "A.sp.x", "A.ga.x" );
- }
-
- @Test
- public void testWellKnownQualifierVersusUnknownQualifierOrdering()
- {
- assertOrder( X_GT_Y, "1-abc", "1-alpha" );
- assertOrder( X_GT_Y, "1-abc", "1-beta" );
- assertOrder( X_GT_Y, "1-abc", "1-milestone" );
- assertOrder( X_GT_Y, "1-abc", "1-rc" );
- assertOrder( X_GT_Y, "1-abc", "1-snapshot" );
- assertOrder( X_GT_Y, "1-abc", "1" );
- assertOrder( X_GT_Y, "1-abc", "1-sp" );
- }
-
- @Test
- public void testWellKnownSingleCharQualifiersOnlyRecognizedIfImmediatelyFollowedByNumber()
- {
- assertOrder( X_GT_Y, "1.0a", "1.0" );
- assertOrder( X_GT_Y, "1.0-a", "1.0" );
- assertOrder( X_GT_Y, "1.0.a", "1.0" );
- assertOrder( X_GT_Y, "1.0b", "1.0" );
- assertOrder( X_GT_Y, "1.0-b", "1.0" );
- assertOrder( X_GT_Y, "1.0.b", "1.0" );
- assertOrder( X_GT_Y, "1.0m", "1.0" );
- assertOrder( X_GT_Y, "1.0-m", "1.0" );
- assertOrder( X_GT_Y, "1.0.m", "1.0" );
-
- assertOrder( X_LT_Y, "1.0a1", "1.0" );
- assertOrder( X_LT_Y, "1.0-a1", "1.0" );
- assertOrder( X_LT_Y, "1.0.a1", "1.0" );
- assertOrder( X_LT_Y, "1.0b1", "1.0" );
- assertOrder( X_LT_Y, "1.0-b1", "1.0" );
- assertOrder( X_LT_Y, "1.0.b1", "1.0" );
- assertOrder( X_LT_Y, "1.0m1", "1.0" );
- assertOrder( X_LT_Y, "1.0-m1", "1.0" );
- assertOrder( X_LT_Y, "1.0.m1", "1.0" );
-
- assertOrder( X_GT_Y, "1.0a.1", "1.0" );
- assertOrder( X_GT_Y, "1.0a-1", "1.0" );
- assertOrder( X_GT_Y, "1.0b.1", "1.0" );
- assertOrder( X_GT_Y, "1.0b-1", "1.0" );
- assertOrder( X_GT_Y, "1.0m.1", "1.0" );
- assertOrder( X_GT_Y, "1.0m-1", "1.0" );
- }
-
- @Test
- public void testUnknownQualifierOrdering()
- {
- assertOrder( X_LT_Y, "1-abc", "1-abcd" );
- assertOrder( X_LT_Y, "1-abc", "1-bcd" );
- assertOrder( X_GT_Y, "1-abc", "1-aac" );
- }
-
- @Test
- public void testCaseInsensitiveOrderingOfQualifiers()
- {
- assertOrder( X_EQ_Y, "1.alpha", "1.ALPHA" );
- assertOrder( X_EQ_Y, "1.alpha", "1.Alpha" );
-
- assertOrder( X_EQ_Y, "1.beta", "1.BETA" );
- assertOrder( X_EQ_Y, "1.beta", "1.Beta" );
-
- assertOrder( X_EQ_Y, "1.milestone", "1.MILESTONE" );
- assertOrder( X_EQ_Y, "1.milestone", "1.Milestone" );
-
- assertOrder( X_EQ_Y, "1.rc", "1.RC" );
- assertOrder( X_EQ_Y, "1.rc", "1.Rc" );
- assertOrder( X_EQ_Y, "1.cr", "1.CR" );
- assertOrder( X_EQ_Y, "1.cr", "1.Cr" );
-
- assertOrder( X_EQ_Y, "1.snapshot", "1.SNAPSHOT" );
- assertOrder( X_EQ_Y, "1.snapshot", "1.Snapshot" );
-
- assertOrder( X_EQ_Y, "1.ga", "1.GA" );
- assertOrder( X_EQ_Y, "1.ga", "1.Ga" );
- assertOrder( X_EQ_Y, "1.final", "1.FINAL" );
- assertOrder( X_EQ_Y, "1.final", "1.Final" );
-
- assertOrder( X_EQ_Y, "1.sp", "1.SP" );
- assertOrder( X_EQ_Y, "1.sp", "1.Sp" );
-
- assertOrder( X_EQ_Y, "1.unknown", "1.UNKNOWN" );
- assertOrder( X_EQ_Y, "1.unknown", "1.Unknown" );
- }
-
- @Test
- public void testCaseInsensitiveOrderingOfQualifiersIsLocaleIndependent()
- {
- Locale orig = Locale.getDefault();
- try
- {
- Locale[] locales = { Locale.ENGLISH, new Locale( "tr" ) };
- for ( Locale locale : locales )
- {
- Locale.setDefault( locale );
- assertOrder( X_EQ_Y, "1-abcdefghijklmnopqrstuvwxyz", "1-ABCDEFGHIJKLMNOPQRSTUVWXYZ" );
- }
- }
- finally
- {
- Locale.setDefault( orig );
- }
- }
-
- @Test
- public void testQualifierVersusNumberOrdering()
- {
- assertOrder( X_LT_Y, "1-ga", "1-1" );
- assertOrder( X_LT_Y, "1.ga", "1.1" );
- assertOrder( X_EQ_Y, "1-ga", "1.0" );
- assertOrder( X_EQ_Y, "1.ga", "1.0" );
-
- assertOrder( X_LT_Y, "1-ga-1", "1-0-1" );
- assertOrder( X_LT_Y, "1.ga.1", "1.0.1" );
-
- assertOrder( X_GT_Y, "1.sp", "1.0" );
- assertOrder( X_LT_Y, "1.sp", "1.1" );
-
- assertOrder( X_LT_Y, "1-abc", "1-1" );
- assertOrder( X_LT_Y, "1.abc", "1.1" );
-
- assertOrder( X_LT_Y, "1-xyz", "1-1" );
- assertOrder( X_LT_Y, "1.xyz", "1.1" );
- }
-
- @Test
- public void testVersionEvolution()
- {
- assertSequence( "0.9.9-SNAPSHOT", "0.9.9", "0.9.10-SNAPSHOT", "0.9.10", "1.0-alpha-2-SNAPSHOT", "1.0-alpha-2",
- "1.0-alpha-10-SNAPSHOT", "1.0-alpha-10", "1.0-beta-1-SNAPSHOT", "1.0-beta-1",
- "1.0-rc-1-SNAPSHOT", "1.0-rc-1", "1.0-SNAPSHOT", "1.0", "1.0-sp-1-SNAPSHOT", "1.0-sp-1",
- "1.0.1-alpha-1-SNAPSHOT", "1.0.1-alpha-1", "1.0.1-beta-1-SNAPSHOT", "1.0.1-beta-1",
- "1.0.1-rc-1-SNAPSHOT", "1.0.1-rc-1", "1.0.1-SNAPSHOT", "1.0.1", "1.1-SNAPSHOT", "1.1" );
-
- assertSequence( "1.0-alpha", "1.0", "1.0-1" );
- assertSequence( "1.0.alpha", "1.0", "1.0-1" );
- assertSequence( "1.0-alpha", "1.0", "1.0.1" );
- assertSequence( "1.0.alpha", "1.0", "1.0.1" );
- }
-
- @Test
- public void testMinimumSegment()
- {
- assertOrder( X_LT_Y, "1.min", "1.0-alpha-1" );
- assertOrder( X_LT_Y, "1.min", "1.0-SNAPSHOT" );
- assertOrder( X_LT_Y, "1.min", "1.0" );
- assertOrder( X_LT_Y, "1.min", "1.9999999999" );
-
- assertOrder( X_EQ_Y, "1.min", "1.MIN" );
-
- assertOrder( X_GT_Y, "1.min", "0.99999" );
- assertOrder( X_GT_Y, "1.min", "0.max" );
- }
-
- @Test
- public void testMaximumSegment()
- {
- assertOrder( X_GT_Y, "1.max", "1.0-alpha-1" );
- assertOrder( X_GT_Y, "1.max", "1.0-SNAPSHOT" );
- assertOrder( X_GT_Y, "1.max", "1.0" );
- assertOrder( X_GT_Y, "1.max", "1.9999999999" );
-
- assertOrder( X_EQ_Y, "1.max", "1.MAX" );
-
- assertOrder( X_LT_Y, "1.max", "2.0-alpha-1" );
- assertOrder( X_LT_Y, "1.max", "2.min" );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/version/UnionVersionRangeTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/version/UnionVersionRangeTest.java b/aether-util/src/test/java/org/eclipse/aether/util/version/UnionVersionRangeTest.java
deleted file mode 100644
index 570b6b7..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/version/UnionVersionRangeTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.eclipse.aether.util.version;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Collections;
-
-import org.eclipse.aether.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.VersionRange;
-import org.junit.Test;
-
-public class UnionVersionRangeTest
-{
-
- private VersionRange newRange( String range )
- {
- try
- {
- return new GenericVersionScheme().parseVersionRange( range );
- }
- catch ( InvalidVersionSpecificationException e )
- {
- throw new IllegalArgumentException( e );
- }
- }
-
- private void assertBound( String version, boolean inclusive, VersionRange.Bound bound )
- {
- if ( version == null )
- {
- assertNull( bound );
- }
- else
- {
- assertNotNull( bound );
- assertNotNull( bound.getVersion() );
- assertEquals( inclusive, bound.isInclusive() );
- try
- {
- assertEquals( new GenericVersionScheme().parseVersion( version ), bound.getVersion() );
- }
- catch ( InvalidVersionSpecificationException e )
- {
- throw new IllegalArgumentException( e );
- }
- }
- }
-
- @Test
- public void testGetLowerBound()
- {
- VersionRange range = UnionVersionRange.from( Collections.<VersionRange> emptySet() );
- assertBound( null, false, range.getLowerBound() );
-
- range = UnionVersionRange.from( newRange( "[1,2]" ), newRange( "[3,4]" ) );
- assertBound( "1", true, range.getLowerBound() );
-
- range = UnionVersionRange.from( newRange( "[1,2]" ), newRange( "(,4]" ) );
- assertBound( null, false, range.getLowerBound() );
-
- range = UnionVersionRange.from( newRange( "[1,2]" ), newRange( "(1,4]" ) );
- assertBound( "1", true, range.getLowerBound() );
-
- range = UnionVersionRange.from( newRange( "[1,2]" ), newRange( "(0,4]" ) );
- assertBound( "0", false, range.getLowerBound() );
- }
-
- @Test
- public void testGetUpperBound()
- {
- VersionRange range = UnionVersionRange.from( Collections.<VersionRange> emptySet() );
- assertBound( null, false, range.getUpperBound() );
-
- range = UnionVersionRange.from( newRange( "[1,2]" ), newRange( "[3,4]" ) );
- assertBound( "4", true, range.getUpperBound() );
-
- range = UnionVersionRange.from( newRange( "[1,2]" ), newRange( "[3,)" ) );
- assertBound( null, false, range.getUpperBound() );
-
- range = UnionVersionRange.from( newRange( "[1,2]" ), newRange( "[1,2)" ) );
- assertBound( "2", true, range.getUpperBound() );
-
- range = UnionVersionRange.from( newRange( "[1,2]" ), newRange( "[1,3)" ) );
- assertBound( "3", false, range.getUpperBound() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/conflict-id-sorter/cycle.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/conflict-id-sorter/cycle.txt b/aether-util/src/test/resources/transformer/conflict-id-sorter/cycle.txt
deleted file mode 100644
index 1c200b9..0000000
--- a/aether-util/src/test/resources/transformer/conflict-id-sorter/cycle.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-(null)
-+- gid:aid:ver
-| \- gid2:aid:ver
-\- gid2:aid:ver
- \- gid:aid:ver
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/conflict-id-sorter/cycles.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/conflict-id-sorter/cycles.txt b/aether-util/src/test/resources/transformer/conflict-id-sorter/cycles.txt
deleted file mode 100644
index 714069e..0000000
--- a/aether-util/src/test/resources/transformer/conflict-id-sorter/cycles.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-(null)
-+- gid1:aid:ver
-| \- gid2:aid:ver
-| \- gid:aid:ver
-+- gid2:aid:ver
-| \- gid1:aid:ver
-+- gid1:aid:ver
-| \- gid3:aid:ver
-+- gid3:aid:ver
-| \- gid1:aid:ver
-+- gid2:aid:ver
-| \- gid3:aid:ver
-\- gid3:aid:ver
- \- gid2:aid:ver
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/conflict-id-sorter/no-conflicts.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/conflict-id-sorter/no-conflicts.txt b/aether-util/src/test/resources/transformer/conflict-id-sorter/no-conflicts.txt
deleted file mode 100644
index c4d1c89..0000000
--- a/aether-util/src/test/resources/transformer/conflict-id-sorter/no-conflicts.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-(null)
-+- gid:aid:ver
-| \- gid2:aid:ver
-\- gid3:aid:ver
- \- gid4:aid:ver
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/conflict-id-sorter/simple.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/conflict-id-sorter/simple.txt b/aether-util/src/test/resources/transformer/conflict-id-sorter/simple.txt
deleted file mode 100644
index 01ce915..0000000
--- a/aether-util/src/test/resources/transformer/conflict-id-sorter/simple.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-(null)
-+- gid:aid:ver
-| \- gid:aid2:ver
-\- gid2:aid:ver
- \- gid:aid:ver
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/conflict-marker/relocation1.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/conflict-marker/relocation1.txt b/aether-util/src/test/resources/transformer/conflict-marker/relocation1.txt
deleted file mode 100644
index 518f706..0000000
--- a/aether-util/src/test/resources/transformer/conflict-marker/relocation1.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-(null)
-+- test:a:1
-\- test:a:1 relocations=test:reloc:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/conflict-marker/relocation2.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/conflict-marker/relocation2.txt b/aether-util/src/test/resources/transformer/conflict-marker/relocation2.txt
deleted file mode 100644
index 729748d..0000000
--- a/aether-util/src/test/resources/transformer/conflict-marker/relocation2.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-(null)
-+- test:a:1 relocations=test:reloc:1
-\- test:a:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/conflict-marker/relocation3.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/conflict-marker/relocation3.txt b/aether-util/src/test/resources/transformer/conflict-marker/relocation3.txt
deleted file mode 100644
index 8b96d18..0000000
--- a/aether-util/src/test/resources/transformer/conflict-marker/relocation3.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-(null)
-+- test:a:1
-+- test:b:1
-\- test:c:1 relocations=test:a:1,test:b:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/conflict-marker/simple.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/conflict-marker/simple.txt b/aether-util/src/test/resources/transformer/conflict-marker/simple.txt
deleted file mode 100644
index 2f94bb4..0000000
--- a/aether-util/src/test/resources/transformer/conflict-marker/simple.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-(null)
-+- test:a:1
-\- test:b:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/optionality-selector/conflict-direct-dep.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/optionality-selector/conflict-direct-dep.txt b/aether-util/src/test/resources/transformer/optionality-selector/conflict-direct-dep.txt
deleted file mode 100644
index 13ac2aa..0000000
--- a/aether-util/src/test/resources/transformer/optionality-selector/conflict-direct-dep.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-(null)
-+- test:a:1
-| \- test:x:1
-\- test:x:1 optional
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/optionality-selector/conflict.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/optionality-selector/conflict.txt b/aether-util/src/test/resources/transformer/optionality-selector/conflict.txt
deleted file mode 100644
index ffab99b..0000000
--- a/aether-util/src/test/resources/transformer/optionality-selector/conflict.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-(null)
-+- test:a:1 optional
-| \- test:x:1
-\- test:b:1
- \- test:x:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/optionality-selector/derive.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/optionality-selector/derive.txt b/aether-util/src/test/resources/transformer/optionality-selector/derive.txt
deleted file mode 100644
index 37a394a..0000000
--- a/aether-util/src/test/resources/transformer/optionality-selector/derive.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-(null)
-+- test:a:1 optional
-| \- test:b:1
-\- test:c:1 !optional
- \- test:d:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/conflict-and-inheritance.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/conflict-and-inheritance.txt b/aether-util/src/test/resources/transformer/scope-calculator/conflict-and-inheritance.txt
deleted file mode 100644
index 558049c..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/conflict-and-inheritance.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# Another scenario to check that scope inheritance considers the effective scopes of parent nodes as determined during
-# scope conflict resolution. In this example, gid:x:1 should end up in compile scope (and not runtime) because its
-# parent gid:c:2 will be promoted to compile scope due to a conflict with gid:c:1.
-
-gid:root:1
-+- gid:a:1 compile
-| \- gid:c:2 runtime
-| \- gid:x:1 compile
-\- gid:b:1 compile
- \- gid:c:1 compile
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/conflicting-direct-nodes.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/conflicting-direct-nodes.txt b/aether-util/src/test/resources/transformer/scope-calculator/conflicting-direct-nodes.txt
deleted file mode 100644
index 3330251..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/conflicting-direct-nodes.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-(null)
-+- gid:aid:ver %s
-\- gid:aid:ver %s
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/cycle-a.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/cycle-a.txt b/aether-util/src/test/resources/transformer/scope-calculator/cycle-a.txt
deleted file mode 100644
index df2d828..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/cycle-a.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# Checks for graceful handling of cycles in the graph of conflict groups. Below, the group {a:1, a:2} depends on
-# {b:1, b:2} and vice versa. Additionally, each group contains a direct dependency.
-
-gid:root:1
-+- gid:a:1 compile
-| \- gid:b:1 compile
-\- gid:b:2 runtime
- \- gid:a:2 runtime
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/cycle-b.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/cycle-b.txt b/aether-util/src/test/resources/transformer/scope-calculator/cycle-b.txt
deleted file mode 100644
index 5fe084a..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/cycle-b.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variation of cycle-a where the order of direct dependencies has been changed.
-
-gid:root:1
-+- gid:b:2 runtime
-| \- gid:a:2 runtime
-\- gid:a:1 compile
- \- gid:b:1 compile
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/cycle-c.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/cycle-c.txt b/aether-util/src/test/resources/transformer/scope-calculator/cycle-c.txt
deleted file mode 100644
index d3495b2..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/cycle-c.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# Checks for graceful handling of cycles in the graph of conflict groups. Below, the group {a:1} depends on
-# {b:1} and vice versa. The conflicting groups consist entirely of non-direct dependencies.
-
-gid:root:1
-+- gid:x:1 runtime
-| \- gid:a:1 compile
-| \- gid:b:1 compile
-\- gid:y:1 runtime
- \- gid:b:1 compile
- \- gid:a:1 compile
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/cycle-d.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/cycle-d.txt b/aether-util/src/test/resources/transformer/scope-calculator/cycle-d.txt
deleted file mode 100644
index c3a6824..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/cycle-d.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Checks for graceful handling of cycles in the graph of dependency nodes.
-
-gid:root:1
-\- gid:a:1 compile
- \- gid:b:1 compile (b)
- \- gid:a:1 runtime
- \- ^b
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/direct-nodes-winning.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/direct-nodes-winning.txt b/aether-util/src/test/resources/transformer/scope-calculator/direct-nodes-winning.txt
deleted file mode 100644
index 67edf3d..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/direct-nodes-winning.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-(null)
-+- gid:aid:ver %s
-+- gid:aid2:ver
-| \- gid:aid:ver provided
-+- gid:aid3:ver
-| \- gid:aid:ver runtime
-+- gid:aid4:ver
-| \- gid:aid:ver test
-\- gid:aid5:ver
- \- gid:aid:ver compile
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/direct-with-conflict-and-inheritance.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/direct-with-conflict-and-inheritance.txt b/aether-util/src/test/resources/transformer/scope-calculator/direct-with-conflict-and-inheritance.txt
deleted file mode 100644
index c883214..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/direct-with-conflict-and-inheritance.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-# When a direct dependency scope conflicts with a transitive dependency scope, the direct dependency scope always wins.
-# When the scope of the transitive dependency is updated, this update needs to be considered by scope inheritance.
-# In the graph below gid:a:1 has a conflict, after its resolution to test scope, gid:x:1 should end up in
-# test scope as well, everywhere in the graph.
-
-gid:root:1
-+- gid:a:1 test
-| \- gid:x:1 compile
-\- gid:b:1 compile
- \- gid:a:1 compile
- \- gid:x:1 compile
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/dueling-scopes.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/dueling-scopes.txt b/aether-util/src/test/resources/transformer/scope-calculator/dueling-scopes.txt
deleted file mode 100644
index d2ae8e6..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/dueling-scopes.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# pattern to test scope mediation in conflict groups
-
-(null)
-+- gid:aid2:ver
-| \- gid:aid:ver %s
-\- gid:aid3:ver
- \- gid:aid:ver %s
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/inheritance.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/inheritance.txt b/aether-util/src/test/resources/transformer/scope-calculator/inheritance.txt
deleted file mode 100644
index 3b832e9..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/inheritance.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-root:a:ver
-\- gid:b:ver %s
- \- gid:c:ver %s
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/multiple-inheritance.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/multiple-inheritance.txt b/aether-util/src/test/resources/transformer/scope-calculator/multiple-inheritance.txt
deleted file mode 100644
index d545ed6..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/multiple-inheritance.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-(null)
-+- gid:aid:ver %s
-| \- gid2:aid:ver compile (1)
-\- gid3:aid:ver %s
- \- ^1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/system-1.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/system-1.txt b/aether-util/src/test/resources/transformer/scope-calculator/system-1.txt
deleted file mode 100644
index 61d8659..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/system-1.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-gid:aid:1
-+- gid:aid2:2 compile
-\- gid:aid2:3 system
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/scope-calculator/system-2.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/scope-calculator/system-2.txt b/aether-util/src/test/resources/transformer/scope-calculator/system-2.txt
deleted file mode 100644
index 04a5d59..0000000
--- a/aether-util/src/test/resources/transformer/scope-calculator/system-2.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-gid:aid:1
-+- gid:aid2:2 system
-\- gid:aid2:3 compile
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/conflict-id-cycle.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/conflict-id-cycle.txt b/aether-util/src/test/resources/transformer/version-resolver/conflict-id-cycle.txt
deleted file mode 100644
index 57c5d56..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/conflict-id-cycle.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# a graph which itself is acyclic but its conflict ids are cyclic (a <-> b)
-
-test:root:1
-+- test:a:1
-| \- test:b:1
-\- test:b:2
- \- test:a:2
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/cycle.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/cycle.txt b/aether-util/src/test/resources/transformer/version-resolver/cycle.txt
deleted file mode 100644
index 35c1c6a..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/cycle.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-cycle:root:1
-+- cycle:a:1
-| \- cycle:b:1 (b)
-| \- cycle:c:1
-| \- cycle:a:1 (a)
-| \- ^b
-\- cycle:c:1
- \- ^a
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/dead-conflict-group.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/dead-conflict-group.txt b/aether-util/src/test/resources/transformer/version-resolver/dead-conflict-group.txt
deleted file mode 100644
index cb49d9c..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/dead-conflict-group.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-test:root:1
-+- test:a:1
-| \- test:b:1
-| \- test:c:1 # conflict group c will completely vanish from resolved tree
-\- test:b:2
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/loop.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/loop.txt b/aether-util/src/test/resources/transformer/version-resolver/loop.txt
deleted file mode 100644
index 2b50f09..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/loop.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-gid:a:1
-\- gid:a:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/nearest-underneath-loser-a.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/nearest-underneath-loser-a.txt b/aether-util/src/test/resources/transformer/version-resolver/nearest-underneath-loser-a.txt
deleted file mode 100644
index c566caf..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/nearest-underneath-loser-a.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-test:root:1
-+- test:a:1
-| \- test:b:1 # will be removed in favor of test:b:2
-| \- test:j:1 # nearest version of j in dirty tree
-+- test:c:1
-| \- test:d:1
-| \- test:e:1
-| \- test:j:1
-\- test:b:2
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/nearest-underneath-loser-b.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/nearest-underneath-loser-b.txt b/aether-util/src/test/resources/transformer/version-resolver/nearest-underneath-loser-b.txt
deleted file mode 100644
index 07867cb..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/nearest-underneath-loser-b.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-test:root:1
-+- test:a:1
-| \- test:b:1 # will be removed in favor of test:b:2
-| \- test:j:1 # nearest version of j in dirty tree
-+- test:c:1
-| \- test:d:1
-| \- test:e:1
-| \- test:j:2
-\- test:b:2
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/overlapping-cycles.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/overlapping-cycles.txt b/aether-util/src/test/resources/transformer/version-resolver/overlapping-cycles.txt
deleted file mode 100644
index fa9e5aa..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/overlapping-cycles.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-cycle:root:1
-+- cycle:a:1 (a)
-| \- cycle:b:1
-| \- cycle:c:1
-| \- ^a
-\- cycle:b:1 (b)
- \- cycle:c:1
- \- ^b
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/range-backtracking.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/range-backtracking.txt b/aether-util/src/test/resources/transformer/version-resolver/range-backtracking.txt
deleted file mode 100644
index 6634e7f..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/range-backtracking.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-(null)
-+- test:x:1
-+- test:a:1
-| \- test:b:1
-| \- test:x:3
-+- test:c:1
-| \- test:x:2
-\- test:d:1
- \- test:e:1
- \- test:x:2[2,) # forces rejection of x:1, should fallback to nearest and not first-seen, i.e. x:2 and not x:3
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/ranges.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/ranges.txt b/aether-util/src/test/resources/transformer/version-resolver/ranges.txt
deleted file mode 100644
index 9acf341..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/ranges.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-(null)
-+- test:b:1
-| \- test:a:2[2]
-\- test:c:1
- +- test:a:1[1,3]
- +- test:a:2[1,3]
- \- test:a:3[1,3]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/scope-vs-version.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/scope-vs-version.txt b/aether-util/src/test/resources/transformer/version-resolver/scope-vs-version.txt
deleted file mode 100644
index 6c79cfe..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/scope-vs-version.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-# This highlights a design flaw in the previous separation of JavaEffectiveScopeCalculator and NearestVersionConflictResolver:
-# scope conflicts can't be properly determined and resolved until ancestor dependencies got their version conflicts resolved.
-# Otherwise, dependencies can get promoted to a scope due to a scope conflict which actually no longer arises after conflicting
-# versions got removed. In the dirty graph below, the effective scope of test:y should be "test" and not "compile" (as suggested
-# by its test:x parent).
-
-test:root:1
-+- test:a:1 compile
-| +- test:x:1 compile # (a)
-+- test:b:1 test
-| +- test:y:1 compile
-+- test:c:1 test
- +- test:x:1 compile # conflicts with (a), hence leaving scope as "compile"
- +- test:y:1 compile # since our parent gets removed in favor of (a), no need to promote y into scope "compile"
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/sibling-versions.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/sibling-versions.txt b/aether-util/src/test/resources/transformer/version-resolver/sibling-versions.txt
deleted file mode 100644
index 5d50302..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/sibling-versions.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# multiple versions of the same GA beneath the same parent as seen after expansion of version ranges
-# versions neither in ascending nor descending order
-
-test:root:1
-+- test:a:1
-+- test:a:3
-\- test:a:2
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/soft-vs-range.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/soft-vs-range.txt b/aether-util/src/test/resources/transformer/version-resolver/soft-vs-range.txt
deleted file mode 100644
index d3b10e9..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/soft-vs-range.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-test:root:1
-+- test:a:1
-| \- test:c:2 # nearest occurrence of c but doesn't match range given below
-\- test:b:1
- \- test:c:1[1]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/unsolvable-with-cycle.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/unsolvable-with-cycle.txt b/aether-util/src/test/resources/transformer/version-resolver/unsolvable-with-cycle.txt
deleted file mode 100644
index 153f030..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/unsolvable-with-cycle.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# Conflict id "a" will be resolved before "x" such that the cycle formed by "x" is still in place when processing "a".
-# So in order to report the conflicting paths to "a" the code better supports cyclic graphs.
-
-cycle:root:1
-+- cycle:x:1 (x)
-| \- ^x
-+- cycle:a:1[1]
-\- cycle:b:1
- \- cycle:a:2[2]
- \- cycle:x:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/unsolvable.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/unsolvable.txt b/aether-util/src/test/resources/transformer/version-resolver/unsolvable.txt
deleted file mode 100644
index bbc260e..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/unsolvable.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-(null)
-+- test:b:1
-| \- test:a:1[1]
-\- test:c:1
- \- test:a:2[2]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/transformer/version-resolver/verbose.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/transformer/version-resolver/verbose.txt b/aether-util/src/test/resources/transformer/version-resolver/verbose.txt
deleted file mode 100644
index 4bb3880..0000000
--- a/aether-util/src/test/resources/transformer/version-resolver/verbose.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-test:root:1
-+- test:a:1 test
-| +- test:x:1 compile
-| \- test:x:2 compile
-\- test:b:1 test
- +- test:x:1 compile
- \- test:z:1 compile
- \- test:x:2 compile
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/visitor/filtering/parents.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/visitor/filtering/parents.txt b/aether-util/src/test/resources/visitor/filtering/parents.txt
deleted file mode 100644
index 9a93ca2..0000000
--- a/aether-util/src/test/resources/visitor/filtering/parents.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-gid:a:1
-+- gid:b:1
-| \- gid:c:1
-| \- gid:d:1
-\- gid:e:1
- \- gid:f:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/visitor/ordered-list/cycles.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/visitor/ordered-list/cycles.txt b/aether-util/src/test/resources/visitor/ordered-list/cycles.txt
deleted file mode 100644
index 8de373c..0000000
--- a/aether-util/src/test/resources/visitor/ordered-list/cycles.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-gid:a:1
-+- gid:b:1 (1)
-| \- gid:c:1
-| \- ^1
-\- gid:d:1
- +- ^1
- \- gid:e:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/visitor/ordered-list/simple.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/visitor/ordered-list/simple.txt b/aether-util/src/test/resources/visitor/ordered-list/simple.txt
deleted file mode 100644
index 094d2d3..0000000
--- a/aether-util/src/test/resources/visitor/ordered-list/simple.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-gid:a:1
-+- gid:b:1
-| \- gid:c:1
-\- gid:d:1
- \- gid:e:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/visitor/path-recorder/cycle.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/visitor/path-recorder/cycle.txt b/aether-util/src/test/resources/visitor/path-recorder/cycle.txt
deleted file mode 100644
index 9a48240..0000000
--- a/aether-util/src/test/resources/visitor/path-recorder/cycle.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-gid:a:1 (a)
-+- gid:b:1 (b)
-| \- match:x:1
-\- match:x:2 (x)
- +- ^a
- +- ^b
- \- ^x
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/visitor/path-recorder/nested.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/visitor/path-recorder/nested.txt b/aether-util/src/test/resources/visitor/path-recorder/nested.txt
deleted file mode 100644
index 67742f8..0000000
--- a/aether-util/src/test/resources/visitor/path-recorder/nested.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-match:x:1
-+- gid:a:1
-| \- match:y:2
-\- match:y:2
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/visitor/path-recorder/parents.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/visitor/path-recorder/parents.txt b/aether-util/src/test/resources/visitor/path-recorder/parents.txt
deleted file mode 100644
index 9a93ca2..0000000
--- a/aether-util/src/test/resources/visitor/path-recorder/parents.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-gid:a:1
-+- gid:b:1
-| \- gid:c:1
-| \- gid:d:1
-\- gid:e:1
- \- gid:f:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/visitor/path-recorder/simple.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/visitor/path-recorder/simple.txt b/aether-util/src/test/resources/visitor/path-recorder/simple.txt
deleted file mode 100644
index 8f3c6a1..0000000
--- a/aether-util/src/test/resources/visitor/path-recorder/simple.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-gid:a:1
-+- gid:b:1
-| \- match:x:1
-\- match:x:2
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/resources/visitor/tree/cycles.txt
----------------------------------------------------------------------
diff --git a/aether-util/src/test/resources/visitor/tree/cycles.txt b/aether-util/src/test/resources/visitor/tree/cycles.txt
deleted file mode 100644
index f8d7abc..0000000
--- a/aether-util/src/test/resources/visitor/tree/cycles.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-gid:a:1
-+- gid:b:1 (1)
-| \- gid:c:1
-| \- ^1
-\- gid:d:1
- \- ^1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/pom.xml
----------------------------------------------------------------------
diff --git a/maven-resolver-api/pom.xml b/maven-resolver-api/pom.xml
new file mode 100644
index 0000000..a65c9d0
--- /dev/null
+++ b/maven-resolver-api/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>maven-resolver-api</artifactId>
+
+ <name>Maven Artifact Resolver API</name>
+ <description>
+ The application programming interface for the repository system.
+ </description>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java b/maven-resolver-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java
new file mode 100644
index 0000000..20df431
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java
@@ -0,0 +1,189 @@
+package org.eclipse.aether;
+
+/*
+ * 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;
+
+import org.eclipse.aether.artifact.ArtifactTypeRegistry;
+import org.eclipse.aether.collection.DependencyGraphTransformer;
+import org.eclipse.aether.collection.DependencyManager;
+import org.eclipse.aether.collection.DependencySelector;
+import org.eclipse.aether.collection.DependencyTraverser;
+import org.eclipse.aether.collection.VersionFilter;
+import org.eclipse.aether.repository.AuthenticationSelector;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.LocalRepositoryManager;
+import org.eclipse.aether.repository.MirrorSelector;
+import org.eclipse.aether.repository.ProxySelector;
+import org.eclipse.aether.repository.WorkspaceReader;
+import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
+import org.eclipse.aether.resolution.ResolutionErrorPolicy;
+import org.eclipse.aether.transfer.TransferListener;
+
+/**
+ * A special repository system session to enable decorating or proxying another session. To do so, clients have to
+ * create a subclass and implement {@link #getSession()}.
+ */
+public abstract class AbstractForwardingRepositorySystemSession
+ implements RepositorySystemSession
+{
+
+ /**
+ * Creates a new forwarding session.
+ */
+ protected AbstractForwardingRepositorySystemSession()
+ {
+ }
+
+ /**
+ * Gets the repository system session to which this instance forwards calls. It's worth noting that this class does
+ * not save/cache the returned reference but queries this method before each forwarding. Hence, the session
+ * forwarded to may change over time or depending on the context (e.g. calling thread).
+ *
+ * @return The repository system session to forward calls to, never {@code null}.
+ */
+ protected abstract RepositorySystemSession getSession();
+
+ public boolean isOffline()
+ {
+ return getSession().isOffline();
+ }
+
+ public boolean isIgnoreArtifactDescriptorRepositories()
+ {
+ return getSession().isIgnoreArtifactDescriptorRepositories();
+ }
+
+ public ResolutionErrorPolicy getResolutionErrorPolicy()
+ {
+ return getSession().getResolutionErrorPolicy();
+ }
+
+ public ArtifactDescriptorPolicy getArtifactDescriptorPolicy()
+ {
+ return getSession().getArtifactDescriptorPolicy();
+ }
+
+ public String getChecksumPolicy()
+ {
+ return getSession().getChecksumPolicy();
+ }
+
+ public String getUpdatePolicy()
+ {
+ return getSession().getUpdatePolicy();
+ }
+
+ public LocalRepository getLocalRepository()
+ {
+ return getSession().getLocalRepository();
+ }
+
+ public LocalRepositoryManager getLocalRepositoryManager()
+ {
+ return getSession().getLocalRepositoryManager();
+ }
+
+ public WorkspaceReader getWorkspaceReader()
+ {
+ return getSession().getWorkspaceReader();
+ }
+
+ public RepositoryListener getRepositoryListener()
+ {
+ return getSession().getRepositoryListener();
+ }
+
+ public TransferListener getTransferListener()
+ {
+ return getSession().getTransferListener();
+ }
+
+ public Map<String, String> getSystemProperties()
+ {
+ return getSession().getSystemProperties();
+ }
+
+ public Map<String, String> getUserProperties()
+ {
+ return getSession().getUserProperties();
+ }
+
+ public Map<String, Object> getConfigProperties()
+ {
+ return getSession().getConfigProperties();
+ }
+
+ public MirrorSelector getMirrorSelector()
+ {
+ return getSession().getMirrorSelector();
+ }
+
+ public ProxySelector getProxySelector()
+ {
+ return getSession().getProxySelector();
+ }
+
+ public AuthenticationSelector getAuthenticationSelector()
+ {
+ return getSession().getAuthenticationSelector();
+ }
+
+ public ArtifactTypeRegistry getArtifactTypeRegistry()
+ {
+ return getSession().getArtifactTypeRegistry();
+ }
+
+ public DependencyTraverser getDependencyTraverser()
+ {
+ return getSession().getDependencyTraverser();
+ }
+
+ public DependencyManager getDependencyManager()
+ {
+ return getSession().getDependencyManager();
+ }
+
+ public DependencySelector getDependencySelector()
+ {
+ return getSession().getDependencySelector();
+ }
+
+ public VersionFilter getVersionFilter()
+ {
+ return getSession().getVersionFilter();
+ }
+
+ public DependencyGraphTransformer getDependencyGraphTransformer()
+ {
+ return getSession().getDependencyGraphTransformer();
+ }
+
+ public SessionData getData()
+ {
+ return getSession().getData();
+ }
+
+ public RepositoryCache getCache()
+ {
+ return getSession().getCache();
+ }
+
+}
[33/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java
deleted file mode 100644
index fd1302d..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java
+++ /dev/null
@@ -1,801 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.ArtifactProperties;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.collection.CollectRequest;
-import org.eclipse.aether.collection.CollectResult;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencyCollectionException;
-import org.eclipse.aether.collection.DependencyManagement;
-import org.eclipse.aether.collection.DependencyManager;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyCycle;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.graph.Exclusion;
-import org.eclipse.aether.impl.ArtifactDescriptorReader;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ArtifactDescriptorException;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-import org.eclipse.aether.util.artifact.ArtifactIdUtils;
-import org.eclipse.aether.util.graph.manager.ClassicDependencyManager;
-import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
-import org.eclipse.aether.util.graph.manager.TransitiveDependencyManager;
-import org.eclipse.aether.util.graph.selector.OptionalDependencySelector;
-import org.eclipse.aether.util.graph.selector.ScopeDependencySelector;
-import org.eclipse.aether.util.graph.version.HighestVersionFilter;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class DefaultDependencyCollectorTest
-{
-
- private DefaultDependencyCollector collector;
-
- private DefaultRepositorySystemSession session;
-
- private DependencyGraphParser parser;
-
- private RemoteRepository repository;
-
- private IniArtifactDescriptorReader newReader( String prefix )
- {
- return new IniArtifactDescriptorReader( "artifact-descriptions/" + prefix );
- }
-
- private Dependency newDep( String coords )
- {
- return newDep( coords, "" );
- }
-
- private Dependency newDep( String coords, String scope )
- {
- return new Dependency( new DefaultArtifact( coords ), scope );
- }
-
- @Before
- public void setup()
- throws IOException
- {
- session = TestUtils.newSession();
-
- collector = new DefaultDependencyCollector();
- collector.setArtifactDescriptorReader( newReader( "" ) );
- collector.setVersionRangeResolver( new StubVersionRangeResolver() );
- collector.setRemoteRepositoryManager( new StubRemoteRepositoryManager() );
- collector.setLoggerFactory( new TestLoggerFactory() );
-
- parser = new DependencyGraphParser( "artifact-descriptions/" );
-
- repository = new RemoteRepository.Builder( "id", "default", "file:///" ).build();
- }
-
- private static void assertEqualSubtree( DependencyNode expected, DependencyNode actual )
- {
- assertEqualSubtree( expected, actual, new LinkedList<DependencyNode>() );
- }
-
- private static void assertEqualSubtree( DependencyNode expected, DependencyNode actual,
- LinkedList<DependencyNode> parents )
- {
- assertEquals( "path: " + parents, expected.getDependency(), actual.getDependency() );
-
- if ( actual.getDependency() != null )
- {
- Artifact artifact = actual.getDependency().getArtifact();
- for ( DependencyNode parent : parents )
- {
- if ( parent.getDependency() != null && artifact.equals( parent.getDependency().getArtifact() ) )
- {
- return;
- }
- }
- }
-
- parents.addLast( expected );
-
- assertEquals( "path: " + parents + ", expected: " + expected.getChildren() + ", actual: "
- + actual.getChildren(), expected.getChildren().size(), actual.getChildren().size() );
-
- Iterator<DependencyNode> iterator1 = expected.getChildren().iterator();
- Iterator<DependencyNode> iterator2 = actual.getChildren().iterator();
-
- while ( iterator1.hasNext() )
- {
- assertEqualSubtree( iterator1.next(), iterator2.next(), parents );
- }
-
- parents.removeLast();
- }
-
- private Dependency dep( DependencyNode root, int... coords )
- {
- return path( root, coords ).getDependency();
- }
-
- private DependencyNode path( DependencyNode root, int... coords )
- {
- try
- {
- DependencyNode node = root;
- for ( int coord : coords )
- {
- node = node.getChildren().get( coord );
- }
-
- return node;
- }
- catch ( IndexOutOfBoundsException e )
- {
- throw new IllegalArgumentException( "Illegal coordinates for child", e );
- }
- catch ( NullPointerException e )
- {
- throw new IllegalArgumentException( "Illegal coordinates for child", e );
- }
- }
-
- @Test
- public void testSimpleCollection()
- throws IOException, DependencyCollectionException
- {
- Dependency dependency = newDep( "gid:aid:ext:ver", "compile" );
- CollectRequest request = new CollectRequest( dependency, Arrays.asList( repository ) );
- CollectResult result = collector.collectDependencies( session, request );
-
- assertEquals( 0, result.getExceptions().size() );
-
- DependencyNode root = result.getRoot();
- Dependency newDependency = root.getDependency();
-
- assertEquals( dependency, newDependency );
- assertEquals( dependency.getArtifact(), newDependency.getArtifact() );
-
- assertEquals( 1, root.getChildren().size() );
-
- Dependency expect = newDep( "gid:aid2:ext:ver", "compile" );
- assertEquals( expect, root.getChildren().get( 0 ).getDependency() );
- }
-
- @Test
- public void testMissingDependencyDescription()
- throws IOException
- {
- CollectRequest request =
- new CollectRequest( newDep( "missing:description:ext:ver" ), Arrays.asList( repository ) );
- try
- {
- collector.collectDependencies( session, request );
- fail( "expected exception" );
- }
- catch ( DependencyCollectionException e )
- {
- CollectResult result = e.getResult();
- assertSame( request, result.getRequest() );
- assertNotNull( result.getExceptions() );
- assertEquals( 1, result.getExceptions().size() );
-
- assertTrue( result.getExceptions().get( 0 ) instanceof ArtifactDescriptorException );
-
- assertEquals( request.getRoot(), result.getRoot().getDependency() );
- }
- }
-
- @Test
- public void testDuplicates()
- throws IOException, DependencyCollectionException
- {
- Dependency dependency = newDep( "duplicate:transitive:ext:dependency" );
- CollectRequest request = new CollectRequest( dependency, Arrays.asList( repository ) );
-
- CollectResult result = collector.collectDependencies( session, request );
-
- assertEquals( 0, result.getExceptions().size() );
-
- DependencyNode root = result.getRoot();
- Dependency newDependency = root.getDependency();
-
- assertEquals( dependency, newDependency );
- assertEquals( dependency.getArtifact(), newDependency.getArtifact() );
-
- assertEquals( 2, root.getChildren().size() );
-
- Dependency dep = newDep( "gid:aid:ext:ver", "compile" );
- assertEquals( dep, dep( root, 0 ) );
-
- dep = newDep( "gid:aid2:ext:ver", "compile" );
- assertEquals( dep, dep( root, 1 ) );
- assertEquals( dep, dep( root, 0, 0 ) );
- assertEquals( dep( root, 1 ), dep( root, 0, 0 ) );
- }
-
- @Test
- public void testEqualSubtree()
- throws IOException, DependencyCollectionException
- {
- DependencyNode root = parser.parseResource( "expectedSubtreeComparisonResult.txt" );
- Dependency dependency = root.getDependency();
- CollectRequest request = new CollectRequest( dependency, Arrays.asList( repository ) );
-
- CollectResult result = collector.collectDependencies( session, request );
- assertEqualSubtree( root, result.getRoot() );
- }
-
- @Test
- public void testCyclicDependencies()
- throws Exception
- {
- DependencyNode root = parser.parseResource( "cycle.txt" );
- CollectRequest request = new CollectRequest( root.getDependency(), Arrays.asList( repository ) );
- CollectResult result = collector.collectDependencies( session, request );
- assertEqualSubtree( root, result.getRoot() );
- }
-
- @Test
- public void testCyclicDependenciesBig()
- throws Exception
- {
- CollectRequest request = new CollectRequest( newDep( "1:2:pom:5.50-SNAPSHOT" ), Arrays.asList( repository ) );
- collector.setArtifactDescriptorReader( newReader( "cycle-big/" ) );
- CollectResult result = collector.collectDependencies( session, request );
- assertNotNull( result.getRoot() );
- // we only care about the performance here, this test must not hang or run out of mem
- }
-
- @Test
- public void testCyclicProjects()
- throws Exception
- {
- CollectRequest request = new CollectRequest( newDep( "test:a:2" ), Arrays.asList( repository ) );
- collector.setArtifactDescriptorReader( newReader( "versionless-cycle/" ) );
- CollectResult result = collector.collectDependencies( session, request );
- DependencyNode root = result.getRoot();
- DependencyNode a1 = path( root, 0, 0 );
- assertEquals( "a", a1.getArtifact().getArtifactId() );
- assertEquals( "1", a1.getArtifact().getVersion() );
- for ( DependencyNode child : a1.getChildren() )
- {
- assertFalse( "1".equals( child.getArtifact().getVersion() ) );
- }
-
- assertEquals( 1, result.getCycles().size() );
- DependencyCycle cycle = result.getCycles().get( 0 );
- assertEquals( Arrays.asList(), cycle.getPrecedingDependencies() );
- assertEquals( Arrays.asList( root.getDependency(), path( root, 0 ).getDependency(), a1.getDependency() ),
- cycle.getCyclicDependencies() );
- }
-
- @Test
- public void testCyclicProjects_ConsiderLabelOfRootlessGraph()
- throws Exception
- {
- Dependency dep = newDep( "gid:aid:ver", "compile" );
- CollectRequest request =
- new CollectRequest().addDependency( dep ).addRepository( repository ).setRootArtifact( dep.getArtifact() );
- CollectResult result = collector.collectDependencies( session, request );
- DependencyNode root = result.getRoot();
- DependencyNode a1 = root.getChildren().get( 0 );
- assertEquals( "aid", a1.getArtifact().getArtifactId() );
- assertEquals( "ver", a1.getArtifact().getVersion() );
- DependencyNode a2 = a1.getChildren().get( 0 );
- assertEquals( "aid2", a2.getArtifact().getArtifactId() );
- assertEquals( "ver", a2.getArtifact().getVersion() );
-
- assertEquals( 1, result.getCycles().size() );
- DependencyCycle cycle = result.getCycles().get( 0 );
- assertEquals( Arrays.asList(), cycle.getPrecedingDependencies() );
- assertEquals( Arrays.asList( new Dependency( dep.getArtifact(), null ), a1.getDependency() ),
- cycle.getCyclicDependencies() );
- }
-
- @Test
- public void testPartialResultOnError()
- throws IOException
- {
- DependencyNode root = parser.parseResource( "expectedPartialSubtreeOnError.txt" );
-
- Dependency dependency = root.getDependency();
- CollectRequest request = new CollectRequest( dependency, Arrays.asList( repository ) );
-
- CollectResult result;
- try
- {
- result = collector.collectDependencies( session, request );
- fail( "expected exception " );
- }
- catch ( DependencyCollectionException e )
- {
- result = e.getResult();
-
- assertSame( request, result.getRequest() );
- assertNotNull( result.getExceptions() );
- assertEquals( 1, result.getExceptions().size() );
-
- assertTrue( result.getExceptions().get( 0 ) instanceof ArtifactDescriptorException );
-
- assertEqualSubtree( root, result.getRoot() );
- }
- }
-
- @Test
- public void testCollectMultipleDependencies()
- throws IOException, DependencyCollectionException
- {
- Dependency root1 = newDep( "gid:aid:ext:ver", "compile" );
- Dependency root2 = newDep( "gid:aid2:ext:ver", "compile" );
- List<Dependency> dependencies = Arrays.asList( root1, root2 );
- CollectRequest request = new CollectRequest( dependencies, null, Arrays.asList( repository ) );
- CollectResult result = collector.collectDependencies( session, request );
-
- assertEquals( 0, result.getExceptions().size() );
- assertEquals( 2, result.getRoot().getChildren().size() );
- assertEquals( root1, dep( result.getRoot(), 0 ) );
-
- assertEquals( 1, path( result.getRoot(), 0 ).getChildren().size() );
- assertEquals( root2, dep( result.getRoot(), 0, 0 ) );
-
- assertEquals( 0, path( result.getRoot(), 1 ).getChildren().size() );
- assertEquals( root2, dep( result.getRoot(), 1 ) );
- }
-
- @Test
- public void testArtifactDescriptorResolutionNotRestrictedToRepoHostingSelectedVersion()
- throws Exception
- {
- RemoteRepository repo2 = new RemoteRepository.Builder( "test", "default", "file:///" ).build();
-
- final List<RemoteRepository> repos = new ArrayList<RemoteRepository>();
-
- collector.setArtifactDescriptorReader( new ArtifactDescriptorReader()
- {
- public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session,
- ArtifactDescriptorRequest request )
- throws ArtifactDescriptorException
- {
- repos.addAll( request.getRepositories() );
- return new ArtifactDescriptorResult( request );
- }
- } );
-
- List<Dependency> dependencies = Arrays.asList( newDep( "verrange:parent:jar:1[1,)", "compile" ) );
- CollectRequest request = new CollectRequest( dependencies, null, Arrays.asList( repository, repo2 ) );
- CollectResult result = collector.collectDependencies( session, request );
-
- assertEquals( 0, result.getExceptions().size() );
- assertEquals( 2, repos.size() );
- assertEquals( "id", repos.get( 0 ).getId() );
- assertEquals( "test", repos.get( 1 ).getId() );
- }
-
- @Test
- public void testManagedVersionScope()
- throws IOException, DependencyCollectionException
- {
- Dependency dependency = newDep( "managed:aid:ext:ver" );
- CollectRequest request = new CollectRequest( dependency, Arrays.asList( repository ) );
-
- session.setDependencyManager( new ClassicDependencyManager() );
-
- CollectResult result = collector.collectDependencies( session, request );
-
- assertEquals( 0, result.getExceptions().size() );
-
- DependencyNode root = result.getRoot();
-
- assertEquals( dependency, dep( root ) );
- assertEquals( dependency.getArtifact(), dep( root ).getArtifact() );
-
- assertEquals( 1, root.getChildren().size() );
- Dependency expect = newDep( "gid:aid:ext:ver", "compile" );
- assertEquals( expect, dep( root, 0 ) );
-
- assertEquals( 1, path( root, 0 ).getChildren().size() );
- expect = newDep( "gid:aid2:ext:managedVersion", "managedScope" );
- assertEquals( expect, dep( root, 0, 0 ) );
- }
-
- @Test
- public void testDependencyManagement()
- throws IOException, DependencyCollectionException
- {
- collector.setArtifactDescriptorReader( newReader( "managed/" ) );
-
- DependencyNode root = parser.parseResource( "expectedSubtreeComparisonResult.txt" );
- TestDependencyManager depMgmt = new TestDependencyManager();
- depMgmt.add( dep( root, 0 ), "managed", null, null );
- depMgmt.add( dep( root, 0, 1 ), "managed", "managed", null );
- depMgmt.add( dep( root, 1 ), null, null, "managed" );
- session.setDependencyManager( depMgmt );
-
- // collect result will differ from expectedSubtreeComparisonResult.txt
- // set localPath -> no dependency traversal
- CollectRequest request = new CollectRequest( dep( root ), Arrays.asList( repository ) );
- CollectResult result = collector.collectDependencies( session, request );
-
- DependencyNode node = result.getRoot();
- assertEquals( "managed", dep( node, 0, 1 ).getArtifact().getVersion() );
- assertEquals( "managed", dep( node, 0, 1 ).getScope() );
-
- assertEquals( "managed", dep( node, 1 ).getArtifact().getProperty( ArtifactProperties.LOCAL_PATH, null ) );
- assertEquals( "managed", dep( node, 0, 0 ).getArtifact().getProperty( ArtifactProperties.LOCAL_PATH, null ) );
- }
-
- @Test
- public void testDependencyManagement_VerboseMode()
- throws Exception
- {
- String depId = "gid:aid2:ext";
- TestDependencyManager depMgmt = new TestDependencyManager();
- depMgmt.version( depId, "managedVersion" );
- depMgmt.scope( depId, "managedScope" );
- depMgmt.optional( depId, Boolean.TRUE );
- depMgmt.path( depId, "managedPath" );
- depMgmt.exclusions( depId, new Exclusion( "gid", "aid", "*", "*" ) );
- session.setDependencyManager( depMgmt );
- session.setConfigProperty( DependencyManagerUtils.CONFIG_PROP_VERBOSE, Boolean.TRUE );
-
- CollectRequest request = new CollectRequest().setRoot( newDep( "gid:aid:ver" ) );
- CollectResult result = collector.collectDependencies( session, request );
- DependencyNode node = result.getRoot().getChildren().get( 0 );
- assertEquals( DependencyNode.MANAGED_VERSION | DependencyNode.MANAGED_SCOPE | DependencyNode.MANAGED_OPTIONAL
- | DependencyNode.MANAGED_PROPERTIES | DependencyNode.MANAGED_EXCLUSIONS, node.getManagedBits() );
- assertEquals( "ver", DependencyManagerUtils.getPremanagedVersion( node ) );
- assertEquals( "compile", DependencyManagerUtils.getPremanagedScope( node ) );
- assertEquals( Boolean.FALSE, DependencyManagerUtils.getPremanagedOptional( node ) );
- }
-
- @Test
- public void testDependencyManagement_TransitiveDependencyManager()
- throws DependencyCollectionException, IOException
- {
- collector.setArtifactDescriptorReader( newReader( "managed/" ) );
- parser = new DependencyGraphParser( "artifact-descriptions/managed/" );
- session.setDependencyManager( new TransitiveDependencyManager() );
- final Dependency root = newDep( "gid:0:ext:ver" );
- CollectRequest request = new CollectRequest( root, Arrays.asList( repository ) );
- CollectResult result = collector.collectDependencies( session, request );
-
- DependencyNode expected = parser.parseResource( "management-tree.txt" );
- assertEqualSubtree( expected, result.getRoot() );
- }
-
- @Test
- public void testDependencyManagement_DependencySelectorProcessesManagedState()
- throws DependencyCollectionException, IOException
- {
- collector.setArtifactDescriptorReader( newReader( "selection/managed/" ) );
- parser = new DependencyGraphParser( "artifact-descriptions/selection/managed/" );
-
- final Dependency root = newDep( "gid:root:ext:ver", "root-scope" );
- CollectRequest request = new CollectRequest( root, Arrays.asList( repository ) );
- CollectResult result = collector.collectDependencies( session, request );
-
- DependencyNode expected = parser.parseResource( "all-nodes.txt" );
- assertEqualSubtree( expected, result.getRoot() );
-
- this.session.setDependencySelector( new DependencySelector()
- {
-
- public boolean selectDependency( final Dependency dependency )
- {
- return dependency != null
- && !( "managed".equals( dependency.getScope() )
- || "managed".equals( dependency.getArtifact().getVersion() )
- || dependency.isOptional() );
-
- }
-
- public DependencySelector deriveChildSelector( final DependencyCollectionContext context )
- {
- return this;
- }
-
- } );
-
- // Tests managed scope is processed by selector.
- TestDependencyManager depMgmt = new TestDependencyManager();
- depMgmt.scope( "gid:transitive-of-transitive-of-root:ext", "managed" );
- session.setDependencyManager( depMgmt );
-
- expected = parser.parseResource( "transitive-of-transitive-of-root.txt" );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
-
- depMgmt = new TestDependencyManager();
- depMgmt.scope( "gid:transitive-of-root:ext", "managed" );
- session.setDependencyManager( depMgmt );
-
- expected = parser.parseResource( "transitive-of-root.txt" );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
-
- depMgmt = new TestDependencyManager();
- depMgmt.scope( "gid:direct-of-root:ext", "managed" );
- session.setDependencyManager( depMgmt );
-
- expected = parser.parseResource( "direct-of-root.txt" );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
-
- // Tests managed optionality is processed by selector.
- depMgmt = new TestDependencyManager();
- depMgmt.optional( "gid:transitive-of-transitive-of-root:ext", Boolean.TRUE );
- session.setDependencyManager( depMgmt );
-
- expected = parser.parseResource( "transitive-of-transitive-of-root.txt" );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
-
- depMgmt = new TestDependencyManager();
- depMgmt.optional( "gid:transitive-of-root:ext", Boolean.TRUE );
- session.setDependencyManager( depMgmt );
-
- expected = parser.parseResource( "transitive-of-root.txt" );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
-
- depMgmt = new TestDependencyManager();
- depMgmt.optional( "gid:direct-of-root:ext", Boolean.TRUE );
- session.setDependencyManager( depMgmt );
-
- expected = parser.parseResource( "direct-of-root.txt" );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
-
- // Tests managed version is processed by selector.
- depMgmt = new TestDependencyManager();
- depMgmt.version( "gid:transitive-of-transitive-of-root:ext", "managed" );
- session.setDependencyManager( depMgmt );
-
- expected = parser.parseResource( "transitive-of-transitive-of-root.txt" );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
-
- depMgmt = new TestDependencyManager();
- depMgmt.version( "gid:transitive-of-root:ext", "managed" );
- session.setDependencyManager( depMgmt );
-
- expected = parser.parseResource( "transitive-of-root.txt" );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
-
- depMgmt = new TestDependencyManager();
- depMgmt.version( "gid:direct-of-root:ext", "managed" );
- session.setDependencyManager( depMgmt );
-
- expected = parser.parseResource( "direct-of-root.txt" );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
- }
-
- @Test
- public void testVersionFilter()
- throws Exception
- {
- session.setVersionFilter( new HighestVersionFilter() );
- CollectRequest request = new CollectRequest().setRoot( newDep( "gid:aid:1" ) );
- CollectResult result = collector.collectDependencies( session, request );
- assertEquals( 1, result.getRoot().getChildren().size() );
- }
-
- @Test
- public void testSelectionWithScopeDependencySelector()
- throws DependencyCollectionException, IOException
- {
- collector.setArtifactDescriptorReader( newReader( "selection/scope/" ) );
- parser = new DependencyGraphParser( "artifact-descriptions/selection/scope/" );
-
- final Dependency root = newDep( "gid:root:ext:ver", "root-scope" );
- CollectRequest request = new CollectRequest( root, Arrays.asList( repository ) );
- CollectResult result = collector.collectDependencies( session, request );
-
- DependencyNode expected = parser.parseResource( "all-nodes.txt" );
- assertEqualSubtree( expected, result.getRoot() );
-
- /*
- A dependency selector that filters transitive dependencies based on their scope. Direct dependencies are always
- included regardless of their scope.
- */
- // Include all.
- this.session.setDependencySelector( new ScopeDependencySelector() );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
-
- // Exclude scope of direct dependency of root equals "include all" as direct dependencies are always included.
- this.session.setDependencySelector( new ScopeDependencySelector( "direct-of-root-scope" ) );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
-
- // Exclude scope of transitive dependency of direct dependency of root.
- expected = parser.parseResource( "transitive-of-root-scope-exclusion-tree.txt" );
- this.session.setDependencySelector( new ScopeDependencySelector( "transitive-of-root-scope" ) );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
-
- // Exclude scope of transitive dependency of transitive dependency of direct dependency of root.
- expected = parser.parseResource( "transitive-of-transitive-of-root-exclusion-tree.txt" );
- this.session.setDependencySelector( new ScopeDependencySelector( "transitive-of-transitive-of-root-scope" ) );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
- }
-
- @Test
- public void testSelectionWithOptionalDependencySelector()
- throws DependencyCollectionException, IOException
- {
- collector.setArtifactDescriptorReader( newReader( "selection/optional/" ) );
- parser = new DependencyGraphParser( "artifact-descriptions/selection/optional/" );
-
- final Dependency root = newDep( "gid:root:ext:ver", "root-scope" );
- CollectRequest request = new CollectRequest( root, Arrays.asList( repository ) );
- CollectResult result = collector.collectDependencies( session, request );
-
- DependencyNode expected = parser.parseResource( "no-selector-tree.txt" );
- assertEqualSubtree( expected, result.getRoot() );
-
- // Exclude optional transitive dependencies.
- expected = parser.parseResource( "optional-exclusion-tree.txt" );
- this.session.setDependencySelector( new OptionalDependencySelector() );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
- }
-
- static class TestDependencyManager
- implements DependencyManager
- {
-
- private Map<String, String> versions = new HashMap<String, String>();
-
- private Map<String, String> scopes = new HashMap<String, String>();
-
- private Map<String, Boolean> optionals = new HashMap<String, Boolean>();
-
- private Map<String, String> paths = new HashMap<String, String>();
-
- private Map<String, Collection<Exclusion>> exclusions = new HashMap<String, Collection<Exclusion>>();
-
- public void add( Dependency d, String version, String scope, String localPath )
- {
- String id = toKey( d );
- version( id, version );
- scope( id, scope );
- path( id, localPath );
- }
-
- public void version( String id, String version )
- {
- versions.put( id, version );
- }
-
- public void scope( String id, String scope )
- {
- scopes.put( id, scope );
- }
-
- public void optional( String id, Boolean optional )
- {
- optionals.put( id, optional );
- }
-
- public void path( String id, String path )
- {
- paths.put( id, path );
- }
-
- public void exclusions( String id, Exclusion... exclusions )
- {
- this.exclusions.put( id, exclusions != null ? Arrays.asList( exclusions ) : null );
- }
-
- public DependencyManagement manageDependency( Dependency d )
- {
- String id = toKey( d );
- DependencyManagement mgmt = new DependencyManagement();
- mgmt.setVersion( versions.get( id ) );
- mgmt.setScope( scopes.get( id ) );
- mgmt.setOptional( optionals.get( id ) );
- String path = paths.get( id );
- if ( path != null )
- {
- mgmt.setProperties( Collections.singletonMap( ArtifactProperties.LOCAL_PATH, path ) );
- }
- mgmt.setExclusions( exclusions.get( id ) );
- return mgmt;
- }
-
- private String toKey( Dependency dependency )
- {
- return ArtifactIdUtils.toVersionlessId( dependency.getArtifact() );
- }
-
- public DependencyManager deriveChildManager( DependencyCollectionContext context )
- {
- return this;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDeployerTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDeployerTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDeployerTest.java
deleted file mode 100644
index 9465e87..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDeployerTest.java
+++ /dev/null
@@ -1,385 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositoryEvent;
-import org.eclipse.aether.RepositoryEvent.EventType;
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.deployment.DeployRequest;
-import org.eclipse.aether.deployment.DeploymentException;
-import org.eclipse.aether.internal.impl.DefaultDeployer;
-import org.eclipse.aether.internal.test.util.TestFileProcessor;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.metadata.DefaultMetadata;
-import org.eclipse.aether.metadata.MergeableMetadata;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.metadata.Metadata.Nature;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.ArtifactDownload;
-import org.eclipse.aether.spi.connector.ArtifactUpload;
-import org.eclipse.aether.spi.connector.MetadataDownload;
-import org.eclipse.aether.spi.connector.MetadataUpload;
-import org.eclipse.aether.spi.connector.RepositoryConnector;
-import org.eclipse.aether.transfer.MetadataNotFoundException;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class DefaultDeployerTest
-{
-
- private Artifact artifact;
-
- private DefaultMetadata metadata;
-
- private DefaultRepositorySystemSession session;
-
- private StubRepositoryConnectorProvider connectorProvider;
-
- private DefaultDeployer deployer;
-
- private DeployRequest request;
-
- private RecordingRepositoryConnector connector;
-
- private RecordingRepositoryListener listener;
-
- @Before
- public void setup()
- throws IOException
- {
- artifact = new DefaultArtifact( "gid", "aid", "jar", "ver" );
- artifact = artifact.setFile( TestFileUtils.createTempFile( "artifact" ) );
- metadata =
- new DefaultMetadata( "gid", "aid", "ver", "type", Nature.RELEASE_OR_SNAPSHOT,
- TestFileUtils.createTempFile( "metadata" ) );
-
- session = TestUtils.newSession();
- connectorProvider = new StubRepositoryConnectorProvider();
-
- deployer = new DefaultDeployer();
- deployer.setRepositoryConnectorProvider( connectorProvider );
- deployer.setRemoteRepositoryManager( new StubRemoteRepositoryManager() );
- deployer.setRepositoryEventDispatcher( new StubRepositoryEventDispatcher() );
- deployer.setUpdateCheckManager( new StaticUpdateCheckManager( true ) );
- deployer.setFileProcessor( new TestFileProcessor() );
- deployer.setSyncContextFactory( new StubSyncContextFactory() );
- deployer.setOfflineController( new DefaultOfflineController() );
-
- request = new DeployRequest();
- request.setRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
- connector = new RecordingRepositoryConnector( session );
- connectorProvider.setConnector( connector );
-
- listener = new RecordingRepositoryListener();
- session.setRepositoryListener( listener );
- }
-
- @After
- public void teardown()
- throws Exception
- {
- if ( session.getLocalRepository() != null )
- {
- TestFileUtils.deleteFile( session.getLocalRepository().getBasedir() );
- }
- session = null;
- listener = null;
- connector = null;
- connectorProvider = null;
- deployer = null;
- }
-
- @Test
- public void testSuccessfulDeploy()
- throws DeploymentException
- {
-
- connector.setExpectPut( artifact );
- connector.setExpectPut( metadata );
-
- request.addArtifact( artifact );
- request.addMetadata( metadata );
-
- deployer.deploy( session, request );
-
- connector.assertSeenExpected();
- }
-
- @Test( expected = DeploymentException.class )
- public void testNullArtifactFile()
- throws DeploymentException
- {
- request.addArtifact( artifact.setFile( null ) );
- deployer.deploy( session, request );
- }
-
- @Test( expected = DeploymentException.class )
- public void testNullMetadataFile()
- throws DeploymentException
- {
- request.addArtifact( artifact.setFile( null ) );
- deployer.deploy( session, request );
- }
-
- @Test
- public void testSuccessfulArtifactEvents()
- throws DeploymentException
- {
- request.addArtifact( artifact );
-
- deployer.deploy( session, request );
-
- List<RepositoryEvent> events = listener.getEvents();
- assertEquals( 2, events.size() );
-
- RepositoryEvent event = events.get( 0 );
- assertEquals( EventType.ARTIFACT_DEPLOYING, event.getType() );
- assertEquals( artifact, event.getArtifact() );
- assertNull( event.getException() );
-
- event = events.get( 1 );
- assertEquals( EventType.ARTIFACT_DEPLOYED, event.getType() );
- assertEquals( artifact, event.getArtifact() );
- assertNull( event.getException() );
- }
-
- @Test
- public void testFailingArtifactEvents()
- {
- connector.fail = true;
-
- request.addArtifact( artifact );
-
- try
- {
- deployer.deploy( session, request );
- fail( "expected exception" );
- }
- catch ( DeploymentException e )
- {
- List<RepositoryEvent> events = listener.getEvents();
- assertEquals( 2, events.size() );
-
- RepositoryEvent event = events.get( 0 );
- assertEquals( EventType.ARTIFACT_DEPLOYING, event.getType() );
- assertEquals( artifact, event.getArtifact() );
- assertNull( event.getException() );
-
- event = events.get( 1 );
- assertEquals( EventType.ARTIFACT_DEPLOYED, event.getType() );
- assertEquals( artifact, event.getArtifact() );
- assertNotNull( event.getException() );
- }
- }
-
- @Test
- public void testSuccessfulMetadataEvents()
- throws DeploymentException
- {
- request.addMetadata( metadata );
-
- deployer.deploy( session, request );
-
- List<RepositoryEvent> events = listener.getEvents();
- assertEquals( 2, events.size() );
-
- RepositoryEvent event = events.get( 0 );
- assertEquals( EventType.METADATA_DEPLOYING, event.getType() );
- assertEquals( metadata, event.getMetadata() );
- assertNull( event.getException() );
-
- event = events.get( 1 );
- assertEquals( EventType.METADATA_DEPLOYED, event.getType() );
- assertEquals( metadata, event.getMetadata() );
- assertNull( event.getException() );
- }
-
- @Test
- public void testFailingMetdataEvents()
- {
- connector.fail = true;
-
- request.addMetadata( metadata );
-
- try
- {
- deployer.deploy( session, request );
- fail( "expected exception" );
- }
- catch ( DeploymentException e )
- {
- List<RepositoryEvent> events = listener.getEvents();
- assertEquals( 2, events.size() );
-
- RepositoryEvent event = events.get( 0 );
- assertEquals( EventType.METADATA_DEPLOYING, event.getType() );
- assertEquals( metadata, event.getMetadata() );
- assertNull( event.getException() );
-
- event = events.get( 1 );
- assertEquals( EventType.METADATA_DEPLOYED, event.getType() );
- assertEquals( metadata, event.getMetadata() );
- assertNotNull( event.getException() );
- }
- }
-
- @Test
- public void testStaleLocalMetadataCopyGetsDeletedBeforeMergeWhenMetadataIsNotCurrentlyPresentInRemoteRepo()
- throws Exception
- {
- MergeableMetadata metadata = new MergeableMetadata()
- {
-
- public Metadata setFile( File file )
- {
- return this;
- }
-
- public String getVersion()
- {
- return "";
- }
-
- public String getType()
- {
- return "test.properties";
- }
-
- public Nature getNature()
- {
- return Nature.RELEASE;
- }
-
- public String getGroupId()
- {
- return "org";
- }
-
- public File getFile()
- {
- return null;
- }
-
- public String getArtifactId()
- {
- return "aether";
- }
-
- public Metadata setProperties( Map<String, String> properties )
- {
- return this;
- }
-
- public Map<String, String> getProperties()
- {
- return Collections.emptyMap();
- }
-
- public String getProperty( String key, String defaultValue )
- {
- return defaultValue;
- }
-
- public void merge( File current, File result )
- throws RepositoryException
- {
- Properties props = new Properties();
-
- try
- {
- if ( current.isFile() )
- {
- TestFileUtils.readProps( current, props );
- }
-
- props.setProperty( "new", "value" );
-
- TestFileUtils.writeProps( result, props );
- }
- catch ( IOException e )
- {
- throw new RepositoryException( e.getMessage(), e );
- }
- }
-
- public boolean isMerged()
- {
- return false;
- }
- };
-
- connectorProvider.setConnector( new RepositoryConnector()
- {
-
- public void put( Collection<? extends ArtifactUpload> artifactUploads,
- Collection<? extends MetadataUpload> metadataUploads )
- {
- }
-
- public void get( Collection<? extends ArtifactDownload> artifactDownloads,
- Collection<? extends MetadataDownload> metadataDownloads )
- {
- if ( metadataDownloads != null )
- {
- for ( MetadataDownload download : metadataDownloads )
- {
- download.setException( new MetadataNotFoundException( download.getMetadata(), null, null ) );
- }
- }
- }
-
- public void close()
- {
- }
- } );
-
- request.addMetadata( metadata );
-
- File metadataFile =
- new File( session.getLocalRepository().getBasedir(),
- session.getLocalRepositoryManager().getPathForRemoteMetadata( metadata, request.getRepository(),
- "" ) );
- Properties props = new Properties();
- props.setProperty( "old", "value" );
- TestFileUtils.writeProps( metadataFile, props );
-
- deployer.deploy( session, request );
-
- props = new Properties();
- TestFileUtils.readProps( metadataFile, props );
- assertNull( props.toString(), props.get( "old" ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultFileProcessorTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultFileProcessorTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultFileProcessorTest.java
deleted file mode 100644
index 3f8ab5e..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultFileProcessorTest.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.eclipse.aether.internal.impl.DefaultFileProcessor;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.spi.io.FileProcessor.ProgressListener;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class DefaultFileProcessorTest
-{
-
- private File targetDir;
-
- private DefaultFileProcessor fileProcessor;
-
- @Before
- public void setup()
- throws IOException
- {
- targetDir = TestFileUtils.createTempDir( getClass().getSimpleName() );
- fileProcessor = new DefaultFileProcessor();
- }
-
- @After
- public void teardown()
- throws Exception
- {
- TestFileUtils.deleteFile( targetDir );
- fileProcessor = null;
- }
-
- @Test
- public void testCopy()
- throws IOException
- {
- String data = "testCopy\nasdf";
- File file = TestFileUtils.createTempFile( data );
- File target = new File( targetDir, "testCopy.txt" );
-
- fileProcessor.copy( file, target );
-
- assertEquals( data, TestFileUtils.readString( file ) );
-
- file.delete();
- }
-
- @Test
- public void testOverwrite()
- throws IOException
- {
- String data = "testCopy\nasdf";
- File file = TestFileUtils.createTempFile( data );
-
- for ( int i = 0; i < 5; i++ )
- {
- File target = new File( targetDir, "testCopy.txt" );
- fileProcessor.copy( file, target );
- assertEquals( data, TestFileUtils.readString( file ) );
- }
-
- file.delete();
- }
-
- @Test
- public void testCopyEmptyFile()
- throws IOException
- {
- File file = TestFileUtils.createTempFile( "" );
- File target = new File( targetDir, "testCopyEmptyFile" );
- target.delete();
- fileProcessor.copy( file, target );
- assertTrue( "empty file was not copied", target.exists() && target.length() == 0 );
- target.delete();
- }
-
- @Test
- public void testProgressingChannel()
- throws IOException
- {
- File file = TestFileUtils.createTempFile( "test" );
- File target = new File( targetDir, "testProgressingChannel" );
- target.delete();
- final AtomicInteger progressed = new AtomicInteger();
- ProgressListener listener = new ProgressListener()
- {
- public void progressed( ByteBuffer buffer )
- throws IOException
- {
- progressed.addAndGet( buffer.remaining() );
- }
- };
- fileProcessor.copy( file, target, listener );
- assertTrue( "file was not created", target.isFile() );
- assertEquals( "file was not fully copied", 4, target.length() );
- assertEquals( "listener not called", 4, progressed.intValue() );
- target.delete();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultInstallerTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultInstallerTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultInstallerTest.java
deleted file mode 100644
index 99d57bc..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultInstallerTest.java
+++ /dev/null
@@ -1,414 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.List;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositoryEvent;
-import org.eclipse.aether.RepositoryEvent.EventType;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.installation.InstallRequest;
-import org.eclipse.aether.installation.InstallResult;
-import org.eclipse.aether.installation.InstallationException;
-import org.eclipse.aether.internal.impl.DefaultFileProcessor;
-import org.eclipse.aether.internal.impl.DefaultInstaller;
-import org.eclipse.aether.internal.test.util.TestFileProcessor;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLocalRepositoryManager;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.metadata.DefaultMetadata;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.metadata.Metadata.Nature;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class DefaultInstallerTest
-{
-
- private Artifact artifact;
-
- private Metadata metadata;
-
- private DefaultRepositorySystemSession session;
-
- private String localArtifactPath;
-
- private String localMetadataPath;
-
- private DefaultInstaller installer;
-
- private InstallRequest request;
-
- private RecordingRepositoryListener listener;
-
- private File localArtifactFile;
-
- private TestLocalRepositoryManager lrm;
-
- @Before
- public void setup()
- throws IOException
- {
- artifact = new DefaultArtifact( "gid", "aid", "jar", "ver" );
- artifact = artifact.setFile( TestFileUtils.createTempFile( "artifact".getBytes(), 1 ) );
- metadata =
- new DefaultMetadata( "gid", "aid", "ver", "type", Nature.RELEASE_OR_SNAPSHOT,
- TestFileUtils.createTempFile( "metadata".getBytes(), 1 ) );
-
- session = TestUtils.newSession();
- localArtifactPath = session.getLocalRepositoryManager().getPathForLocalArtifact( artifact );
- localMetadataPath = session.getLocalRepositoryManager().getPathForLocalMetadata( metadata );
-
- localArtifactFile = new File( session.getLocalRepository().getBasedir(), localArtifactPath );
-
- installer = new DefaultInstaller();
- installer.setFileProcessor( new TestFileProcessor() );
- installer.setRepositoryEventDispatcher( new StubRepositoryEventDispatcher() );
- installer.setSyncContextFactory( new StubSyncContextFactory() );
- request = new InstallRequest();
- listener = new RecordingRepositoryListener();
- session.setRepositoryListener( listener );
-
- lrm = (TestLocalRepositoryManager) session.getLocalRepositoryManager();
-
- TestFileUtils.deleteFile( session.getLocalRepository().getBasedir() );
- }
-
- @After
- public void teardown()
- throws Exception
- {
- TestFileUtils.deleteFile( session.getLocalRepository().getBasedir() );
- }
-
- @Test
- public void testSuccessfulInstall()
- throws InstallationException, UnsupportedEncodingException, IOException
- {
- File artifactFile =
- new File( session.getLocalRepositoryManager().getRepository().getBasedir(), localArtifactPath );
- File metadataFile =
- new File( session.getLocalRepositoryManager().getRepository().getBasedir(), localMetadataPath );
-
- artifactFile.delete();
- metadataFile.delete();
-
- request.addArtifact( artifact );
- request.addMetadata( metadata );
-
- InstallResult result = installer.install( session, request );
-
- assertTrue( artifactFile.exists() );
- assertEquals( "artifact", TestFileUtils.readString( artifactFile ) );
-
- assertTrue( metadataFile.exists() );
- assertEquals( "metadata", TestFileUtils.readString( metadataFile ) );
-
- assertEquals( result.getRequest(), request );
-
- assertEquals( result.getArtifacts().size(), 1 );
- assertTrue( result.getArtifacts().contains( artifact ) );
-
- assertEquals( result.getMetadata().size(), 1 );
- assertTrue( result.getMetadata().contains( metadata ) );
-
- assertEquals( 1, lrm.getMetadataRegistration().size() );
- assertTrue( lrm.getMetadataRegistration().contains( metadata ) );
- assertEquals( 1, lrm.getArtifactRegistration().size() );
- assertTrue( lrm.getArtifactRegistration().contains( artifact ) );
- }
-
- @Test( expected = InstallationException.class )
- public void testNullArtifactFile()
- throws InstallationException
- {
- InstallRequest request = new InstallRequest();
- request.addArtifact( artifact.setFile( null ) );
-
- installer.install( session, request );
- }
-
- @Test( expected = InstallationException.class )
- public void testNullMetadataFile()
- throws InstallationException
- {
- InstallRequest request = new InstallRequest();
- request.addMetadata( metadata.setFile( null ) );
-
- installer.install( session, request );
- }
-
- @Test( expected = InstallationException.class )
- public void testNonExistentArtifactFile()
- throws InstallationException
- {
- InstallRequest request = new InstallRequest();
- request.addArtifact( artifact.setFile( new File( "missing.txt" ) ) );
-
- installer.install( session, request );
- }
-
- @Test( expected = InstallationException.class )
- public void testNonExistentMetadataFile()
- throws InstallationException
- {
- InstallRequest request = new InstallRequest();
- request.addMetadata( metadata.setFile( new File( "missing.xml" ) ) );
-
- installer.install( session, request );
- }
-
- @Test( expected = InstallationException.class )
- public void testArtifactExistsAsDir()
- throws InstallationException
- {
- String path = session.getLocalRepositoryManager().getPathForLocalArtifact( artifact );
- File file = new File( session.getLocalRepository().getBasedir(), path );
- assertFalse( file.getAbsolutePath() + " is a file, not directory", file.isFile() );
- assertFalse( file.getAbsolutePath() + " already exists", file.exists() );
- assertTrue( "failed to setup test: could not create " + file.getAbsolutePath(),
- file.mkdirs() || file.isDirectory() );
-
- request.addArtifact( artifact );
- installer.install( session, request );
- }
-
- @Test( expected = InstallationException.class )
- public void testMetadataExistsAsDir()
- throws InstallationException
- {
- String path = session.getLocalRepositoryManager().getPathForLocalMetadata( metadata );
- assertTrue( "failed to setup test: could not create " + path,
- new File( session.getLocalRepository().getBasedir(), path ).mkdirs() );
-
- request.addMetadata( metadata );
- installer.install( session, request );
- }
-
- @Test( expected = InstallationException.class )
- public void testArtifactDestinationEqualsSource()
- throws Exception
- {
- String path = session.getLocalRepositoryManager().getPathForLocalArtifact( artifact );
- File file = new File( session.getLocalRepository().getBasedir(), path );
- artifact = artifact.setFile( file );
- TestFileUtils.writeString( file, "test" );
-
- request.addArtifact( artifact );
- installer.install( session, request );
- }
-
- @Test( expected = InstallationException.class )
- public void testMetadataDestinationEqualsSource()
- throws Exception
- {
- String path = session.getLocalRepositoryManager().getPathForLocalMetadata( metadata );
- File file = new File( session.getLocalRepository().getBasedir(), path );
- metadata = metadata.setFile( file );
- TestFileUtils.writeString( file, "test" );
-
- request.addMetadata( metadata );
- installer.install( session, request );
- }
-
- @Test
- public void testSuccessfulArtifactEvents()
- throws InstallationException
- {
- InstallRequest request = new InstallRequest();
- request.addArtifact( artifact );
-
- installer.install( session, request );
- checkEvents( "Repository Event problem", artifact, false );
- }
-
- @Test
- public void testSuccessfulMetadataEvents()
- throws InstallationException
- {
- InstallRequest request = new InstallRequest();
- request.addMetadata( metadata );
-
- installer.install( session, request );
- checkEvents( "Repository Event problem", metadata, false );
- }
-
- @Test
- public void testFailingEventsNullArtifactFile()
- {
- checkFailedEvents( "null artifact file", this.artifact.setFile( null ) );
- }
-
- @Test
- public void testFailingEventsNullMetadataFile()
- {
- checkFailedEvents( "null metadata file", this.metadata.setFile( null ) );
- }
-
- @Test
- public void testFailingEventsArtifactExistsAsDir()
- {
- String path = session.getLocalRepositoryManager().getPathForLocalArtifact( artifact );
- assertTrue( "failed to setup test: could not create " + path,
- new File( session.getLocalRepository().getBasedir(), path ).mkdirs() );
- checkFailedEvents( "target exists as dir", artifact );
- }
-
- @Test
- public void testFailingEventsMetadataExistsAsDir()
- {
- String path = session.getLocalRepositoryManager().getPathForLocalMetadata( metadata );
- assertTrue( "failed to setup test: could not create " + path,
- new File( session.getLocalRepository().getBasedir(), path ).mkdirs() );
- checkFailedEvents( "target exists as dir", metadata );
- }
-
- private void checkFailedEvents( String msg, Metadata metadata )
- {
- InstallRequest request = new InstallRequest().addMetadata( metadata );
- msg = "Repository events problem (case: " + msg + ")";
-
- try
- {
- installer.install( session, request );
- fail( "expected exception" );
- }
- catch ( InstallationException e )
- {
- checkEvents( msg, metadata, true );
- }
-
- }
-
- private void checkEvents( String msg, Metadata metadata, boolean failed )
- {
- List<RepositoryEvent> events = listener.getEvents();
- assertEquals( msg, 2, events.size() );
- RepositoryEvent event = events.get( 0 );
- assertEquals( msg, EventType.METADATA_INSTALLING, event.getType() );
- assertEquals( msg, metadata, event.getMetadata() );
- assertNull( msg, event.getException() );
-
- event = events.get( 1 );
- assertEquals( msg, EventType.METADATA_INSTALLED, event.getType() );
- assertEquals( msg, metadata, event.getMetadata() );
- if ( failed )
- {
- assertNotNull( msg, event.getException() );
- }
- else
- {
- assertNull( msg, event.getException() );
- }
- }
-
- private void checkFailedEvents( String msg, Artifact artifact )
- {
- InstallRequest request = new InstallRequest().addArtifact( artifact );
- msg = "Repository events problem (case: " + msg + ")";
-
- try
- {
- installer.install( session, request );
- fail( "expected exception" );
- }
- catch ( InstallationException e )
- {
- checkEvents( msg, artifact, true );
- }
- }
-
- private void checkEvents( String msg, Artifact artifact, boolean failed )
- {
- List<RepositoryEvent> events = listener.getEvents();
- assertEquals( msg, 2, events.size() );
- RepositoryEvent event = events.get( 0 );
- assertEquals( msg, EventType.ARTIFACT_INSTALLING, event.getType() );
- assertEquals( msg, artifact, event.getArtifact() );
- assertNull( msg, event.getException() );
-
- event = events.get( 1 );
- assertEquals( msg, EventType.ARTIFACT_INSTALLED, event.getType() );
- assertEquals( msg, artifact, event.getArtifact() );
- if ( failed )
- {
- assertNotNull( msg + " > expected exception", event.getException() );
- }
- else
- {
- assertNull( msg + " > " + event.getException(), event.getException() );
- }
- }
-
- @Test
- public void testDoNotUpdateUnchangedArtifact()
- throws InstallationException
- {
- request.addArtifact( artifact );
- installer.install( session, request );
-
- installer.setFileProcessor( new DefaultFileProcessor()
- {
- @Override
- public long copy( File src, File target, ProgressListener listener )
- throws IOException
- {
- throw new IOException( "copy called" );
- }
- } );
-
- request = new InstallRequest();
- request.addArtifact( artifact );
- installer.install( session, request );
- }
-
- @Test
- public void testSetArtifactTimestamps()
- throws InstallationException
- {
- artifact.getFile().setLastModified( artifact.getFile().lastModified() - 60000 );
-
- request.addArtifact( artifact );
-
- installer.install( session, request );
-
- assertEquals( "artifact timestamp was not set to src file", artifact.getFile().lastModified(),
- localArtifactFile.lastModified() );
-
- request = new InstallRequest();
-
- request.addArtifact( artifact );
-
- artifact.getFile().setLastModified( artifact.getFile().lastModified() - 60000 );
-
- installer.install( session, request );
-
- assertEquals( "artifact timestamp was not set to src file", artifact.getFile().lastModified(),
- localArtifactFile.lastModified() );
- }
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultMetadataResolverTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultMetadataResolverTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultMetadataResolverTest.java
deleted file mode 100644
index d977a78..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultMetadataResolverTest.java
+++ /dev/null
@@ -1,256 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.internal.impl.DefaultMetadataResolver;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLocalRepositoryManager;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.metadata.DefaultMetadata;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.LocalMetadataRegistration;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.MetadataRequest;
-import org.eclipse.aether.resolution.MetadataResult;
-import org.eclipse.aether.spi.connector.ArtifactDownload;
-import org.eclipse.aether.spi.connector.MetadataDownload;
-import org.eclipse.aether.transfer.MetadataNotFoundException;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public class DefaultMetadataResolverTest
-{
-
- private DefaultMetadataResolver resolver;
-
- private StubRepositoryConnectorProvider connectorProvider;
-
- private RemoteRepository repository;
-
- private DefaultRepositorySystemSession session;
-
- private Metadata metadata;
-
- private RecordingRepositoryConnector connector;
-
- private TestLocalRepositoryManager lrm;
-
- @Before
- public void setup()
- throws Exception
- {
- session = TestUtils.newSession();
- lrm = (TestLocalRepositoryManager) session.getLocalRepositoryManager();
- connectorProvider = new StubRepositoryConnectorProvider();
- resolver = new DefaultMetadataResolver();
- resolver.setUpdateCheckManager( new StaticUpdateCheckManager( true ) );
- resolver.setRepositoryEventDispatcher( new StubRepositoryEventDispatcher() );
- resolver.setRepositoryConnectorProvider( connectorProvider );
- resolver.setRemoteRepositoryManager( new StubRemoteRepositoryManager() );
- resolver.setSyncContextFactory( new StubSyncContextFactory() );
- resolver.setOfflineController( new DefaultOfflineController() );
- repository =
- new RemoteRepository.Builder( "test-DMRT", "default",
- TestFileUtils.createTempDir().toURI().toURL().toString() ).build();
- metadata = new DefaultMetadata( "gid", "aid", "ver", "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT );
- connector = new RecordingRepositoryConnector();
- connectorProvider.setConnector( connector );
- }
-
- @After
- public void teardown()
- throws Exception
- {
- TestFileUtils.deleteFile( new File( new URI( repository.getUrl() ) ) );
- TestFileUtils.deleteFile( session.getLocalRepository().getBasedir() );
- }
-
- @Test
- public void testNoRepositoryFailing()
- {
- MetadataRequest request = new MetadataRequest( metadata, null, "" );
- List<MetadataResult> results = resolver.resolveMetadata( session, Arrays.asList( request ) );
-
- assertEquals( 1, results.size() );
-
- MetadataResult result = results.get( 0 );
- assertSame( request, result.getRequest() );
- assertNotNull( "" + ( result.getMetadata() != null ? result.getMetadata().getFile() : result.getMetadata() ),
- result.getException() );
- assertEquals( MetadataNotFoundException.class, result.getException().getClass() );
-
- assertNull( result.getMetadata() );
- }
-
- @Test
- public void testResolve()
- throws IOException
- {
- connector.setExpectGet( metadata );
-
- // prepare "download"
- File file =
- new File( session.getLocalRepository().getBasedir(),
- session.getLocalRepositoryManager().getPathForRemoteMetadata( metadata, repository, "" ) );
-
- TestFileUtils.writeString( file, file.getAbsolutePath() );
-
- MetadataRequest request = new MetadataRequest( metadata, repository, "" );
- List<MetadataResult> results = resolver.resolveMetadata( session, Arrays.asList( request ) );
-
- assertEquals( 1, results.size() );
-
- MetadataResult result = results.get( 0 );
- assertSame( request, result.getRequest() );
- assertNull( result.getException() );
- assertNotNull( result.getMetadata() );
- assertNotNull( result.getMetadata().getFile() );
-
- assertEquals( file, result.getMetadata().getFile() );
- assertEquals( metadata, result.getMetadata().setFile( null ) );
-
- connector.assertSeenExpected();
- Set<Metadata> metadataRegistration =
- ( (TestLocalRepositoryManager) session.getLocalRepositoryManager() ).getMetadataRegistration();
- assertTrue( metadataRegistration.contains( metadata ) );
- assertEquals( 1, metadataRegistration.size() );
- }
-
- @Test
- public void testRemoveMetadataIfMissing()
- throws IOException
- {
- connector = new RecordingRepositoryConnector()
- {
-
- @Override
- public void get( Collection<? extends ArtifactDownload> artifactDownloads,
- Collection<? extends MetadataDownload> metadataDownloads )
- {
- super.get( artifactDownloads, metadataDownloads );
- for ( MetadataDownload d : metadataDownloads )
- {
- d.setException( new MetadataNotFoundException( metadata, repository ) );
- }
- }
-
- };
- connectorProvider.setConnector( connector );
-
- File file =
- new File( session.getLocalRepository().getBasedir(),
- session.getLocalRepositoryManager().getPathForRemoteMetadata( metadata, repository, "" ) );
- TestFileUtils.writeString( file, file.getAbsolutePath() );
- metadata.setFile( file );
-
- MetadataRequest request = new MetadataRequest( metadata, repository, "" );
- request.setDeleteLocalCopyIfMissing( true );
-
- List<MetadataResult> results = resolver.resolveMetadata( session, Arrays.asList( request ) );
- assertEquals( 1, results.size() );
- MetadataResult result = results.get( 0 );
-
- assertNotNull( result.getException() );
- assertEquals( false, file.exists() );
- }
-
- @Test
- public void testOfflineSessionResolveMetadataMissing()
- {
- session.setOffline( true );
- MetadataRequest request = new MetadataRequest( metadata, repository, "" );
- List<MetadataResult> results = resolver.resolveMetadata( session, Arrays.asList( request ) );
-
- assertEquals( 1, results.size() );
-
- MetadataResult result = results.get( 0 );
- assertSame( request, result.getRequest() );
- assertNotNull( result.getException() );
- assertNull( result.getMetadata() );
-
- connector.assertSeenExpected();
- }
-
- @Test
- public void testOfflineSessionResolveMetadata()
- throws IOException
- {
- session.setOffline( true );
-
- String path = session.getLocalRepositoryManager().getPathForRemoteMetadata( metadata, repository, "" );
- File file = new File( session.getLocalRepository().getBasedir(), path );
- TestFileUtils.writeString( file, file.getAbsolutePath() );
-
- // set file to use in TestLRM find()
- metadata = metadata.setFile( file );
-
- MetadataRequest request = new MetadataRequest( metadata, repository, "" );
- List<MetadataResult> results = resolver.resolveMetadata( session, Arrays.asList( request ) );
-
- assertEquals( 1, results.size() );
- MetadataResult result = results.get( 0 );
- assertSame( request, result.getRequest() );
- assertNull( String.valueOf( result.getException() ), result.getException() );
- assertNotNull( result.getMetadata() );
- assertNotNull( result.getMetadata().getFile() );
-
- assertEquals( file, result.getMetadata().getFile() );
- assertEquals( metadata.setFile( null ), result.getMetadata().setFile( null ) );
-
- connector.assertSeenExpected();
- }
-
- @Test
- public void testFavorLocal()
- throws IOException
- {
- lrm.add( session, new LocalMetadataRegistration( metadata ) );
- String path = session.getLocalRepositoryManager().getPathForLocalMetadata( metadata );
- File file = new File( session.getLocalRepository().getBasedir(), path );
- TestFileUtils.writeString( file, file.getAbsolutePath() );
-
- MetadataRequest request = new MetadataRequest( metadata, repository, "" );
- request.setFavorLocalRepository( true );
- resolver.setUpdateCheckManager( new StaticUpdateCheckManager( true, true ) );
-
- List<MetadataResult> results = resolver.resolveMetadata( session, Arrays.asList( request ) );
-
- assertEquals( 1, results.size() );
- MetadataResult result = results.get( 0 );
- assertSame( request, result.getRequest() );
- assertNull( String.valueOf( result.getException() ), result.getException() );
-
- connector.assertSeenExpected();
- }
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultOfflineControllerTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultOfflineControllerTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultOfflineControllerTest.java
deleted file mode 100644
index 7e42707..0000000
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultOfflineControllerTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transfer.RepositoryOfflineException;
-import org.junit.Before;
-import org.junit.Test;
-
-public class DefaultOfflineControllerTest
-{
-
- private DefaultOfflineController controller;
-
- private RepositorySystemSession newSession( boolean offline, String protocols, String hosts )
- {
- DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
- session.setOffline( offline );
- session.setConfigProperty( DefaultOfflineController.CONFIG_PROP_OFFLINE_PROTOCOLS, protocols );
- session.setConfigProperty( DefaultOfflineController.CONFIG_PROP_OFFLINE_HOSTS, hosts );
- return session;
- }
-
- private RemoteRepository newRepo( String url )
- {
- return new RemoteRepository.Builder( "central", "default", url ).build();
- }
-
- @Before
- public void setup()
- {
- controller = new DefaultOfflineController();
- }
-
- @Test( expected = RepositoryOfflineException.class )
- public void testCheckOffline_Online()
- throws Exception
- {
- controller.checkOffline( newSession( false, null, null ), newRepo( "http://eclipse.org" ) );
- }
-
- @Test( expected = RepositoryOfflineException.class )
- public void testCheckOffline_Offline()
- throws Exception
- {
- controller.checkOffline( newSession( true, null, null ), newRepo( "http://eclipse.org" ) );
- }
-
- @Test
- public void testCheckOffline_Offline_OfflineProtocol()
- throws Exception
- {
- controller.checkOffline( newSession( true, "file", null ), newRepo( "file://repo" ) );
- controller.checkOffline( newSession( true, "file", null ), newRepo( "FILE://repo" ) );
- controller.checkOffline( newSession( true, " file , classpath ", null ), newRepo( "file://repo" ) );
- controller.checkOffline( newSession( true, " file , classpath ", null ), newRepo( "classpath://repo" ) );
- }
-
- @Test( expected = RepositoryOfflineException.class )
- public void testCheckOffline_Offline_OnlineProtocol()
- throws Exception
- {
- controller.checkOffline( newSession( true, "file", null ), newRepo( "http://eclipse.org" ) );
- }
-
- @Test
- public void testCheckOffline_Offline_OfflineHost()
- throws Exception
- {
- controller.checkOffline( newSession( true, null, "localhost" ), newRepo( "http://localhost" ) );
- controller.checkOffline( newSession( true, null, "localhost" ), newRepo( "http://LOCALHOST" ) );
- controller.checkOffline( newSession( true, null, " localhost , 127.0.0.1 " ), newRepo( "http://localhost" ) );
- controller.checkOffline( newSession( true, null, " localhost , 127.0.0.1 " ), newRepo( "http://127.0.0.1" ) );
- }
-
- @Test( expected = RepositoryOfflineException.class )
- public void testCheckOffline_Offline_OnlineHost()
- throws Exception
- {
- controller.checkOffline( newSession( true, null, "localhost" ), newRepo( "http://eclipse.org" ) );
- }
-
-}
[23/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/GetTask.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/GetTask.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/GetTask.java
deleted file mode 100644
index e77de77..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/GetTask.java
+++ /dev/null
@@ -1,266 +0,0 @@
-package org.eclipse.aether.spi.connector.transport;
-
-/*
- * 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.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * A task to download a resource from the remote repository.
- *
- * @see Transporter#get(GetTask)
- */
-public final class GetTask
- extends TransportTask
-{
-
- private File dataFile;
-
- private boolean resume;
-
- private ByteArrayOutputStream dataBytes;
-
- private Map<String, String> checksums;
-
- /**
- * Creates a new task for the specified remote resource.
- *
- * @param location The relative location of the resource in the remote repository, must not be {@code null}.
- */
- public GetTask( URI location )
- {
- checksums = Collections.emptyMap();
- setLocation( location );
- }
-
- /**
- * Opens an output stream to store the downloaded data. Depending on {@link #getDataFile()}, this stream writes
- * either to a file on disk or a growable buffer in memory. It's the responsibility of the caller to close the
- * provided stream.
- *
- * @return The output stream for the data, never {@code null}. The stream is unbuffered.
- * @throws IOException If the stream could not be opened.
- */
- public OutputStream newOutputStream()
- throws IOException
- {
- return newOutputStream( false );
- }
-
- /**
- * Opens an output stream to store the downloaded data. Depending on {@link #getDataFile()}, this stream writes
- * either to a file on disk or a growable buffer in memory. It's the responsibility of the caller to close the
- * provided stream.
- *
- * @param resume {@code true} if the download resumes from the byte offset given by {@link #getResumeOffset()},
- * {@code false} if the download starts at the first byte of the resource.
- * @return The output stream for the data, never {@code null}. The stream is unbuffered.
- * @throws IOException If the stream could not be opened.
- */
- public OutputStream newOutputStream( boolean resume )
- throws IOException
- {
- if ( dataFile != null )
- {
- return new FileOutputStream( dataFile, this.resume && resume );
- }
- if ( dataBytes == null )
- {
- dataBytes = new ByteArrayOutputStream( 1024 );
- }
- else if ( !resume )
- {
- dataBytes.reset();
- }
- return dataBytes;
- }
-
- /**
- * Gets the file (if any) where the downloaded data should be stored. If the specified file already exists, it will
- * be overwritten.
- *
- * @return The data file or {@code null} if the data will be buffered in memory.
- */
- public File getDataFile()
- {
- return dataFile;
- }
-
- /**
- * Sets the file where the downloaded data should be stored. If the specified file already exists, it will be
- * overwritten. Unless the caller can reasonably expect the resource to be small, use of a data file is strongly
- * recommended to avoid exhausting heap memory during the download.
- *
- * @param dataFile The file to store the downloaded data, may be {@code null} to store the data in memory.
- * @return This task for chaining, never {@code null}.
- */
- public GetTask setDataFile( File dataFile )
- {
- return setDataFile( dataFile, false );
- }
-
- /**
- * Sets the file where the downloaded data should be stored. If the specified file already exists, it will be
- * overwritten or appended to, depending on the {@code resume} argument and the capabilities of the transporter.
- * Unless the caller can reasonably expect the resource to be small, use of a data file is strongly recommended to
- * avoid exhausting heap memory during the download.
- *
- * @param dataFile The file to store the downloaded data, may be {@code null} to store the data in memory.
- * @param resume {@code true} to request resuming a previous download attempt, starting from the current length of
- * the data file, {@code false} to download the resource from its beginning.
- * @return This task for chaining, never {@code null}.
- */
- public GetTask setDataFile( File dataFile, boolean resume )
- {
- this.dataFile = dataFile;
- this.resume = resume;
- return this;
- }
-
- /**
- * Gets the byte offset within the resource from which the download should resume if supported.
- *
- * @return The zero-based index of the first byte to download or {@code 0} for a full download from the start of the
- * resource, never negative.
- */
- public long getResumeOffset()
- {
- if ( resume )
- {
- if ( dataFile != null )
- {
- return dataFile.length();
- }
- if ( dataBytes != null )
- {
- return dataBytes.size();
- }
- }
- return 0;
- }
-
- /**
- * Gets the data that was downloaded into memory. <strong>Note:</strong> This method may only be called if
- * {@link #getDataFile()} is {@code null} as otherwise the downloaded data has been written directly to disk.
- *
- * @return The possibly empty data bytes, never {@code null}.
- */
- public byte[] getDataBytes()
- {
- if ( dataFile != null || dataBytes == null )
- {
- return EMPTY;
- }
- return dataBytes.toByteArray();
- }
-
- /**
- * Gets the data that was downloaded into memory as a string. The downloaded data is assumed to be encoded using
- * UTF-8. <strong>Note:</strong> This method may only be called if {@link #getDataFile()} is {@code null} as
- * otherwise the downloaded data has been written directly to disk.
- *
- * @return The possibly empty data string, never {@code null}.
- */
- public String getDataString()
- {
- if ( dataFile != null || dataBytes == null )
- {
- return "";
- }
- try
- {
- return dataBytes.toString( "UTF-8" );
- }
- catch ( UnsupportedEncodingException e )
- {
- throw new IllegalStateException( e );
- }
- }
-
- /**
- * Sets the listener that is to be notified during the transfer.
- *
- * @param listener The listener to notify of progress, may be {@code null}.
- * @return This task for chaining, never {@code null}.
- */
- public GetTask setListener( TransportListener listener )
- {
- super.setListener( listener );
- return this;
- }
-
- /**
- * Gets the checksums which the remote repository advertises for the resource. The map is keyed by algorithm name
- * (cf. {@link java.security.MessageDigest#getInstance(String)}) and the values are hexadecimal representations of
- * the corresponding value. <em>Note:</em> This is optional data that a transporter may return if the underlying
- * transport protocol provides metadata (e.g. HTTP headers) along with the actual resource data.
- *
- * @return The (read-only) checksums advertised for the downloaded resource, possibly empty but never {@code null}.
- */
- public Map<String, String> getChecksums()
- {
- return checksums;
- }
-
- /**
- * Sets a checksum which the remote repository advertises for the resource. <em>Note:</em> Transporters should only
- * use this method to record checksum information which is readily available while performing the actual download,
- * they should not perform additional transfers to gather this data.
- *
- * @param algorithm The name of the checksum algorithm (e.g. {@code "SHA-1"}, cf.
- * {@link java.security.MessageDigest#getInstance(String)} ), may be {@code null}.
- * @param value The hexadecimal representation of the checksum, may be {@code null}.
- * @return This task for chaining, never {@code null}.
- */
- public GetTask setChecksum( String algorithm, String value )
- {
- if ( algorithm != null )
- {
- if ( checksums.isEmpty() )
- {
- checksums = new HashMap<String, String>();
- }
- if ( value != null && value.length() > 0 )
- {
- checksums.put( algorithm, value );
- }
- else
- {
- checksums.remove( algorithm );
- }
- }
- return this;
- }
-
- @Override
- public String toString()
- {
- return "<< " + getLocation();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/PeekTask.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/PeekTask.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/PeekTask.java
deleted file mode 100644
index d1fb905..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/PeekTask.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.eclipse.aether.spi.connector.transport;
-
-/*
- * 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.net.URI;
-
-/**
- * A task to check the existence of a resource in the remote repository. <em>Note:</em> The listener returned from
- * {@link #getListener()} is always a noop given that none of its event methods are relevant in context of this task.
- *
- * @see Transporter#peek(PeekTask)
- */
-public final class PeekTask
- extends TransportTask
-{
-
- /**
- * Creates a new task for the specified remote resource.
- *
- * @param location The relative location of the resource in the remote repository, must not be {@code null}.
- */
- public PeekTask( URI location )
- {
- setLocation( location );
- }
-
- @Override
- public String toString()
- {
- return "?? " + getLocation();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/PutTask.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/PutTask.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/PutTask.java
deleted file mode 100644
index 1208a64..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/PutTask.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package org.eclipse.aether.spi.connector.transport;
-
-/*
- * 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.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-
-/**
- * A task to upload a resource to the remote repository.
- *
- * @see Transporter#put(PutTask)
- */
-public final class PutTask
- extends TransportTask
-{
-
- private File dataFile;
-
- private byte[] dataBytes = EMPTY;
-
- /**
- * Creates a new task for the specified remote resource.
- *
- * @param location The relative location of the resource in the remote repository, must not be {@code null}.
- */
- public PutTask( URI location )
- {
- setLocation( location );
- }
-
- /**
- * Opens an input stream for the data to be uploaded. The length of the stream can be queried via
- * {@link #getDataLength()}. It's the responsibility of the caller to close the provided stream.
- *
- * @return The input stream for the data, never {@code null}. The stream is unbuffered.
- * @throws IOException If the stream could not be opened.
- */
- public InputStream newInputStream()
- throws IOException
- {
- if ( dataFile != null )
- {
- return new FileInputStream( dataFile );
- }
- return new ByteArrayInputStream( dataBytes );
- }
-
- /**
- * Gets the total number of bytes to be uploaded.
- *
- * @return The total number of bytes to be uploaded.
- */
- public long getDataLength()
- {
- if ( dataFile != null )
- {
- return dataFile.length();
- }
- return dataBytes.length;
- }
-
- /**
- * Gets the file (if any) with the data to be uploaded.
- *
- * @return The data file or {@code null} if the data resides in memory.
- */
- public File getDataFile()
- {
- return dataFile;
- }
-
- /**
- * Sets the file with the data to be uploaded. To upload some data residing already in memory, use
- * {@link #setDataString(String)} or {@link #setDataBytes(byte[])}.
- *
- * @param dataFile The data file, may be {@code null} if the resource data is provided directly from memory.
- * @return This task for chaining, never {@code null}.
- */
- public PutTask setDataFile( File dataFile )
- {
- this.dataFile = dataFile;
- dataBytes = EMPTY;
- return this;
- }
-
- /**
- * Sets the binary data to be uploaded.
- *
- * @param bytes The binary data, may be {@code null}.
- * @return This task for chaining, never {@code null}.
- */
- public PutTask setDataBytes( byte[] bytes )
- {
- this.dataBytes = ( bytes != null ) ? bytes : EMPTY;
- dataFile = null;
- return this;
- }
-
- /**
- * Sets the textual data to be uploaded. The text is encoded using UTF-8 before transmission.
- *
- * @param str The textual data, may be {@code null}.
- * @return This task for chaining, never {@code null}.
- */
- public PutTask setDataString( String str )
- {
- try
- {
- return setDataBytes( ( str != null ) ? str.getBytes( "UTF-8" ) : null );
- }
- catch ( UnsupportedEncodingException e )
- {
- throw new IllegalStateException( e );
- }
- }
-
- /**
- * Sets the listener that is to be notified during the transfer.
- *
- * @param listener The listener to notify of progress, may be {@code null}.
- * @return This task for chaining, never {@code null}.
- */
- public PutTask setListener( TransportListener listener )
- {
- super.setListener( listener );
- return this;
- }
-
- @Override
- public String toString()
- {
- return ">> " + getLocation();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransportListener.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransportListener.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransportListener.java
deleted file mode 100644
index 473036b..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransportListener.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.aether.spi.connector.transport;
-
-/*
- * 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.nio.ByteBuffer;
-
-import org.eclipse.aether.transfer.TransferCancelledException;
-
-/**
- * A skeleton class for listeners used to monitor transport operations. Reusing common regular expression syntax, the
- * sequence of events is generally as follows:
- *
- * <pre>
- * ( STARTED PROGRESSED* )*
- * </pre>
- *
- * The methods in this class do nothing.
- */
-public abstract class TransportListener
-{
-
- /**
- * Enables subclassing.
- */
- protected TransportListener()
- {
- }
-
- /**
- * Notifies the listener about the start of the data transfer. This event may arise more than once if the transfer
- * needs to be restarted (e.g. after an authentication failure).
- *
- * @param dataOffset The byte offset in the resource at which the transfer starts, must not be negative.
- * @param dataLength The total number of bytes in the resource or {@code -1} if the length is unknown.
- * @throws TransferCancelledException If the transfer should be aborted.
- */
- public void transportStarted( long dataOffset, long dataLength )
- throws TransferCancelledException
- {
- }
-
- /**
- * Notifies the listener about some progress in the data transfer. This event may even be fired if actually zero
- * bytes have been transferred since the last event, for instance to enable cancellation.
- *
- * @param data The (read-only) buffer holding the bytes that have just been tranferred, must not be {@code null}.
- * @throws TransferCancelledException If the transfer should be aborted.
- */
- public void transportProgressed( ByteBuffer data )
- throws TransferCancelledException
- {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransportTask.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransportTask.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransportTask.java
deleted file mode 100644
index f74b301..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransportTask.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.eclipse.aether.spi.connector.transport;
-
-/*
- * 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.net.URI;
-
-/**
- * A transport task.
- *
- * @noextend This class is not intended to be extended by clients.
- */
-public abstract class TransportTask
-{
-
- static final TransportListener NOOP = new TransportListener()
- {
- };
-
- static final byte[] EMPTY = {};
-
- private URI location;
-
- private TransportListener listener = NOOP;
-
- TransportTask()
- {
- // hide
- }
-
- /**
- * Gets the relative location of the affected resource in the remote repository.
- *
- * @return The relative location of the resource, never {@code null}.
- */
- public URI getLocation()
- {
- return location;
- }
-
- TransportTask setLocation( URI location )
- {
- if ( location == null )
- {
- throw new IllegalArgumentException( "resource location has not been specified" );
- }
- this.location = location;
- return this;
- }
-
- /**
- * Gets the listener that is to be notified during the transfer.
- *
- * @return The listener to notify of progress, never {@code null}.
- */
- public TransportListener getListener()
- {
- return listener;
- }
-
- /**
- * Sets the listener that is to be notified during the transfer.
- *
- * @param listener The listener to notify of progress, may be {@code null}.
- * @return This task for chaining, never {@code null}.
- */
- TransportTask setListener( TransportListener listener )
- {
- this.listener = ( listener != null ) ? listener : NOOP;
- return this;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/Transporter.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/Transporter.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/Transporter.java
deleted file mode 100644
index b8d221c..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/Transporter.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.eclipse.aether.spi.connector.transport;
-
-/*
- * 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.Closeable;
-
-/**
- * A transporter for a remote repository. A transporter is responsible for transferring resources between the remote
- * repository and the local system. During its operation, the transporter must provide progress feedback via the
- * {@link TransportListener} configured on the underlying task.
- * <p>
- * If applicable, a transporter should obey connect/request timeouts and other relevant settings from the
- * {@link org.eclipse.aether.RepositorySystemSession#getConfigProperties() configuration properties} of the repository
- * system session.
- * <p>
- * <strong>Note:</strong> Implementations must be thread-safe such that a given transporter instance can safely be used
- * for concurrent requests.
- */
-public interface Transporter
- extends Closeable
-{
-
- /**
- * Classification for exceptions that denote connectivity or authentication issues and any other kind of error that
- * is not mapped to another classification code.
- *
- * @see #classify(Throwable)
- */
- int ERROR_OTHER = 0;
-
- /**
- * Classification for exceptions that denote a requested resource does not exist in the remote repository. Note that
- * cases where a remote repository is completely inaccessible should be classified as {@link #ERROR_OTHER}.
- *
- * @see #classify(Throwable)
- */
- int ERROR_NOT_FOUND = 1;
-
- /**
- * Classifies the type of exception that has been thrown from a previous request to the transporter. The exception
- * types employed by a transporter are generally unknown to its caller. Where a caller needs to distinguish between
- * certain error cases, it employs this method to detect which error case corresponds to the exception.
- *
- * @param error The exception to classify, must not be {@code null}.
- * @return The classification of the error, either {@link #ERROR_NOT_FOUND} or {@link #ERROR_OTHER}.
- */
- int classify( Throwable error );
-
- /**
- * Checks the existence of a resource in the repository. If the remote repository can be contacted successfully but
- * indicates the resource specified in the request does not exist, an exception is thrown such that invoking
- * {@link #classify(Throwable)} with that exception yields {@link #ERROR_NOT_FOUND}.
- *
- * @param task The existence check to perform, must not be {@code null}.
- * @throws Exception If the existence of the specified resource could not be confirmed.
- */
- void peek( PeekTask task )
- throws Exception;
-
- /**
- * Downloads a resource from the repository. If the resource is downloaded to a file as given by
- * {@link GetTask#getDataFile()} and the operation fails midway, the transporter should not delete the partial file
- * but leave its management to the caller.
- *
- * @param task The download to perform, must not be {@code null}.
- * @throws Exception If the transfer failed.
- */
- void get( GetTask task )
- throws Exception;
-
- /**
- * Uploads a resource to the repository.
- *
- * @param task The upload to perform, must not be {@code null}.
- * @throws Exception If the transfer failed.
- */
- void put( PutTask task )
- throws Exception;
-
- /**
- * Closes this transporter and frees any network resources associated with it. Once closed, a transporter must not
- * be used for further transfers, any attempt to do so would yield a {@link IllegalStateException} or similar.
- * Closing an already closed transporter is harmless and has no effect.
- */
- void close();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransporterFactory.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransporterFactory.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransporterFactory.java
deleted file mode 100644
index 999908a..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransporterFactory.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.eclipse.aether.spi.connector.transport;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transfer.NoTransporterException;
-
-/**
- * A factory to create transporters. A transporter is responsible for uploads/downloads to/from a remote repository
- * using a particular transport protocol. When the repository system needs a transporter for a given remote repository,
- * it iterates the registered factories in descending order of their priority and calls
- * {@link #newInstance(RepositorySystemSession, RemoteRepository)} on them. The first transporter returned by a factory
- * will then be used for the transfer.
- */
-public interface TransporterFactory
-{
-
- /**
- * Tries to create a transporter for the specified remote repository. Typically, a factory will inspect
- * {@link RemoteRepository#getProtocol()} to determine whether it can handle a repository.
- *
- * @param session The repository system session from which to configure the transporter, must not be {@code null}.
- * In particular, a transporter should obey the timeouts configured for the session.
- * @param repository The remote repository to create a transporter for, must not be {@code null}.
- * @return The transporter for the given repository, never {@code null}.
- * @throws NoTransporterException If the factory cannot create a transporter for the specified remote repository.
- */
- Transporter newInstance( RepositorySystemSession session, RemoteRepository repository )
- throws NoTransporterException;
-
- /**
- * The priority of this factory. When multiple factories can handle a given repository, factories with higher
- * priority are preferred over those with lower priority.
- *
- * @return The priority of this factory.
- */
- float getPriority();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransporterProvider.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransporterProvider.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransporterProvider.java
deleted file mode 100644
index b855042..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/TransporterProvider.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.eclipse.aether.spi.connector.transport;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transfer.NoTransporterException;
-
-/**
- * Retrieves a transporter from the installed transporter factories.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface TransporterProvider
-{
-
- /**
- * Tries to create a transporter for the specified remote repository.
- *
- * @param session The repository system session from which to configure the transporter, must not be {@code null}.
- * @param repository The remote repository to create a transporter for, must not be {@code null}.
- * @return The transporter for the given repository, never {@code null}.
- * @throws NoTransporterException If none of the installed transporter factories can provide a transporter for the
- * specified remote repository.
- */
- Transporter newTransporter( RepositorySystemSession session, RemoteRepository repository )
- throws NoTransporterException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/package-info.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/package-info.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/package-info.java
deleted file mode 100644
index 26796ba..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/package-info.java
+++ /dev/null
@@ -1,26 +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 contract to download/upload URI-based resources using custom transport protocols. By implementing a
- * {@link org.eclipse.aether.spi.connector.transport.TransporterFactory} and registering it with the repository system,
- * an application enables access to remote repositories that use new URI schemes.
- */
-package org.eclipse.aether.spi.connector.transport;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/io/FileProcessor.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/io/FileProcessor.java b/aether-spi/src/main/java/org/eclipse/aether/spi/io/FileProcessor.java
deleted file mode 100644
index 1de21a0..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/io/FileProcessor.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.eclipse.aether.spi.io;
-
-/*
- * 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.io.IOException;
-import java.io.InputStream;
-import java.nio.ByteBuffer;
-
-/**
- * A utility component to perform file-based operations.
- */
-public interface FileProcessor
-{
-
- /**
- * Creates the directory named by the given abstract pathname, including any necessary but nonexistent parent
- * directories. Note that if this operation fails it may have succeeded in creating some of the necessary parent
- * directories.
- *
- * @param directory The directory to create, may be {@code null}.
- * @return {@code true} if and only if the directory was created, along with all necessary parent directories;
- * {@code false} otherwise
- */
- boolean mkdirs( File directory );
-
- /**
- * Writes the given data to a file. UTF-8 is assumed as encoding for the data. Creates the necessary directories for
- * the target file. In case of an error, the created directories will be left on the file system.
- *
- * @param target The file to write to, must not be {@code null}. This file will be overwritten.
- * @param data The data to write, may be {@code null}.
- * @throws IOException If an I/O error occurs.
- */
- void write( File target, String data )
- throws IOException;
-
- /**
- * Writes the given stream to a file. Creates the necessary directories for the target file. In case of an error,
- * the created directories will be left on the file system.
- *
- * @param target The file to write to, must not be {@code null}. This file will be overwritten.
- * @param source The stream to write to the file, must not be {@code null}.
- * @throws IOException If an I/O error occurs.
- */
- void write( File target, InputStream source )
- throws IOException;
-
- /**
- * Moves the specified source file to the given target file. If the target file already exists, it is overwritten.
- * Creates the necessary directories for the target file. In case of an error, the created directories will be left
- * on the file system.
- *
- * @param source The file to move from, must not be {@code null}.
- * @param target The file to move to, must not be {@code null}.
- * @throws IOException If an I/O error occurs.
- */
- void move( File source, File target )
- throws IOException;
-
- /**
- * Copies the specified source file to the given target file. Creates the necessary directories for the target file.
- * In case of an error, the created directories will be left on the file system.
- *
- * @param source The file to copy from, must not be {@code null}.
- * @param target The file to copy to, must not be {@code null}.
- * @throws IOException If an I/O error occurs.
- */
- void copy( File source, File target )
- throws IOException;
-
- /**
- * Copies the specified source file to the given target file. Creates the necessary directories for the target file.
- * In case of an error, the created directories will be left on the file system.
- *
- * @param source The file to copy from, must not be {@code null}.
- * @param target The file to copy to, must not be {@code null}.
- * @param listener The listener to notify about the copy progress, may be {@code null}.
- * @return The number of copied bytes.
- * @throws IOException If an I/O error occurs.
- */
- long copy( File source, File target, ProgressListener listener )
- throws IOException;
-
- /**
- * A listener object that is notified for every progress made while copying files.
- *
- * @see FileProcessor#copy(File, File, ProgressListener)
- */
- public interface ProgressListener
- {
-
- void progressed( ByteBuffer buffer )
- throws IOException;
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/io/package-info.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/io/package-info.java b/aether-spi/src/main/java/org/eclipse/aether/spi/io/package-info.java
deleted file mode 100644
index ec5c122..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/io/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.
- */
-/**
- * I/O related support infrastructure for components.
- */
-package org.eclipse.aether.spi.io;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/localrepo/LocalRepositoryManagerFactory.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/localrepo/LocalRepositoryManagerFactory.java b/aether-spi/src/main/java/org/eclipse/aether/spi/localrepo/LocalRepositoryManagerFactory.java
deleted file mode 100644
index 518f90e..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/localrepo/LocalRepositoryManagerFactory.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.eclipse.aether.spi.localrepo;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
-
-/**
- * A factory to create managers for the local repository. A local repository manager needs to keep track of artifacts
- * and metadata and manage access. When the repository system needs a repository manager for a given local repository,
- * it iterates the registered factories in descending order of their priority and calls
- * {@link #newInstance(RepositorySystemSession, LocalRepository)} on them. The first manager returned by a factory will
- * then be used for the local repository.
- */
-public interface LocalRepositoryManagerFactory
-{
-
- /**
- * Tries to create a repository manager for the specified local repository. The distinguishing property of a local
- * repository is its {@link LocalRepository#getContentType() type}, which may for example denote the used directory
- * structure.
- *
- * @param session The repository system session from which to configure the manager, must not be {@code null}.
- * @param repository The local repository to create a manager for, must not be {@code null}.
- * @return The manager for the given repository, never {@code null}.
- * @throws NoLocalRepositoryManagerException If the factory cannot create a manager for the specified local
- * repository.
- */
- LocalRepositoryManager newInstance( RepositorySystemSession session, LocalRepository repository )
- throws NoLocalRepositoryManagerException;
-
- /**
- * The priority of this factory. Factories with higher priority are preferred over those with lower priority.
- *
- * @return The priority of this factory.
- */
- float getPriority();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/localrepo/package-info.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/localrepo/package-info.java b/aether-spi/src/main/java/org/eclipse/aether/spi/localrepo/package-info.java
deleted file mode 100644
index afd64cf..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/localrepo/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 contract for custom local repository implementations.
- */
-package org.eclipse.aether.spi.localrepo;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/locator/Service.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/locator/Service.java b/aether-spi/src/main/java/org/eclipse/aether/spi/locator/Service.java
deleted file mode 100644
index ffe36b0..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/locator/Service.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.eclipse.aether.spi.locator;
-
-/*
- * 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 stateless component of the repository system. The primary purpose of this interface is to provide a convenient
- * means to programmatically wire the several components of the repository system together when it is used outside of an
- * IoC container.
- */
-public interface Service
-{
-
- /**
- * Provides the opportunity to initialize this service and to acquire other services for its operation from the
- * locator. A service must not save the reference to the provided service locator.
- *
- * @param locator The service locator, must not be {@code null}.
- */
- void initService( ServiceLocator locator );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/locator/ServiceLocator.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/locator/ServiceLocator.java b/aether-spi/src/main/java/org/eclipse/aether/spi/locator/ServiceLocator.java
deleted file mode 100644
index 0160ac9..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/locator/ServiceLocator.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.eclipse.aether.spi.locator;
-
-/*
- * 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 simple infrastructure to programmatically wire the various components of the repository system together when it is
- * used outside of an IoC container. Once a concrete implementation of a service locator has been setup, clients could
- * use
- *
- * <pre>
- * RepositorySystem repoSystem = serviceLocator.getService( RepositorySystem.class );
- * </pre>
- *
- * to acquire the repository system. Components that implement {@link Service} will be given an opportunity to acquire
- * further components from the locator, thereby allowing to create the complete object graph of the repository system.
- */
-public interface ServiceLocator
-{
-
- /**
- * Gets an instance of the specified service.
- *
- * @param <T> The service type.
- * @param type The interface describing the service, must not be {@code null}.
- * @return The service instance or {@code null} if the service could not be located/initialized.
- */
- <T> T getService( Class<T> type );
-
- /**
- * Gets all available instances of the specified service.
- *
- * @param <T> The service type.
- * @param type The interface describing the service, must not be {@code null}.
- * @return The (read-only) list of available service instances, never {@code null}.
- */
- <T> List<T> getServices( Class<T> type );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/locator/package-info.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/locator/package-info.java b/aether-spi/src/main/java/org/eclipse/aether/spi/locator/package-info.java
deleted file mode 100644
index 2d47ceb..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/locator/package-info.java
+++ /dev/null
@@ -1,31 +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.
- */
-/**
- * A lightweight service locator infrastructure to help components acquire dependent components. The implementation of
- * the repository system is decomposed into many sub components that interact with each other via interfaces, allowing
- * an application to customize the system by swapping in different implementation classes for these interfaces. The
- * service locator defined by this package is one means for components to get hold of the proper implementation for its
- * dependencies. While not the most popular approach to component wiring, this service locator enables applications
- * that do not wish to pull in more sophisticated solutions like dependency injection containers to have a small
- * footprint. Therefore, all components should implement {@link org.eclipse.aether.spi.locator.Service} to support this
- * goal.
- */
-package org.eclipse.aether.spi.locator;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/log/Logger.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/log/Logger.java b/aether-spi/src/main/java/org/eclipse/aether/spi/log/Logger.java
deleted file mode 100644
index 8b4bfb3..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/log/Logger.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.eclipse.aether.spi.log;
-
-/*
- * 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 simple logger to facilitate emission of diagnostic messages. In general, unrecoverable errors should be reported
- * via exceptions and informational notifications should be reported via events, hence this logger interface focuses on
- * support for tracing.
- */
-public interface Logger
-{
-
- /**
- * Indicates whether debug logging is enabled.
- *
- * @return {@code true} if debug logging is enabled, {@code false} otherwise.
- */
- boolean isDebugEnabled();
-
- /**
- * Emits the specified message.
- *
- * @param msg The message to log, must not be {@code null}.
- */
- void debug( String msg );
-
- /**
- * Emits the specified message along with a stack trace of the given exception.
- *
- * @param msg The message to log, must not be {@code null}.
- * @param error The exception to log, may be {@code null}.
- */
- void debug( String msg, Throwable error );
-
- /**
- * Indicates whether warn logging is enabled.
- *
- * @return {@code true} if warn logging is enabled, {@code false} otherwise.
- */
- boolean isWarnEnabled();
-
- /**
- * Emits the specified message.
- *
- * @param msg The message to log, must not be {@code null}.
- */
- void warn( String msg );
-
- /**
- * Emits the specified message along with a stack trace of the given exception.
- *
- * @param msg The message to log, must not be {@code null}.
- * @param error The exception to log, may be {@code null}.
- */
- void warn( String msg, Throwable error );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/log/LoggerFactory.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/log/LoggerFactory.java b/aether-spi/src/main/java/org/eclipse/aether/spi/log/LoggerFactory.java
deleted file mode 100644
index 9f66eb1..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/log/LoggerFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.eclipse.aether.spi.log;
-
-/*
- * 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 factory to create loggers.
- */
-public interface LoggerFactory
-{
-
- /**
- * Gets a logger for a class with the specified name.
- *
- * @param name The name of the class requesting a logger, must not be {@code null}.
- * @return The requested logger, never {@code null}.
- */
- Logger getLogger( String name );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/log/NullLogger.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/log/NullLogger.java b/aether-spi/src/main/java/org/eclipse/aether/spi/log/NullLogger.java
deleted file mode 100644
index 8fb7745..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/log/NullLogger.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.eclipse.aether.spi.log;
-
-/*
- * 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 logger that disables any logging.
- */
-final class NullLogger
- implements Logger
-{
-
- public boolean isDebugEnabled()
- {
- return false;
- }
-
- public void debug( String msg )
- {
- }
-
- public void debug( String msg, Throwable error )
- {
- }
-
- public boolean isWarnEnabled()
- {
- return false;
- }
-
- public void warn( String msg )
- {
- }
-
- public void warn( String msg, Throwable error )
- {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/log/NullLoggerFactory.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/log/NullLoggerFactory.java b/aether-spi/src/main/java/org/eclipse/aether/spi/log/NullLoggerFactory.java
deleted file mode 100644
index bea659f..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/log/NullLoggerFactory.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.aether.spi.log;
-
-/*
- * 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 logger factory that disables any logging.
- */
-public final class NullLoggerFactory
- implements LoggerFactory
-{
-
- /**
- * The singleton instance of this factory.
- */
- public static final LoggerFactory INSTANCE = new NullLoggerFactory();
-
- /**
- * The singleton logger used by this factory.
- */
- public static final Logger LOGGER = new NullLogger();
-
- public Logger getLogger( String name )
- {
- return LOGGER;
- }
-
- private NullLoggerFactory()
- {
- // hide constructor
- }
-
- /**
- * Gets a logger from the specified factory for the given class, falling back to a logger from this factory if the
- * specified factory is {@code null} or fails to provide a logger.
- *
- * @param loggerFactory The logger factory from which to get the logger, may be {@code null}.
- * @param type The class for which to get the logger, must not be {@code null}.
- * @return The requested logger, never {@code null}.
- */
- public static Logger getSafeLogger( LoggerFactory loggerFactory, Class<?> type )
- {
- if ( loggerFactory == null )
- {
- return LOGGER;
- }
- Logger logger = loggerFactory.getLogger( type.getName() );
- if ( logger == null )
- {
- return LOGGER;
- }
- return logger;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/log/package-info.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/log/package-info.java b/aether-spi/src/main/java/org/eclipse/aether/spi/log/package-info.java
deleted file mode 100644
index 9584292..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/log/package-info.java
+++ /dev/null
@@ -1,28 +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.
- */
-/**
- * A simple logging infrastructure for diagnostic messages. The primary purpose of the
- * {@link org.eclipse.aether.spi.log.LoggerFactory} defined here is to avoid a mandatory dependency on a 3rd party
- * logging system/facade. Some applications might find the events fired by the repository system sufficient and prefer
- * a small footprint. Components that do not share this concern are free to ignore this package and directly employ
- * whatever logging system they desire.
- */
-package org.eclipse.aether.spi.log;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/site/site.xml
----------------------------------------------------------------------
diff --git a/aether-spi/src/site/site.xml b/aether-spi/src/site/site.xml
deleted file mode 100644
index 3a16bf9..0000000
--- a/aether-spi/src/site/site.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
- <body>
- <menu name="Overview">
- <item name="Introduction" href="index.html"/>
- <item name="JavaDocs" href="apidocs/index.html"/>
- <item name="Source Xref" href="xref/index.html"/>
- <!--item name="FAQ" href="faq.html"/-->
- </menu>
-
- <menu ref="parent"/>
- <menu ref="reports"/>
- </body>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/test/java/org/eclipse/aether/spi/connector/layout/ChecksumTest.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/test/java/org/eclipse/aether/spi/connector/layout/ChecksumTest.java b/aether-spi/src/test/java/org/eclipse/aether/spi/connector/layout/ChecksumTest.java
deleted file mode 100644
index bcd49b4..0000000
--- a/aether-spi/src/test/java/org/eclipse/aether/spi/connector/layout/ChecksumTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.eclipse.aether.spi.connector.layout;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.net.URI;
-
-import org.junit.Test;
-
-import org.eclipse.aether.spi.connector.layout.RepositoryLayout.Checksum;
-
-public class ChecksumTest
-{
-
- @Test
- public void testForLocation()
- {
- Checksum cs = Checksum.forLocation( URI.create( "dir/sub%20dir/file.txt" ), "SHA-1" );
- assertEquals( "SHA-1", cs.getAlgorithm() );
- assertEquals( "dir/sub%20dir/file.txt.sha1", cs.getLocation().toString() );
-
- cs = Checksum.forLocation( URI.create( "dir/sub%20dir/file.txt" ), "MD5" );
- assertEquals( "MD5", cs.getAlgorithm() );
- assertEquals( "dir/sub%20dir/file.txt.md5", cs.getLocation().toString() );
- }
-
- @Test( expected = IllegalArgumentException.class )
- public void testForLocation_WithQueryParams()
- {
- Checksum.forLocation( URI.create( "file.php?param=1" ), "SHA-1" );
- }
-
- @Test( expected = IllegalArgumentException.class )
- public void testForLocation_WithFragment()
- {
- Checksum.forLocation( URI.create( "file.html#fragment" ), "SHA-1" );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/pom.xml
----------------------------------------------------------------------
diff --git a/aether-test-util/pom.xml b/aether-test-util/pom.xml
deleted file mode 100644
index a76176d..0000000
--- a/aether-test-util/pom.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- 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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>aether-test-util</artifactId>
-
- <name>Aether Test Utilities</name>
- <description>
- A collection of utility classes to ease testing of the repository system.
- </description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-spi</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/ArtifactDefinition.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/ArtifactDefinition.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/ArtifactDefinition.java
deleted file mode 100644
index 0a760cc..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/ArtifactDefinition.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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.
- */
-
-class ArtifactDefinition
-{
- private String groupId;
-
- private String artifactId;
-
- private String extension;
-
- private String version;
-
- private String scope = "";
-
- private String definition;
-
- private String id;
-
- private String reference;
-
- private Boolean optional;
-
- public ArtifactDefinition( String def )
- {
- this.definition = def.trim();
-
- if ( definition.startsWith( "(" ) )
- {
- int idx = definition.indexOf( ')' );
- this.id = definition.substring( 1, idx );
- this.definition = definition.substring( idx + 1 );
- }
- else if ( definition.startsWith( "^" ) )
- {
- this.reference = definition.substring( 1 );
- return;
- }
-
- String[] split = definition.split( ":" );
- if ( split.length < 4 )
- {
- throw new IllegalArgumentException( "Need definition like 'gid:aid:ext:ver[:scope]', but was: "
- + definition );
- }
- groupId = split[0];
- artifactId = split[1];
- extension = split[2];
- version = split[3];
- if ( split.length > 4 )
- {
- scope = split[4];
- }
- if ( split.length > 5 )
- {
- if ( "optional".equalsIgnoreCase( split[5] ) )
- {
- optional = true;
- }
- else if ( "!optional".equalsIgnoreCase( split[5] ) )
- {
- optional = false;
- }
- }
- }
-
- public String getGroupId()
- {
- return groupId;
- }
-
- public String getArtifactId()
- {
- return artifactId;
- }
-
- public String getExtension()
- {
- return extension;
- }
-
- public String getVersion()
- {
- return version;
- }
-
- public String getScope()
- {
- return scope;
- }
-
- @Override
- public String toString()
- {
- return definition;
- }
-
- public String getId()
- {
- return id;
- }
-
- public String getReference()
- {
- return reference;
- }
-
- public boolean isReference()
- {
- return reference != null;
- }
-
- public boolean hasId()
- {
- return id != null;
- }
-
- public Boolean getOptional()
- {
- return optional;
- }
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/ArtifactDescription.java
----------------------------------------------------------------------
diff --git a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/ArtifactDescription.java b/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/ArtifactDescription.java
deleted file mode 100644
index bdb5c7f..0000000
--- a/aether-test-util/src/main/java/org/eclipse/aether/internal/test/util/ArtifactDescription.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.aether.internal.test.util;
-
-/*
- * 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;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- */
-class ArtifactDescription
-{
-
- private List<RemoteRepository> repositories;
-
- private List<Dependency> managedDependencies;
-
- private List<Dependency> dependencies;
-
- private Artifact relocation;
-
- ArtifactDescription( Artifact relocation, List<Dependency> dependencies, List<Dependency> managedDependencies,
- List<RemoteRepository> repositories )
- {
- this.relocation = relocation;
- this.dependencies = dependencies;
- this.managedDependencies = managedDependencies;
- this.repositories = repositories;
- }
-
- public Artifact getRelocation()
- {
- return relocation;
- }
-
- public List<RemoteRepository> getRepositories()
- {
- return repositories;
- }
-
- public List<Dependency> getManagedDependencies()
- {
- return managedDependencies;
- }
-
- public List<Dependency> getDependencies()
- {
- return dependencies;
- }
-
-}
[44/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyRequest.java b/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyRequest.java
deleted file mode 100644
index 138304a..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyRequest.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.CollectRequest;
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A request to resolve transitive dependencies. This request can either be supplied with a {@link CollectRequest} to
- * calculate the transitive dependencies or with an already resolved dependency graph.
- *
- * @see RepositorySystem#resolveDependencies(RepositorySystemSession, DependencyRequest)
- * @see Artifact#getFile()
- */
-public final class DependencyRequest
-{
-
- private DependencyNode root;
-
- private CollectRequest collectRequest;
-
- private DependencyFilter filter;
-
- private RequestTrace trace;
-
- /**
- * Creates an uninitialized request. Note that either {@link #setRoot(DependencyNode)} or
- * {@link #setCollectRequest(CollectRequest)} must eventually be called to create a valid request.
- */
- public DependencyRequest()
- {
- // enables default constructor
- }
-
- /**
- * Creates a request for the specified dependency graph and with the given resolution filter.
- *
- * @param node The root node of the dependency graph whose artifacts should be resolved, may be {@code null}.
- * @param filter The resolution filter to use, may be {@code null}.
- */
- public DependencyRequest( DependencyNode node, DependencyFilter filter )
- {
- setRoot( node );
- setFilter( filter );
- }
-
- /**
- * Creates a request for the specified collect request and with the given resolution filter.
- *
- * @param request The collect request used to calculate the dependency graph whose artifacts should be resolved, may
- * be {@code null}.
- * @param filter The resolution filter to use, may be {@code null}.
- */
- public DependencyRequest( CollectRequest request, DependencyFilter filter )
- {
- setCollectRequest( request );
- setFilter( filter );
- }
-
- /**
- * Gets the root node of the dependency graph whose artifacts should be resolved.
- *
- * @return The root node of the dependency graph or {@code null} if none.
- */
- public DependencyNode getRoot()
- {
- return root;
- }
-
- /**
- * Sets the root node of the dependency graph whose artifacts should be resolved. When this request is processed,
- * the nodes of the given dependency graph will be updated to refer to the resolved artifacts. Eventually, either
- * {@link #setRoot(DependencyNode)} or {@link #setCollectRequest(CollectRequest)} must be called to create a valid
- * request.
- *
- * @param root The root node of the dependency graph, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public DependencyRequest setRoot( DependencyNode root )
- {
- this.root = root;
- return this;
- }
-
- /**
- * Gets the collect request used to calculate the dependency graph whose artifacts should be resolved.
- *
- * @return The collect request or {@code null} if none.
- */
- public CollectRequest getCollectRequest()
- {
- return collectRequest;
- }
-
- /**
- * Sets the collect request used to calculate the dependency graph whose artifacts should be resolved. Eventually,
- * either {@link #setRoot(DependencyNode)} or {@link #setCollectRequest(CollectRequest)} must be called to create a
- * valid request. If this request is supplied with a dependency node via {@link #setRoot(DependencyNode)}, the
- * collect request is ignored.
- *
- * @param collectRequest The collect request, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public DependencyRequest setCollectRequest( CollectRequest collectRequest )
- {
- this.collectRequest = collectRequest;
- return this;
- }
-
- /**
- * Gets the resolution filter used to select which artifacts of the dependency graph should be resolved.
- *
- * @return The resolution filter or {@code null} to resolve all artifacts of the dependency graph.
- */
- public DependencyFilter getFilter()
- {
- return filter;
- }
-
- /**
- * Sets the resolution filter used to select which artifacts of the dependency graph should be resolved. For
- * example, use this filter to restrict resolution to dependencies of a certain scope.
- *
- * @param filter The resolution filter, may be {@code null} to resolve all artifacts of the dependency graph.
- * @return This request for chaining, never {@code null}.
- */
- public DependencyRequest setFilter( DependencyFilter filter )
- {
- this.filter = filter;
- 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 DependencyRequest setTrace( RequestTrace trace )
- {
- this.trace = trace;
- return this;
- }
-
- @Override
- public String toString()
- {
- if ( root != null )
- {
- return String.valueOf( root );
- }
- return String.valueOf( collectRequest );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyResolutionException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyResolutionException.java b/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyResolutionException.java
deleted file mode 100644
index 2c12b57..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyResolutionException.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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 a unresolvable dependencies.
- */
-public class DependencyResolutionException
- extends RepositoryException
-{
-
- private final transient DependencyResult result;
-
- /**
- * Creates a new exception with the specified result and cause.
- *
- * @param result The dependency result at the point the exception occurred, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public DependencyResolutionException( DependencyResult result, Throwable cause )
- {
- super( getMessage( cause ), cause );
- this.result = result;
- }
-
- /**
- * Creates a new exception with the specified result, detail message and cause.
- *
- * @param result The dependency result at the point the exception occurred, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public DependencyResolutionException( DependencyResult result, String message, Throwable cause )
- {
- super( message, cause );
- this.result = result;
- }
-
- private static String getMessage( Throwable cause )
- {
- String msg = null;
- if ( cause != null )
- {
- msg = cause.getMessage();
- }
- if ( msg == null || msg.length() <= 0 )
- {
- msg = "Could not resolve transitive dependencies";
- }
- return msg;
- }
-
- /**
- * Gets the dependency result at the point the exception occurred. Despite being incomplete, callers might want to
- * use this result to fail gracefully and continue their operation with whatever interim data has been gathered.
- *
- * @return The dependency result or {@code null} if unknown.
- */
- public DependencyResult getResult()
- {
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyResult.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyResult.java b/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyResult.java
deleted file mode 100644
index 030e923..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/DependencyResult.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.Collections;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.graph.DependencyCycle;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * The result of a dependency resolution request.
- *
- * @see RepositorySystem#resolveDependencies(RepositorySystemSession, DependencyRequest)
- */
-public final class DependencyResult
-{
-
- private final DependencyRequest request;
-
- private DependencyNode root;
-
- private List<DependencyCycle> cycles;
-
- private List<Exception> collectExceptions;
-
- private List<ArtifactResult> artifactResults;
-
- /**
- * Creates a new result for the specified request.
- *
- * @param request The resolution request, must not be {@code null}.
- */
- public DependencyResult( DependencyRequest request )
- {
- if ( request == null )
- {
- throw new IllegalArgumentException( "dependency request has not been specified" );
- }
- this.request = request;
- root = request.getRoot();
- cycles = Collections.emptyList();
- collectExceptions = Collections.emptyList();
- artifactResults = Collections.emptyList();
- }
-
- /**
- * Gets the resolution request that was made.
- *
- * @return The resolution request, never {@code null}.
- */
- public DependencyRequest getRequest()
- {
- return request;
- }
-
- /**
- * Gets the root node of the resolved dependency graph. Note that this dependency graph might be
- * incomplete/unfinished in case of {@link #getCollectExceptions()} indicating errors during its calculation.
- *
- * @return The root node of the resolved dependency graph or {@code null} if none.
- */
- public DependencyNode getRoot()
- {
- return root;
- }
-
- /**
- * Sets the root node of the resolved dependency graph.
- *
- * @param root The root node of the resolved dependency graph, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public DependencyResult setRoot( DependencyNode root )
- {
- this.root = root;
- return this;
- }
-
- /**
- * Gets the dependency cycles that were encountered while building the dependency graph. Note that dependency cycles
- * will only be reported here if the underlying request was created from a
- * {@link org.eclipse.aether.collection.CollectRequest CollectRequest}. If the underlying {@link DependencyRequest}
- * was created from an existing dependency graph, information about cycles will not be available in this result.
- *
- * @return The dependency cycles in the (raw) graph, never {@code null}.
- */
- public List<DependencyCycle> getCycles()
- {
- return cycles;
- }
-
- /**
- * Records the specified dependency cycles while building the dependency graph.
- *
- * @param cycles The dependency cycles to record, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public DependencyResult setCycles( List<DependencyCycle> cycles )
- {
- if ( cycles == null )
- {
- this.cycles = Collections.emptyList();
- }
- else
- {
- this.cycles = cycles;
- }
- return this;
- }
-
- /**
- * Gets the exceptions that occurred while building the dependency graph.
- *
- * @return The exceptions that occurred, never {@code null}.
- */
- public List<Exception> getCollectExceptions()
- {
- return collectExceptions;
- }
-
- /**
- * Records the specified exceptions while building the dependency graph.
- *
- * @param exceptions The exceptions to record, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public DependencyResult setCollectExceptions( List<Exception> exceptions )
- {
- if ( exceptions == null )
- {
- this.collectExceptions = Collections.emptyList();
- }
- else
- {
- this.collectExceptions = exceptions;
- }
- return this;
- }
-
- /**
- * Gets the resolution results for the dependency artifacts that matched {@link DependencyRequest#getFilter()}.
- *
- * @return The resolution results for the dependency artifacts, never {@code null}.
- */
- public List<ArtifactResult> getArtifactResults()
- {
- return artifactResults;
- }
-
- /**
- * Sets the resolution results for the artifacts that matched {@link DependencyRequest#getFilter()}.
- *
- * @param results The resolution results for the artifacts, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public DependencyResult setArtifactResults( List<ArtifactResult> results )
- {
- if ( results == null )
- {
- this.artifactResults = Collections.emptyList();
- }
- else
- {
- this.artifactResults = results;
- }
- return this;
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( artifactResults );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/MetadataRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/MetadataRequest.java b/aether-api/src/main/java/org/eclipse/aether/resolution/MetadataRequest.java
deleted file mode 100644
index 86063ff..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/MetadataRequest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * A request to resolve metadata from either a remote repository or the local repository.
- *
- * @see RepositorySystem#resolveMetadata(RepositorySystemSession, java.util.Collection)
- * @see Metadata#getFile()
- */
-public final class MetadataRequest
-{
-
- private Metadata metadata;
-
- private RemoteRepository repository;
-
- private String context = "";
-
- private boolean deleteLocalCopyIfMissing;
-
- private boolean favorLocalRepository;
-
- private RequestTrace trace;
-
- /**
- * Creates an uninitialized request.
- */
- public MetadataRequest()
- {
- // enables default constructor
- }
-
- /**
- * Creates a request to resolve the specified metadata from the local repository.
- *
- * @param metadata The metadata to resolve, may be {@code null}.
- */
- public MetadataRequest( Metadata metadata )
- {
- setMetadata( metadata );
- }
-
- /**
- * Creates a request with the specified properties.
- *
- * @param metadata The metadata to resolve, may be {@code null}.
- * @param repository The repository to resolve the metadata from, may be {@code null} to resolve from the local
- * repository.
- * @param context The context in which this request is made, may be {@code null}.
- */
- public MetadataRequest( Metadata metadata, RemoteRepository repository, String context )
- {
- setMetadata( metadata );
- setRepository( repository );
- setRequestContext( context );
- }
-
- /**
- * Gets the metadata to resolve.
- *
- * @return The metadata or {@code null} if not set.
- */
- public Metadata getMetadata()
- {
- return metadata;
- }
-
- /**
- * Sets the metadata to resolve.
- *
- * @param metadata The metadata, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public MetadataRequest setMetadata( Metadata metadata )
- {
- this.metadata = metadata;
- return this;
- }
-
- /**
- * Gets the repository from which the metadata should be resolved.
- *
- * @return The repository or {@code null} to resolve from the local repository.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Sets the repository from which the metadata should be resolved.
- *
- * @param repository The repository, may be {@code null} to resolve from the local repository.
- * @return This request for chaining, never {@code null}.
- */
- public MetadataRequest setRepository( RemoteRepository repository )
- {
- this.repository = repository;
- return this;
- }
-
- /**
- * Gets the context in which this request is made.
- *
- * @return The context, never {@code null}.
- */
- public String getRequestContext()
- {
- return context;
- }
-
- /**
- * Sets the context in which this request is made.
- *
- * @param context The context, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public MetadataRequest setRequestContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- return this;
- }
-
- /**
- * Indicates whether the locally cached copy of the metadata should be removed if the corresponding file does not
- * exist (any more) in the remote repository.
- *
- * @return {@code true} if locally cached metadata should be deleted if no corresponding remote file exists,
- * {@code false} to keep the local copy.
- */
- public boolean isDeleteLocalCopyIfMissing()
- {
- return deleteLocalCopyIfMissing;
- }
-
- /**
- * Controls whether the locally cached copy of the metadata should be removed if the corresponding file does not
- * exist (any more) in the remote repository.
- *
- * @param deleteLocalCopyIfMissing {@code true} if locally cached metadata should be deleted if no corresponding
- * remote file exists, {@code false} to keep the local copy.
- * @return This request for chaining, never {@code null}.
- */
- public MetadataRequest setDeleteLocalCopyIfMissing( boolean deleteLocalCopyIfMissing )
- {
- this.deleteLocalCopyIfMissing = deleteLocalCopyIfMissing;
- return this;
- }
-
- /**
- * Indicates whether the metadata resolution should be suppressed if the corresponding metadata of the local
- * repository is up-to-date according to the update policy of the remote repository. In this case, the metadata
- * resolution will even be suppressed if no local copy of the remote metadata exists yet.
- *
- * @return {@code true} to suppress resolution of remote metadata if the corresponding metadata of the local
- * repository is up-to-date, {@code false} to resolve the remote metadata normally according to the update
- * policy.
- */
- public boolean isFavorLocalRepository()
- {
- return favorLocalRepository;
- }
-
- /**
- * Controls resolution of remote metadata when already corresponding metadata of the local repository exists. In
- * cases where the local repository's metadata is sufficient and going to be preferred, resolution of the remote
- * metadata can be suppressed to avoid unnecessary network access.
- *
- * @param favorLocalRepository {@code true} to suppress resolution of remote metadata if the corresponding metadata
- * of the local repository is up-to-date, {@code false} to resolve the remote metadata normally according
- * to the update policy.
- * @return This request for chaining, never {@code null}.
- */
- public MetadataRequest setFavorLocalRepository( boolean favorLocalRepository )
- {
- this.favorLocalRepository = favorLocalRepository;
- 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 MetadataRequest setTrace( RequestTrace trace )
- {
- this.trace = trace;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getMetadata() + " < " + getRepository();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/MetadataResult.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/MetadataResult.java b/aether-api/src/main/java/org/eclipse/aether/resolution/MetadataResult.java
deleted file mode 100644
index 2bba499..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/MetadataResult.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.transfer.MetadataNotFoundException;
-
-/**
- * The result of a metadata resolution request.
- *
- * @see RepositorySystem#resolveMetadata(RepositorySystemSession, java.util.Collection)
- */
-public final class MetadataResult
-{
-
- private final MetadataRequest request;
-
- private Exception exception;
-
- private boolean updated;
-
- private Metadata metadata;
-
- /**
- * Creates a new result for the specified request.
- *
- * @param request The resolution request, must not be {@code null}.
- */
- public MetadataResult( MetadataRequest request )
- {
- if ( request == null )
- {
- throw new IllegalArgumentException( "metadata request has not been specified" );
- }
- this.request = request;
- }
-
- /**
- * Gets the resolution request that was made.
- *
- * @return The resolution request, never {@code null}.
- */
- public MetadataRequest getRequest()
- {
- return request;
- }
-
- /**
- * Gets the resolved metadata (if any).
- *
- * @return The resolved metadata or {@code null} if the resolution failed.
- */
- public Metadata getMetadata()
- {
- return metadata;
- }
-
- /**
- * Sets the resolved metadata.
- *
- * @param metadata The resolved metadata, may be {@code null} if the resolution failed.
- * @return This result for chaining, never {@code null}.
- */
- public MetadataResult setMetadata( Metadata metadata )
- {
- this.metadata = metadata;
- return this;
- }
-
- /**
- * Records the specified exception while resolving the metadata.
- *
- * @param exception The exception to record, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public MetadataResult setException( Exception exception )
- {
- this.exception = exception;
- return this;
- }
-
- /**
- * Gets the exception that occurred while resolving the metadata.
- *
- * @return The exception that occurred or {@code null} if none.
- */
- public Exception getException()
- {
- return exception;
- }
-
- /**
- * Sets the updated flag for the metadata.
- *
- * @param updated {@code true} if the metadata was actually fetched from the remote repository during the
- * resolution, {@code false} if the metadata was resolved from a locally cached copy.
- * @return This result for chaining, never {@code null}.
- */
- public MetadataResult setUpdated( boolean updated )
- {
- this.updated = updated;
- return this;
- }
-
- /**
- * Indicates whether the metadata was actually fetched from the remote repository or resolved from the local cache.
- * If metadata has been locally cached during a previous resolution request and this local copy is still up-to-date
- * according to the remote repository's update policy, no remote access is made.
- *
- * @return {@code true} if the metadata was actually fetched from the remote repository during the resolution,
- * {@code false} if the metadata was resolved from a locally cached copy.
- */
- public boolean isUpdated()
- {
- return updated;
- }
-
- /**
- * Indicates whether the requested metadata was resolved. Note that the metadata might have been successfully
- * resolved (from the local cache) despite {@link #getException()} indicating a transfer error while trying to
- * refetch the metadata from the remote repository.
- *
- * @return {@code true} if the metadata was resolved, {@code false} otherwise.
- * @see Metadata#getFile()
- */
- public boolean isResolved()
- {
- return getMetadata() != null && getMetadata().getFile() != null;
- }
-
- /**
- * Indicates whether the requested metadata is not present in the remote repository.
- *
- * @return {@code true} if the metadata is not present in the remote repository, {@code false} otherwise.
- */
- public boolean isMissing()
- {
- return getException() instanceof MetadataNotFoundException;
- }
-
- @Override
- public String toString()
- {
- return getMetadata() + ( isUpdated() ? " (updated)" : " (cached)" );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/ResolutionErrorPolicy.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/ResolutionErrorPolicy.java b/aether-api/src/main/java/org/eclipse/aether/resolution/ResolutionErrorPolicy.java
deleted file mode 100644
index 5158fa0..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/ResolutionErrorPolicy.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-
-/**
- * Controls the caching of resolution errors for artifacts/metadata from remote repositories. If caching is enabled for
- * a given resource, a marker will be set (usually somewhere in the local repository) to suppress repeated resolution
- * attempts for the broken resource, thereby avoiding expensive but useless network IO. The error marker is considered
- * stale once the repository's update policy has expired at which point a future resolution attempt will be allowed.
- * Error caching considers the current network settings such that fixes to the configuration like authentication or
- * proxy automatically trigger revalidation with the remote side regardless of the time elapsed since the previous
- * resolution error.
- *
- * @see RepositorySystemSession#getResolutionErrorPolicy()
- */
-public interface ResolutionErrorPolicy
-{
-
- /**
- * Bit mask indicating that resolution errors should not be cached in the local repository. This forces the system
- * to always query the remote repository for locally missing artifacts/metadata.
- */
- int CACHE_DISABLED = 0x00;
-
- /**
- * Bit flag indicating whether missing artifacts/metadata should be cached in the local repository. If caching is
- * enabled, resolution will not be reattempted until the update policy for the affected resource has expired.
- */
- int CACHE_NOT_FOUND = 0x01;
-
- /**
- * Bit flag indicating whether connectivity/transfer errors (e.g. unreachable host, bad authentication) should be
- * cached in the local repository. If caching is enabled, resolution will not be reattempted until the update policy
- * for the affected resource has expired.
- */
- int CACHE_TRANSFER_ERROR = 0x02;
-
- /**
- * Bit mask indicating that all resolution errors should be cached in the local repository.
- */
- int CACHE_ALL = CACHE_NOT_FOUND | CACHE_TRANSFER_ERROR;
-
- /**
- * Gets the error policy for an artifact.
- *
- * @param session The repository session during which the policy is determined, must not be {@code null}.
- * @param request The policy request holding further details, must not be {@code null}.
- * @return The bit mask describing the desired error policy.
- */
- int getArtifactPolicy( RepositorySystemSession session, ResolutionErrorPolicyRequest<Artifact> request );
-
- /**
- * Gets the error policy for some metadata.
- *
- * @param session The repository session during which the policy is determined, must not be {@code null}.
- * @param request The policy request holding further details, must not be {@code null}.
- * @return The bit mask describing the desired error policy.
- */
- int getMetadataPolicy( RepositorySystemSession session, ResolutionErrorPolicyRequest<Metadata> request );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/ResolutionErrorPolicyRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/ResolutionErrorPolicyRequest.java b/aether-api/src/main/java/org/eclipse/aether/resolution/ResolutionErrorPolicyRequest.java
deleted file mode 100644
index 9126914..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/ResolutionErrorPolicyRequest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.repository.RemoteRepository;
-
-/**
- * A query for the resolution error policy for a given artifact/metadata.
- *
- * @param <T> The type of the affected repository item (artifact or metadata).
- * @see ResolutionErrorPolicy
- */
-public final class ResolutionErrorPolicyRequest<T>
-{
-
- private T item;
-
- private RemoteRepository repository;
-
- /**
- * Creates an uninitialized request.
- */
- public ResolutionErrorPolicyRequest()
- {
- // enables default constructor
- }
-
- /**
- * Creates a request for the specified artifact/metadata and remote repository.
- *
- * @param item The artifact/metadata for which to determine the error policy, may be {@code null}.
- * @param repository The repository from which the resolution is attempted, may be {@code null}.
- */
- public ResolutionErrorPolicyRequest( T item, RemoteRepository repository )
- {
- setItem( item );
- setRepository( repository );
- }
-
- /**
- * Gets the artifact/metadata for which to determine the error policy.
- *
- * @return The artifact/metadata for which to determine the error policy or {@code null} if not set.
- */
- public T getItem()
- {
- return item;
- }
-
- /**
- * Sets the artifact/metadata for which to determine the error policy.
- *
- * @param item The artifact/metadata for which to determine the error policy, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ResolutionErrorPolicyRequest<T> setItem( T item )
- {
- this.item = item;
- return this;
- }
-
- /**
- * Gets the remote repository from which the resolution of the artifact/metadata is attempted.
- *
- * @return The involved remote repository or {@code null} if not set.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Sets the remote repository from which the resolution of the artifact/metadata is attempted.
- *
- * @param repository The repository from which the resolution is attempted, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public ResolutionErrorPolicyRequest<T> setRepository( RemoteRepository repository )
- {
- this.repository = repository;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getItem() + " < " + getRepository();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeRequest.java b/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeRequest.java
deleted file mode 100644
index d6aa16b..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeRequest.java
+++ /dev/null
@@ -1,190 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.Collections;
-import java.util.List;
-
-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.repository.RemoteRepository;
-
-/**
- * A request to resolve a version range.
- *
- * @see RepositorySystem#resolveVersionRange(RepositorySystemSession, VersionRangeRequest)
- */
-public final class VersionRangeRequest
-{
-
- private Artifact artifact;
-
- private List<RemoteRepository> repositories = Collections.emptyList();
-
- private String context = "";
-
- private RequestTrace trace;
-
- /**
- * Creates an uninitialized request.
- */
- public VersionRangeRequest()
- {
- // enables default constructor
- }
-
- /**
- * Creates a request with the specified properties.
- *
- * @param artifact The artifact whose version range should be resolved, may be {@code null}.
- * @param repositories The repositories to resolve the version from, may be {@code null}.
- * @param context The context in which this request is made, may be {@code null}.
- */
- public VersionRangeRequest( Artifact artifact, List<RemoteRepository> repositories, String context )
- {
- setArtifact( artifact );
- setRepositories( repositories );
- setRequestContext( context );
- }
-
- /**
- * Gets the artifact whose version range shall be resolved.
- *
- * @return The artifact or {@code null} if not set.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Sets the artifact whose version range shall be resolved.
- *
- * @param artifact The artifact, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public VersionRangeRequest setArtifact( Artifact artifact )
- {
- this.artifact = artifact;
- return this;
- }
-
- /**
- * Gets the repositories to resolve the version range from.
- *
- * @return The repositories, never {@code null}.
- */
- public List<RemoteRepository> getRepositories()
- {
- return repositories;
- }
-
- /**
- * Sets the repositories to resolve the version range from.
- *
- * @param repositories The repositories, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public VersionRangeRequest setRepositories( List<RemoteRepository> repositories )
- {
- if ( repositories == null )
- {
- this.repositories = Collections.emptyList();
- }
- else
- {
- this.repositories = repositories;
- }
- return this;
- }
-
- /**
- * Adds the specified repository for the resolution.
- *
- * @param repository The repository to add, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public VersionRangeRequest addRepository( RemoteRepository repository )
- {
- if ( repository != null )
- {
- if ( this.repositories.isEmpty() )
- {
- this.repositories = new ArrayList<RemoteRepository>();
- }
- this.repositories.add( repository );
- }
- return this;
- }
-
- /**
- * Gets the context in which this request is made.
- *
- * @return The context, never {@code null}.
- */
- public String getRequestContext()
- {
- return context;
- }
-
- /**
- * Sets the context in which this request is made.
- *
- * @param context The context, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public VersionRangeRequest setRequestContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- 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 VersionRangeRequest setTrace( RequestTrace trace )
- {
- this.trace = trace;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getArtifact() + " < " + getRepositories();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeResolutionException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeResolutionException.java b/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeResolutionException.java
deleted file mode 100644
index deb0e52..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeResolutionException.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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 unparseable or unresolvable version range.
- */
-public class VersionRangeResolutionException
- extends RepositoryException
-{
-
- private final transient VersionRangeResult result;
-
- /**
- * Creates a new exception with the specified result.
- *
- * @param result The version range result at the point the exception occurred, may be {@code null}.
- */
- public VersionRangeResolutionException( VersionRangeResult result )
- {
- super( getMessage( result ), getCause( result ) );
- this.result = result;
- }
-
- private static String getMessage( VersionRangeResult result )
- {
- StringBuilder buffer = new StringBuilder( 256 );
- buffer.append( "Failed to resolve version range" );
- if ( result != null )
- {
- buffer.append( " for " ).append( result.getRequest().getArtifact() );
- if ( !result.getExceptions().isEmpty() )
- {
- buffer.append( ": " ).append( result.getExceptions().iterator().next().getMessage() );
- }
- }
- return buffer.toString();
- }
-
- private static Throwable getCause( VersionRangeResult result )
- {
- Throwable cause = null;
- if ( result != null && !result.getExceptions().isEmpty() )
- {
- cause = result.getExceptions().get( 0 );
- }
- return cause;
- }
-
- /**
- * Creates a new exception with the specified result and detail message.
- *
- * @param result The version range result at the point the exception occurred, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public VersionRangeResolutionException( VersionRangeResult result, String message )
- {
- super( message );
- this.result = result;
- }
-
- /**
- * Creates a new exception with the specified result, detail message and cause.
- *
- * @param result The version range result at the point the exception occurred, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public VersionRangeResolutionException( VersionRangeResult result, String message, Throwable cause )
- {
- super( message, cause );
- this.result = result;
- }
-
- /**
- * Gets the version range result at the point the exception occurred. Despite being incomplete, callers might want
- * to use this result to fail gracefully and continue their operation with whatever interim data has been gathered.
- *
- * @return The version range result or {@code null} if unknown.
- */
- public VersionRangeResult getResult()
- {
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeResult.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeResult.java b/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeResult.java
deleted file mode 100644
index 4749f7c..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRangeResult.java
+++ /dev/null
@@ -1,240 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.ArtifactRepository;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-
-/**
- * The result of a version range resolution request.
- *
- * @see RepositorySystem#resolveVersionRange(RepositorySystemSession, VersionRangeRequest)
- */
-public final class VersionRangeResult
-{
-
- private final VersionRangeRequest request;
-
- private List<Exception> exceptions;
-
- private List<Version> versions;
-
- private Map<Version, ArtifactRepository> repositories;
-
- private VersionConstraint versionConstraint;
-
- /**
- * Creates a new result for the specified request.
- *
- * @param request The resolution request, must not be {@code null}.
- */
- public VersionRangeResult( VersionRangeRequest request )
- {
- if ( request == null )
- {
- throw new IllegalArgumentException( "version range request has not been specified" );
- }
- this.request = request;
- exceptions = Collections.emptyList();
- versions = Collections.emptyList();
- repositories = Collections.emptyMap();
- }
-
- /**
- * Gets the resolution request that was made.
- *
- * @return The resolution request, never {@code null}.
- */
- public VersionRangeRequest getRequest()
- {
- return request;
- }
-
- /**
- * Gets the exceptions that occurred while resolving the version range.
- *
- * @return The exceptions that occurred, never {@code null}.
- */
- public List<Exception> getExceptions()
- {
- return exceptions;
- }
-
- /**
- * Records the specified exception while resolving the version range.
- *
- * @param exception The exception to record, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public VersionRangeResult addException( Exception exception )
- {
- if ( exception != null )
- {
- if ( exceptions.isEmpty() )
- {
- exceptions = new ArrayList<Exception>();
- }
- exceptions.add( exception );
- }
- return this;
- }
-
- /**
- * Gets the versions (in ascending order) that matched the requested range.
- *
- * @return The matching versions (if any), never {@code null}.
- */
- public List<Version> getVersions()
- {
- return versions;
- }
-
- /**
- * Adds the specified version to the result. Note that versions must be added in ascending order.
- *
- * @param version The version to add, must not be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public VersionRangeResult addVersion( Version version )
- {
- if ( versions.isEmpty() )
- {
- versions = new ArrayList<Version>();
- }
- versions.add( version );
- return this;
- }
-
- /**
- * Sets the versions (in ascending order) matching the requested range.
- *
- * @param versions The matching versions, may be empty or {@code null} if none.
- * @return This result for chaining, never {@code null}.
- */
- public VersionRangeResult setVersions( List<Version> versions )
- {
- if ( versions == null )
- {
- this.versions = Collections.emptyList();
- }
- else
- {
- this.versions = versions;
- }
- return this;
- }
-
- /**
- * Gets the lowest version matching the requested range.
- *
- * @return The lowest matching version or {@code null} if no versions matched the requested range.
- */
- public Version getLowestVersion()
- {
- if ( versions.isEmpty() )
- {
- return null;
- }
- return versions.get( 0 );
- }
-
- /**
- * Gets the highest version matching the requested range.
- *
- * @return The highest matching version or {@code null} if no versions matched the requested range.
- */
- public Version getHighestVersion()
- {
- if ( versions.isEmpty() )
- {
- return null;
- }
- return versions.get( versions.size() - 1 );
- }
-
- /**
- * Gets the repository from which the specified version was resolved.
- *
- * @param version The version whose source repository should be retrieved, must not be {@code null}.
- * @return The repository from which the version was resolved or {@code null} if unknown.
- */
- public ArtifactRepository getRepository( Version version )
- {
- return repositories.get( version );
- }
-
- /**
- * Records the repository from which the specified version was resolved
- *
- * @param version The version whose source repository is to be recorded, must not be {@code null}.
- * @param repository The repository from which the version was resolved, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public VersionRangeResult setRepository( Version version, ArtifactRepository repository )
- {
- if ( repository != null )
- {
- if ( repositories.isEmpty() )
- {
- repositories = new HashMap<Version, ArtifactRepository>();
- }
- repositories.put( version, repository );
- }
- return this;
- }
-
- /**
- * Gets the version constraint that was parsed from the artifact's version string.
- *
- * @return The parsed version constraint or {@code null}.
- */
- public VersionConstraint getVersionConstraint()
- {
- return versionConstraint;
- }
-
- /**
- * Sets the version constraint that was parsed from the artifact's version string.
- *
- * @param versionConstraint The parsed version constraint, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public VersionRangeResult setVersionConstraint( VersionConstraint versionConstraint )
- {
- this.versionConstraint = versionConstraint;
- return this;
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( repositories );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRequest.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRequest.java b/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRequest.java
deleted file mode 100644
index 3dde7dd..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionRequest.java
+++ /dev/null
@@ -1,190 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.Collections;
-import java.util.List;
-
-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.repository.RemoteRepository;
-
-/**
- * A request to resolve a metaversion.
- *
- * @see RepositorySystem#resolveVersion(RepositorySystemSession, VersionRequest)
- */
-public final class VersionRequest
-{
-
- private Artifact artifact;
-
- private List<RemoteRepository> repositories = Collections.emptyList();
-
- private String context = "";
-
- private RequestTrace trace;
-
- /**
- * Creates an uninitialized request.
- */
- public VersionRequest()
- {
- // enables default constructor
- }
-
- /**
- * Creates a request with the specified properties.
- *
- * @param artifact The artifact whose (meta-)version should be resolved, may be {@code null}.
- * @param repositories The repositories to resolve the version from, may be {@code null}.
- * @param context The context in which this request is made, may be {@code null}.
- */
- public VersionRequest( Artifact artifact, List<RemoteRepository> repositories, String context )
- {
- setArtifact( artifact );
- setRepositories( repositories );
- setRequestContext( context );
- }
-
- /**
- * Gets the artifact whose (meta-)version shall be resolved.
- *
- * @return The artifact or {@code null} if not set.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Sets the artifact whose (meta-)version shall be resolved.
- *
- * @param artifact The artifact, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public VersionRequest setArtifact( Artifact artifact )
- {
- this.artifact = artifact;
- return this;
- }
-
- /**
- * Gets the repositories to resolve the version from.
- *
- * @return The repositories, never {@code null}.
- */
- public List<RemoteRepository> getRepositories()
- {
- return repositories;
- }
-
- /**
- * Sets the repositories to resolve the version from.
- *
- * @param repositories The repositories, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public VersionRequest setRepositories( List<RemoteRepository> repositories )
- {
- if ( repositories == null )
- {
- this.repositories = Collections.emptyList();
- }
- else
- {
- this.repositories = repositories;
- }
- return this;
- }
-
- /**
- * Adds the specified repository for the resolution.
- *
- * @param repository The repository to add, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public VersionRequest addRepository( RemoteRepository repository )
- {
- if ( repository != null )
- {
- if ( this.repositories.isEmpty() )
- {
- this.repositories = new ArrayList<RemoteRepository>();
- }
- this.repositories.add( repository );
- }
- return this;
- }
-
- /**
- * Gets the context in which this request is made.
- *
- * @return The context, never {@code null}.
- */
- public String getRequestContext()
- {
- return context;
- }
-
- /**
- * Sets the context in which this request is made.
- *
- * @param context The context, may be {@code null}.
- * @return This request for chaining, never {@code null}.
- */
- public VersionRequest setRequestContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- 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 VersionRequest setTrace( RequestTrace trace )
- {
- this.trace = trace;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getArtifact() + " < " + getRepositories();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/VersionResolutionException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionResolutionException.java b/aether-api/src/main/java/org/eclipse/aether/resolution/VersionResolutionException.java
deleted file mode 100644
index 1aca861..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionResolutionException.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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 unresolvable metaversion.
- */
-public class VersionResolutionException
- extends RepositoryException
-{
-
- private final transient VersionResult result;
-
- /**
- * Creates a new exception with the specified result.
- *
- * @param result The version result at the point the exception occurred, may be {@code null}.
- */
- public VersionResolutionException( VersionResult result )
- {
- super( getMessage( result ), getCause( result ) );
- this.result = result;
- }
-
- private static String getMessage( VersionResult result )
- {
- StringBuilder buffer = new StringBuilder( 256 );
- buffer.append( "Failed to resolve version" );
- if ( result != null )
- {
- buffer.append( " for " ).append( result.getRequest().getArtifact() );
- if ( !result.getExceptions().isEmpty() )
- {
- buffer.append( ": " ).append( result.getExceptions().iterator().next().getMessage() );
- }
- }
- return buffer.toString();
- }
-
- private static Throwable getCause( VersionResult result )
- {
- Throwable cause = null;
- if ( result != null && !result.getExceptions().isEmpty() )
- {
- cause = result.getExceptions().get( 0 );
- }
- return cause;
- }
-
- /**
- * Creates a new exception with the specified result and detail message.
- *
- * @param result The version result at the point the exception occurred, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public VersionResolutionException( VersionResult result, String message )
- {
- super( message, getCause( result ) );
- this.result = result;
- }
-
- /**
- * Creates a new exception with the specified result, detail message and cause.
- *
- * @param result The version result at the point the exception occurred, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public VersionResolutionException( VersionResult result, String message, Throwable cause )
- {
- super( message, cause );
- this.result = result;
- }
-
- /**
- * Gets the version result at the point the exception occurred. Despite being incomplete, callers might want to use
- * this result to fail gracefully and continue their operation with whatever interim data has been gathered.
- *
- * @return The version result or {@code null} if unknown.
- */
- public VersionResult getResult()
- {
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/VersionResult.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionResult.java b/aether-api/src/main/java/org/eclipse/aether/resolution/VersionResult.java
deleted file mode 100644
index 5125773..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/VersionResult.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package org.eclipse.aether.resolution;
-
-/*
- * 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.Collections;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.ArtifactRepository;
-
-/**
- * The result of a version resolution request.
- *
- * @see RepositorySystem#resolveVersion(RepositorySystemSession, VersionRequest)
- */
-public final class VersionResult
-{
-
- private final VersionRequest request;
-
- private List<Exception> exceptions;
-
- private String version;
-
- private ArtifactRepository repository;
-
- /**
- * Creates a new result for the specified request.
- *
- * @param request The resolution request, must not be {@code null}.
- */
- public VersionResult( VersionRequest request )
- {
- if ( request == null )
- {
- throw new IllegalArgumentException( "version request has not been specified" );
- }
- this.request = request;
- exceptions = Collections.emptyList();
- }
-
- /**
- * Gets the resolution request that was made.
- *
- * @return The resolution request, never {@code null}.
- */
- public VersionRequest getRequest()
- {
- return request;
- }
-
- /**
- * Gets the exceptions that occurred while resolving the version.
- *
- * @return The exceptions that occurred, never {@code null}.
- */
- public List<Exception> getExceptions()
- {
- return exceptions;
- }
-
- /**
- * Records the specified exception while resolving the version.
- *
- * @param exception The exception to record, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public VersionResult addException( Exception exception )
- {
- if ( exception != null )
- {
- if ( exceptions.isEmpty() )
- {
- exceptions = new ArrayList<Exception>();
- }
- exceptions.add( exception );
- }
- return this;
- }
-
- /**
- * Gets the resolved version.
- *
- * @return The resolved version or {@code null} if the resolution failed.
- */
- public String getVersion()
- {
- return version;
- }
-
- /**
- * Sets the resolved version.
- *
- * @param version The resolved version, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public VersionResult setVersion( String version )
- {
- this.version = version;
- return this;
- }
-
- /**
- * Gets the repository from which the version was eventually resolved.
- *
- * @return The repository from which the version was resolved or {@code null} if unknown.
- */
- public ArtifactRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Sets the repository from which the version was resolved.
- *
- * @param repository The repository from which the version was resolved, may be {@code null}.
- * @return This result for chaining, never {@code null}.
- */
- public VersionResult setRepository( ArtifactRepository repository )
- {
- this.repository = repository;
- return this;
- }
-
- @Override
- public String toString()
- {
- return getVersion() + " @ " + getRepository();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/resolution/package-info.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/resolution/package-info.java b/aether-api/src/main/java/org/eclipse/aether/resolution/package-info.java
deleted file mode 100644
index 33f9ef8..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/resolution/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 resolution of artifacts and metadata from repositories.
- */
-package org.eclipse.aether.resolution;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/AbstractTransferListener.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/AbstractTransferListener.java b/aether-api/src/main/java/org/eclipse/aether/transfer/AbstractTransferListener.java
deleted file mode 100644
index 5691e31..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/AbstractTransferListener.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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 skeleton implementation for custom transfer listeners. The callback methods in this class do nothing.
- */
-public abstract class AbstractTransferListener
- implements TransferListener
-{
-
- /**
- * Enables subclassing.
- */
- protected AbstractTransferListener()
- {
- }
-
- public void transferInitiated( TransferEvent event )
- throws TransferCancelledException
- {
- }
-
- public void transferStarted( TransferEvent event )
- throws TransferCancelledException
- {
- }
-
- public void transferProgressed( TransferEvent event )
- throws TransferCancelledException
- {
- }
-
- public void transferCorrupted( TransferEvent event )
- throws TransferCancelledException
- {
- }
-
- public void transferSucceeded( TransferEvent event )
- {
- }
-
- public void transferFailed( TransferEvent event )
- {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactNotFoundException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactNotFoundException.java b/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactNotFoundException.java
deleted file mode 100644
index 89a50d4..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactNotFoundException.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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.artifact.Artifact;
-import org.eclipse.aether.artifact.ArtifactProperties;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * Thrown when an artifact was not found in a particular repository.
- */
-public class ArtifactNotFoundException
- extends ArtifactTransferException
-{
-
- /**
- * Creates a new exception with the specified artifact and repository.
- *
- * @param artifact The missing artifact, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- */
- public ArtifactNotFoundException( Artifact artifact, RemoteRepository repository )
- {
- super( artifact, repository, getMessage( artifact, repository ) );
- }
-
- private static String getMessage( Artifact artifact, RemoteRepository repository )
- {
- StringBuilder buffer = new StringBuilder( 256 );
- buffer.append( "Could not find artifact " ).append( artifact );
- buffer.append( getString( " in ", repository ) );
- if ( artifact != null )
- {
- String localPath = artifact.getProperty( ArtifactProperties.LOCAL_PATH, null );
- if ( localPath != null && repository == null )
- {
- buffer.append( " at specified path " ).append( localPath );
- }
- String downloadUrl = artifact.getProperty( ArtifactProperties.DOWNLOAD_URL, null );
- if ( downloadUrl != null )
- {
- buffer.append( ", try downloading from " ).append( downloadUrl );
- }
- }
- return buffer.toString();
- }
-
- /**
- * Creates a new exception with the specified artifact, repository and detail message.
- *
- * @param artifact The missing artifact, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public ArtifactNotFoundException( Artifact artifact, RemoteRepository repository, String message )
- {
- super( artifact, repository, message );
- }
-
- /**
- * Creates a new exception with the specified artifact, repository and detail message.
- *
- * @param artifact The missing artifact, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param fromCache {@code true} if the exception was played back from the error cache, {@code false} if the
- * exception actually just occurred.
- */
- public ArtifactNotFoundException( Artifact artifact, RemoteRepository repository, String message, boolean fromCache )
- {
- super( artifact, repository, message, fromCache );
- }
-
- /**
- * Creates a new exception with the specified artifact, repository, detail message and cause.
- *
- * @param artifact The missing artifact, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public ArtifactNotFoundException( Artifact artifact, RemoteRepository repository, String message, Throwable cause )
- {
- super( artifact, repository, message, cause );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactTransferException.java
----------------------------------------------------------------------
diff --git a/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactTransferException.java b/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactTransferException.java
deleted file mode 100644
index 087040f..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/transfer/ArtifactTransferException.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package org.eclipse.aether.transfer;
-
-/*
- * 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;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.repository.RemoteRepository;
-
-/**
- * Thrown when an artifact could not be uploaded/downloaded to/from a particular remote repository.
- */
-public class ArtifactTransferException
- extends RepositoryException
-{
-
- private final transient Artifact artifact;
-
- private final transient RemoteRepository repository;
-
- private final boolean fromCache;
-
- static String getString( String prefix, RemoteRepository repository )
- {
- if ( repository == null )
- {
- return "";
- }
- else
- {
- return prefix + repository.getId() + " (" + repository.getUrl() + ")";
- }
- }
-
- /**
- * Creates a new exception with the specified artifact, repository and detail message.
- *
- * @param artifact The untransferable artifact, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- */
- public ArtifactTransferException( Artifact artifact, RemoteRepository repository, String message )
- {
- this( artifact, repository, message, false );
- }
-
- /**
- * Creates a new exception with the specified artifact, repository and detail message.
- *
- * @param artifact The untransferable artifact, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param fromCache {@code true} if the exception was played back from the error cache, {@code false} if the
- * exception actually just occurred.
- */
- public ArtifactTransferException( Artifact artifact, RemoteRepository repository, String message, boolean fromCache )
- {
- super( message );
- this.artifact = artifact;
- this.repository = repository;
- this.fromCache = fromCache;
- }
-
- /**
- * Creates a new exception with the specified artifact, repository and cause.
- *
- * @param artifact The untransferable artifact, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public ArtifactTransferException( Artifact artifact, RemoteRepository repository, Throwable cause )
- {
- this( artifact, repository, "Could not transfer artifact " + artifact + getString( " from/to ", repository )
- + getMessage( ": ", cause ), cause );
- }
-
- /**
- * Creates a new exception with the specified artifact, repository, detail message and cause.
- *
- * @param artifact The untransferable artifact, may be {@code null}.
- * @param repository The involved remote repository, may be {@code null}.
- * @param message The detail message, may be {@code null}.
- * @param cause The exception that caused this one, may be {@code null}.
- */
- public ArtifactTransferException( Artifact artifact, RemoteRepository repository, String message, Throwable cause )
- {
- super( message, cause );
- this.artifact = artifact;
- this.repository = repository;
- this.fromCache = false;
- }
-
- /**
- * Gets the artifact that could not be transferred.
- *
- * @return The troublesome artifact or {@code null} if unknown.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Gets the remote repository involved in the transfer.
- *
- * @return The involved remote repository or {@code null} if unknown.
- */
- public RemoteRepository getRepository()
- {
- return repository;
- }
-
- /**
- * Indicates whether this exception actually just occurred or was played back from the error cache.
- *
- * @return {@code true} if the exception was played back from the error cache, {@code false} if the exception
- * actually occurred just now.
- */
- public boolean isFromCache()
- {
- return fromCache;
- }
-
-}
[51/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
[MNG-6007] rename Aether to Maven Artifact Resolver
Project: http://git-wip-us.apache.org/repos/asf/maven-aether/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-aether/commit/27f8bd73
Tree: http://git-wip-us.apache.org/repos/asf/maven-aether/tree/27f8bd73
Diff: http://git-wip-us.apache.org/repos/asf/maven-aether/diff/27f8bd73
Branch: refs/heads/master
Commit: 27f8bd7360d1114b0e2972a49c01adfbe24da272
Parents: 468240b
Author: Herv� Boutemy <hb...@apache.org>
Authored: Sat Sep 3 22:23:01 2016 +0200
Committer: Herv� Boutemy <hb...@apache.org>
Committed: Sat Sep 3 22:23:01 2016 +0200
----------------------------------------------------------------------
aether-api/pom.xml | 51 -
...stractForwardingRepositorySystemSession.java | 189 ---
.../aether/AbstractRepositoryListener.java | 112 --
.../eclipse/aether/ConfigurationProperties.java | 174 ---
.../eclipse/aether/DefaultRepositoryCache.java | 52 -
.../aether/DefaultRepositorySystemSession.java | 834 -----------
.../org/eclipse/aether/DefaultSessionData.java | 91 --
.../org/eclipse/aether/RepositoryCache.java | 59 -
.../org/eclipse/aether/RepositoryEvent.java | 442 ------
.../org/eclipse/aether/RepositoryException.java | 72 -
.../org/eclipse/aether/RepositoryListener.java | 222 ---
.../org/eclipse/aether/RepositorySystem.java | 277 ----
.../eclipse/aether/RepositorySystemSession.java | 263 ----
.../java/org/eclipse/aether/RequestTrace.java | 117 --
.../java/org/eclipse/aether/SessionData.java | 66 -
.../java/org/eclipse/aether/SyncContext.java | 76 -
.../aether/artifact/AbstractArtifact.java | 230 ---
.../org/eclipse/aether/artifact/Artifact.java | 143 --
.../aether/artifact/ArtifactProperties.java | 74 -
.../eclipse/aether/artifact/ArtifactType.java | 67 -
.../aether/artifact/ArtifactTypeRegistry.java | 38 -
.../aether/artifact/DefaultArtifact.java | 285 ----
.../aether/artifact/DefaultArtifactType.java | 146 --
.../eclipse/aether/artifact/package-info.java | 24 -
.../aether/collection/CollectRequest.java | 356 -----
.../aether/collection/CollectResult.java | 159 ---
.../collection/DependencyCollectionContext.java | 75 -
.../DependencyCollectionException.java | 111 --
.../DependencyGraphTransformationContext.java | 58 -
.../collection/DependencyGraphTransformer.java | 51 -
.../aether/collection/DependencyManagement.java | 177 ---
.../aether/collection/DependencyManager.java | 57 -
.../aether/collection/DependencySelector.java | 58 -
.../aether/collection/DependencyTraverser.java | 59 -
.../UnsolvableVersionConflictException.java | 142 --
.../aether/collection/VersionFilter.java | 135 --
.../eclipse/aether/collection/package-info.java | 25 -
.../aether/deployment/DeployRequest.java | 202 ---
.../eclipse/aether/deployment/DeployResult.java | 174 ---
.../aether/deployment/DeploymentException.java | 52 -
.../eclipse/aether/deployment/package-info.java | 24 -
.../aether/graph/DefaultDependencyNode.java | 399 ------
.../org/eclipse/aether/graph/Dependency.java | 330 -----
.../eclipse/aether/graph/DependencyCycle.java | 53 -
.../eclipse/aether/graph/DependencyFilter.java | 42 -
.../eclipse/aether/graph/DependencyNode.java | 250 ----
.../eclipse/aether/graph/DependencyVisitor.java | 47 -
.../org/eclipse/aether/graph/Exclusion.java | 131 --
.../org/eclipse/aether/graph/package-info.java | 24 -
.../aether/installation/InstallRequest.java | 177 ---
.../aether/installation/InstallResult.java | 174 ---
.../installation/InstallationException.java | 52 -
.../aether/installation/package-info.java | 24 -
.../aether/metadata/AbstractMetadata.java | 160 ---
.../aether/metadata/DefaultMetadata.java | 192 ---
.../aether/metadata/MergeableMetadata.java | 51 -
.../org/eclipse/aether/metadata/Metadata.java | 138 --
.../eclipse/aether/metadata/package-info.java | 24 -
.../java/org/eclipse/aether/package-info.java | 24 -
.../aether/repository/ArtifactRepository.java | 45 -
.../aether/repository/Authentication.java | 55 -
.../repository/AuthenticationContext.java | 389 -----
.../aether/repository/AuthenticationDigest.java | 219 ---
.../repository/AuthenticationSelector.java | 38 -
.../repository/LocalArtifactRegistration.java | 149 --
.../aether/repository/LocalArtifactRequest.java | 145 --
.../aether/repository/LocalArtifactResult.java | 147 --
.../repository/LocalMetadataRegistration.java | 148 --
.../aether/repository/LocalMetadataRequest.java | 133 --
.../aether/repository/LocalMetadataResult.java | 114 --
.../aether/repository/LocalRepository.java | 132 --
.../repository/LocalRepositoryManager.java | 127 --
.../aether/repository/MirrorSelector.java | 39 -
.../NoLocalRepositoryManagerException.java | 102 --
.../org/eclipse/aether/repository/Proxy.java | 158 ---
.../aether/repository/ProxySelector.java | 38 -
.../aether/repository/RemoteRepository.java | 582 --------
.../aether/repository/RepositoryPolicy.java | 161 ---
.../aether/repository/WorkspaceReader.java | 58 -
.../aether/repository/WorkspaceRepository.java | 122 --
.../eclipse/aether/repository/package-info.java | 24 -
.../resolution/ArtifactDescriptorException.java | 91 --
.../resolution/ArtifactDescriptorPolicy.java | 61 -
.../ArtifactDescriptorPolicyRequest.java | 106 --
.../resolution/ArtifactDescriptorRequest.java | 190 ---
.../resolution/ArtifactDescriptorResult.java | 466 ------
.../aether/resolution/ArtifactRequest.java | 232 ---
.../resolution/ArtifactResolutionException.java | 173 ---
.../aether/resolution/ArtifactResult.java | 188 ---
.../aether/resolution/DependencyRequest.java | 187 ---
.../DependencyResolutionException.java | 83 --
.../aether/resolution/DependencyResult.java | 195 ---
.../aether/resolution/MetadataRequest.java | 232 ---
.../aether/resolution/MetadataResult.java | 166 ---
.../resolution/ResolutionErrorPolicy.java | 82 --
.../ResolutionErrorPolicyRequest.java | 107 --
.../aether/resolution/VersionRangeRequest.java | 190 ---
.../VersionRangeResolutionException.java | 105 --
.../aether/resolution/VersionRangeResult.java | 240 ----
.../aether/resolution/VersionRequest.java | 190 ---
.../resolution/VersionResolutionException.java | 105 --
.../aether/resolution/VersionResult.java | 150 --
.../eclipse/aether/resolution/package-info.java | 24 -
.../transfer/AbstractTransferListener.java | 64 -
.../transfer/ArtifactNotFoundException.java | 104 --
.../transfer/ArtifactTransferException.java | 140 --
.../transfer/ChecksumFailureException.java | 131 --
.../transfer/MetadataNotFoundException.java | 106 --
.../transfer/MetadataTransferException.java | 140 --
.../NoRepositoryConnectorException.java | 103 --
.../transfer/NoRepositoryLayoutException.java | 102 --
.../aether/transfer/NoTransporterException.java | 102 --
.../transfer/RepositoryOfflineException.java | 79 --
.../transfer/TransferCancelledException.java | 60 -
.../eclipse/aether/transfer/TransferEvent.java | 432 ------
.../aether/transfer/TransferListener.java | 100 --
.../aether/transfer/TransferResource.java | 201 ---
.../eclipse/aether/transfer/package-info.java | 25 -
.../InvalidVersionSpecificationException.java | 80 --
.../org/eclipse/aether/version/Version.java | 36 -
.../aether/version/VersionConstraint.java | 54 -
.../eclipse/aether/version/VersionRange.java | 131 --
.../eclipse/aether/version/VersionScheme.java | 59 -
.../eclipse/aether/version/package-info.java | 24 -
aether-api/src/site/site.xml | 36 -
...ctForwardingRepositorySystemSessionTest.java | 44 -
.../aether/AbstractRepositoryListenerTest.java | 46 -
.../aether/DefaultRepositoryCacheTest.java | 112 --
.../DefaultRepositorySystemSessionTest.java | 127 --
.../eclipse/aether/DefaultSessionDataTest.java | 137 --
.../eclipse/aether/RepositoryExceptionTest.java | 228 ---
.../org/eclipse/aether/RequestTraceTest.java | 62 -
.../aether/artifact/DefaultArtifactTest.java | 188 ---
.../eclipse/aether/graph/DependencyTest.java | 73 -
.../repository/AuthenticationContextTest.java | 170 ---
.../repository/AuthenticationDigestTest.java | 150 --
.../repository/RemoteRepositoryBuilderTest.java | 185 ---
.../aether/repository/RemoteRepositoryTest.java | 96 --
.../transfer/AbstractTransferListenerTest.java | 46 -
.../aether/transfer/TransferEventTest.java | 85 --
aether-connector-basic/pom.xml | 89 --
.../basic/ArtifactTransportListener.java | 58 -
.../basic/BasicRepositoryConnector.java | 595 --------
.../basic/BasicRepositoryConnectorFactory.java | 193 ---
.../connector/basic/ChecksumCalculator.java | 217 ---
.../connector/basic/ChecksumValidator.java | 265 ----
.../basic/MetadataTransportListener.java | 58 -
.../aether/connector/basic/PartialFile.java | 305 ----
.../basic/TransferTransportListener.java | 141 --
.../aether/connector/basic/package-info.java | 24 -
aether-connector-basic/src/site/site.xml | 36 -
.../connector/basic/ChecksumCalculatorTest.java | 170 ---
.../connector/basic/ChecksumValidatorTest.java | 465 ------
.../aether/connector/basic/PartialFileTest.java | 327 -----
aether-impl/pom.xml | 102 --
.../org/eclipse/aether/impl/AetherModule.java | 35 -
.../aether/impl/ArtifactDescriptorReader.java | 51 -
.../eclipse/aether/impl/ArtifactResolver.java | 73 -
.../aether/impl/DefaultServiceLocator.java | 347 -----
.../aether/impl/DependencyCollector.java | 59 -
.../java/org/eclipse/aether/impl/Deployer.java | 51 -
.../java/org/eclipse/aether/impl/Installer.java | 51 -
.../aether/impl/LocalRepositoryProvider.java | 54 -
.../eclipse/aether/impl/MetadataGenerator.java | 60 -
.../aether/impl/MetadataGeneratorFactory.java | 60 -
.../eclipse/aether/impl/MetadataResolver.java | 54 -
.../eclipse/aether/impl/OfflineController.java | 53 -
.../aether/impl/RemoteRepositoryManager.java | 72 -
.../impl/RepositoryConnectorProvider.java | 49 -
.../aether/impl/RepositoryEventDispatcher.java | 41 -
.../eclipse/aether/impl/SyncContextFactory.java | 46 -
.../org/eclipse/aether/impl/UpdateCheck.java | 285 ----
.../eclipse/aether/impl/UpdateCheckManager.java | 70 -
.../aether/impl/UpdatePolicyAnalyzer.java | 56 -
.../aether/impl/VersionRangeResolver.java | 55 -
.../eclipse/aether/impl/VersionResolver.java | 49 -
.../eclipse/aether/impl/guice/AetherModule.java | 213 ---
.../eclipse/aether/impl/guice/package-info.java | 24 -
.../org/eclipse/aether/impl/package-info.java | 30 -
.../internal/impl/AbstractChecksumPolicy.java | 74 -
.../internal/impl/ArtifactRequestBuilder.java | 68 -
.../aether/internal/impl/CacheUtils.java | 141 --
.../impl/CachingArtifactTypeRegistry.java | 69 -
.../eclipse/aether/internal/impl/DataPool.java | 420 ------
.../internal/impl/DefaultArtifactResolver.java | 773 ----------
.../impl/DefaultChecksumPolicyProvider.java | 121 --
.../DefaultDependencyCollectionContext.java | 86 --
.../impl/DefaultDependencyCollector.java | 876 ------------
.../internal/impl/DefaultDependencyCycle.java | 87 --
...ultDependencyGraphTransformationContext.java | 80 --
.../aether/internal/impl/DefaultDeployer.java | 663 ---------
.../internal/impl/DefaultFileProcessor.java | 261 ----
.../aether/internal/impl/DefaultInstaller.java | 391 ------
.../impl/DefaultLocalRepositoryProvider.java | 162 ---
.../internal/impl/DefaultMetadataResolver.java | 658 ---------
.../internal/impl/DefaultOfflineController.java | 137 --
.../impl/DefaultRemoteRepositoryManager.java | 398 ------
.../DefaultRepositoryConnectorProvider.java | 187 ---
.../impl/DefaultRepositoryEventDispatcher.java | 206 ---
.../impl/DefaultRepositoryLayoutProvider.java | 155 --
.../internal/impl/DefaultRepositorySystem.java | 521 -------
.../impl/DefaultSyncContextFactory.java | 60 -
.../impl/DefaultTransporterProvider.java | 163 ---
.../impl/DefaultUpdateCheckManager.java | 629 ---------
.../impl/DefaultUpdatePolicyAnalyzer.java | 158 ---
.../impl/DefaultVersionFilterContext.java | 217 ---
.../impl/EnhancedLocalRepositoryManager.java | 225 ---
.../EnhancedLocalRepositoryManagerFactory.java | 104 --
.../internal/impl/FailChecksumPolicy.java | 43 -
.../internal/impl/LoggerFactoryProvider.java | 64 -
.../impl/Maven2RepositoryLayoutFactory.java | 186 ---
.../eclipse/aether/internal/impl/NodeStack.java | 124 --
.../aether/internal/impl/ObjectPool.java | 54 -
.../internal/impl/PrioritizedComponent.java | 82 --
.../internal/impl/PrioritizedComponents.java | 156 --
.../internal/impl/SafeTransferListener.java | 188 ---
.../aether/internal/impl/SimpleDigest.java | 106 --
.../impl/SimpleLocalRepositoryManager.java | 269 ----
.../SimpleLocalRepositoryManagerFactory.java | 100 --
.../internal/impl/TrackingFileManager.java | 241 ----
.../org/eclipse/aether/internal/impl/Utils.java | 128 --
.../internal/impl/WarnChecksumPolicy.java | 53 -
.../aether/internal/impl/package-info.java | 24 -
.../internal/impl/slf4j/Slf4jLoggerFactory.java | 201 ---
.../internal/impl/slf4j/package-info.java | 24 -
aether-impl/src/site/site.xml | 36 -
.../aether/impl/DefaultServiceLocatorTest.java | 103 --
.../impl/StubArtifactDescriptorReader.java | 40 -
.../aether/impl/StubVersionRangeResolver.java | 39 -
.../aether/impl/StubVersionResolver.java | 39 -
.../aether/impl/guice/AetherModuleTest.java | 85 --
.../aether/internal/impl/DataPoolTest.java | 66 -
.../impl/DefaultArtifactResolverTest.java | 909 ------------
.../impl/DefaultChecksumPolicyProviderTest.java | 145 --
.../impl/DefaultDependencyCollectorTest.java | 801 -----------
.../internal/impl/DefaultDeployerTest.java | 385 -----
.../internal/impl/DefaultFileProcessorTest.java | 128 --
.../internal/impl/DefaultInstallerTest.java | 414 ------
.../impl/DefaultMetadataResolverTest.java | 256 ----
.../impl/DefaultOfflineControllerTest.java | 102 --
.../DefaultRemoteRepositoryManagerTest.java | 308 ----
.../DefaultRepositoryEventDispatcherTest.java | 90 --
.../impl/DefaultRepositorySystemTest.java | 149 --
.../impl/DefaultUpdateCheckManagerTest.java | 816 -----------
.../impl/DefaultUpdatePolicyAnalyzerTest.java | 130 --
.../internal/impl/DependencyGraphDumper.java | 222 ---
.../EnhancedLocalRepositoryManagerTest.java | 343 -----
.../internal/impl/FailChecksumPolicyTest.java | 94 --
.../impl/IniArtifactDescriptorReader.java | 39 -
.../impl/Maven2RepositoryLayoutFactoryTest.java | 241 ----
.../internal/impl/PrioritizedComponentTest.java | 73 -
.../impl/PrioritizedComponentsTest.java | 115 --
.../impl/RecordingRepositoryConnector.java | 298 ----
.../impl/RecordingRepositoryListener.java | 143 --
.../internal/impl/SafeTransferListenerTest.java | 45 -
.../impl/SimpleLocalRepositoryManagerTest.java | 118 --
.../internal/impl/StaticUpdateCheckManager.java | 87 --
.../impl/StubRemoteRepositoryManager.java | 67 -
.../impl/StubRepositoryConnectorProvider.java | 54 -
.../impl/StubRepositoryEventDispatcher.java | 104 --
.../internal/impl/StubSyncContextFactory.java | 51 -
.../internal/impl/StubVersionRangeResolver.java | 78 -
.../internal/impl/StubVersionResolver.java | 46 -
.../internal/impl/TrackingFileManagerTest.java | 168 ---
.../internal/impl/WarnChecksumPolicyTest.java | 94 --
.../cycle-big/10_117_4.0-SNAPSHOT.ini | 56 -
.../cycle-big/10_117_4.1-SNAPSHOT.ini | 58 -
.../cycle-big/10_11_4.0-SNAPSHOT.ini | 10 -
.../cycle-big/10_11_4.1-SNAPSHOT.ini | 10 -
.../cycle-big/10_121_3.0-SNAPSHOT.ini | 65 -
.../cycle-big/10_121_3.1-SNAPSHOT.ini | 76 -
.../cycle-big/10_12_4.0-SNAPSHOT.ini | 32 -
.../cycle-big/10_12_4.1-SNAPSHOT.ini | 33 -
.../cycle-big/10_139_3.0-SNAPSHOT.ini | 35 -
.../cycle-big/10_139_3.1-SNAPSHOT.ini | 32 -
.../cycle-big/10_141_4.0-SNAPSHOT.ini | 32 -
.../cycle-big/10_141_4.1-SNAPSHOT.ini | 32 -
.../cycle-big/10_145_4.0-SNAPSHOT.ini | 19 -
.../cycle-big/10_145_4.1-SNAPSHOT.ini | 19 -
.../cycle-big/10_146_4.0-SNAPSHOT.ini | 13 -
.../cycle-big/10_146_4.1-SNAPSHOT.ini | 13 -
.../cycle-big/10_147_4.0-SNAPSHOT.ini | 22 -
.../cycle-big/10_147_4.1-SNAPSHOT.ini | 22 -
.../cycle-big/10_148_4.0-SNAPSHOT.ini | 11 -
.../cycle-big/10_148_4.1-SNAPSHOT.ini | 11 -
.../cycle-big/10_149_4.0-SNAPSHOT.ini | 22 -
.../cycle-big/10_149_4.1-SNAPSHOT.ini | 22 -
.../cycle-big/10_150_4.0-SNAPSHOT.ini | 46 -
.../cycle-big/10_150_4.1-SNAPSHOT.ini | 45 -
.../cycle-big/10_152_4.0-SNAPSHOT.ini | 32 -
.../cycle-big/10_152_4.1-SNAPSHOT.ini | 34 -
.../cycle-big/10_155_4.0-SNAPSHOT.ini | 10 -
.../cycle-big/10_155_4.1-SNAPSHOT.ini | 10 -
.../cycle-big/10_156_4.0-SNAPSHOT.ini | 35 -
.../cycle-big/10_156_4.1-SNAPSHOT.ini | 34 -
.../cycle-big/10_160_4.0-SNAPSHOT.ini | 4 -
.../cycle-big/10_160_4.1-SNAPSHOT.ini | 4 -
.../cycle-big/10_161_4.0-SNAPSHOT.ini | 14 -
.../cycle-big/10_161_4.1-SNAPSHOT.ini | 13 -
.../cycle-big/10_162_4.0-SNAPSHOT.ini | 10 -
.../cycle-big/10_162_4.1-SNAPSHOT.ini | 10 -
.../cycle-big/10_163_4.0-SNAPSHOT.ini | 18 -
.../cycle-big/10_163_4.1-SNAPSHOT.ini | 18 -
.../cycle-big/10_164_4.0-SNAPSHOT.ini | 24 -
.../cycle-big/10_164_4.1-SNAPSHOT.ini | 24 -
.../cycle-big/10_167_4.0-SNAPSHOT.ini | 69 -
.../cycle-big/10_167_4.1-SNAPSHOT.ini | 69 -
.../cycle-big/10_172_4.0-SNAPSHOT.ini | 45 -
.../cycle-big/10_172_4.1-SNAPSHOT.ini | 46 -
.../cycle-big/10_173_4.0-SNAPSHOT.ini | 5 -
.../cycle-big/10_173_4.1-SNAPSHOT.ini | 5 -
.../cycle-big/10_174_4.0-SNAPSHOT.ini | 81 --
.../cycle-big/10_174_4.1-SNAPSHOT.ini | 86 --
.../cycle-big/10_175_2.0-SNAPSHOT.ini | 23 -
.../cycle-big/10_175_2.1-SNAPSHOT.ini | 21 -
.../cycle-big/10_176_4.0-SNAPSHOT.ini | 10 -
.../cycle-big/10_176_4.1-SNAPSHOT.ini | 10 -
.../cycle-big/10_177_4.0-SNAPSHOT.ini | 9 -
.../cycle-big/10_177_4.1-SNAPSHOT.ini | 9 -
.../cycle-big/10_178_4.0-SNAPSHOT.ini | 15 -
.../cycle-big/10_178_4.1-SNAPSHOT.ini | 15 -
.../cycle-big/10_179_4.0-SNAPSHOT.ini | 11 -
.../cycle-big/10_179_4.1-SNAPSHOT.ini | 11 -
.../cycle-big/10_180_3.1-SNAPSHOT.ini | 30 -
.../cycle-big/10_180_3.2-SNAPSHOT.ini | 31 -
.../cycle-big/10_189_4.0-SNAPSHOT.ini | 44 -
.../cycle-big/10_189_4.1-SNAPSHOT.ini | 46 -
.../cycle-big/10_202_4.0-SNAPSHOT.ini | 28 -
.../cycle-big/10_202_4.1-SNAPSHOT.ini | 29 -
.../cycle-big/10_203_4.0-SNAPSHOT.ini | 27 -
.../cycle-big/10_203_4.1-SNAPSHOT.ini | 27 -
.../cycle-big/10_205_4.0-SNAPSHOT.ini | 99 --
.../cycle-big/10_205_4.1-SNAPSHOT.ini | 104 --
.../cycle-big/10_206_4.0-SNAPSHOT.ini | 12 -
.../cycle-big/10_206_4.1-SNAPSHOT.ini | 12 -
.../cycle-big/10_207_4.0-SNAPSHOT.ini | 29 -
.../cycle-big/10_207_4.1-SNAPSHOT.ini | 29 -
.../cycle-big/10_210_4.0-SNAPSHOT.ini | 17 -
.../cycle-big/10_210_4.1-SNAPSHOT.ini | 17 -
.../cycle-big/10_212_4.0-SNAPSHOT.ini | 18 -
.../cycle-big/10_212_4.1-SNAPSHOT.ini | 18 -
.../cycle-big/10_213_4.0-SNAPSHOT.ini | 10 -
.../cycle-big/10_213_4.1-SNAPSHOT.ini | 10 -
.../cycle-big/10_214_4.0-SNAPSHOT.ini | 9 -
.../cycle-big/10_214_4.1-SNAPSHOT.ini | 9 -
.../cycle-big/10_215_4.0-SNAPSHOT.ini | 10 -
.../cycle-big/10_215_4.1-SNAPSHOT.ini | 10 -
.../cycle-big/10_216_4.0-SNAPSHOT.ini | 48 -
.../cycle-big/10_216_4.1-SNAPSHOT.ini | 48 -
.../cycle-big/10_220_4.0-SNAPSHOT.ini | 53 -
.../cycle-big/10_220_4.1-SNAPSHOT.ini | 54 -
.../cycle-big/10_224_4.0-SNAPSHOT.ini | 21 -
.../cycle-big/10_224_4.1-SNAPSHOT.ini | 21 -
.../cycle-big/10_225_4.0-SNAPSHOT.ini | 25 -
.../cycle-big/10_225_4.1-SNAPSHOT.ini | 25 -
.../cycle-big/10_226_4.0-SNAPSHOT.ini | 35 -
.../cycle-big/10_226_4.1-SNAPSHOT.ini | 36 -
.../cycle-big/10_228_1.0-SNAPSHOT.ini | 6 -
.../cycle-big/10_229_4.0-SNAPSHOT.ini | 31 -
.../cycle-big/10_229_4.1-SNAPSHOT.ini | 31 -
.../cycle-big/10_22_4.0-SNAPSHOT.ini | 23 -
.../cycle-big/10_22_4.1-SNAPSHOT.ini | 24 -
.../cycle-big/10_230_4.0-SNAPSHOT.ini | 41 -
.../cycle-big/10_230_4.1-SNAPSHOT.ini | 41 -
.../cycle-big/10_231_4.0-SNAPSHOT.ini | 17 -
.../cycle-big/10_231_4.1-SNAPSHOT.ini | 17 -
.../cycle-big/10_232_4.0-SNAPSHOT.ini | 28 -
.../cycle-big/10_232_4.1-SNAPSHOT.ini | 28 -
.../cycle-big/10_233_4.0-SNAPSHOT.ini | 27 -
.../cycle-big/10_233_4.1-SNAPSHOT.ini | 27 -
.../cycle-big/10_235_4.0-SNAPSHOT.ini | 36 -
.../cycle-big/10_235_4.1-SNAPSHOT.ini | 35 -
.../cycle-big/10_236_4.0-SNAPSHOT.ini | 20 -
.../cycle-big/10_236_4.1-SNAPSHOT.ini | 20 -
.../cycle-big/10_237_4.0-SNAPSHOT.ini | 18 -
.../cycle-big/10_237_4.1-SNAPSHOT.ini | 18 -
.../cycle-big/10_238_4.0-SNAPSHOT.ini | 39 -
.../cycle-big/10_238_4.1-SNAPSHOT.ini | 39 -
.../cycle-big/10_241_4.0-SNAPSHOT.ini | 17 -
.../cycle-big/10_241_4.1-SNAPSHOT.ini | 17 -
.../cycle-big/10_242_4.0-SNAPSHOT.ini | 31 -
.../cycle-big/10_242_4.1-SNAPSHOT.ini | 30 -
.../cycle-big/10_243_4.0-SNAPSHOT.ini | 30 -
.../cycle-big/10_243_4.1-SNAPSHOT.ini | 34 -
.../cycle-big/10_246_4.0-SNAPSHOT.ini | 15 -
.../cycle-big/10_246_4.1-SNAPSHOT.ini | 15 -
.../cycle-big/10_247_4.0-SNAPSHOT.ini | 54 -
.../cycle-big/10_247_4.1-SNAPSHOT.ini | 55 -
.../cycle-big/10_251_4.0-SNAPSHOT.ini | 23 -
.../cycle-big/10_251_4.1-SNAPSHOT.ini | 25 -
.../cycle-big/10_252_4.0-SNAPSHOT.ini | 28 -
.../cycle-big/10_252_4.1-SNAPSHOT.ini | 29 -
.../cycle-big/10_254_4.0-SNAPSHOT.ini | 1 -
.../cycle-big/10_254_4.1-SNAPSHOT.ini | 1 -
.../cycle-big/10_255_4.0-SNAPSHOT.ini | 7 -
.../cycle-big/10_255_4.1-SNAPSHOT.ini | 7 -
.../cycle-big/10_257_4.0-SNAPSHOT.ini | 31 -
.../cycle-big/10_257_4.1-SNAPSHOT.ini | 31 -
.../cycle-big/10_258_4.0-SNAPSHOT.ini | 3 -
.../cycle-big/10_258_4.1-SNAPSHOT.ini | 3 -
.../cycle-big/10_261_4.0-SNAPSHOT.ini | 25 -
.../cycle-big/10_261_4.1-SNAPSHOT.ini | 25 -
.../cycle-big/10_262_4.0-SNAPSHOT.ini | 44 -
.../cycle-big/10_262_4.1-SNAPSHOT.ini | 45 -
.../cycle-big/10_263_4.0-SNAPSHOT.ini | 18 -
.../cycle-big/10_263_4.1-SNAPSHOT.ini | 18 -
.../cycle-big/10_265_4.0-SNAPSHOT.ini | 22 -
.../cycle-big/10_265_4.1-SNAPSHOT.ini | 22 -
.../cycle-big/10_266_4.0-SNAPSHOT.ini | 1 -
.../cycle-big/10_266_4.1-SNAPSHOT.ini | 1 -
.../cycle-big/10_268_4.0-SNAPSHOT.ini | 17 -
.../cycle-big/10_268_4.1-SNAPSHOT.ini | 17 -
.../cycle-big/10_269_4.0-SNAPSHOT.ini | 16 -
.../cycle-big/10_269_4.1-SNAPSHOT.ini | 16 -
.../cycle-big/10_271_4.0-SNAPSHOT.ini | 62 -
.../cycle-big/10_271_4.1-SNAPSHOT.ini | 65 -
.../cycle-big/10_272_4.0-SNAPSHOT.ini | 41 -
.../cycle-big/10_272_4.1-SNAPSHOT.ini | 41 -
.../cycle-big/10_275_4.0-SNAPSHOT.ini | 17 -
.../cycle-big/10_275_4.1-SNAPSHOT.ini | 19 -
.../cycle-big/10_276_4.0-SNAPSHOT.ini | 31 -
.../cycle-big/10_276_4.1-SNAPSHOT.ini | 27 -
.../cycle-big/10_277_4.0-SNAPSHOT.ini | 17 -
.../cycle-big/10_279_4.0-SNAPSHOT.ini | 5 -
.../cycle-big/10_280_4.0-SNAPSHOT.ini | 21 -
.../cycle-big/10_281_4.0-SNAPSHOT.ini | 12 -
.../cycle-big/10_284_2.0-SNAPSHOT.ini | 18 -
.../cycle-big/10_284_2.1-SNAPSHOT.ini | 10 -
.../cycle-big/10_285_4.0-SNAPSHOT.ini | 21 -
.../cycle-big/10_285_4.1-SNAPSHOT.ini | 20 -
.../cycle-big/10_286_4.0-SNAPSHOT.ini | 45 -
.../cycle-big/10_286_4.1-SNAPSHOT.ini | 45 -
.../cycle-big/10_288_4.0-SNAPSHOT.ini | 25 -
.../cycle-big/10_288_4.1-SNAPSHOT.ini | 25 -
.../cycle-big/10_291_4.0-SNAPSHOT.ini | 69 -
.../cycle-big/10_291_4.1-SNAPSHOT.ini | 74 -
.../cycle-big/10_292_4.0-SNAPSHOT.ini | 47 -
.../cycle-big/10_292_4.1-SNAPSHOT.ini | 48 -
.../cycle-big/10_294_4.0-SNAPSHOT.ini | 26 -
.../cycle-big/10_294_4.1-SNAPSHOT.ini | 27 -
.../cycle-big/10_295_4.0-SNAPSHOT.ini | 13 -
.../cycle-big/10_295_4.1-SNAPSHOT.ini | 13 -
.../cycle-big/10_297_4.0-SNAPSHOT.ini | 33 -
.../cycle-big/10_297_4.1-SNAPSHOT.ini | 32 -
.../cycle-big/10_298_4.0-SNAPSHOT.ini | 33 -
.../cycle-big/10_298_4.1-SNAPSHOT.ini | 33 -
.../cycle-big/10_301_4.0-SNAPSHOT.ini | 47 -
.../cycle-big/10_301_4.1-SNAPSHOT.ini | 49 -
.../cycle-big/10_303_4.0-SNAPSHOT.ini | 4 -
.../cycle-big/10_303_4.1-SNAPSHOT.ini | 4 -
.../cycle-big/10_305_4.0-SNAPSHOT.ini | 42 -
.../cycle-big/10_305_4.1-SNAPSHOT.ini | 43 -
.../cycle-big/10_306_4.0-SNAPSHOT.ini | 36 -
.../cycle-big/10_306_4.1-SNAPSHOT.ini | 36 -
.../cycle-big/10_307_4.0-SNAPSHOT.ini | 63 -
.../cycle-big/10_307_4.1-SNAPSHOT.ini | 64 -
.../cycle-big/10_315_4.0-SNAPSHOT.ini | 35 -
.../cycle-big/10_315_4.1-SNAPSHOT.ini | 38 -
.../cycle-big/10_316_4.0-SNAPSHOT.ini | 17 -
.../cycle-big/10_316_4.1-SNAPSHOT.ini | 17 -
.../cycle-big/10_317_4.0-SNAPSHOT.ini | 20 -
.../cycle-big/10_317_4.1-SNAPSHOT.ini | 20 -
.../cycle-big/10_318_4.0-SNAPSHOT.ini | 21 -
.../cycle-big/10_318_4.1-SNAPSHOT.ini | 22 -
.../cycle-big/10_319_4.0-SNAPSHOT.ini | 19 -
.../cycle-big/10_319_4.1-SNAPSHOT.ini | 19 -
.../cycle-big/10_320_4.0-SNAPSHOT.ini | 18 -
.../cycle-big/10_320_4.1-SNAPSHOT.ini | 18 -
.../cycle-big/10_321_4.0-SNAPSHOT.ini | 7 -
.../cycle-big/10_321_4.1-SNAPSHOT.ini | 7 -
.../cycle-big/10_322_4.0-SNAPSHOT.ini | 31 -
.../cycle-big/10_322_4.1-SNAPSHOT.ini | 31 -
.../cycle-big/10_325_4.0-SNAPSHOT.ini | 33 -
.../cycle-big/10_325_4.1-SNAPSHOT.ini | 33 -
.../cycle-big/10_327_4.0-SNAPSHOT.ini | 21 -
.../cycle-big/10_327_4.1-SNAPSHOT.ini | 21 -
.../cycle-big/10_328_4.0-SNAPSHOT.ini | 53 -
.../cycle-big/10_328_4.1-SNAPSHOT.ini | 53 -
.../cycle-big/10_329_4.0-SNAPSHOT.ini | 11 -
.../cycle-big/10_329_4.1-SNAPSHOT.ini | 11 -
.../cycle-big/10_330_4.0-SNAPSHOT.ini | 3 -
.../cycle-big/10_330_4.1-SNAPSHOT.ini | 3 -
.../cycle-big/10_331_4.0-SNAPSHOT.ini | 24 -
.../cycle-big/10_331_4.1-SNAPSHOT.ini | 24 -
.../cycle-big/10_332_4.0-SNAPSHOT.ini | 8 -
.../cycle-big/10_332_4.1-SNAPSHOT.ini | 8 -
.../cycle-big/10_333_4.0-SNAPSHOT.ini | 1 -
.../cycle-big/10_333_4.1-SNAPSHOT.ini | 1 -
.../cycle-big/10_334_4.0-SNAPSHOT.ini | 24 -
.../cycle-big/10_334_4.1-SNAPSHOT.ini | 24 -
.../cycle-big/10_335_4.0-SNAPSHOT.ini | 17 -
.../cycle-big/10_335_4.1-SNAPSHOT.ini | 17 -
.../cycle-big/10_336_4.0-SNAPSHOT.ini | 16 -
.../cycle-big/10_336_4.1-SNAPSHOT.ini | 16 -
.../cycle-big/10_337_4.0-SNAPSHOT.ini | 3 -
.../cycle-big/10_337_4.1-SNAPSHOT.ini | 3 -
.../cycle-big/10_343_4.0-SNAPSHOT.ini | 3 -
.../cycle-big/10_343_4.1-SNAPSHOT.ini | 3 -
.../cycle-big/10_345_4.0-SNAPSHOT.ini | 19 -
.../cycle-big/10_345_4.1-SNAPSHOT.ini | 19 -
.../cycle-big/10_346_4.0-SNAPSHOT.ini | 14 -
.../cycle-big/10_346_4.1-SNAPSHOT.ini | 14 -
.../cycle-big/10_347_4.0-SNAPSHOT.ini | 15 -
.../cycle-big/10_347_4.1-SNAPSHOT.ini | 15 -
.../cycle-big/10_349_4.0-SNAPSHOT.ini | 43 -
.../cycle-big/10_349_4.1-SNAPSHOT.ini | 44 -
.../cycle-big/10_350_4.0-SNAPSHOT.ini | 26 -
.../cycle-big/10_350_4.1-SNAPSHOT.ini | 28 -
.../cycle-big/10_351_4.0-SNAPSHOT.ini | 46 -
.../cycle-big/10_351_4.1-SNAPSHOT.ini | 50 -
.../cycle-big/10_356_4.0-SNAPSHOT.ini | 4 -
.../cycle-big/10_356_4.1-SNAPSHOT.ini | 4 -
.../cycle-big/10_357_4.1-SNAPSHOT.ini | 36 -
.../cycle-big/10_359_4.1-SNAPSHOT.ini | 29 -
.../cycle-big/10_360_1.0-SNAPSHOT.ini | 10 -
.../cycle-big/10_361_4.1-SNAPSHOT.ini | 62 -
.../cycle-big/10_362_4.1-SNAPSHOT.ini | 30 -
.../cycle-big/10_363_4.1-SNAPSHOT.ini | 10 -
.../cycle-big/10_364_4.1-SNAPSHOT.ini | 17 -
.../cycle-big/10_366_4.1-SNAPSHOT.ini | 39 -
.../cycle-big/10_42_4.0-SNAPSHOT.ini | 13 -
.../cycle-big/10_42_4.1-SNAPSHOT.ini | 13 -
.../cycle-big/10_43_4.0-SNAPSHOT.ini | 35 -
.../cycle-big/10_43_4.1-SNAPSHOT.ini | 35 -
.../cycle-big/10_62_4.0-SNAPSHOT.ini | 46 -
.../cycle-big/10_62_4.1-SNAPSHOT.ini | 51 -
.../cycle-big/10_72_4.0-SNAPSHOT.ini | 68 -
.../cycle-big/10_72_4.1-SNAPSHOT.ini | 73 -
.../cycle-big/10_80_4.0-SNAPSHOT.ini | 19 -
.../cycle-big/10_80_4.1-SNAPSHOT.ini | 19 -
.../cycle-big/10_81_4.0-SNAPSHOT.ini | 78 -
.../cycle-big/10_81_4.1-SNAPSHOT.ini | 78 -
.../cycle-big/10_90_1.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_100_4.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_101_1.0_sap.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_102_1.busObj.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_103_6403-SNAPSHOT.ini | 1 -
.../cycle-big/1_104_70-SNAPSHOT.ini | 5 -
.../cycle-big/1_105_70-SNAPSHOT.ini | 4 -
.../cycle-big/1_106_3.5.5-SNAPSHOT.ini | 1 -
.../cycle-big/1_107_1.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_108_4.0-SNAPSHOT.ini | 9 -
.../cycle-big/1_109_6.0.5-SNAPSHOT.ini | 6 -
.../cycle-big/1_110_4.0-SNAPSHOT.ini | 7 -
.../cycle-big/1_111_1.0-SNAPSHOT.ini | 3 -
.../cycle-big/1_112_1.0.30-SNAPSHOT.ini | 8 -
.../cycle-big/1_113_2.0-SNAPSHOT.ini | 11 -
.../1_114_2.50.16.busObj.1-SNAPSHOT.ini | 12 -
.../cycle-big/1_114_2.50.28_sap.1-SNAPSHOT.ini | 8 -
.../cycle-big/1_115_4.2.1-SNAPSHOT.ini | 6 -
.../cycle-big/1_116_4.0-SNAPSHOT.ini | 2 -
.../cycle-big/1_118_10.2.2.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_118_10.5.3.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_119_1.0-SNAPSHOT.ini | 2 -
.../cycle-big/1_120_1.0-SNAPSHOT.ini | 9 -
.../cycle-big/1_122_3.1.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_123_3.1.1-SNAPSHOT.ini | 6 -
.../cycle-big/1_124_2.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_125_8.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_125_9.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_125_9.5-SNAPSHOT.ini | 1 -
.../cycle-big/1_126_2.81-SNAPSHOT.ini | 1 -
.../cycle-big/1_126_2.90-SNAPSHOT.ini | 1 -
.../cycle-big/1_126_3.50-SNAPSHOT.ini | 1 -
.../cycle-big/1_127_6.20-SNAPSHOT.ini | 1 -
.../cycle-big/1_127_6.30-SNAPSHOT.ini | 1 -
.../cycle-big/1_128_2006-SNAPSHOT.ini | 1 -
.../cycle-big/1_129_10.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_130_10.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_130_10.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_130_11.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_130_9.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_131_5.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_131_5.3-SNAPSHOT.ini | 1 -
.../cycle-big/1_131_6.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_132_7.7-SNAPSHOT.ini | 1 -
.../cycle-big/1_133_12.5-SNAPSHOT.ini | 1 -
.../cycle-big/1_133_15.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_133_15.5-SNAPSHOT.ini | 1 -
.../cycle-big/1_134_12.6-SNAPSHOT.ini | 1 -
.../cycle-big/1_134_12.7-SNAPSHOT.ini | 1 -
.../cycle-big/1_135_10.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_135_11.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_136_3.04-SNAPSHOT.ini | 1 -
.../cycle-big/1_136_3.06-SNAPSHOT.ini | 1 -
.../cycle-big/1_137_2.2.12-SNAPSHOT.ini | 1 -
.../cycle-big/1_138_7.7.06-SNAPSHOT.ini | 6 -
.../cycle-big/1_13_1.7.0-SNAPSHOT.ini | 5 -
.../cycle-big/1_140_5.5.28-SNAPSHOT.ini | 3 -
.../cycle-big/1_140_6.0.18-SNAPSHOT.ini | 14 -
.../cycle-big/1_140_6.0.24-SNAPSHOT.ini | 14 -
.../cycle-big/1_142_9.1-SNAPSHOT.ini | 2 -
.../cycle-big/1_143_6.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_144_15.0-SNAPSHOT.ini | 2 -
.../cycle-big/1_14_2.5.2-SNAPSHOT.ini | 6 -
.../cycle-big/1_151_3.7.1-SNAPSHOT.ini | 5 -
.../cycle-big/1_153_1.1.1-SNAPSHOT.ini | 6 -
.../cycle-big/1_154_3.3-SNAPSHOT.ini | 1 -
.../cycle-big/1_157_0.0.356_sap.1-SNAPSHOT.ini | 6 -
.../cycle-big/1_158_3.5-SNAPSHOT.ini | 6 -
.../cycle-big/1_159_2.1_03-SNAPSHOT.ini | 7 -
.../cycle-big/1_15_1.36.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_165_11.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_165_7.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_165_7.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_165_9.3-SNAPSHOT.ini | 1 -
.../cycle-big/1_166_720-SNAPSHOT.ini | 2 -
.../cycle-big/1_168_6.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_169_4.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_16_1.8.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_170_10.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_171_8.45-SNAPSHOT.ini | 1 -
.../cycle-big/1_171_8.46-SNAPSHOT.ini | 1 -
.../cycle-big/1_17_1.2.3-SNAPSHOT.ini | 8 -
.../cycle-big/1_181_1.0-SNAPSHOT.ini | 5 -
.../cycle-big/1_182_3.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_183_0.9-SNAPSHOT.ini | 1 -
.../cycle-big/1_184_20080807-SNAPSHOT.ini | 3 -
.../cycle-big/1_185_1.0_sap.1-SNAPSHOT.ini | 15 -
.../cycle-big/1_185_1.0_sap.2-SNAPSHOT.ini | 15 -
.../cycle-big/1_186_4.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_187_4.3-SNAPSHOT.ini | 1 -
.../cycle-big/1_188_1.9-SNAPSHOT.ini | 1 -
.../cycle-big/1_18_5.1.1-SNAPSHOT.ini | 5 -
.../cycle-big/1_18_5.1.1.41-SNAPSHOT.ini | 5 -
.../cycle-big/1_190_2.0.8-SNAPSHOT.ini | 1 -
.../cycle-big/1_191_3.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_192_1.8.0.7-SNAPSHOT.ini | 1 -
.../cycle-big/1_193_0.8.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_194_2.3.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_195_3.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_196_1.2.12-SNAPSHOT.ini | 1 -
.../cycle-big/1_197_5.1.3-SNAPSHOT.ini | 1 -
.../cycle-big/1_198_9.1.3-SNAPSHOT.ini | 1 -
.../cycle-big/1_199_2.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_19_6.3-SNAPSHOT.ini | 7 -
.../cycle-big/1_200_3.1.12-SNAPSHOT.ini | 1 -
.../cycle-big/1_200_5.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_201_3.5.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_204_1.6.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_208_10.0-SNAPSHOT.ini | 4 -
.../cycle-big/1_209_3.51-SNAPSHOT.ini | 1 -
.../cycle-big/1_20_3.3.2-SNAPSHOT.ini | 9 -
.../cycle-big/1_211_1.0-SNAPSHOT.ini | 8 -
.../cycle-big/1_217_1.0_sap.1-SNAPSHOT.ini | 9 -
.../cycle-big/1_218_2.2.1-SNAPSHOT.ini | 2 -
.../cycle-big/1_219_2.3.4-SNAPSHOT.ini | 1 -
.../cycle-big/1_21_3.2.1.2-SNAPSHOT.ini | 6 -
.../cycle-big/1_221_8.9-SNAPSHOT.ini | 1 -
.../cycle-big/1_222_1.1.1-SNAPSHOT.ini | 2 -
.../cycle-big/1_222_beta8-SNAPSHOT.ini | 2 -
.../cycle-big/1_223_7.5-SNAPSHOT.ini | 1 -
.../cycle-big/1_227_7.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_234_1.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_239_3.0-SNAPSHOT.ini | 2 -
.../cycle-big/1_23_1.2.6_sap.1-SNAPSHOT.ini | 6 -
.../cycle-big/1_240_720-SNAPSHOT.ini | 1 -
.../cycle-big/1_244_1.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_245_1.0.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_248_5.5-SNAPSHOT.ini | 6 -
.../cycle-big/1_249_9.2.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_24_1.2.10-SNAPSHOT.ini | 5 -
.../cycle-big/1_250_1.0_sap.1-SNAPSHOT.ini | 11 -
.../cycle-big/1_253_1.3.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_256_3.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_259_2.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_25_0.86-beta1-SNAPSHOT.ini | 1 -
.../cycle-big/1_260_2.2.5-SNAPSHOT.ini | 1 -
.../cycle-big/1_260_2.3.3-SNAPSHOT.ini | 8 -
.../cycle-big/1_264_6.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_267_3.0-SNAPSHOT.ini | 5 -
.../cycle-big/1_26_3.0.1-SNAPSHOT.ini | 7 -
.../cycle-big/1_26_3.8.1-SNAPSHOT.ini | 2 -
.../cycle-big/1_26_4.2.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_270_1.6.5-SNAPSHOT.ini | 6 -
.../cycle-big/1_273_1.0.3-SNAPSHOT.ini | 1 -
.../cycle-big/1_274_1.0.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_278_1.8.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_27_6.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_282_2.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_283_1.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_287_1.1.2.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_287_1.3-SNAPSHOT.ini | 1 -
.../cycle-big/1_289_2.2.0-SNAPSHOT.ini | 7 -
.../cycle-big/1_28_4.1-SNAPSHOT.ini | 6 -
.../cycle-big/1_290_8.0.2.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_293_0.2.5-SNAPSHOT.ini | 1 -
.../cycle-big/1_296_1.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_299_7.20-SNAPSHOT.ini | 1 -
.../cycle-big/1_29_3.0.5-SNAPSHOT.ini | 6 -
.../cycle-big/1_2_5.50-SNAPSHOT.ini | 5 -
.../cycle-big/1_300_7.1.8-SNAPSHOT.ini | 1 -
.../cycle-big/1_302_1.015-SNAPSHOT.ini | 1 -
.../cycle-big/1_304_9.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_308_1.8-SNAPSHOT.ini | 1 -
.../cycle-big/1_309_1.15.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_30_0.7.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_310_4.2.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_311_2.3.0-SNAPSHOT.ini | 5 -
.../cycle-big/1_312_4.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_313_2.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_314_6.0-SNAPSHOT.ini | 9 -
.../cycle-big/1_31_2.2-SNAPSHOT.ini | 2 -
.../cycle-big/1_323_11.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_324_5.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_326_0.9.7-SNAPSHOT.ini | 1 -
.../cycle-big/1_32_720-SNAPSHOT.ini | 7 -
.../cycle-big/1_338_2.8-SNAPSHOT.ini | 8 -
.../cycle-big/1_338_3.0-SNAPSHOT.ini | 8 -
.../cycle-big/1_339_8.0.1p5-SNAPSHOT.ini | 6 -
.../cycle-big/1_33_711-SNAPSHOT.ini | 5 -
.../cycle-big/1_340_2.11-SNAPSHOT.ini | 8 -
.../cycle-big/1_340_2.9-SNAPSHOT.ini | 8 -
.../cycle-big/1_341_0.9-SNAPSHOT.ini | 8 -
.../cycle-big/1_341_1.3-SNAPSHOT.ini | 8 -
.../cycle-big/1_342_1.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_344_1.6.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_348_3.8.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_34_1.13-SNAPSHOT.ini | 1 -
.../cycle-big/1_352_6.1-SNAPSHOT.ini | 2 -
.../cycle-big/1_353_1.2.3-SNAPSHOT.ini | 7 -
.../cycle-big/1_354_1.6.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_355_3.0.5-SNAPSHOT.ini | 1 -
.../cycle-big/1_358_1.1.2-SNAPSHOT.ini | 7 -
.../cycle-big/1_35_1.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_365_3.4.1-SNAPSHOT.ini | 2 -
.../cycle-big/1_367_8.0-SNAPSHOT.ini | 2 -
.../cycle-big/1_368_4.7.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_369_2.4.5-SNAPSHOT.ini | 2 -
.../cycle-big/1_36_2.0-SNAPSHOT.ini | 5 -
.../cycle-big/1_370_6.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_371_822-SNAPSHOT.ini | 6 -
.../cycle-big/1_37_5.5-SNAPSHOT.ini | 1 -
.../cycle-big/1_38_1.3.5-SNAPSHOT.ini | 6 -
.../cycle-big/1_38_1.3.6-SNAPSHOT.ini | 2 -
.../cycle-big/1_39_0.9.8l-SNAPSHOT.ini | 1 -
.../cycle-big/1_3_1.28-SNAPSHOT.ini | 2 -
.../cycle-big/1_40_6.1-SNAPSHOT.ini | 5 -
.../cycle-big/1_41_5.0-SNAPSHOT.ini | 11 -
.../cycle-big/1_44_1.3-SNAPSHOT.ini | 7 -
.../cycle-big/1_44_1.4-SNAPSHOT.ini | 2 -
.../cycle-big/1_45_3.1-SNAPSHOT.ini | 8 -
.../cycle-big/1_46_1.0.2-SNAPSHOT.ini | 2 -
.../cycle-big/1_47_2.6.2-SNAPSHOT.ini | 7 -
.../cycle-big/1_47_2.9.1-SNAPSHOT.ini | 7 -
.../cycle-big/1_48_1.3-SNAPSHOT.ini | 1 -
.../cycle-big/1_49_6.0.5.25-SNAPSHOT.ini | 1 -
.../cycle-big/1_4_2.5.4-SNAPSHOT.ini | 2 -
.../cycle-big/1_50_3.3-SNAPSHOT.ini | 8 -
.../cycle-big/1_50_3.4-SNAPSHOT.ini | 2 -
.../cycle-big/1_50_3.4.1-SNAPSHOT.ini | 3 -
.../cycle-big/1_50_3.5-SNAPSHOT.ini | 7 -
.../cycle-big/1_51_1.6.2-SNAPSHOT.ini | 6 -
.../cycle-big/1_52_1.8-SNAPSHOT.ini | 1 -
.../cycle-big/1_52_2.5-SNAPSHOT.ini | 1 -
.../cycle-big/1_53_2.3.0.677-SNAPSHOT.ini | 1 -
.../cycle-big/1_54_0.1.36-SNAPSHOT.ini | 1 -
.../cycle-big/1_55_3.8.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_55_4.4-SNAPSHOT.ini | 1 -
.../cycle-big/1_55_4.8.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_56_1.2-SNAPSHOT.ini | 1 -
.../cycle-big/1_57_4.0.5-SNAPSHOT.ini | 11 -
.../cycle-big/1_58_2.4.7-SNAPSHOT.ini | 1 -
.../cycle-big/1_59_1.0.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_5_1.5-SNAPSHOT.ini | 5 -
.../cycle-big/1_5_1.6-SNAPSHOT.ini | 5 -
.../cycle-big/1_60_0.2.9-SNAPSHOT.ini | 1 -
.../cycle-big/1_61_1.1-SNAPSHOT.ini | 7 -
.../cycle-big/1_61_1.2.12-SNAPSHOT.ini | 1 -
.../cycle-big/1_63_1.1-SNAPSHOT.ini | 2 -
.../cycle-big/1_63_1.3-SNAPSHOT.ini | 6 -
.../cycle-big/1_64_1.3-SNAPSHOT.ini | 6 -
.../cycle-big/1_65_2.1.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_66_0.11-SNAPSHOT.ini | 6 -
.../cycle-big/1_67_1.6.5-SNAPSHOT.ini | 8 -
.../cycle-big/1_68_3.8.1-SNAPSHOT.ini | 6 -
.../cycle-big/1_69_10.1.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_69_11.1.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_69_8.1.7-SNAPSHOT.ini | 1 -
.../cycle-big/1_69_9.0.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_6_1.5.8-SNAPSHOT.ini | 1 -
.../cycle-big/1_70_9.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_71_1.1.3.8-SNAPSHOT.ini | 13 -
.../cycle-big/1_71_1.1.4.C-SNAPSHOT.ini | 13 -
.../cycle-big/1_73_2.3.1-SNAPSHOT.ini | 13 -
.../cycle-big/1_73_2.4.1-SNAPSHOT.ini | 13 -
.../cycle-big/1_74_3.2.0-SNAPSHOT.ini | 9 -
.../cycle-big/1_74_3.5.0-SNAPSHOT.ini | 9 -
.../cycle-big/1_75_25-SNAPSHOT.ini | 11 -
.../cycle-big/1_75_26-SNAPSHOT.ini | 11 -
.../cycle-big/1_76_1.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_77_1.45-SNAPSHOT.ini | 7 -
.../cycle-big/1_78_2.6-SNAPSHOT.ini | 6 -
.../cycle-big/1_79_0.7.2-SNAPSHOT.ini | 6 -
.../cycle-big/1_7_5.8.8-SNAPSHOT.ini | 8 -
.../cycle-big/1_7_5.8.9-SNAPSHOT.ini | 9 -
.../cycle-big/1_82_9.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_83_1.10.0-SNAPSHOT.ini | 9 -
.../cycle-big/1_84_2.2.0036-SNAPSHOT.ini | 2 -
.../cycle-big/1_85_6.4-SNAPSHOT.ini | 5 -
.../cycle-big/1_85_9.1-SNAPSHOT.ini | 2 -
.../1_85_9.53.busObj.CR.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_86_7.13.2-SNAPSHOT.ini | 6 -
.../cycle-big/1_87_6b-SNAPSHOT.ini | 6 -
.../cycle-big/1_88_3.5-SNAPSHOT.ini | 7 -
.../cycle-big/1_89_2.3-SNAPSHOT.ini | 1 -
.../cycle-big/1_8_2.1.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_8_2.7.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_91_1.5-SNAPSHOT.ini | 1 -
.../cycle-big/1_92_1.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_93_10.0-SNAPSHOT.ini | 5 -
.../cycle-big/1_94_4.0-SNAPSHOT.ini | 2 -
.../cycle-big/1_94_6.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_95_7.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_95_7.1-SNAPSHOT.ini | 1 -
.../cycle-big/1_95_8.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_96_8.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_97_3.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_98_6.0-SNAPSHOT.ini | 1 -
.../cycle-big/1_99_1.0-SNAPSHOT.ini | 6 -
.../cycle-big/1_9_3.1-SNAPSHOT.ini | 4 -
.../resources/artifact-descriptions/cycle.txt | 9 -
.../artifact-descriptions/cycle_a_1.ini | 2 -
.../artifact-descriptions/cycle_b_1.ini | 2 -
.../artifact-descriptions/cycle_c_1.ini | 2 -
.../artifact-descriptions/cycle_root_1.ini | 3 -
.../duplicate_transitive_dependency.ini | 3 -
.../expectedPartialSubtreeOnError.txt | 6 -
.../expectedSubtreeComparisonResult.txt | 7 -
.../artifact-descriptions/gid_aid2_9.ini | 1 -
.../gid_aid2_managedVersion.ini | 1 -
.../artifact-descriptions/gid_aid2_ver.ini | 1 -
.../artifact-descriptions/gid_aid_1.ini | 2 -
.../artifact-descriptions/gid_aid_ver.ini | 2 -
.../managed/duplicate_transitive_managed.ini | 3 -
.../artifact-descriptions/managed/gid_0_ver.ini | 4 -
.../artifact-descriptions/managed/gid_1_ver.ini | 4 -
.../managed/gid_2_managed-by-0.ini | 4 -
.../managed/gid_3_managed-by-1.ini | 4 -
.../managed/gid_4_managed-by-2.ini | 2 -
.../managed/gid_5_managed-by-3.ini | 1 -
.../managed/gid_aid2_managed.ini | 1 -
.../managed/gid_aid_ver.ini | 2 -
.../managed/management-tree.txt | 6 -
.../managed/subtree_comparison_ver.ini | 3 -
.../artifact-descriptions/managed_aid_ver.ini | 5 -
.../missing_description_ver.ini | 2 -
.../selection/managed/all-nodes.txt | 4 -
.../selection/managed/direct-of-root.txt | 1 -
.../managed/gid_direct-of-root_ver.ini | 2 -
.../selection/managed/gid_root_ver.ini | 2 -
.../managed/gid_transitive-of-root_ver.ini | 2 -
...gid_transitive-of-transitive-of-root_ver.ini | 1 -
.../selection/managed/transitive-of-root.txt | 2 -
.../transitive-of-transitive-of-root.txt | 3 -
.../optional/gid_direct-of-root_ver.ini | 2 -
.../selection/optional/gid_root_ver.ini | 2 -
.../optional/gid_transitive-of-root_ver.ini | 1 -
.../selection/optional/no-selector-tree.txt | 3 -
.../optional/optional-exclusion-tree.txt | 2 -
.../selection/scope/all-nodes.txt | 4 -
.../selection/scope/gid_direct-of-root_ver.ini | 2 -
.../selection/scope/gid_root_ver.ini | 2 -
.../scope/gid_transitive-of-root_ver.ini | 2 -
...gid_transitive-of-transitive-of-root_ver.ini | 1 -
.../transitive-of-root-scope-exclusion-tree.txt | 2 -
...ive-of-transitive-of-root-exclusion-tree.txt | 3 -
.../subtree_comparison_error.ini | 3 -
.../subtree_comparison_ver.ini | 3 -
.../versionless-cycle/test_a_1.ini | 2 -
.../versionless-cycle/test_a_2.ini | 2 -
.../versionless-cycle/test_b_2.ini | 2 -
aether-spi/pom.xml | 55 -
.../aether/spi/connector/ArtifactDownload.java | 264 ----
.../aether/spi/connector/ArtifactTransfer.java | 115 --
.../aether/spi/connector/ArtifactUpload.java | 98 --
.../aether/spi/connector/MetadataDownload.java | 186 ---
.../aether/spi/connector/MetadataTransfer.java | 115 --
.../aether/spi/connector/MetadataUpload.java | 98 --
.../spi/connector/RepositoryConnector.java | 77 -
.../connector/RepositoryConnectorFactory.java | 60 -
.../eclipse/aether/spi/connector/Transfer.java | 93 --
.../spi/connector/checksum/ChecksumPolicy.java | 142 --
.../checksum/ChecksumPolicyProvider.java | 58 -
.../spi/connector/checksum/package-info.java | 25 -
.../spi/connector/layout/RepositoryLayout.java | 181 ---
.../layout/RepositoryLayoutFactory.java | 57 -
.../layout/RepositoryLayoutProvider.java | 47 -
.../spi/connector/layout/package-info.java | 26 -
.../aether/spi/connector/package-info.java | 30 -
.../transport/AbstractTransporter.java | 260 ----
.../aether/spi/connector/transport/GetTask.java | 266 ----
.../spi/connector/transport/PeekTask.java | 50 -
.../aether/spi/connector/transport/PutTask.java | 157 ---
.../connector/transport/TransportListener.java | 71 -
.../spi/connector/transport/TransportTask.java | 89 --
.../spi/connector/transport/Transporter.java | 104 --
.../connector/transport/TransporterFactory.java | 57 -
.../transport/TransporterProvider.java | 47 -
.../spi/connector/transport/package-info.java | 26 -
.../eclipse/aether/spi/io/FileProcessor.java | 115 --
.../org/eclipse/aether/spi/io/package-info.java | 24 -
.../LocalRepositoryManagerFactory.java | 58 -
.../aether/spi/localrepo/package-info.java | 24 -
.../org/eclipse/aether/spi/locator/Service.java | 38 -
.../aether/spi/locator/ServiceLocator.java | 57 -
.../aether/spi/locator/package-info.java | 31 -
.../java/org/eclipse/aether/spi/log/Logger.java | 74 -
.../eclipse/aether/spi/log/LoggerFactory.java | 36 -
.../org/eclipse/aether/spi/log/NullLogger.java | 55 -
.../aether/spi/log/NullLoggerFactory.java | 71 -
.../eclipse/aether/spi/log/package-info.java | 28 -
aether-spi/src/site/site.xml | 36 -
.../spi/connector/layout/ChecksumTest.java | 57 -
aether-test-util/pom.xml | 59 -
.../internal/test/util/ArtifactDefinition.java | 140 --
.../internal/test/util/ArtifactDescription.java | 70 -
.../test/util/DependencyGraphParser.java | 565 --------
.../test/util/IniArtifactDataReader.java | 391 ------
.../test/util/IniArtifactDescriptorReader.java | 125 --
.../aether/internal/test/util/NodeBuilder.java | 164 ---
.../internal/test/util/NodeDefinition.java | 144 --
.../util/TestDependencyCollectionContext.java | 78 -
...estDependencyGraphTransformationContext.java | 80 --
.../internal/test/util/TestFileProcessor.java | 223 ---
.../internal/test/util/TestFileUtils.java | 331 -----
.../test/util/TestLocalRepositoryManager.java | 159 ---
.../internal/test/util/TestLoggerFactory.java | 108 --
.../aether/internal/test/util/TestUtils.java | 92 --
.../aether/internal/test/util/TestVersion.java | 88 --
.../test/util/TestVersionConstraint.java | 131 --
.../test/util/TestVersionFilterContext.java | 93 --
.../internal/test/util/TestVersionRange.java | 247 ----
.../internal/test/util/TestVersionScheme.java | 120 --
.../aether/internal/test/util/package-info.java | 26 -
aether-test-util/src/site/site.xml | 36 -
.../test/util/DependencyGraphParserTest.java | 300 ----
.../test/util/IniArtifactDataReaderTest.java | 232 ---
.../util/IniArtifactDescriptorReaderTest.java | 152 --
.../internal/test/util/NodeDefinitionTest.java | 156 --
.../test/util/ArtifactDataReaderTest.ini | 21 -
.../aether/internal/test/util/gid_aid_1.ini | 18 -
.../aether/internal/test/util/gid_aid_ver.ini | 2 -
.../internal/test/util/testResourceLoading.txt | 3 -
aether-transport-classpath/pom.xml | 89 --
.../classpath/ClasspathTransporter.java | 149 --
.../classpath/ClasspathTransporterFactory.java | 116 --
.../classpath/ResourceNotFoundException.java | 37 -
.../transport/classpath/package-info.java | 24 -
aether-transport-classpath/src/site/site.xml | 36 -
.../classpath/ClasspathTransporterTest.java | 411 ------
.../classpath/RecordingTransportListener.java | 73 -
.../src/test/resources/file.txt | 1 -
.../src/test/resources/repo space/file.txt | 1 -
.../src/test/resources/repository/empty.txt | 0
.../src/test/resources/repository/file.txt | 1 -
.../test/resources/repository/some space.txt | 1 -
aether-transport-file/pom.xml | 89 --
.../aether/transport/file/FileTransporter.java | 127 --
.../transport/file/FileTransporterFactory.java | 104 --
.../aether/transport/file/PathUtils.java | 138 --
.../file/ResourceNotFoundException.java | 37 -
.../aether/transport/file/package-info.java | 24 -
aether-transport-file/src/site/site.xml | 36 -
.../transport/file/FileTransporterTest.java | 554 --------
.../file/RecordingTransportListener.java | 73 -
aether-transport-http/pom.xml | 118 --
.../aether/transport/http/AuthSchemePool.java | 71 -
.../http/DeferredCredentialsProvider.java | 194 ---
.../http/DemuxCredentialsProvider.java | 76 -
.../aether/transport/http/GlobalState.java | 215 ---
.../aether/transport/http/HttpMkCol.java | 44 -
.../aether/transport/http/HttpTransporter.java | 651 ---------
.../transport/http/HttpTransporterFactory.java | 105 --
.../aether/transport/http/LocalState.java | 184 ---
.../aether/transport/http/SharingAuthCache.java | 106 --
.../transport/http/SharingHttpContext.java | 88 --
.../aether/transport/http/SslConfig.java | 117 --
.../aether/transport/http/SslSocketFactory.java | 87 --
.../eclipse/aether/transport/http/UriUtils.java | 84 --
.../http/X509HostnameVerifierAdapter.java | 81 --
.../aether/transport/http/package-info.java | 25 -
aether-transport-http/src/site/site.xml | 36 -
.../aether/transport/http/HttpServer.java | 626 ---------
.../transport/http/HttpTransporterTest.java | 1309 -----------------
.../http/RecordingTransportListener.java | 73 -
.../aether/transport/http/UriUtilsTest.java | 137 --
.../src/test/resources/logback.xml | 35 -
.../src/test/resources/ssl/README.txt | 5 -
.../src/test/resources/ssl/client-store | Bin 2244 -> 0 bytes
.../src/test/resources/ssl/server-store | Bin 2246 -> 0 bytes
aether-transport-wagon/pom.xml | 125 --
.../wagon/PlexusWagonConfigurator.java | 117 --
.../transport/wagon/PlexusWagonProvider.java | 85 --
.../internal/transport/wagon/package-info.java | 25 -
.../wagon/WagonCancelledException.java | 45 -
.../transport/wagon/WagonConfigurator.java | 40 -
.../aether/transport/wagon/WagonProvider.java | 49 -
.../transport/wagon/WagonTransferListener.java | 72 -
.../transport/wagon/WagonTransporter.java | 700 ---------
.../wagon/WagonTransporterFactory.java | 139 --
.../aether/transport/wagon/package-info.java | 24 -
aether-transport-wagon/src/site/site.xml | 36 -
.../wagon/AbstractWagonTransporterTest.java | 534 -------
.../aether/transport/wagon/Configurable.java | 31 -
.../aether/transport/wagon/MemStreamWagon.java | 143 --
.../aether/transport/wagon/MemWagon.java | 232 ---
.../aether/transport/wagon/MemWagonUtils.java | 113 --
.../transport/wagon/PlexusSupportTest.java | 50 -
.../wagon/RecordingTransportListener.java | 73 -
.../wagon/StreamWagonTransporterTest.java | 36 -
.../transport/wagon/WagonTransporterTest.java | 36 -
.../src/test/resources/logback-test.xml | 36 -
aether-util/pom.xml | 59 -
.../org/eclipse/aether/util/ChecksumUtils.java | 205 ---
.../org/eclipse/aether/util/ConfigUtils.java | 398 ------
.../org/eclipse/aether/util/StringUtils.java | 44 -
.../aether/util/artifact/ArtifactIdUtils.java | 269 ----
.../artifact/DefaultArtifactTypeRegistry.java | 51 -
.../util/artifact/DelegatingArtifact.java | 169 ---
.../aether/util/artifact/JavaScopes.java | 45 -
.../artifact/OverlayArtifactTypeRegistry.java | 70 -
.../artifact/SimpleArtifactTypeRegistry.java | 71 -
.../aether/util/artifact/SubArtifact.java | 233 ---
.../aether/util/artifact/package-info.java | 24 -
.../concurrency/RunnableErrorForwarder.java | 152 --
.../util/concurrency/WorkerThreadFactory.java | 76 -
.../aether/util/concurrency/package-info.java | 24 -
.../filter/AbstractPatternDependencyFilter.java | 232 ---
.../aether/util/filter/AndDependencyFilter.java | 126 --
.../util/filter/DependencyFilterUtils.java | 199 ---
.../util/filter/ExclusionsDependencyFilter.java | 106 --
.../aether/util/filter/NotDependencyFilter.java | 81 --
.../aether/util/filter/OrDependencyFilter.java | 124 --
.../PatternExclusionsDependencyFilter.java | 96 --
.../PatternInclusionsDependencyFilter.java | 89 --
.../util/filter/ScopeDependencyFilter.java | 118 --
.../aether/util/filter/package-info.java | 24 -
.../graph/manager/ClassicDependencyManager.java | 327 -----
.../graph/manager/DependencyManagerUtils.java | 111 --
.../graph/manager/NoopDependencyManager.java | 77 -
.../manager/TransitiveDependencyManager.java | 321 -----
.../aether/util/graph/manager/package-info.java | 24 -
.../graph/selector/AndDependencySelector.java | 206 ---
.../selector/ExclusionDependencySelector.java | 227 ---
.../selector/OptionalDependencySelector.java | 89 --
.../graph/selector/ScopeDependencySelector.java | 151 --
.../selector/StaticDependencySelector.java | 79 --
.../util/graph/selector/package-info.java | 24 -
.../ChainedDependencyGraphTransformer.java | 85 --
.../graph/transformer/ConflictIdSorter.java | 370 -----
.../util/graph/transformer/ConflictMarker.java | 315 -----
.../graph/transformer/ConflictResolver.java | 1327 ------------------
.../JavaDependencyContextRefiner.java | 90 --
.../transformer/JavaDependencyMediator.java | 389 -----
.../graph/transformer/JavaScopeDeriver.java | 76 -
.../graph/transformer/JavaScopeSelector.java | 107 --
.../transformer/NearestVersionSelector.java | 185 ---
.../NoopDependencyGraphTransformer.java | 53 -
.../transformer/SimpleOptionalitySelector.java | 70 -
.../transformer/TransformationContextKeys.java | 68 -
.../util/graph/transformer/package-info.java | 24 -
.../graph/traverser/AndDependencyTraverser.java | 207 ---
.../graph/traverser/FatArtifactTraverser.java | 76 -
.../traverser/StaticDependencyTraverser.java | 79 --
.../util/graph/traverser/package-info.java | 24 -
.../graph/version/ChainedVersionFilter.java | 185 ---
.../ContextualSnapshotVersionFilter.java | 109 --
.../graph/version/HighestVersionFilter.java | 80 --
.../graph/version/SnapshotVersionFilter.java | 80 --
.../aether/util/graph/version/package-info.java | 24 -
.../AbstractDepthFirstNodeListGenerator.java | 186 ---
.../graph/visitor/CloningDependencyVisitor.java | 114 --
.../visitor/FilteringDependencyVisitor.java | 114 --
.../visitor/PathRecordingDependencyVisitor.java | 137 --
.../visitor/PostorderNodeListGenerator.java | 76 -
.../visitor/PreorderNodeListGenerator.java | 62 -
.../aether/util/graph/visitor/Stack.java | 86 --
.../graph/visitor/TreeDependencyVisitor.java | 85 --
.../aether/util/graph/visitor/package-info.java | 24 -
.../listener/ChainedRepositoryListener.java | 437 ------
.../util/listener/ChainedTransferListener.java | 234 ---
.../aether/util/listener/package-info.java | 24 -
.../org/eclipse/aether/util/package-info.java | 24 -
.../util/repository/AuthenticationBuilder.java | 231 ---
.../util/repository/ChainedAuthentication.java | 116 --
.../util/repository/ChainedWorkspaceReader.java | 164 ---
.../repository/ComponentAuthentication.java | 98 --
.../ConservativeAuthenticationSelector.java | 61 -
.../repository/ConservativeProxySelector.java | 60 -
.../DefaultAuthenticationSelector.java | 64 -
.../util/repository/DefaultMirrorSelector.java | 300 ----
.../util/repository/DefaultProxySelector.java | 188 ---
.../util/repository/JreProxySelector.java | 182 ---
.../util/repository/SecretAuthentication.java | 181 ---
.../SimpleArtifactDescriptorPolicy.java | 61 -
.../repository/SimpleResolutionErrorPolicy.java | 82 --
.../util/repository/StringAuthentication.java | 94 --
.../aether/util/repository/package-info.java | 24 -
.../aether/util/version/GenericVersion.java | 464 ------
.../util/version/GenericVersionConstraint.java | 131 --
.../util/version/GenericVersionRange.java | 242 ----
.../util/version/GenericVersionScheme.java | 149 --
.../aether/util/version/UnionVersionRange.java | 181 ---
.../aether/util/version/package-info.java | 24 -
aether-util/src/site/site.xml | 36 -
.../eclipse/aether/util/ChecksumUtilTest.java | 185 ---
.../eclipse/aether/util/ConfigUtilsTest.java | 247 ----
.../eclipse/aether/util/StringUtilsTest.java | 41 -
.../util/artifact/ArtifactIdUtilsTest.java | 201 ---
.../aether/util/artifact/SubArtifactTest.java | 158 ---
.../filter/AbstractDependencyFilterTest.java | 55 -
.../util/filter/AndDependencyFilterTest.java | 92 --
.../util/filter/DependencyFilterUtilsTest.java | 141 --
.../filter/ExclusionDependencyFilterTest.java | 60 -
.../util/filter/OrDependencyFilterTest.java | 87 --
.../PatternExclusionsDependencyFilterTest.java | 187 ---
.../PatternInclusionsDependencyFilterTest.java | 184 ---
.../util/filter/ScopeDependencyFilterTest.java | 71 -
.../manager/ClassicDependencyManagerTest.java | 82 --
.../selector/AndDependencySelectorTest.java | 153 --
.../AbstractDependencyGraphTransformerTest.java | 131 --
.../graph/transformer/ConflictIdSorterTest.java | 129 --
.../graph/transformer/ConflictMarkerTest.java | 122 --
.../JavaDependencyContextRefinerTest.java | 117 --
.../transformer/JavaScopeSelectorTest.java | 261 ----
.../transformer/NearestVersionSelectorTest.java | 244 ----
.../util/graph/transformer/RootQueueTest.java | 106 --
.../graph/transformer/SimpleConflictMarker.java | 80 --
.../SimpleOptionalitySelectorTest.java | 83 --
.../traverser/AndDependencyTraverserTest.java | 154 --
.../traverser/FatArtifactTraverserTest.java | 76 -
.../StaticDependencyTraverserTest.java | 70 -
.../versions/AbstractVersionFilterTest.java | 96 --
.../versions/ChainedVersionFilterTest.java | 85 --
.../ContextualSnapshotVersionFilterTest.java | 72 -
.../versions/HighestVersionFilterTest.java | 57 -
.../versions/SnapshotVersionFilterTest.java | 57 -
.../visitor/FilteringDependencyVisitorTest.java | 66 -
.../PathRecordingDependencyVisitorTest.java | 147 --
.../visitor/PostorderNodeListGeneratorTest.java | 73 -
.../visitor/PreorderNodeListGeneratorTest.java | 73 -
.../visitor/TreeDependencyVisitorTest.java | 71 -
.../listener/ChainedRepositoryListenerTest.java | 46 -
.../listener/ChainedTransferListenerTest.java | 46 -
.../repository/ComponentAuthenticationTest.java | 106 --
.../repository/DefaultMirrorSelectorTest.java | 194 ---
.../repository/DefaultProxySelectorTest.java | 177 ---
.../util/repository/JreProxySelectorTest.java | 184 ---
.../repository/SecretAuthenticationTest.java | 109 --
.../repository/StringAuthenticationTest.java | 101 --
.../util/version/AbstractVersionTest.java | 79 --
.../util/version/GenericVersionRangeTest.java | 167 ---
.../util/version/GenericVersionSchemeTest.java | 113 --
.../aether/util/version/GenericVersionTest.java | 345 -----
.../util/version/UnionVersionRangeTest.java | 105 --
.../transformer/conflict-id-sorter/cycle.txt | 5 -
.../transformer/conflict-id-sorter/cycles.txt | 14 -
.../conflict-id-sorter/no-conflicts.txt | 5 -
.../transformer/conflict-id-sorter/simple.txt | 5 -
.../transformer/conflict-marker/relocation1.txt | 3 -
.../transformer/conflict-marker/relocation2.txt | 3 -
.../transformer/conflict-marker/relocation3.txt | 4 -
.../transformer/conflict-marker/simple.txt | 3 -
.../conflict-direct-dep.txt | 4 -
.../optionality-selector/conflict.txt | 5 -
.../transformer/optionality-selector/derive.txt | 5 -
.../conflict-and-inheritance.txt | 10 -
.../conflicting-direct-nodes.txt | 3 -
.../transformer/scope-calculator/cycle-a.txt | 8 -
.../transformer/scope-calculator/cycle-b.txt | 7 -
.../transformer/scope-calculator/cycle-c.txt | 10 -
.../transformer/scope-calculator/cycle-d.txt | 7 -
.../scope-calculator/direct-nodes-winning.txt | 10 -
.../direct-with-conflict-and-inheritance.txt | 11 -
.../scope-calculator/dueling-scopes.txt | 7 -
.../scope-calculator/inheritance.txt | 3 -
.../scope-calculator/multiple-inheritance.txt | 5 -
.../transformer/scope-calculator/system-1.txt | 3 -
.../transformer/scope-calculator/system-2.txt | 3 -
.../version-resolver/conflict-id-cycle.txt | 7 -
.../transformer/version-resolver/cycle.txt | 8 -
.../version-resolver/dead-conflict-group.txt | 5 -
.../transformer/version-resolver/loop.txt | 2 -
.../nearest-underneath-loser-a.txt | 9 -
.../nearest-underneath-loser-b.txt | 9 -
.../version-resolver/overlapping-cycles.txt | 8 -
.../version-resolver/range-backtracking.txt | 10 -
.../transformer/version-resolver/ranges.txt | 7 -
.../version-resolver/scope-vs-version.txt | 14 -
.../version-resolver/sibling-versions.txt | 7 -
.../version-resolver/soft-vs-range.txt | 5 -
.../version-resolver/unsolvable-with-cycle.txt | 10 -
.../transformer/version-resolver/unsolvable.txt | 5 -
.../transformer/version-resolver/verbose.txt | 8 -
.../resources/visitor/filtering/parents.txt | 6 -
.../resources/visitor/ordered-list/cycles.txt | 7 -
.../resources/visitor/ordered-list/simple.txt | 5 -
.../resources/visitor/path-recorder/cycle.txt | 7 -
.../resources/visitor/path-recorder/nested.txt | 4 -
.../resources/visitor/path-recorder/parents.txt | 6 -
.../resources/visitor/path-recorder/simple.txt | 4 -
.../src/test/resources/visitor/tree/cycles.txt | 6 -
maven-resolver-api/pom.xml | 51 +
...stractForwardingRepositorySystemSession.java | 189 +++
.../aether/AbstractRepositoryListener.java | 112 ++
.../eclipse/aether/ConfigurationProperties.java | 174 +++
.../eclipse/aether/DefaultRepositoryCache.java | 52 +
.../aether/DefaultRepositorySystemSession.java | 834 +++++++++++
.../org/eclipse/aether/DefaultSessionData.java | 91 ++
.../org/eclipse/aether/RepositoryCache.java | 59 +
.../org/eclipse/aether/RepositoryEvent.java | 442 ++++++
.../org/eclipse/aether/RepositoryException.java | 72 +
.../org/eclipse/aether/RepositoryListener.java | 222 +++
.../org/eclipse/aether/RepositorySystem.java | 277 ++++
.../eclipse/aether/RepositorySystemSession.java | 263 ++++
.../java/org/eclipse/aether/RequestTrace.java | 117 ++
.../java/org/eclipse/aether/SessionData.java | 66 +
.../java/org/eclipse/aether/SyncContext.java | 76 +
.../aether/artifact/AbstractArtifact.java | 230 +++
.../org/eclipse/aether/artifact/Artifact.java | 143 ++
.../aether/artifact/ArtifactProperties.java | 74 +
.../eclipse/aether/artifact/ArtifactType.java | 67 +
.../aether/artifact/ArtifactTypeRegistry.java | 38 +
.../aether/artifact/DefaultArtifact.java | 285 ++++
.../aether/artifact/DefaultArtifactType.java | 146 ++
.../eclipse/aether/artifact/package-info.java | 24 +
.../aether/collection/CollectRequest.java | 356 +++++
.../aether/collection/CollectResult.java | 159 +++
.../collection/DependencyCollectionContext.java | 75 +
.../DependencyCollectionException.java | 111 ++
.../DependencyGraphTransformationContext.java | 58 +
.../collection/DependencyGraphTransformer.java | 51 +
.../aether/collection/DependencyManagement.java | 177 +++
.../aether/collection/DependencyManager.java | 57 +
.../aether/collection/DependencySelector.java | 58 +
.../aether/collection/DependencyTraverser.java | 59 +
.../UnsolvableVersionConflictException.java | 142 ++
.../aether/collection/VersionFilter.java | 135 ++
.../eclipse/aether/collection/package-info.java | 25 +
.../aether/deployment/DeployRequest.java | 202 +++
.../eclipse/aether/deployment/DeployResult.java | 174 +++
.../aether/deployment/DeploymentException.java | 52 +
.../eclipse/aether/deployment/package-info.java | 24 +
.../aether/graph/DefaultDependencyNode.java | 399 ++++++
.../org/eclipse/aether/graph/Dependency.java | 330 +++++
.../eclipse/aether/graph/DependencyCycle.java | 53 +
.../eclipse/aether/graph/DependencyFilter.java | 42 +
.../eclipse/aether/graph/DependencyNode.java | 250 ++++
.../eclipse/aether/graph/DependencyVisitor.java | 47 +
.../org/eclipse/aether/graph/Exclusion.java | 131 ++
.../org/eclipse/aether/graph/package-info.java | 24 +
.../aether/installation/InstallRequest.java | 177 +++
.../aether/installation/InstallResult.java | 174 +++
.../installation/InstallationException.java | 52 +
.../aether/installation/package-info.java | 24 +
.../aether/metadata/AbstractMetadata.java | 160 +++
.../aether/metadata/DefaultMetadata.java | 192 +++
.../aether/metadata/MergeableMetadata.java | 51 +
.../org/eclipse/aether/metadata/Metadata.java | 138 ++
.../eclipse/aether/metadata/package-info.java | 24 +
.../java/org/eclipse/aether/package-info.java | 24 +
.../aether/repository/ArtifactRepository.java | 45 +
.../aether/repository/Authentication.java | 55 +
.../repository/AuthenticationContext.java | 389 +++++
.../aether/repository/AuthenticationDigest.java | 219 +++
.../repository/AuthenticationSelector.java | 38 +
.../repository/LocalArtifactRegistration.java | 149 ++
.../aether/repository/LocalArtifactRequest.java | 145 ++
.../aether/repository/LocalArtifactResult.java | 147 ++
.../repository/LocalMetadataRegistration.java | 148 ++
.../aether/repository/LocalMetadataRequest.java | 133 ++
.../aether/repository/LocalMetadataResult.java | 114 ++
.../aether/repository/LocalRepository.java | 132 ++
.../repository/LocalRepositoryManager.java | 127 ++
.../aether/repository/MirrorSelector.java | 39 +
.../NoLocalRepositoryManagerException.java | 102 ++
.../org/eclipse/aether/repository/Proxy.java | 158 +++
.../aether/repository/ProxySelector.java | 38 +
.../aether/repository/RemoteRepository.java | 582 ++++++++
.../aether/repository/RepositoryPolicy.java | 161 +++
.../aether/repository/WorkspaceReader.java | 58 +
.../aether/repository/WorkspaceRepository.java | 122 ++
.../eclipse/aether/repository/package-info.java | 24 +
.../resolution/ArtifactDescriptorException.java | 91 ++
.../resolution/ArtifactDescriptorPolicy.java | 61 +
.../ArtifactDescriptorPolicyRequest.java | 106 ++
.../resolution/ArtifactDescriptorRequest.java | 190 +++
.../resolution/ArtifactDescriptorResult.java | 466 ++++++
.../aether/resolution/ArtifactRequest.java | 232 +++
.../resolution/ArtifactResolutionException.java | 173 +++
.../aether/resolution/ArtifactResult.java | 188 +++
.../aether/resolution/DependencyRequest.java | 187 +++
.../DependencyResolutionException.java | 83 ++
.../aether/resolution/DependencyResult.java | 195 +++
.../aether/resolution/MetadataRequest.java | 232 +++
.../aether/resolution/MetadataResult.java | 166 +++
.../resolution/ResolutionErrorPolicy.java | 82 ++
.../ResolutionErrorPolicyRequest.java | 107 ++
.../aether/resolution/VersionRangeRequest.java | 190 +++
.../VersionRangeResolutionException.java | 105 ++
.../aether/resolution/VersionRangeResult.java | 240 ++++
.../aether/resolution/VersionRequest.java | 190 +++
.../resolution/VersionResolutionException.java | 105 ++
.../aether/resolution/VersionResult.java | 150 ++
.../eclipse/aether/resolution/package-info.java | 24 +
.../transfer/AbstractTransferListener.java | 64 +
.../transfer/ArtifactNotFoundException.java | 104 ++
.../transfer/ArtifactTransferException.java | 140 ++
.../transfer/ChecksumFailureException.java | 131 ++
.../transfer/MetadataNotFoundException.java | 106 ++
.../transfer/MetadataTransferException.java | 140 ++
.../NoRepositoryConnectorException.java | 103 ++
.../transfer/NoRepositoryLayoutException.java | 102 ++
.../aether/transfer/NoTransporterException.java | 102 ++
.../transfer/RepositoryOfflineException.java | 79 ++
.../transfer/TransferCancelledException.java | 60 +
.../eclipse/aether/transfer/TransferEvent.java | 432 ++++++
.../aether/transfer/TransferListener.java | 100 ++
.../aether/transfer/TransferResource.java | 201 +++
.../eclipse/aether/transfer/package-info.java | 25 +
.../InvalidVersionSpecificationException.java | 80 ++
.../org/eclipse/aether/version/Version.java | 36 +
.../aether/version/VersionConstraint.java | 54 +
.../eclipse/aether/version/VersionRange.java | 131 ++
.../eclipse/aether/version/VersionScheme.java | 59 +
.../eclipse/aether/version/package-info.java | 24 +
maven-resolver-api/src/site/site.xml | 36 +
...ctForwardingRepositorySystemSessionTest.java | 44 +
.../aether/AbstractRepositoryListenerTest.java | 46 +
.../aether/DefaultRepositoryCacheTest.java | 112 ++
.../DefaultRepositorySystemSessionTest.java | 127 ++
.../eclipse/aether/DefaultSessionDataTest.java | 137 ++
.../eclipse/aether/RepositoryExceptionTest.java | 228 +++
.../org/eclipse/aether/RequestTraceTest.java | 62 +
.../aether/artifact/DefaultArtifactTest.java | 188 +++
.../eclipse/aether/graph/DependencyTest.java | 73 +
.../repository/AuthenticationContextTest.java | 170 +++
.../repository/AuthenticationDigestTest.java | 150 ++
.../repository/RemoteRepositoryBuilderTest.java | 185 +++
.../aether/repository/RemoteRepositoryTest.java | 96 ++
.../transfer/AbstractTransferListenerTest.java | 46 +
.../aether/transfer/TransferEventTest.java | 85 ++
maven-resolver-connector-basic/pom.xml | 89 ++
.../basic/ArtifactTransportListener.java | 58 +
.../basic/BasicRepositoryConnector.java | 595 ++++++++
.../basic/BasicRepositoryConnectorFactory.java | 193 +++
.../connector/basic/ChecksumCalculator.java | 217 +++
.../connector/basic/ChecksumValidator.java | 265 ++++
.../basic/MetadataTransportListener.java | 58 +
.../aether/connector/basic/PartialFile.java | 305 ++++
.../basic/TransferTransportListener.java | 141 ++
.../aether/connector/basic/package-info.java | 24 +
.../src/site/site.xml | 36 +
.../connector/basic/ChecksumCalculatorTest.java | 170 +++
.../connector/basic/ChecksumValidatorTest.java | 465 ++++++
.../aether/connector/basic/PartialFileTest.java | 327 +++++
maven-resolver-impl/pom.xml | 102 ++
.../org/eclipse/aether/impl/AetherModule.java | 35 +
.../aether/impl/ArtifactDescriptorReader.java | 51 +
.../eclipse/aether/impl/ArtifactResolver.java | 73 +
.../aether/impl/DefaultServiceLocator.java | 347 +++++
.../aether/impl/DependencyCollector.java | 59 +
.../java/org/eclipse/aether/impl/Deployer.java | 51 +
.../java/org/eclipse/aether/impl/Installer.java | 51 +
.../aether/impl/LocalRepositoryProvider.java | 54 +
.../eclipse/aether/impl/MetadataGenerator.java | 60 +
.../aether/impl/MetadataGeneratorFactory.java | 60 +
.../eclipse/aether/impl/MetadataResolver.java | 54 +
.../eclipse/aether/impl/OfflineController.java | 53 +
.../aether/impl/RemoteRepositoryManager.java | 72 +
.../impl/RepositoryConnectorProvider.java | 49 +
.../aether/impl/RepositoryEventDispatcher.java | 41 +
.../eclipse/aether/impl/SyncContextFactory.java | 46 +
.../org/eclipse/aether/impl/UpdateCheck.java | 285 ++++
.../eclipse/aether/impl/UpdateCheckManager.java | 70 +
.../aether/impl/UpdatePolicyAnalyzer.java | 56 +
.../aether/impl/VersionRangeResolver.java | 55 +
.../eclipse/aether/impl/VersionResolver.java | 49 +
.../eclipse/aether/impl/guice/AetherModule.java | 213 +++
.../eclipse/aether/impl/guice/package-info.java | 24 +
.../org/eclipse/aether/impl/package-info.java | 30 +
.../internal/impl/AbstractChecksumPolicy.java | 74 +
.../internal/impl/ArtifactRequestBuilder.java | 68 +
.../aether/internal/impl/CacheUtils.java | 141 ++
.../impl/CachingArtifactTypeRegistry.java | 69 +
.../eclipse/aether/internal/impl/DataPool.java | 420 ++++++
.../internal/impl/DefaultArtifactResolver.java | 773 ++++++++++
.../impl/DefaultChecksumPolicyProvider.java | 121 ++
.../DefaultDependencyCollectionContext.java | 86 ++
.../impl/DefaultDependencyCollector.java | 876 ++++++++++++
.../internal/impl/DefaultDependencyCycle.java | 87 ++
...ultDependencyGraphTransformationContext.java | 80 ++
.../aether/internal/impl/DefaultDeployer.java | 663 +++++++++
.../internal/impl/DefaultFileProcessor.java | 261 ++++
.../aether/internal/impl/DefaultInstaller.java | 391 ++++++
.../impl/DefaultLocalRepositoryProvider.java | 162 +++
.../internal/impl/DefaultMetadataResolver.java | 658 +++++++++
.../internal/impl/DefaultOfflineController.java | 137 ++
.../impl/DefaultRemoteRepositoryManager.java | 398 ++++++
.../DefaultRepositoryConnectorProvider.java | 187 +++
.../impl/DefaultRepositoryEventDispatcher.java | 206 +++
.../impl/DefaultRepositoryLayoutProvider.java | 155 ++
.../internal/impl/DefaultRepositorySystem.java | 521 +++++++
.../impl/DefaultSyncContextFactory.java | 60 +
.../impl/DefaultTransporterProvider.java | 163 +++
.../impl/DefaultUpdateCheckManager.java | 629 +++++++++
.../impl/DefaultUpdatePolicyAnalyzer.java | 158 +++
.../impl/DefaultVersionFilterContext.java | 217 +++
.../impl/EnhancedLocalRepositoryManager.java | 225 +++
.../EnhancedLocalRepositoryManagerFactory.java | 104 ++
.../internal/impl/FailChecksumPolicy.java | 43 +
.../internal/impl/LoggerFactoryProvider.java | 64 +
.../impl/Maven2RepositoryLayoutFactory.java | 186 +++
.../eclipse/aether/internal/impl/NodeStack.java | 124 ++
.../aether/internal/impl/ObjectPool.java | 54 +
.../internal/impl/PrioritizedComponent.java | 82 ++
.../internal/impl/PrioritizedComponents.java | 156 ++
.../internal/impl/SafeTransferListener.java | 188 +++
.../aether/internal/impl/SimpleDigest.java | 106 ++
.../impl/SimpleLocalRepositoryManager.java | 269 ++++
.../SimpleLocalRepositoryManagerFactory.java | 100 ++
.../internal/impl/TrackingFileManager.java | 241 ++++
.../org/eclipse/aether/internal/impl/Utils.java | 128 ++
.../internal/impl/WarnChecksumPolicy.java | 53 +
.../aether/internal/impl/package-info.java | 24 +
.../internal/impl/slf4j/Slf4jLoggerFactory.java | 201 +++
.../internal/impl/slf4j/package-info.java | 24 +
maven-resolver-impl/src/site/site.xml | 36 +
.../aether/impl/DefaultServiceLocatorTest.java | 103 ++
.../impl/StubArtifactDescriptorReader.java | 40 +
.../aether/impl/StubVersionRangeResolver.java | 39 +
.../aether/impl/StubVersionResolver.java | 39 +
.../aether/impl/guice/AetherModuleTest.java | 85 ++
.../aether/internal/impl/DataPoolTest.java | 66 +
.../impl/DefaultArtifactResolverTest.java | 909 ++++++++++++
.../impl/DefaultChecksumPolicyProviderTest.java | 145 ++
.../impl/DefaultDependencyCollectorTest.java | 801 +++++++++++
.../internal/impl/DefaultDeployerTest.java | 385 +++++
.../internal/impl/DefaultFileProcessorTest.java | 128 ++
.../internal/impl/DefaultInstallerTest.java | 414 ++++++
.../impl/DefaultMetadataResolverTest.java | 256 ++++
.../impl/DefaultOfflineControllerTest.java | 102 ++
.../DefaultRemoteRepositoryManagerTest.java | 308 ++++
.../DefaultRepositoryEventDispatcherTest.java | 90 ++
.../impl/DefaultRepositorySystemTest.java | 149 ++
.../impl/DefaultUpdateCheckManagerTest.java | 816 +++++++++++
.../impl/DefaultUpdatePolicyAnalyzerTest.java | 130 ++
.../internal/impl/DependencyGraphDumper.java | 222 +++
.../EnhancedLocalRepositoryManagerTest.java | 343 +++++
.../internal/impl/FailChecksumPolicyTest.java | 94 ++
.../impl/IniArtifactDescriptorReader.java | 39 +
.../impl/Maven2RepositoryLayoutFactoryTest.java | 241 ++++
.../internal/impl/PrioritizedComponentTest.java | 73 +
.../impl/PrioritizedComponentsTest.java | 115 ++
.../impl/RecordingRepositoryConnector.java | 298 ++++
.../impl/RecordingRepositoryListener.java | 143 ++
.../internal/impl/SafeTransferListenerTest.java | 45 +
.../impl/SimpleLocalRepositoryManagerTest.java | 118 ++
.../internal/impl/StaticUpdateCheckManager.java | 87 ++
.../impl/StubRemoteRepositoryManager.java | 67 +
.../impl/StubRepositoryConnectorProvider.java | 54 +
.../impl/StubRepositoryEventDispatcher.java | 104 ++
.../internal/impl/StubSyncContextFactory.java | 51 +
.../internal/impl/StubVersionRangeResolver.java | 78 +
.../internal/impl/StubVersionResolver.java | 46 +
.../internal/impl/TrackingFileManagerTest.java | 168 +++
.../internal/impl/WarnChecksumPolicyTest.java | 94 ++
.../cycle-big/10_117_4.0-SNAPSHOT.ini | 56 +
.../cycle-big/10_117_4.1-SNAPSHOT.ini | 58 +
.../cycle-big/10_11_4.0-SNAPSHOT.ini | 10 +
.../cycle-big/10_11_4.1-SNAPSHOT.ini | 10 +
.../cycle-big/10_121_3.0-SNAPSHOT.ini | 65 +
.../cycle-big/10_121_3.1-SNAPSHOT.ini | 76 +
.../cycle-big/10_12_4.0-SNAPSHOT.ini | 32 +
.../cycle-big/10_12_4.1-SNAPSHOT.ini | 33 +
.../cycle-big/10_139_3.0-SNAPSHOT.ini | 35 +
.../cycle-big/10_139_3.1-SNAPSHOT.ini | 32 +
.../cycle-big/10_141_4.0-SNAPSHOT.ini | 32 +
.../cycle-big/10_141_4.1-SNAPSHOT.ini | 32 +
.../cycle-big/10_145_4.0-SNAPSHOT.ini | 19 +
.../cycle-big/10_145_4.1-SNAPSHOT.ini | 19 +
.../cycle-big/10_146_4.0-SNAPSHOT.ini | 13 +
.../cycle-big/10_146_4.1-SNAPSHOT.ini | 13 +
.../cycle-big/10_147_4.0-SNAPSHOT.ini | 22 +
.../cycle-big/10_147_4.1-SNAPSHOT.ini | 22 +
.../cycle-big/10_148_4.0-SNAPSHOT.ini | 11 +
.../cycle-big/10_148_4.1-SNAPSHOT.ini | 11 +
.../cycle-big/10_149_4.0-SNAPSHOT.ini | 22 +
.../cycle-big/10_149_4.1-SNAPSHOT.ini | 22 +
.../cycle-big/10_150_4.0-SNAPSHOT.ini | 46 +
.../cycle-big/10_150_4.1-SNAPSHOT.ini | 45 +
.../cycle-big/10_152_4.0-SNAPSHOT.ini | 32 +
.../cycle-big/10_152_4.1-SNAPSHOT.ini | 34 +
.../cycle-big/10_155_4.0-SNAPSHOT.ini | 10 +
.../cycle-big/10_155_4.1-SNAPSHOT.ini | 10 +
.../cycle-big/10_156_4.0-SNAPSHOT.ini | 35 +
.../cycle-big/10_156_4.1-SNAPSHOT.ini | 34 +
.../cycle-big/10_160_4.0-SNAPSHOT.ini | 4 +
.../cycle-big/10_160_4.1-SNAPSHOT.ini | 4 +
.../cycle-big/10_161_4.0-SNAPSHOT.ini | 14 +
.../cycle-big/10_161_4.1-SNAPSHOT.ini | 13 +
.../cycle-big/10_162_4.0-SNAPSHOT.ini | 10 +
.../cycle-big/10_162_4.1-SNAPSHOT.ini | 10 +
.../cycle-big/10_163_4.0-SNAPSHOT.ini | 18 +
.../cycle-big/10_163_4.1-SNAPSHOT.ini | 18 +
.../cycle-big/10_164_4.0-SNAPSHOT.ini | 24 +
.../cycle-big/10_164_4.1-SNAPSHOT.ini | 24 +
.../cycle-big/10_167_4.0-SNAPSHOT.ini | 69 +
.../cycle-big/10_167_4.1-SNAPSHOT.ini | 69 +
.../cycle-big/10_172_4.0-SNAPSHOT.ini | 45 +
.../cycle-big/10_172_4.1-SNAPSHOT.ini | 46 +
.../cycle-big/10_173_4.0-SNAPSHOT.ini | 5 +
.../cycle-big/10_173_4.1-SNAPSHOT.ini | 5 +
.../cycle-big/10_174_4.0-SNAPSHOT.ini | 81 ++
.../cycle-big/10_174_4.1-SNAPSHOT.ini | 86 ++
.../cycle-big/10_175_2.0-SNAPSHOT.ini | 23 +
.../cycle-big/10_175_2.1-SNAPSHOT.ini | 21 +
.../cycle-big/10_176_4.0-SNAPSHOT.ini | 10 +
.../cycle-big/10_176_4.1-SNAPSHOT.ini | 10 +
.../cycle-big/10_177_4.0-SNAPSHOT.ini | 9 +
.../cycle-big/10_177_4.1-SNAPSHOT.ini | 9 +
.../cycle-big/10_178_4.0-SNAPSHOT.ini | 15 +
.../cycle-big/10_178_4.1-SNAPSHOT.ini | 15 +
.../cycle-big/10_179_4.0-SNAPSHOT.ini | 11 +
.../cycle-big/10_179_4.1-SNAPSHOT.ini | 11 +
.../cycle-big/10_180_3.1-SNAPSHOT.ini | 30 +
.../cycle-big/10_180_3.2-SNAPSHOT.ini | 31 +
.../cycle-big/10_189_4.0-SNAPSHOT.ini | 44 +
.../cycle-big/10_189_4.1-SNAPSHOT.ini | 46 +
.../cycle-big/10_202_4.0-SNAPSHOT.ini | 28 +
.../cycle-big/10_202_4.1-SNAPSHOT.ini | 29 +
.../cycle-big/10_203_4.0-SNAPSHOT.ini | 27 +
.../cycle-big/10_203_4.1-SNAPSHOT.ini | 27 +
.../cycle-big/10_205_4.0-SNAPSHOT.ini | 99 ++
.../cycle-big/10_205_4.1-SNAPSHOT.ini | 104 ++
.../cycle-big/10_206_4.0-SNAPSHOT.ini | 12 +
.../cycle-big/10_206_4.1-SNAPSHOT.ini | 12 +
.../cycle-big/10_207_4.0-SNAPSHOT.ini | 29 +
.../cycle-big/10_207_4.1-SNAPSHOT.ini | 29 +
.../cycle-big/10_210_4.0-SNAPSHOT.ini | 17 +
.../cycle-big/10_210_4.1-SNAPSHOT.ini | 17 +
.../cycle-big/10_212_4.0-SNAPSHOT.ini | 18 +
.../cycle-big/10_212_4.1-SNAPSHOT.ini | 18 +
.../cycle-big/10_213_4.0-SNAPSHOT.ini | 10 +
.../cycle-big/10_213_4.1-SNAPSHOT.ini | 10 +
.../cycle-big/10_214_4.0-SNAPSHOT.ini | 9 +
.../cycle-big/10_214_4.1-SNAPSHOT.ini | 9 +
.../cycle-big/10_215_4.0-SNAPSHOT.ini | 10 +
.../cycle-big/10_215_4.1-SNAPSHOT.ini | 10 +
.../cycle-big/10_216_4.0-SNAPSHOT.ini | 48 +
.../cycle-big/10_216_4.1-SNAPSHOT.ini | 48 +
.../cycle-big/10_220_4.0-SNAPSHOT.ini | 53 +
.../cycle-big/10_220_4.1-SNAPSHOT.ini | 54 +
.../cycle-big/10_224_4.0-SNAPSHOT.ini | 21 +
.../cycle-big/10_224_4.1-SNAPSHOT.ini | 21 +
.../cycle-big/10_225_4.0-SNAPSHOT.ini | 25 +
.../cycle-big/10_225_4.1-SNAPSHOT.ini | 25 +
.../cycle-big/10_226_4.0-SNAPSHOT.ini | 35 +
.../cycle-big/10_226_4.1-SNAPSHOT.ini | 36 +
.../cycle-big/10_228_1.0-SNAPSHOT.ini | 6 +
.../cycle-big/10_229_4.0-SNAPSHOT.ini | 31 +
.../cycle-big/10_229_4.1-SNAPSHOT.ini | 31 +
.../cycle-big/10_22_4.0-SNAPSHOT.ini | 23 +
.../cycle-big/10_22_4.1-SNAPSHOT.ini | 24 +
.../cycle-big/10_230_4.0-SNAPSHOT.ini | 41 +
.../cycle-big/10_230_4.1-SNAPSHOT.ini | 41 +
.../cycle-big/10_231_4.0-SNAPSHOT.ini | 17 +
.../cycle-big/10_231_4.1-SNAPSHOT.ini | 17 +
.../cycle-big/10_232_4.0-SNAPSHOT.ini | 28 +
.../cycle-big/10_232_4.1-SNAPSHOT.ini | 28 +
.../cycle-big/10_233_4.0-SNAPSHOT.ini | 27 +
.../cycle-big/10_233_4.1-SNAPSHOT.ini | 27 +
.../cycle-big/10_235_4.0-SNAPSHOT.ini | 36 +
.../cycle-big/10_235_4.1-SNAPSHOT.ini | 35 +
.../cycle-big/10_236_4.0-SNAPSHOT.ini | 20 +
.../cycle-big/10_236_4.1-SNAPSHOT.ini | 20 +
.../cycle-big/10_237_4.0-SNAPSHOT.ini | 18 +
.../cycle-big/10_237_4.1-SNAPSHOT.ini | 18 +
.../cycle-big/10_238_4.0-SNAPSHOT.ini | 39 +
.../cycle-big/10_238_4.1-SNAPSHOT.ini | 39 +
.../cycle-big/10_241_4.0-SNAPSHOT.ini | 17 +
.../cycle-big/10_241_4.1-SNAPSHOT.ini | 17 +
.../cycle-big/10_242_4.0-SNAPSHOT.ini | 31 +
.../cycle-big/10_242_4.1-SNAPSHOT.ini | 30 +
.../cycle-big/10_243_4.0-SNAPSHOT.ini | 30 +
.../cycle-big/10_243_4.1-SNAPSHOT.ini | 34 +
.../cycle-big/10_246_4.0-SNAPSHOT.ini | 15 +
.../cycle-big/10_246_4.1-SNAPSHOT.ini | 15 +
.../cycle-big/10_247_4.0-SNAPSHOT.ini | 54 +
.../cycle-big/10_247_4.1-SNAPSHOT.ini | 55 +
.../cycle-big/10_251_4.0-SNAPSHOT.ini | 23 +
.../cycle-big/10_251_4.1-SNAPSHOT.ini | 25 +
.../cycle-big/10_252_4.0-SNAPSHOT.ini | 28 +
.../cycle-big/10_252_4.1-SNAPSHOT.ini | 29 +
.../cycle-big/10_254_4.0-SNAPSHOT.ini | 1 +
.../cycle-big/10_254_4.1-SNAPSHOT.ini | 1 +
.../cycle-big/10_255_4.0-SNAPSHOT.ini | 7 +
.../cycle-big/10_255_4.1-SNAPSHOT.ini | 7 +
.../cycle-big/10_257_4.0-SNAPSHOT.ini | 31 +
.../cycle-big/10_257_4.1-SNAPSHOT.ini | 31 +
.../cycle-big/10_258_4.0-SNAPSHOT.ini | 3 +
.../cycle-big/10_258_4.1-SNAPSHOT.ini | 3 +
.../cycle-big/10_261_4.0-SNAPSHOT.ini | 25 +
.../cycle-big/10_261_4.1-SNAPSHOT.ini | 25 +
.../cycle-big/10_262_4.0-SNAPSHOT.ini | 44 +
.../cycle-big/10_262_4.1-SNAPSHOT.ini | 45 +
.../cycle-big/10_263_4.0-SNAPSHOT.ini | 18 +
.../cycle-big/10_263_4.1-SNAPSHOT.ini | 18 +
.../cycle-big/10_265_4.0-SNAPSHOT.ini | 22 +
.../cycle-big/10_265_4.1-SNAPSHOT.ini | 22 +
.../cycle-big/10_266_4.0-SNAPSHOT.ini | 1 +
.../cycle-big/10_266_4.1-SNAPSHOT.ini | 1 +
.../cycle-big/10_268_4.0-SNAPSHOT.ini | 17 +
.../cycle-big/10_268_4.1-SNAPSHOT.ini | 17 +
.../cycle-big/10_269_4.0-SNAPSHOT.ini | 16 +
.../cycle-big/10_269_4.1-SNAPSHOT.ini | 16 +
.../cycle-big/10_271_4.0-SNAPSHOT.ini | 62 +
.../cycle-big/10_271_4.1-SNAPSHOT.ini | 65 +
.../cycle-big/10_272_4.0-SNAPSHOT.ini | 41 +
.../cycle-big/10_272_4.1-SNAPSHOT.ini | 41 +
.../cycle-big/10_275_4.0-SNAPSHOT.ini | 17 +
.../cycle-big/10_275_4.1-SNAPSHOT.ini | 19 +
.../cycle-big/10_276_4.0-SNAPSHOT.ini | 31 +
.../cycle-big/10_276_4.1-SNAPSHOT.ini | 27 +
.../cycle-big/10_277_4.0-SNAPSHOT.ini | 17 +
.../cycle-big/10_279_4.0-SNAPSHOT.ini | 5 +
.../cycle-big/10_280_4.0-SNAPSHOT.ini | 21 +
.../cycle-big/10_281_4.0-SNAPSHOT.ini | 12 +
.../cycle-big/10_284_2.0-SNAPSHOT.ini | 18 +
.../cycle-big/10_284_2.1-SNAPSHOT.ini | 10 +
.../cycle-big/10_285_4.0-SNAPSHOT.ini | 21 +
.../cycle-big/10_285_4.1-SNAPSHOT.ini | 20 +
.../cycle-big/10_286_4.0-SNAPSHOT.ini | 45 +
.../cycle-big/10_286_4.1-SNAPSHOT.ini | 45 +
.../cycle-big/10_288_4.0-SNAPSHOT.ini | 25 +
.../cycle-big/10_288_4.1-SNAPSHOT.ini | 25 +
.../cycle-big/10_291_4.0-SNAPSHOT.ini | 69 +
.../cycle-big/10_291_4.1-SNAPSHOT.ini | 74 +
.../cycle-big/10_292_4.0-SNAPSHOT.ini | 47 +
.../cycle-big/10_292_4.1-SNAPSHOT.ini | 48 +
.../cycle-big/10_294_4.0-SNAPSHOT.ini | 26 +
.../cycle-big/10_294_4.1-SNAPSHOT.ini | 27 +
.../cycle-big/10_295_4.0-SNAPSHOT.ini | 13 +
.../cycle-big/10_295_4.1-SNAPSHOT.ini | 13 +
.../cycle-big/10_297_4.0-SNAPSHOT.ini | 33 +
.../cycle-big/10_297_4.1-SNAPSHOT.ini | 32 +
.../cycle-big/10_298_4.0-SNAPSHOT.ini | 33 +
.../cycle-big/10_298_4.1-SNAPSHOT.ini | 33 +
.../cycle-big/10_301_4.0-SNAPSHOT.ini | 47 +
.../cycle-big/10_301_4.1-SNAPSHOT.ini | 49 +
.../cycle-big/10_303_4.0-SNAPSHOT.ini | 4 +
.../cycle-big/10_303_4.1-SNAPSHOT.ini | 4 +
.../cycle-big/10_305_4.0-SNAPSHOT.ini | 42 +
.../cycle-big/10_305_4.1-SNAPSHOT.ini | 43 +
.../cycle-big/10_306_4.0-SNAPSHOT.ini | 36 +
.../cycle-big/10_306_4.1-SNAPSHOT.ini | 36 +
.../cycle-big/10_307_4.0-SNAPSHOT.ini | 63 +
.../cycle-big/10_307_4.1-SNAPSHOT.ini | 64 +
.../cycle-big/10_315_4.0-SNAPSHOT.ini | 35 +
.../cycle-big/10_315_4.1-SNAPSHOT.ini | 38 +
.../cycle-big/10_316_4.0-SNAPSHOT.ini | 17 +
.../cycle-big/10_316_4.1-SNAPSHOT.ini | 17 +
.../cycle-big/10_317_4.0-SNAPSHOT.ini | 20 +
.../cycle-big/10_317_4.1-SNAPSHOT.ini | 20 +
.../cycle-big/10_318_4.0-SNAPSHOT.ini | 21 +
.../cycle-big/10_318_4.1-SNAPSHOT.ini | 22 +
.../cycle-big/10_319_4.0-SNAPSHOT.ini | 19 +
.../cycle-big/10_319_4.1-SNAPSHOT.ini | 19 +
.../cycle-big/10_320_4.0-SNAPSHOT.ini | 18 +
.../cycle-big/10_320_4.1-SNAPSHOT.ini | 18 +
.../cycle-big/10_321_4.0-SNAPSHOT.ini | 7 +
.../cycle-big/10_321_4.1-SNAPSHOT.ini | 7 +
.../cycle-big/10_322_4.0-SNAPSHOT.ini | 31 +
.../cycle-big/10_322_4.1-SNAPSHOT.ini | 31 +
.../cycle-big/10_325_4.0-SNAPSHOT.ini | 33 +
.../cycle-big/10_325_4.1-SNAPSHOT.ini | 33 +
.../cycle-big/10_327_4.0-SNAPSHOT.ini | 21 +
.../cycle-big/10_327_4.1-SNAPSHOT.ini | 21 +
.../cycle-big/10_328_4.0-SNAPSHOT.ini | 53 +
.../cycle-big/10_328_4.1-SNAPSHOT.ini | 53 +
.../cycle-big/10_329_4.0-SNAPSHOT.ini | 11 +
.../cycle-big/10_329_4.1-SNAPSHOT.ini | 11 +
.../cycle-big/10_330_4.0-SNAPSHOT.ini | 3 +
.../cycle-big/10_330_4.1-SNAPSHOT.ini | 3 +
.../cycle-big/10_331_4.0-SNAPSHOT.ini | 24 +
.../cycle-big/10_331_4.1-SNAPSHOT.ini | 24 +
.../cycle-big/10_332_4.0-SNAPSHOT.ini | 8 +
.../cycle-big/10_332_4.1-SNAPSHOT.ini | 8 +
.../cycle-big/10_333_4.0-SNAPSHOT.ini | 1 +
.../cycle-big/10_333_4.1-SNAPSHOT.ini | 1 +
.../cycle-big/10_334_4.0-SNAPSHOT.ini | 24 +
.../cycle-big/10_334_4.1-SNAPSHOT.ini | 24 +
.../cycle-big/10_335_4.0-SNAPSHOT.ini | 17 +
.../cycle-big/10_335_4.1-SNAPSHOT.ini | 17 +
.../cycle-big/10_336_4.0-SNAPSHOT.ini | 16 +
.../cycle-big/10_336_4.1-SNAPSHOT.ini | 16 +
.../cycle-big/10_337_4.0-SNAPSHOT.ini | 3 +
.../cycle-big/10_337_4.1-SNAPSHOT.ini | 3 +
.../cycle-big/10_343_4.0-SNAPSHOT.ini | 3 +
.../cycle-big/10_343_4.1-SNAPSHOT.ini | 3 +
.../cycle-big/10_345_4.0-SNAPSHOT.ini | 19 +
.../cycle-big/10_345_4.1-SNAPSHOT.ini | 19 +
.../cycle-big/10_346_4.0-SNAPSHOT.ini | 14 +
.../cycle-big/10_346_4.1-SNAPSHOT.ini | 14 +
.../cycle-big/10_347_4.0-SNAPSHOT.ini | 15 +
.../cycle-big/10_347_4.1-SNAPSHOT.ini | 15 +
.../cycle-big/10_349_4.0-SNAPSHOT.ini | 43 +
.../cycle-big/10_349_4.1-SNAPSHOT.ini | 44 +
.../cycle-big/10_350_4.0-SNAPSHOT.ini | 26 +
.../cycle-big/10_350_4.1-SNAPSHOT.ini | 28 +
.../cycle-big/10_351_4.0-SNAPSHOT.ini | 46 +
.../cycle-big/10_351_4.1-SNAPSHOT.ini | 50 +
.../cycle-big/10_356_4.0-SNAPSHOT.ini | 4 +
.../cycle-big/10_356_4.1-SNAPSHOT.ini | 4 +
.../cycle-big/10_357_4.1-SNAPSHOT.ini | 36 +
.../cycle-big/10_359_4.1-SNAPSHOT.ini | 29 +
.../cycle-big/10_360_1.0-SNAPSHOT.ini | 10 +
.../cycle-big/10_361_4.1-SNAPSHOT.ini | 62 +
.../cycle-big/10_362_4.1-SNAPSHOT.ini | 30 +
.../cycle-big/10_363_4.1-SNAPSHOT.ini | 10 +
.../cycle-big/10_364_4.1-SNAPSHOT.ini | 17 +
.../cycle-big/10_366_4.1-SNAPSHOT.ini | 39 +
.../cycle-big/10_42_4.0-SNAPSHOT.ini | 13 +
.../cycle-big/10_42_4.1-SNAPSHOT.ini | 13 +
.../cycle-big/10_43_4.0-SNAPSHOT.ini | 35 +
.../cycle-big/10_43_4.1-SNAPSHOT.ini | 35 +
.../cycle-big/10_62_4.0-SNAPSHOT.ini | 46 +
.../cycle-big/10_62_4.1-SNAPSHOT.ini | 51 +
.../cycle-big/10_72_4.0-SNAPSHOT.ini | 68 +
.../cycle-big/10_72_4.1-SNAPSHOT.ini | 73 +
.../cycle-big/10_80_4.0-SNAPSHOT.ini | 19 +
.../cycle-big/10_80_4.1-SNAPSHOT.ini | 19 +
.../cycle-big/10_81_4.0-SNAPSHOT.ini | 78 +
.../cycle-big/10_81_4.1-SNAPSHOT.ini | 78 +
.../cycle-big/10_90_1.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_100_4.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_101_1.0_sap.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_102_1.busObj.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_103_6403-SNAPSHOT.ini | 1 +
.../cycle-big/1_104_70-SNAPSHOT.ini | 5 +
.../cycle-big/1_105_70-SNAPSHOT.ini | 4 +
.../cycle-big/1_106_3.5.5-SNAPSHOT.ini | 1 +
.../cycle-big/1_107_1.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_108_4.0-SNAPSHOT.ini | 9 +
.../cycle-big/1_109_6.0.5-SNAPSHOT.ini | 6 +
.../cycle-big/1_110_4.0-SNAPSHOT.ini | 7 +
.../cycle-big/1_111_1.0-SNAPSHOT.ini | 3 +
.../cycle-big/1_112_1.0.30-SNAPSHOT.ini | 8 +
.../cycle-big/1_113_2.0-SNAPSHOT.ini | 11 +
.../1_114_2.50.16.busObj.1-SNAPSHOT.ini | 12 +
.../cycle-big/1_114_2.50.28_sap.1-SNAPSHOT.ini | 8 +
.../cycle-big/1_115_4.2.1-SNAPSHOT.ini | 6 +
.../cycle-big/1_116_4.0-SNAPSHOT.ini | 2 +
.../cycle-big/1_118_10.2.2.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_118_10.5.3.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_119_1.0-SNAPSHOT.ini | 2 +
.../cycle-big/1_120_1.0-SNAPSHOT.ini | 9 +
.../cycle-big/1_122_3.1.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_123_3.1.1-SNAPSHOT.ini | 6 +
.../cycle-big/1_124_2.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_125_8.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_125_9.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_125_9.5-SNAPSHOT.ini | 1 +
.../cycle-big/1_126_2.81-SNAPSHOT.ini | 1 +
.../cycle-big/1_126_2.90-SNAPSHOT.ini | 1 +
.../cycle-big/1_126_3.50-SNAPSHOT.ini | 1 +
.../cycle-big/1_127_6.20-SNAPSHOT.ini | 1 +
.../cycle-big/1_127_6.30-SNAPSHOT.ini | 1 +
.../cycle-big/1_128_2006-SNAPSHOT.ini | 1 +
.../cycle-big/1_129_10.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_130_10.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_130_10.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_130_11.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_130_9.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_131_5.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_131_5.3-SNAPSHOT.ini | 1 +
.../cycle-big/1_131_6.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_132_7.7-SNAPSHOT.ini | 1 +
.../cycle-big/1_133_12.5-SNAPSHOT.ini | 1 +
.../cycle-big/1_133_15.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_133_15.5-SNAPSHOT.ini | 1 +
.../cycle-big/1_134_12.6-SNAPSHOT.ini | 1 +
.../cycle-big/1_134_12.7-SNAPSHOT.ini | 1 +
.../cycle-big/1_135_10.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_135_11.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_136_3.04-SNAPSHOT.ini | 1 +
.../cycle-big/1_136_3.06-SNAPSHOT.ini | 1 +
.../cycle-big/1_137_2.2.12-SNAPSHOT.ini | 1 +
.../cycle-big/1_138_7.7.06-SNAPSHOT.ini | 6 +
.../cycle-big/1_13_1.7.0-SNAPSHOT.ini | 5 +
.../cycle-big/1_140_5.5.28-SNAPSHOT.ini | 3 +
.../cycle-big/1_140_6.0.18-SNAPSHOT.ini | 14 +
.../cycle-big/1_140_6.0.24-SNAPSHOT.ini | 14 +
.../cycle-big/1_142_9.1-SNAPSHOT.ini | 2 +
.../cycle-big/1_143_6.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_144_15.0-SNAPSHOT.ini | 2 +
.../cycle-big/1_14_2.5.2-SNAPSHOT.ini | 6 +
.../cycle-big/1_151_3.7.1-SNAPSHOT.ini | 5 +
.../cycle-big/1_153_1.1.1-SNAPSHOT.ini | 6 +
.../cycle-big/1_154_3.3-SNAPSHOT.ini | 1 +
.../cycle-big/1_157_0.0.356_sap.1-SNAPSHOT.ini | 6 +
.../cycle-big/1_158_3.5-SNAPSHOT.ini | 6 +
.../cycle-big/1_159_2.1_03-SNAPSHOT.ini | 7 +
.../cycle-big/1_15_1.36.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_165_11.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_165_7.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_165_7.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_165_9.3-SNAPSHOT.ini | 1 +
.../cycle-big/1_166_720-SNAPSHOT.ini | 2 +
.../cycle-big/1_168_6.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_169_4.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_16_1.8.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_170_10.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_171_8.45-SNAPSHOT.ini | 1 +
.../cycle-big/1_171_8.46-SNAPSHOT.ini | 1 +
.../cycle-big/1_17_1.2.3-SNAPSHOT.ini | 8 +
.../cycle-big/1_181_1.0-SNAPSHOT.ini | 5 +
.../cycle-big/1_182_3.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_183_0.9-SNAPSHOT.ini | 1 +
.../cycle-big/1_184_20080807-SNAPSHOT.ini | 3 +
.../cycle-big/1_185_1.0_sap.1-SNAPSHOT.ini | 15 +
.../cycle-big/1_185_1.0_sap.2-SNAPSHOT.ini | 15 +
.../cycle-big/1_186_4.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_187_4.3-SNAPSHOT.ini | 1 +
.../cycle-big/1_188_1.9-SNAPSHOT.ini | 1 +
.../cycle-big/1_18_5.1.1-SNAPSHOT.ini | 5 +
.../cycle-big/1_18_5.1.1.41-SNAPSHOT.ini | 5 +
.../cycle-big/1_190_2.0.8-SNAPSHOT.ini | 1 +
.../cycle-big/1_191_3.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_192_1.8.0.7-SNAPSHOT.ini | 1 +
.../cycle-big/1_193_0.8.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_194_2.3.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_195_3.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_196_1.2.12-SNAPSHOT.ini | 1 +
.../cycle-big/1_197_5.1.3-SNAPSHOT.ini | 1 +
.../cycle-big/1_198_9.1.3-SNAPSHOT.ini | 1 +
.../cycle-big/1_199_2.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_19_6.3-SNAPSHOT.ini | 7 +
.../cycle-big/1_200_3.1.12-SNAPSHOT.ini | 1 +
.../cycle-big/1_200_5.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_201_3.5.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_204_1.6.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_208_10.0-SNAPSHOT.ini | 4 +
.../cycle-big/1_209_3.51-SNAPSHOT.ini | 1 +
.../cycle-big/1_20_3.3.2-SNAPSHOT.ini | 9 +
.../cycle-big/1_211_1.0-SNAPSHOT.ini | 8 +
.../cycle-big/1_217_1.0_sap.1-SNAPSHOT.ini | 9 +
.../cycle-big/1_218_2.2.1-SNAPSHOT.ini | 2 +
.../cycle-big/1_219_2.3.4-SNAPSHOT.ini | 1 +
.../cycle-big/1_21_3.2.1.2-SNAPSHOT.ini | 6 +
.../cycle-big/1_221_8.9-SNAPSHOT.ini | 1 +
.../cycle-big/1_222_1.1.1-SNAPSHOT.ini | 2 +
.../cycle-big/1_222_beta8-SNAPSHOT.ini | 2 +
.../cycle-big/1_223_7.5-SNAPSHOT.ini | 1 +
.../cycle-big/1_227_7.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_234_1.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_239_3.0-SNAPSHOT.ini | 2 +
.../cycle-big/1_23_1.2.6_sap.1-SNAPSHOT.ini | 6 +
.../cycle-big/1_240_720-SNAPSHOT.ini | 1 +
.../cycle-big/1_244_1.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_245_1.0.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_248_5.5-SNAPSHOT.ini | 6 +
.../cycle-big/1_249_9.2.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_24_1.2.10-SNAPSHOT.ini | 5 +
.../cycle-big/1_250_1.0_sap.1-SNAPSHOT.ini | 11 +
.../cycle-big/1_253_1.3.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_256_3.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_259_2.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_25_0.86-beta1-SNAPSHOT.ini | 1 +
.../cycle-big/1_260_2.2.5-SNAPSHOT.ini | 1 +
.../cycle-big/1_260_2.3.3-SNAPSHOT.ini | 8 +
.../cycle-big/1_264_6.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_267_3.0-SNAPSHOT.ini | 5 +
.../cycle-big/1_26_3.0.1-SNAPSHOT.ini | 7 +
.../cycle-big/1_26_3.8.1-SNAPSHOT.ini | 2 +
.../cycle-big/1_26_4.2.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_270_1.6.5-SNAPSHOT.ini | 6 +
.../cycle-big/1_273_1.0.3-SNAPSHOT.ini | 1 +
.../cycle-big/1_274_1.0.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_278_1.8.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_27_6.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_282_2.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_283_1.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_287_1.1.2.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_287_1.3-SNAPSHOT.ini | 1 +
.../cycle-big/1_289_2.2.0-SNAPSHOT.ini | 7 +
.../cycle-big/1_28_4.1-SNAPSHOT.ini | 6 +
.../cycle-big/1_290_8.0.2.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_293_0.2.5-SNAPSHOT.ini | 1 +
.../cycle-big/1_296_1.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_299_7.20-SNAPSHOT.ini | 1 +
.../cycle-big/1_29_3.0.5-SNAPSHOT.ini | 6 +
.../cycle-big/1_2_5.50-SNAPSHOT.ini | 5 +
.../cycle-big/1_300_7.1.8-SNAPSHOT.ini | 1 +
.../cycle-big/1_302_1.015-SNAPSHOT.ini | 1 +
.../cycle-big/1_304_9.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_308_1.8-SNAPSHOT.ini | 1 +
.../cycle-big/1_309_1.15.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_30_0.7.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_310_4.2.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_311_2.3.0-SNAPSHOT.ini | 5 +
.../cycle-big/1_312_4.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_313_2.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_314_6.0-SNAPSHOT.ini | 9 +
.../cycle-big/1_31_2.2-SNAPSHOT.ini | 2 +
.../cycle-big/1_323_11.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_324_5.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_326_0.9.7-SNAPSHOT.ini | 1 +
.../cycle-big/1_32_720-SNAPSHOT.ini | 7 +
.../cycle-big/1_338_2.8-SNAPSHOT.ini | 8 +
.../cycle-big/1_338_3.0-SNAPSHOT.ini | 8 +
.../cycle-big/1_339_8.0.1p5-SNAPSHOT.ini | 6 +
.../cycle-big/1_33_711-SNAPSHOT.ini | 5 +
.../cycle-big/1_340_2.11-SNAPSHOT.ini | 8 +
.../cycle-big/1_340_2.9-SNAPSHOT.ini | 8 +
.../cycle-big/1_341_0.9-SNAPSHOT.ini | 8 +
.../cycle-big/1_341_1.3-SNAPSHOT.ini | 8 +
.../cycle-big/1_342_1.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_344_1.6.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_348_3.8.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_34_1.13-SNAPSHOT.ini | 1 +
.../cycle-big/1_352_6.1-SNAPSHOT.ini | 2 +
.../cycle-big/1_353_1.2.3-SNAPSHOT.ini | 7 +
.../cycle-big/1_354_1.6.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_355_3.0.5-SNAPSHOT.ini | 1 +
.../cycle-big/1_358_1.1.2-SNAPSHOT.ini | 7 +
.../cycle-big/1_35_1.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_365_3.4.1-SNAPSHOT.ini | 2 +
.../cycle-big/1_367_8.0-SNAPSHOT.ini | 2 +
.../cycle-big/1_368_4.7.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_369_2.4.5-SNAPSHOT.ini | 2 +
.../cycle-big/1_36_2.0-SNAPSHOT.ini | 5 +
.../cycle-big/1_370_6.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_371_822-SNAPSHOT.ini | 6 +
.../cycle-big/1_37_5.5-SNAPSHOT.ini | 1 +
.../cycle-big/1_38_1.3.5-SNAPSHOT.ini | 6 +
.../cycle-big/1_38_1.3.6-SNAPSHOT.ini | 2 +
.../cycle-big/1_39_0.9.8l-SNAPSHOT.ini | 1 +
.../cycle-big/1_3_1.28-SNAPSHOT.ini | 2 +
.../cycle-big/1_40_6.1-SNAPSHOT.ini | 5 +
.../cycle-big/1_41_5.0-SNAPSHOT.ini | 11 +
.../cycle-big/1_44_1.3-SNAPSHOT.ini | 7 +
.../cycle-big/1_44_1.4-SNAPSHOT.ini | 2 +
.../cycle-big/1_45_3.1-SNAPSHOT.ini | 8 +
.../cycle-big/1_46_1.0.2-SNAPSHOT.ini | 2 +
.../cycle-big/1_47_2.6.2-SNAPSHOT.ini | 7 +
.../cycle-big/1_47_2.9.1-SNAPSHOT.ini | 7 +
.../cycle-big/1_48_1.3-SNAPSHOT.ini | 1 +
.../cycle-big/1_49_6.0.5.25-SNAPSHOT.ini | 1 +
.../cycle-big/1_4_2.5.4-SNAPSHOT.ini | 2 +
.../cycle-big/1_50_3.3-SNAPSHOT.ini | 8 +
.../cycle-big/1_50_3.4-SNAPSHOT.ini | 2 +
.../cycle-big/1_50_3.4.1-SNAPSHOT.ini | 3 +
.../cycle-big/1_50_3.5-SNAPSHOT.ini | 7 +
.../cycle-big/1_51_1.6.2-SNAPSHOT.ini | 6 +
.../cycle-big/1_52_1.8-SNAPSHOT.ini | 1 +
.../cycle-big/1_52_2.5-SNAPSHOT.ini | 1 +
.../cycle-big/1_53_2.3.0.677-SNAPSHOT.ini | 1 +
.../cycle-big/1_54_0.1.36-SNAPSHOT.ini | 1 +
.../cycle-big/1_55_3.8.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_55_4.4-SNAPSHOT.ini | 1 +
.../cycle-big/1_55_4.8.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_56_1.2-SNAPSHOT.ini | 1 +
.../cycle-big/1_57_4.0.5-SNAPSHOT.ini | 11 +
.../cycle-big/1_58_2.4.7-SNAPSHOT.ini | 1 +
.../cycle-big/1_59_1.0.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_5_1.5-SNAPSHOT.ini | 5 +
.../cycle-big/1_5_1.6-SNAPSHOT.ini | 5 +
.../cycle-big/1_60_0.2.9-SNAPSHOT.ini | 1 +
.../cycle-big/1_61_1.1-SNAPSHOT.ini | 7 +
.../cycle-big/1_61_1.2.12-SNAPSHOT.ini | 1 +
.../cycle-big/1_63_1.1-SNAPSHOT.ini | 2 +
.../cycle-big/1_63_1.3-SNAPSHOT.ini | 6 +
.../cycle-big/1_64_1.3-SNAPSHOT.ini | 6 +
.../cycle-big/1_65_2.1.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_66_0.11-SNAPSHOT.ini | 6 +
.../cycle-big/1_67_1.6.5-SNAPSHOT.ini | 8 +
.../cycle-big/1_68_3.8.1-SNAPSHOT.ini | 6 +
.../cycle-big/1_69_10.1.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_69_11.1.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_69_8.1.7-SNAPSHOT.ini | 1 +
.../cycle-big/1_69_9.0.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_6_1.5.8-SNAPSHOT.ini | 1 +
.../cycle-big/1_70_9.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_71_1.1.3.8-SNAPSHOT.ini | 13 +
.../cycle-big/1_71_1.1.4.C-SNAPSHOT.ini | 13 +
.../cycle-big/1_73_2.3.1-SNAPSHOT.ini | 13 +
.../cycle-big/1_73_2.4.1-SNAPSHOT.ini | 13 +
.../cycle-big/1_74_3.2.0-SNAPSHOT.ini | 9 +
.../cycle-big/1_74_3.5.0-SNAPSHOT.ini | 9 +
.../cycle-big/1_75_25-SNAPSHOT.ini | 11 +
.../cycle-big/1_75_26-SNAPSHOT.ini | 11 +
.../cycle-big/1_76_1.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_77_1.45-SNAPSHOT.ini | 7 +
.../cycle-big/1_78_2.6-SNAPSHOT.ini | 6 +
.../cycle-big/1_79_0.7.2-SNAPSHOT.ini | 6 +
.../cycle-big/1_7_5.8.8-SNAPSHOT.ini | 8 +
.../cycle-big/1_7_5.8.9-SNAPSHOT.ini | 9 +
.../cycle-big/1_82_9.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_83_1.10.0-SNAPSHOT.ini | 9 +
.../cycle-big/1_84_2.2.0036-SNAPSHOT.ini | 2 +
.../cycle-big/1_85_6.4-SNAPSHOT.ini | 5 +
.../cycle-big/1_85_9.1-SNAPSHOT.ini | 2 +
.../1_85_9.53.busObj.CR.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_86_7.13.2-SNAPSHOT.ini | 6 +
.../cycle-big/1_87_6b-SNAPSHOT.ini | 6 +
.../cycle-big/1_88_3.5-SNAPSHOT.ini | 7 +
.../cycle-big/1_89_2.3-SNAPSHOT.ini | 1 +
.../cycle-big/1_8_2.1.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_8_2.7.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_91_1.5-SNAPSHOT.ini | 1 +
.../cycle-big/1_92_1.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_93_10.0-SNAPSHOT.ini | 5 +
.../cycle-big/1_94_4.0-SNAPSHOT.ini | 2 +
.../cycle-big/1_94_6.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_95_7.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_95_7.1-SNAPSHOT.ini | 1 +
.../cycle-big/1_95_8.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_96_8.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_97_3.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_98_6.0-SNAPSHOT.ini | 1 +
.../cycle-big/1_99_1.0-SNAPSHOT.ini | 6 +
.../cycle-big/1_9_3.1-SNAPSHOT.ini | 4 +
.../resources/artifact-descriptions/cycle.txt | 9 +
.../artifact-descriptions/cycle_a_1.ini | 2 +
.../artifact-descriptions/cycle_b_1.ini | 2 +
.../artifact-descriptions/cycle_c_1.ini | 2 +
.../artifact-descriptions/cycle_root_1.ini | 3 +
.../duplicate_transitive_dependency.ini | 3 +
.../expectedPartialSubtreeOnError.txt | 6 +
.../expectedSubtreeComparisonResult.txt | 7 +
.../artifact-descriptions/gid_aid2_9.ini | 1 +
.../gid_aid2_managedVersion.ini | 1 +
.../artifact-descriptions/gid_aid2_ver.ini | 1 +
.../artifact-descriptions/gid_aid_1.ini | 2 +
.../artifact-descriptions/gid_aid_ver.ini | 2 +
.../managed/duplicate_transitive_managed.ini | 3 +
.../artifact-descriptions/managed/gid_0_ver.ini | 4 +
.../artifact-descriptions/managed/gid_1_ver.ini | 4 +
.../managed/gid_2_managed-by-0.ini | 4 +
.../managed/gid_3_managed-by-1.ini | 4 +
.../managed/gid_4_managed-by-2.ini | 2 +
.../managed/gid_5_managed-by-3.ini | 1 +
.../managed/gid_aid2_managed.ini | 1 +
.../managed/gid_aid_ver.ini | 2 +
.../managed/management-tree.txt | 6 +
.../managed/subtree_comparison_ver.ini | 3 +
.../artifact-descriptions/managed_aid_ver.ini | 5 +
.../missing_description_ver.ini | 2 +
.../selection/managed/all-nodes.txt | 4 +
.../selection/managed/direct-of-root.txt | 1 +
.../managed/gid_direct-of-root_ver.ini | 2 +
.../selection/managed/gid_root_ver.ini | 2 +
.../managed/gid_transitive-of-root_ver.ini | 2 +
...gid_transitive-of-transitive-of-root_ver.ini | 1 +
.../selection/managed/transitive-of-root.txt | 2 +
.../transitive-of-transitive-of-root.txt | 3 +
.../optional/gid_direct-of-root_ver.ini | 2 +
.../selection/optional/gid_root_ver.ini | 2 +
.../optional/gid_transitive-of-root_ver.ini | 1 +
.../selection/optional/no-selector-tree.txt | 3 +
.../optional/optional-exclusion-tree.txt | 2 +
.../selection/scope/all-nodes.txt | 4 +
.../selection/scope/gid_direct-of-root_ver.ini | 2 +
.../selection/scope/gid_root_ver.ini | 2 +
.../scope/gid_transitive-of-root_ver.ini | 2 +
...gid_transitive-of-transitive-of-root_ver.ini | 1 +
.../transitive-of-root-scope-exclusion-tree.txt | 2 +
...ive-of-transitive-of-root-exclusion-tree.txt | 3 +
.../subtree_comparison_error.ini | 3 +
.../subtree_comparison_ver.ini | 3 +
.../versionless-cycle/test_a_1.ini | 2 +
.../versionless-cycle/test_a_2.ini | 2 +
.../versionless-cycle/test_b_2.ini | 2 +
maven-resolver-spi/pom.xml | 55 +
.../aether/spi/connector/ArtifactDownload.java | 264 ++++
.../aether/spi/connector/ArtifactTransfer.java | 115 ++
.../aether/spi/connector/ArtifactUpload.java | 98 ++
.../aether/spi/connector/MetadataDownload.java | 186 +++
.../aether/spi/connector/MetadataTransfer.java | 115 ++
.../aether/spi/connector/MetadataUpload.java | 98 ++
.../spi/connector/RepositoryConnector.java | 77 +
.../connector/RepositoryConnectorFactory.java | 60 +
.../eclipse/aether/spi/connector/Transfer.java | 93 ++
.../spi/connector/checksum/ChecksumPolicy.java | 142 ++
.../checksum/ChecksumPolicyProvider.java | 58 +
.../spi/connector/checksum/package-info.java | 25 +
.../spi/connector/layout/RepositoryLayout.java | 181 +++
.../layout/RepositoryLayoutFactory.java | 57 +
.../layout/RepositoryLayoutProvider.java | 47 +
.../spi/connector/layout/package-info.java | 26 +
.../aether/spi/connector/package-info.java | 30 +
.../transport/AbstractTransporter.java | 260 ++++
.../aether/spi/connector/transport/GetTask.java | 266 ++++
.../spi/connector/transport/PeekTask.java | 50 +
.../aether/spi/connector/transport/PutTask.java | 157 +++
.../connector/transport/TransportListener.java | 71 +
.../spi/connector/transport/TransportTask.java | 89 ++
.../spi/connector/transport/Transporter.java | 104 ++
.../connector/transport/TransporterFactory.java | 57 +
.../transport/TransporterProvider.java | 47 +
.../spi/connector/transport/package-info.java | 26 +
.../eclipse/aether/spi/io/FileProcessor.java | 115 ++
.../org/eclipse/aether/spi/io/package-info.java | 24 +
.../LocalRepositoryManagerFactory.java | 58 +
.../aether/spi/localrepo/package-info.java | 24 +
.../org/eclipse/aether/spi/locator/Service.java | 38 +
.../aether/spi/locator/ServiceLocator.java | 57 +
.../aether/spi/locator/package-info.java | 31 +
.../java/org/eclipse/aether/spi/log/Logger.java | 74 +
.../eclipse/aether/spi/log/LoggerFactory.java | 36 +
.../org/eclipse/aether/spi/log/NullLogger.java | 55 +
.../aether/spi/log/NullLoggerFactory.java | 71 +
.../eclipse/aether/spi/log/package-info.java | 28 +
maven-resolver-spi/src/site/site.xml | 36 +
.../spi/connector/layout/ChecksumTest.java | 57 +
maven-resolver-test-util/pom.xml | 59 +
.../internal/test/util/ArtifactDefinition.java | 140 ++
.../internal/test/util/ArtifactDescription.java | 70 +
.../test/util/DependencyGraphParser.java | 565 ++++++++
.../test/util/IniArtifactDataReader.java | 391 ++++++
.../test/util/IniArtifactDescriptorReader.java | 125 ++
.../aether/internal/test/util/NodeBuilder.java | 164 +++
.../internal/test/util/NodeDefinition.java | 144 ++
.../util/TestDependencyCollectionContext.java | 78 +
...estDependencyGraphTransformationContext.java | 80 ++
.../internal/test/util/TestFileProcessor.java | 223 +++
.../internal/test/util/TestFileUtils.java | 331 +++++
.../test/util/TestLocalRepositoryManager.java | 159 +++
.../internal/test/util/TestLoggerFactory.java | 108 ++
.../aether/internal/test/util/TestUtils.java | 92 ++
.../aether/internal/test/util/TestVersion.java | 88 ++
.../test/util/TestVersionConstraint.java | 131 ++
.../test/util/TestVersionFilterContext.java | 93 ++
.../internal/test/util/TestVersionRange.java | 247 ++++
.../internal/test/util/TestVersionScheme.java | 120 ++
.../aether/internal/test/util/package-info.java | 26 +
maven-resolver-test-util/src/site/site.xml | 36 +
.../test/util/DependencyGraphParserTest.java | 300 ++++
.../test/util/IniArtifactDataReaderTest.java | 232 +++
.../util/IniArtifactDescriptorReaderTest.java | 152 ++
.../internal/test/util/NodeDefinitionTest.java | 156 ++
.../test/util/ArtifactDataReaderTest.ini | 21 +
.../aether/internal/test/util/gid_aid_1.ini | 18 +
.../aether/internal/test/util/gid_aid_ver.ini | 2 +
.../internal/test/util/testResourceLoading.txt | 3 +
maven-resolver-transport-classpath/pom.xml | 89 ++
.../classpath/ClasspathTransporter.java | 149 ++
.../classpath/ClasspathTransporterFactory.java | 116 ++
.../classpath/ResourceNotFoundException.java | 37 +
.../transport/classpath/package-info.java | 24 +
.../src/site/site.xml | 36 +
.../classpath/ClasspathTransporterTest.java | 411 ++++++
.../classpath/RecordingTransportListener.java | 73 +
.../src/test/resources/file.txt | 1 +
.../src/test/resources/repo space/file.txt | 1 +
.../src/test/resources/repository/empty.txt | 0
.../src/test/resources/repository/file.txt | 1 +
.../test/resources/repository/some space.txt | 1 +
maven-resolver-transport-file/pom.xml | 89 ++
.../aether/transport/file/FileTransporter.java | 127 ++
.../transport/file/FileTransporterFactory.java | 104 ++
.../aether/transport/file/PathUtils.java | 138 ++
.../file/ResourceNotFoundException.java | 37 +
.../aether/transport/file/package-info.java | 24 +
maven-resolver-transport-file/src/site/site.xml | 36 +
.../transport/file/FileTransporterTest.java | 554 ++++++++
.../file/RecordingTransportListener.java | 73 +
maven-resolver-transport-http/pom.xml | 118 ++
.../aether/transport/http/AuthSchemePool.java | 71 +
.../http/DeferredCredentialsProvider.java | 194 +++
.../http/DemuxCredentialsProvider.java | 76 +
.../aether/transport/http/GlobalState.java | 215 +++
.../aether/transport/http/HttpMkCol.java | 44 +
.../aether/transport/http/HttpTransporter.java | 651 +++++++++
.../transport/http/HttpTransporterFactory.java | 105 ++
.../aether/transport/http/LocalState.java | 184 +++
.../aether/transport/http/SharingAuthCache.java | 106 ++
.../transport/http/SharingHttpContext.java | 88 ++
.../aether/transport/http/SslConfig.java | 117 ++
.../aether/transport/http/SslSocketFactory.java | 87 ++
.../eclipse/aether/transport/http/UriUtils.java | 84 ++
.../http/X509HostnameVerifierAdapter.java | 81 ++
.../aether/transport/http/package-info.java | 25 +
maven-resolver-transport-http/src/site/site.xml | 36 +
.../aether/transport/http/HttpServer.java | 626 +++++++++
.../transport/http/HttpTransporterTest.java | 1309 +++++++++++++++++
.../http/RecordingTransportListener.java | 73 +
.../aether/transport/http/UriUtilsTest.java | 137 ++
.../src/test/resources/logback.xml | 35 +
.../src/test/resources/ssl/README.txt | 5 +
.../src/test/resources/ssl/client-store | Bin 0 -> 2244 bytes
.../src/test/resources/ssl/server-store | Bin 0 -> 2246 bytes
maven-resolver-transport-wagon/pom.xml | 125 ++
.../wagon/PlexusWagonConfigurator.java | 117 ++
.../transport/wagon/PlexusWagonProvider.java | 85 ++
.../internal/transport/wagon/package-info.java | 25 +
.../wagon/WagonCancelledException.java | 45 +
.../transport/wagon/WagonConfigurator.java | 40 +
.../aether/transport/wagon/WagonProvider.java | 49 +
.../transport/wagon/WagonTransferListener.java | 72 +
.../transport/wagon/WagonTransporter.java | 700 +++++++++
.../wagon/WagonTransporterFactory.java | 139 ++
.../aether/transport/wagon/package-info.java | 24 +
.../src/site/site.xml | 36 +
.../wagon/AbstractWagonTransporterTest.java | 534 +++++++
.../aether/transport/wagon/Configurable.java | 31 +
.../aether/transport/wagon/MemStreamWagon.java | 143 ++
.../aether/transport/wagon/MemWagon.java | 232 +++
.../aether/transport/wagon/MemWagonUtils.java | 113 ++
.../transport/wagon/PlexusSupportTest.java | 50 +
.../wagon/RecordingTransportListener.java | 73 +
.../wagon/StreamWagonTransporterTest.java | 36 +
.../transport/wagon/WagonTransporterTest.java | 36 +
.../src/test/resources/logback-test.xml | 36 +
maven-resolver-util/pom.xml | 59 +
.../org/eclipse/aether/util/ChecksumUtils.java | 205 +++
.../org/eclipse/aether/util/ConfigUtils.java | 398 ++++++
.../org/eclipse/aether/util/StringUtils.java | 44 +
.../aether/util/artifact/ArtifactIdUtils.java | 269 ++++
.../artifact/DefaultArtifactTypeRegistry.java | 51 +
.../util/artifact/DelegatingArtifact.java | 169 +++
.../aether/util/artifact/JavaScopes.java | 45 +
.../artifact/OverlayArtifactTypeRegistry.java | 70 +
.../artifact/SimpleArtifactTypeRegistry.java | 71 +
.../aether/util/artifact/SubArtifact.java | 233 +++
.../aether/util/artifact/package-info.java | 24 +
.../concurrency/RunnableErrorForwarder.java | 152 ++
.../util/concurrency/WorkerThreadFactory.java | 76 +
.../aether/util/concurrency/package-info.java | 24 +
.../filter/AbstractPatternDependencyFilter.java | 232 +++
.../aether/util/filter/AndDependencyFilter.java | 126 ++
.../util/filter/DependencyFilterUtils.java | 199 +++
.../util/filter/ExclusionsDependencyFilter.java | 106 ++
.../aether/util/filter/NotDependencyFilter.java | 81 ++
.../aether/util/filter/OrDependencyFilter.java | 124 ++
.../PatternExclusionsDependencyFilter.java | 96 ++
.../PatternInclusionsDependencyFilter.java | 89 ++
.../util/filter/ScopeDependencyFilter.java | 118 ++
.../aether/util/filter/package-info.java | 24 +
.../graph/manager/ClassicDependencyManager.java | 327 +++++
.../graph/manager/DependencyManagerUtils.java | 111 ++
.../graph/manager/NoopDependencyManager.java | 77 +
.../manager/TransitiveDependencyManager.java | 321 +++++
.../aether/util/graph/manager/package-info.java | 24 +
.../graph/selector/AndDependencySelector.java | 206 +++
.../selector/ExclusionDependencySelector.java | 227 +++
.../selector/OptionalDependencySelector.java | 89 ++
.../graph/selector/ScopeDependencySelector.java | 151 ++
.../selector/StaticDependencySelector.java | 79 ++
.../util/graph/selector/package-info.java | 24 +
.../ChainedDependencyGraphTransformer.java | 85 ++
.../graph/transformer/ConflictIdSorter.java | 370 +++++
.../util/graph/transformer/ConflictMarker.java | 315 +++++
.../graph/transformer/ConflictResolver.java | 1327 ++++++++++++++++++
.../JavaDependencyContextRefiner.java | 90 ++
.../transformer/JavaDependencyMediator.java | 389 +++++
.../graph/transformer/JavaScopeDeriver.java | 76 +
.../graph/transformer/JavaScopeSelector.java | 107 ++
.../transformer/NearestVersionSelector.java | 185 +++
.../NoopDependencyGraphTransformer.java | 53 +
.../transformer/SimpleOptionalitySelector.java | 70 +
.../transformer/TransformationContextKeys.java | 68 +
.../util/graph/transformer/package-info.java | 24 +
.../graph/traverser/AndDependencyTraverser.java | 207 +++
.../graph/traverser/FatArtifactTraverser.java | 76 +
.../traverser/StaticDependencyTraverser.java | 79 ++
.../util/graph/traverser/package-info.java | 24 +
.../graph/version/ChainedVersionFilter.java | 185 +++
.../ContextualSnapshotVersionFilter.java | 109 ++
.../graph/version/HighestVersionFilter.java | 80 ++
.../graph/version/SnapshotVersionFilter.java | 80 ++
.../aether/util/graph/version/package-info.java | 24 +
.../AbstractDepthFirstNodeListGenerator.java | 186 +++
.../graph/visitor/CloningDependencyVisitor.java | 114 ++
.../visitor/FilteringDependencyVisitor.java | 114 ++
.../visitor/PathRecordingDependencyVisitor.java | 137 ++
.../visitor/PostorderNodeListGenerator.java | 76 +
.../visitor/PreorderNodeListGenerator.java | 62 +
.../aether/util/graph/visitor/Stack.java | 86 ++
.../graph/visitor/TreeDependencyVisitor.java | 85 ++
.../aether/util/graph/visitor/package-info.java | 24 +
.../listener/ChainedRepositoryListener.java | 437 ++++++
.../util/listener/ChainedTransferListener.java | 234 +++
.../aether/util/listener/package-info.java | 24 +
.../org/eclipse/aether/util/package-info.java | 24 +
.../util/repository/AuthenticationBuilder.java | 231 +++
.../util/repository/ChainedAuthentication.java | 116 ++
.../util/repository/ChainedWorkspaceReader.java | 164 +++
.../repository/ComponentAuthentication.java | 98 ++
.../ConservativeAuthenticationSelector.java | 61 +
.../repository/ConservativeProxySelector.java | 60 +
.../DefaultAuthenticationSelector.java | 64 +
.../util/repository/DefaultMirrorSelector.java | 300 ++++
.../util/repository/DefaultProxySelector.java | 188 +++
.../util/repository/JreProxySelector.java | 182 +++
.../util/repository/SecretAuthentication.java | 181 +++
.../SimpleArtifactDescriptorPolicy.java | 61 +
.../repository/SimpleResolutionErrorPolicy.java | 82 ++
.../util/repository/StringAuthentication.java | 94 ++
.../aether/util/repository/package-info.java | 24 +
.../aether/util/version/GenericVersion.java | 464 ++++++
.../util/version/GenericVersionConstraint.java | 131 ++
.../util/version/GenericVersionRange.java | 242 ++++
.../util/version/GenericVersionScheme.java | 149 ++
.../aether/util/version/UnionVersionRange.java | 181 +++
.../aether/util/version/package-info.java | 24 +
maven-resolver-util/src/site/site.xml | 36 +
.../eclipse/aether/util/ChecksumUtilTest.java | 185 +++
.../eclipse/aether/util/ConfigUtilsTest.java | 247 ++++
.../eclipse/aether/util/StringUtilsTest.java | 41 +
.../util/artifact/ArtifactIdUtilsTest.java | 201 +++
.../aether/util/artifact/SubArtifactTest.java | 158 +++
.../filter/AbstractDependencyFilterTest.java | 55 +
.../util/filter/AndDependencyFilterTest.java | 92 ++
.../util/filter/DependencyFilterUtilsTest.java | 141 ++
.../filter/ExclusionDependencyFilterTest.java | 60 +
.../util/filter/OrDependencyFilterTest.java | 87 ++
.../PatternExclusionsDependencyFilterTest.java | 187 +++
.../PatternInclusionsDependencyFilterTest.java | 184 +++
.../util/filter/ScopeDependencyFilterTest.java | 71 +
.../manager/ClassicDependencyManagerTest.java | 82 ++
.../selector/AndDependencySelectorTest.java | 153 ++
.../AbstractDependencyGraphTransformerTest.java | 131 ++
.../graph/transformer/ConflictIdSorterTest.java | 129 ++
.../graph/transformer/ConflictMarkerTest.java | 122 ++
.../JavaDependencyContextRefinerTest.java | 117 ++
.../transformer/JavaScopeSelectorTest.java | 261 ++++
.../transformer/NearestVersionSelectorTest.java | 244 ++++
.../util/graph/transformer/RootQueueTest.java | 106 ++
.../graph/transformer/SimpleConflictMarker.java | 80 ++
.../SimpleOptionalitySelectorTest.java | 83 ++
.../traverser/AndDependencyTraverserTest.java | 154 ++
.../traverser/FatArtifactTraverserTest.java | 76 +
.../StaticDependencyTraverserTest.java | 70 +
.../versions/AbstractVersionFilterTest.java | 96 ++
.../versions/ChainedVersionFilterTest.java | 85 ++
.../ContextualSnapshotVersionFilterTest.java | 72 +
.../versions/HighestVersionFilterTest.java | 57 +
.../versions/SnapshotVersionFilterTest.java | 57 +
.../visitor/FilteringDependencyVisitorTest.java | 66 +
.../PathRecordingDependencyVisitorTest.java | 147 ++
.../visitor/PostorderNodeListGeneratorTest.java | 73 +
.../visitor/PreorderNodeListGeneratorTest.java | 73 +
.../visitor/TreeDependencyVisitorTest.java | 71 +
.../listener/ChainedRepositoryListenerTest.java | 46 +
.../listener/ChainedTransferListenerTest.java | 46 +
.../repository/ComponentAuthenticationTest.java | 106 ++
.../repository/DefaultMirrorSelectorTest.java | 194 +++
.../repository/DefaultProxySelectorTest.java | 177 +++
.../util/repository/JreProxySelectorTest.java | 184 +++
.../repository/SecretAuthenticationTest.java | 109 ++
.../repository/StringAuthenticationTest.java | 101 ++
.../util/version/AbstractVersionTest.java | 79 ++
.../util/version/GenericVersionRangeTest.java | 167 +++
.../util/version/GenericVersionSchemeTest.java | 113 ++
.../aether/util/version/GenericVersionTest.java | 345 +++++
.../util/version/UnionVersionRangeTest.java | 105 ++
.../transformer/conflict-id-sorter/cycle.txt | 5 +
.../transformer/conflict-id-sorter/cycles.txt | 14 +
.../conflict-id-sorter/no-conflicts.txt | 5 +
.../transformer/conflict-id-sorter/simple.txt | 5 +
.../transformer/conflict-marker/relocation1.txt | 3 +
.../transformer/conflict-marker/relocation2.txt | 3 +
.../transformer/conflict-marker/relocation3.txt | 4 +
.../transformer/conflict-marker/simple.txt | 3 +
.../conflict-direct-dep.txt | 4 +
.../optionality-selector/conflict.txt | 5 +
.../transformer/optionality-selector/derive.txt | 5 +
.../conflict-and-inheritance.txt | 10 +
.../conflicting-direct-nodes.txt | 3 +
.../transformer/scope-calculator/cycle-a.txt | 8 +
.../transformer/scope-calculator/cycle-b.txt | 7 +
.../transformer/scope-calculator/cycle-c.txt | 10 +
.../transformer/scope-calculator/cycle-d.txt | 7 +
.../scope-calculator/direct-nodes-winning.txt | 10 +
.../direct-with-conflict-and-inheritance.txt | 11 +
.../scope-calculator/dueling-scopes.txt | 7 +
.../scope-calculator/inheritance.txt | 3 +
.../scope-calculator/multiple-inheritance.txt | 5 +
.../transformer/scope-calculator/system-1.txt | 3 +
.../transformer/scope-calculator/system-2.txt | 3 +
.../version-resolver/conflict-id-cycle.txt | 7 +
.../transformer/version-resolver/cycle.txt | 8 +
.../version-resolver/dead-conflict-group.txt | 5 +
.../transformer/version-resolver/loop.txt | 2 +
.../nearest-underneath-loser-a.txt | 9 +
.../nearest-underneath-loser-b.txt | 9 +
.../version-resolver/overlapping-cycles.txt | 8 +
.../version-resolver/range-backtracking.txt | 10 +
.../transformer/version-resolver/ranges.txt | 7 +
.../version-resolver/scope-vs-version.txt | 14 +
.../version-resolver/sibling-versions.txt | 7 +
.../version-resolver/soft-vs-range.txt | 5 +
.../version-resolver/unsolvable-with-cycle.txt | 10 +
.../transformer/version-resolver/unsolvable.txt | 5 +
.../transformer/version-resolver/verbose.txt | 8 +
.../resources/visitor/filtering/parents.txt | 6 +
.../resources/visitor/ordered-list/cycles.txt | 7 +
.../resources/visitor/ordered-list/simple.txt | 5 +
.../resources/visitor/path-recorder/cycle.txt | 7 +
.../resources/visitor/path-recorder/nested.txt | 4 +
.../resources/visitor/path-recorder/parents.txt | 6 +
.../resources/visitor/path-recorder/simple.txt | 4 +
.../src/test/resources/visitor/tree/cycles.txt | 6 +
pom.xml | 54 +-
src/site/resources/images/aether-deps.png | Bin 19168 -> 0 bytes
.../resources/images/maven-resolver-deps.png | Bin 0 -> 19168 bytes
src/site/site.xml | 8 +-
src/site/xdoc/aether-deps.odg | Bin 17567 -> 0 bytes
src/site/xdoc/index.xml | 30 +-
src/site/xdoc/maven-resolver-deps.odg | Bin 0 -> 17567 bytes
2413 files changed, 87242 insertions(+), 87248 deletions(-)
----------------------------------------------------------------------
[13/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictResolver.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictResolver.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictResolver.java
deleted file mode 100644
index 6ccc508..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictResolver.java
+++ /dev/null
@@ -1,1327 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.IdentityHashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.DefaultDependencyNode;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- * A dependency graph transformer that resolves version and scope conflicts among dependencies. For a given set of
- * conflicting nodes, one node will be chosen as the winner and the other nodes are removed from the dependency graph.
- * The exact rules by which a winning node and its effective scope are determined are controlled by user-supplied
- * implementations of {@link VersionSelector}, {@link ScopeSelector}, {@link OptionalitySelector} and
- * {@link ScopeDeriver}.
- * <p>
- * By default, this graph transformer will turn the dependency graph into a tree without duplicate artifacts. Using the
- * configuration property {@link #CONFIG_PROP_VERBOSE}, a verbose mode can be enabled where the graph is still turned
- * into a tree but all nodes participating in a conflict are retained. The nodes that were rejected during conflict
- * resolution have no children and link back to the winner node via the {@link #NODE_DATA_WINNER} key in their custom
- * data. Additionally, the keys {@link #NODE_DATA_ORIGINAL_SCOPE} and {@link #NODE_DATA_ORIGINAL_OPTIONALITY} are used
- * to store the original scope and optionality of each node. Obviously, the resulting dependency tree is not suitable
- * for artifact resolution unless a filter is employed to exclude the duplicate dependencies.
- * <p>
- * This transformer will query the keys {@link TransformationContextKeys#CONFLICT_IDS},
- * {@link TransformationContextKeys#SORTED_CONFLICT_IDS}, {@link TransformationContextKeys#CYCLIC_CONFLICT_IDS} for
- * existing information about conflict ids. In absence of this information, it will automatically invoke the
- * {@link ConflictIdSorter} to calculate it.
- */
-public final class ConflictResolver
- implements DependencyGraphTransformer
-{
-
- /**
- * The key in the repository session's {@link RepositorySystemSession#getConfigProperties() configuration
- * properties} used to store a {@link Boolean} flag controlling the transformer's verbose mode.
- */
- public static final String CONFIG_PROP_VERBOSE = "aether.conflictResolver.verbose";
-
- /**
- * The key in the dependency node's {@link DependencyNode#getData() custom data} under which a reference to the
- * {@link DependencyNode} which has won the conflict is stored.
- */
- public static final String NODE_DATA_WINNER = "conflict.winner";
-
- /**
- * The key in the dependency node's {@link DependencyNode#getData() custom data} under which the scope of the
- * dependency before scope derivation and conflict resolution is stored.
- */
- public static final String NODE_DATA_ORIGINAL_SCOPE = "conflict.originalScope";
-
- /**
- * The key in the dependency node's {@link DependencyNode#getData() custom data} under which the optional flag of
- * the dependency before derivation and conflict resolution is stored.
- */
- public static final String NODE_DATA_ORIGINAL_OPTIONALITY = "conflict.originalOptionality";
-
- private final VersionSelector versionSelector;
-
- private final ScopeSelector scopeSelector;
-
- private final ScopeDeriver scopeDeriver;
-
- private final OptionalitySelector optionalitySelector;
-
- /**
- * Creates a new conflict resolver instance with the specified hooks.
- *
- * @param versionSelector The version selector to use, must not be {@code null}.
- * @param scopeSelector The scope selector to use, must not be {@code null}.
- * @param optionalitySelector The optionality selector ot use, must not be {@code null}.
- * @param scopeDeriver The scope deriver to use, must not be {@code null}.
- */
- public ConflictResolver( VersionSelector versionSelector, ScopeSelector scopeSelector,
- OptionalitySelector optionalitySelector, ScopeDeriver scopeDeriver )
- {
- if ( versionSelector == null )
- {
- throw new IllegalArgumentException( "version selector not specified" );
- }
- this.versionSelector = versionSelector;
- if ( scopeSelector == null )
- {
- throw new IllegalArgumentException( "scope selector not specified" );
- }
- this.scopeSelector = scopeSelector;
- if ( scopeDeriver == null )
- {
- throw new IllegalArgumentException( "scope deriver not specified" );
- }
- this.scopeDeriver = scopeDeriver;
- if ( optionalitySelector == null )
- {
- throw new IllegalArgumentException( "optionality selector not specified" );
- }
- this.optionalitySelector = optionalitySelector;
- }
-
- public DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- List<?> sortedConflictIds = (List<?>) context.get( TransformationContextKeys.SORTED_CONFLICT_IDS );
- if ( sortedConflictIds == null )
- {
- ConflictIdSorter sorter = new ConflictIdSorter();
- sorter.transformGraph( node, context );
-
- sortedConflictIds = (List<?>) context.get( TransformationContextKeys.SORTED_CONFLICT_IDS );
- }
-
- @SuppressWarnings( "unchecked" )
- Map<String, Object> stats = (Map<String, Object>) context.get( TransformationContextKeys.STATS );
- long time1 = System.nanoTime();
-
- @SuppressWarnings( "unchecked" )
- Collection<Collection<?>> conflictIdCycles =
- (Collection<Collection<?>>) context.get( TransformationContextKeys.CYCLIC_CONFLICT_IDS );
- if ( conflictIdCycles == null )
- {
- throw new RepositoryException( "conflict id cycles have not been identified" );
- }
-
- Map<?, ?> conflictIds = (Map<?, ?>) context.get( TransformationContextKeys.CONFLICT_IDS );
- if ( conflictIds == null )
- {
- throw new RepositoryException( "conflict groups have not been identified" );
- }
-
- Map<Object, Collection<Object>> cyclicPredecessors = new HashMap<Object, Collection<Object>>();
- for ( Collection<?> cycle : conflictIdCycles )
- {
- for ( Object conflictId : cycle )
- {
- Collection<Object> predecessors = cyclicPredecessors.get( conflictId );
- if ( predecessors == null )
- {
- predecessors = new HashSet<Object>();
- cyclicPredecessors.put( conflictId, predecessors );
- }
- predecessors.addAll( cycle );
- }
- }
-
- State state = new State( node, conflictIds, sortedConflictIds.size(), context );
- for ( Iterator<?> it = sortedConflictIds.iterator(); it.hasNext(); )
- {
- Object conflictId = it.next();
-
- // reset data structures for next graph walk
- state.prepare( conflictId, cyclicPredecessors.get( conflictId ) );
-
- // find nodes with the current conflict id and while walking the graph (more deeply), nuke leftover losers
- gatherConflictItems( node, state );
-
- // now that we know the min depth of the parents, update depth of conflict items
- state.finish();
-
- // earlier runs might have nuked all parents of the current conflict id, so it might not exist anymore
- if ( !state.items.isEmpty() )
- {
- ConflictContext ctx = state.conflictCtx;
- state.versionSelector.selectVersion( ctx );
- if ( ctx.winner == null )
- {
- throw new RepositoryException( "conflict resolver did not select winner among " + state.items );
- }
- DependencyNode winner = ctx.winner.node;
-
- state.scopeSelector.selectScope( ctx );
- if ( state.verbose )
- {
- winner.setData( NODE_DATA_ORIGINAL_SCOPE, winner.getDependency().getScope() );
- }
- winner.setScope( ctx.scope );
-
- state.optionalitySelector.selectOptionality( ctx );
- if ( state.verbose )
- {
- winner.setData( NODE_DATA_ORIGINAL_OPTIONALITY, winner.getDependency().isOptional() );
- }
- winner.setOptional( ctx.optional );
-
- removeLosers( state );
- }
-
- // record the winner so we can detect leftover losers during future graph walks
- state.winner();
-
- // in case of cycles, trigger final graph walk to ensure all leftover losers are gone
- if ( !it.hasNext() && !conflictIdCycles.isEmpty() && state.conflictCtx.winner != null )
- {
- DependencyNode winner = state.conflictCtx.winner.node;
- state.prepare( state, null );
- gatherConflictItems( winner, state );
- }
- }
-
- if ( stats != null )
- {
- long time2 = System.nanoTime();
- stats.put( "ConflictResolver.totalTime", time2 - time1 );
- stats.put( "ConflictResolver.conflictItemCount", state.totalConflictItems );
- }
-
- return node;
- }
-
- private boolean gatherConflictItems( DependencyNode node, State state )
- throws RepositoryException
- {
- Object conflictId = state.conflictIds.get( node );
- if ( state.currentId.equals( conflictId ) )
- {
- // found it, add conflict item (if not already done earlier by another path)
- state.add( node );
- // we don't recurse here so we might miss losers beneath us, those will be nuked during future walks below
- }
- else if ( state.loser( node, conflictId ) )
- {
- // found a leftover loser (likely in a cycle) of an already processed conflict id, tell caller to nuke it
- return false;
- }
- else if ( state.push( node, conflictId ) )
- {
- // found potential parent, no cycle and not visisted before with the same derived scope, so recurse
- for ( Iterator<DependencyNode> it = node.getChildren().iterator(); it.hasNext(); )
- {
- DependencyNode child = it.next();
- if ( !gatherConflictItems( child, state ) )
- {
- it.remove();
- }
- }
- state.pop();
- }
- return true;
- }
-
- private void removeLosers( State state )
- {
- ConflictItem winner = state.conflictCtx.winner;
- List<DependencyNode> previousParent = null;
- ListIterator<DependencyNode> childIt = null;
- boolean conflictVisualized = false;
- for ( ConflictItem item : state.items )
- {
- if ( item == winner )
- {
- continue;
- }
- if ( item.parent != previousParent )
- {
- childIt = item.parent.listIterator();
- previousParent = item.parent;
- conflictVisualized = false;
- }
- while ( childIt.hasNext() )
- {
- DependencyNode child = childIt.next();
- if ( child == item.node )
- {
- if ( state.verbose && !conflictVisualized && item.parent != winner.parent )
- {
- conflictVisualized = true;
- DependencyNode loser = new DefaultDependencyNode( child );
- loser.setData( NODE_DATA_WINNER, winner.node );
- loser.setData( NODE_DATA_ORIGINAL_SCOPE, loser.getDependency().getScope() );
- loser.setData( NODE_DATA_ORIGINAL_OPTIONALITY, loser.getDependency().isOptional() );
- loser.setScope( item.getScopes().iterator().next() );
- loser.setChildren( Collections.<DependencyNode>emptyList() );
- childIt.set( loser );
- }
- else
- {
- childIt.remove();
- }
- break;
- }
- }
- }
- // there might still be losers beneath the winner (e.g. in case of cycles)
- // those will be nuked during future graph walks when we include the winner in the recursion
- }
-
- static final class NodeInfo
- {
-
- /**
- * The smallest depth at which the node was seen, used for "the" depth of its conflict items.
- */
- int minDepth;
-
- /**
- * The set of derived scopes the node was visited with, used to check whether an already seen node needs to be
- * revisited again in context of another scope. To conserve memory, we start with {@code String} and update to
- * {@code Set<String>} if needed.
- */
- Object derivedScopes;
-
- /**
- * The set of derived optionalities the node was visited with, used to check whether an already seen node needs
- * to be revisited again in context of another optionality. To conserve memory, encoded as bit field (bit 0 ->
- * optional=false, bit 1 -> optional=true).
- */
- int derivedOptionalities;
-
- /**
- * The conflict items which are immediate children of the node, used to easily update those conflict items after
- * a new parent scope/optionality was encountered.
- */
- List<ConflictItem> children;
-
- static final int CHANGE_SCOPE = 0x01;
-
- static final int CHANGE_OPTIONAL = 0x02;
-
- private static final int OPT_FALSE = 0x01;
-
- private static final int OPT_TRUE = 0x02;
-
- NodeInfo( int depth, String derivedScope, boolean optional )
- {
- minDepth = depth;
- derivedScopes = derivedScope;
- derivedOptionalities = optional ? OPT_TRUE : OPT_FALSE;
- }
-
- @SuppressWarnings( "unchecked" )
- int update( int depth, String derivedScope, boolean optional )
- {
- if ( depth < minDepth )
- {
- minDepth = depth;
- }
- int changes;
- if ( derivedScopes.equals( derivedScope ) )
- {
- changes = 0;
- }
- else if ( derivedScopes instanceof Collection )
- {
- changes = ( (Collection<String>) derivedScopes ).add( derivedScope ) ? CHANGE_SCOPE : 0;
- }
- else
- {
- Collection<String> scopes = new HashSet<String>();
- scopes.add( (String) derivedScopes );
- scopes.add( derivedScope );
- derivedScopes = scopes;
- changes = CHANGE_SCOPE;
- }
- int bit = optional ? OPT_TRUE : OPT_FALSE;
- if ( ( derivedOptionalities & bit ) == 0 )
- {
- derivedOptionalities |= bit;
- changes |= CHANGE_OPTIONAL;
- }
- return changes;
- }
-
- void add( ConflictItem item )
- {
- if ( children == null )
- {
- children = new ArrayList<ConflictItem>( 1 );
- }
- children.add( item );
- }
-
- }
-
- final class State
- {
-
- /**
- * The conflict id currently processed.
- */
- Object currentId;
-
- /**
- * Stats counter.
- */
- int totalConflictItems;
-
- /**
- * Flag whether we should keep losers in the graph to enable visualization/troubleshooting of conflicts.
- */
- final boolean verbose;
-
- /**
- * A mapping from conflict id to winner node, helps to recognize nodes that have their effective
- * scope&optionality set or are leftovers from previous removals.
- */
- final Map<Object, DependencyNode> resolvedIds;
-
- /**
- * The set of conflict ids which could apply to ancestors of nodes with the current conflict id, used to avoid
- * recursion early on. This is basically a superset of the key set of resolvedIds, the additional ids account
- * for cyclic dependencies.
- */
- final Collection<Object> potentialAncestorIds;
-
- /**
- * The output from the conflict marker
- */
- final Map<?, ?> conflictIds;
-
- /**
- * The conflict items we have gathered so far for the current conflict id.
- */
- final List<ConflictItem> items;
-
- /**
- * The (conceptual) mapping from nodes to extra infos, technically keyed by the node's child list which better
- * captures the identity of a node since we're basically concerned with effects towards children.
- */
- final Map<List<DependencyNode>, NodeInfo> infos;
-
- /**
- * The set of nodes on the DFS stack to detect cycles, technically keyed by the node's child list to match the
- * dirty graph structure produced by the dependency collector for cycles.
- */
- final Map<List<DependencyNode>, Object> stack;
-
- /**
- * The stack of parent nodes.
- */
- final List<DependencyNode> parentNodes;
-
- /**
- * The stack of derived scopes for parent nodes.
- */
- final List<String> parentScopes;
-
- /**
- * The stack of derived optional flags for parent nodes.
- */
- final List<Boolean> parentOptionals;
-
- /**
- * The stack of node infos for parent nodes, may contain {@code null} which is used to disable creating new
- * conflict items when visiting their parent again (conflict items are meant to be unique by parent-node combo).
- */
- final List<NodeInfo> parentInfos;
-
- /**
- * The conflict context passed to the version/scope/optionality selectors, updated as we move along rather than
- * recreated to avoid tmp objects.
- */
- final ConflictContext conflictCtx;
-
- /**
- * The scope context passed to the scope deriver, updated as we move along rather than recreated to avoid tmp
- * objects.
- */
- final ScopeContext scopeCtx;
-
- /**
- * The effective version selector, i.e. after initialization.
- */
- final VersionSelector versionSelector;
-
- /**
- * The effective scope selector, i.e. after initialization.
- */
- final ScopeSelector scopeSelector;
-
- /**
- * The effective scope deriver, i.e. after initialization.
- */
- final ScopeDeriver scopeDeriver;
-
- /**
- * The effective optionality selector, i.e. after initialization.
- */
- final OptionalitySelector optionalitySelector;
-
- State( DependencyNode root, Map<?, ?> conflictIds, int conflictIdCount,
- DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- this.conflictIds = conflictIds;
- verbose = ConfigUtils.getBoolean( context.getSession(), false, CONFIG_PROP_VERBOSE );
- potentialAncestorIds = new HashSet<Object>( conflictIdCount * 2 );
- resolvedIds = new HashMap<Object, DependencyNode>( conflictIdCount * 2 );
- items = new ArrayList<ConflictItem>( 256 );
- infos = new IdentityHashMap<List<DependencyNode>, NodeInfo>( 64 );
- stack = new IdentityHashMap<List<DependencyNode>, Object>( 64 );
- parentNodes = new ArrayList<DependencyNode>( 64 );
- parentScopes = new ArrayList<String>( 64 );
- parentOptionals = new ArrayList<Boolean>( 64 );
- parentInfos = new ArrayList<NodeInfo>( 64 );
- conflictCtx = new ConflictContext( root, conflictIds, items );
- scopeCtx = new ScopeContext( null, null );
- versionSelector = ConflictResolver.this.versionSelector.getInstance( root, context );
- scopeSelector = ConflictResolver.this.scopeSelector.getInstance( root, context );
- scopeDeriver = ConflictResolver.this.scopeDeriver.getInstance( root, context );
- optionalitySelector = ConflictResolver.this.optionalitySelector.getInstance( root, context );
- }
-
- void prepare( Object conflictId, Collection<Object> cyclicPredecessors )
- {
- currentId = conflictCtx.conflictId = conflictId;
- conflictCtx.winner = null;
- conflictCtx.scope = null;
- conflictCtx.optional = null;
- items.clear();
- infos.clear();
- if ( cyclicPredecessors != null )
- {
- potentialAncestorIds.addAll( cyclicPredecessors );
- }
- }
-
- void finish()
- {
- List<DependencyNode> previousParent = null;
- int previousDepth = 0;
- totalConflictItems += items.size();
- for ( int i = items.size() - 1; i >= 0; i-- )
- {
- ConflictItem item = items.get( i );
- if ( item.parent == previousParent )
- {
- item.depth = previousDepth;
- }
- else if ( item.parent != null )
- {
- previousParent = item.parent;
- NodeInfo info = infos.get( previousParent );
- previousDepth = info.minDepth + 1;
- item.depth = previousDepth;
- }
- }
- potentialAncestorIds.add( currentId );
- }
-
- void winner()
- {
- resolvedIds.put( currentId, ( conflictCtx.winner != null ) ? conflictCtx.winner.node : null );
- }
-
- boolean loser( DependencyNode node, Object conflictId )
- {
- DependencyNode winner = resolvedIds.get( conflictId );
- return winner != null && winner != node;
- }
-
- boolean push( DependencyNode node, Object conflictId )
- throws RepositoryException
- {
- if ( conflictId == null )
- {
- if ( node.getDependency() != null )
- {
- if ( node.getData().get( NODE_DATA_WINNER ) != null )
- {
- return false;
- }
- throw new RepositoryException( "missing conflict id for node " + node );
- }
- }
- else if ( !potentialAncestorIds.contains( conflictId ) )
- {
- return false;
- }
-
- List<DependencyNode> graphNode = node.getChildren();
- if ( stack.put( graphNode, Boolean.TRUE ) != null )
- {
- return false;
- }
-
- int depth = depth();
- String scope = deriveScope( node, conflictId );
- boolean optional = deriveOptional( node, conflictId );
- NodeInfo info = infos.get( graphNode );
- if ( info == null )
- {
- info = new NodeInfo( depth, scope, optional );
- infos.put( graphNode, info );
- parentInfos.add( info );
- parentNodes.add( node );
- parentScopes.add( scope );
- parentOptionals.add( optional );
- }
- else
- {
- int changes = info.update( depth, scope, optional );
- if ( changes == 0 )
- {
- stack.remove( graphNode );
- return false;
- }
- parentInfos.add( null ); // disable creating new conflict items, we update the existing ones below
- parentNodes.add( node );
- parentScopes.add( scope );
- parentOptionals.add( optional );
- if ( info.children != null )
- {
- if ( ( changes & NodeInfo.CHANGE_SCOPE ) != 0 )
- {
- for ( int i = info.children.size() - 1; i >= 0; i-- )
- {
- ConflictItem item = info.children.get( i );
- String childScope = deriveScope( item.node, null );
- item.addScope( childScope );
- }
- }
- if ( ( changes & NodeInfo.CHANGE_OPTIONAL ) != 0 )
- {
- for ( int i = info.children.size() - 1; i >= 0; i-- )
- {
- ConflictItem item = info.children.get( i );
- boolean childOptional = deriveOptional( item.node, null );
- item.addOptional( childOptional );
- }
- }
- }
- }
-
- return true;
- }
-
- void pop()
- {
- int last = parentInfos.size() - 1;
- parentInfos.remove( last );
- parentScopes.remove( last );
- parentOptionals.remove( last );
- DependencyNode node = parentNodes.remove( last );
- stack.remove( node.getChildren() );
- }
-
- void add( DependencyNode node )
- throws RepositoryException
- {
- DependencyNode parent = parent();
- if ( parent == null )
- {
- ConflictItem item = newConflictItem( parent, node );
- items.add( item );
- }
- else
- {
- NodeInfo info = parentInfos.get( parentInfos.size() - 1 );
- if ( info != null )
- {
- ConflictItem item = newConflictItem( parent, node );
- info.add( item );
- items.add( item );
- }
- }
- }
-
- private ConflictItem newConflictItem( DependencyNode parent, DependencyNode node )
- throws RepositoryException
- {
- return new ConflictItem( parent, node, deriveScope( node, null ), deriveOptional( node, null ) );
- }
-
- private int depth()
- {
- return parentNodes.size();
- }
-
- private DependencyNode parent()
- {
- int size = parentNodes.size();
- return ( size <= 0 ) ? null : parentNodes.get( size - 1 );
- }
-
- private String deriveScope( DependencyNode node, Object conflictId )
- throws RepositoryException
- {
- if ( ( node.getManagedBits() & DependencyNode.MANAGED_SCOPE ) != 0
- || ( conflictId != null && resolvedIds.containsKey( conflictId ) ) )
- {
- return scope( node.getDependency() );
- }
-
- int depth = parentNodes.size();
- scopes( depth, node.getDependency() );
- if ( depth > 0 )
- {
- scopeDeriver.deriveScope( scopeCtx );
- }
- return scopeCtx.derivedScope;
- }
-
- private void scopes( int parent, Dependency child )
- {
- scopeCtx.parentScope = ( parent > 0 ) ? parentScopes.get( parent - 1 ) : null;
- scopeCtx.derivedScope = scopeCtx.childScope = scope( child );
- }
-
- private String scope( Dependency dependency )
- {
- return ( dependency != null ) ? dependency.getScope() : null;
- }
-
- private boolean deriveOptional( DependencyNode node, Object conflictId )
- {
- Dependency dep = node.getDependency();
- boolean optional = ( dep != null ) ? dep.isOptional() : false;
- if ( optional || ( node.getManagedBits() & DependencyNode.MANAGED_OPTIONAL ) != 0
- || ( conflictId != null && resolvedIds.containsKey( conflictId ) ) )
- {
- return optional;
- }
- int depth = parentNodes.size();
- return ( depth > 0 ) ? parentOptionals.get( depth - 1 ) : false;
- }
-
- }
-
- /**
- * A context used to hold information that is relevant for deriving the scope of a child dependency.
- *
- * @see ScopeDeriver
- * @noinstantiate This class is not intended to be instantiated by clients in production code, the constructor may
- * change without notice and only exists to enable unit testing.
- */
- public static final class ScopeContext
- {
-
- String parentScope;
-
- String childScope;
-
- String derivedScope;
-
- /**
- * Creates a new scope context with the specified properties.
- *
- * @param parentScope The scope of the parent dependency, may be {@code null}.
- * @param childScope The scope of the child dependency, may be {@code null}.
- * @noreference This class is not intended to be instantiated by clients in production code, the constructor may
- * change without notice and only exists to enable unit testing.
- */
- public ScopeContext( String parentScope, String childScope )
- {
- this.parentScope = ( parentScope != null ) ? parentScope : "";
- derivedScope = this.childScope = ( childScope != null ) ? childScope : "";
- }
-
- /**
- * Gets the scope of the parent dependency. This is usually the scope that was derived by earlier invocations of
- * the scope deriver.
- *
- * @return The scope of the parent dependency, never {@code null}.
- */
- public String getParentScope()
- {
- return parentScope;
- }
-
- /**
- * Gets the original scope of the child dependency. This is the scope that was declared in the artifact
- * descriptor of the parent dependency.
- *
- * @return The original scope of the child dependency, never {@code null}.
- */
- public String getChildScope()
- {
- return childScope;
- }
-
- /**
- * Gets the derived scope of the child dependency. This is initially equal to {@link #getChildScope()} until the
- * scope deriver makes changes.
- *
- * @return The derived scope of the child dependency, never {@code null}.
- */
- public String getDerivedScope()
- {
- return derivedScope;
- }
-
- /**
- * Sets the derived scope of the child dependency.
- *
- * @param derivedScope The derived scope of the dependency, may be {@code null}.
- */
- public void setDerivedScope( String derivedScope )
- {
- this.derivedScope = ( derivedScope != null ) ? derivedScope : "";
- }
-
- }
-
- /**
- * A conflicting dependency.
- *
- * @noinstantiate This class is not intended to be instantiated by clients in production code, the constructor may
- * change without notice and only exists to enable unit testing.
- */
- public static final class ConflictItem
- {
-
- // nodes can share child lists, we care about the unique owner of a child node which is the child list
- final List<DependencyNode> parent;
-
- // only for debugging/toString() to help identify the parent node(s)
- final Artifact artifact;
-
- final DependencyNode node;
-
- int depth;
-
- // we start with String and update to Set<String> if needed
- Object scopes;
-
- // bit field of OPTIONAL_FALSE and OPTIONAL_TRUE
- int optionalities;
-
- /**
- * Bit flag indicating whether one or more paths consider the dependency non-optional.
- */
- public static final int OPTIONAL_FALSE = 0x01;
-
- /**
- * Bit flag indicating whether one or more paths consider the dependency optional.
- */
- public static final int OPTIONAL_TRUE = 0x02;
-
- ConflictItem( DependencyNode parent, DependencyNode node, String scope, boolean optional )
- {
- if ( parent != null )
- {
- this.parent = parent.getChildren();
- this.artifact = parent.getArtifact();
- }
- else
- {
- this.parent = null;
- this.artifact = null;
- }
- this.node = node;
- this.scopes = scope;
- this.optionalities = optional ? OPTIONAL_TRUE : OPTIONAL_FALSE;
- }
-
- /**
- * Creates a new conflict item with the specified properties.
- *
- * @param parent The parent node of the conflicting dependency, may be {@code null}.
- * @param node The conflicting dependency, must not be {@code null}.
- * @param depth The zero-based depth of the conflicting dependency.
- * @param optionalities The optionalities the dependency was encountered with, encoded as a bit field consisting
- * of {@link ConflictResolver.ConflictItem#OPTIONAL_TRUE} and
- * {@link ConflictResolver.ConflictItem#OPTIONAL_FALSE}.
- * @param scopes The derived scopes of the conflicting dependency, must not be {@code null}.
- * @noreference This class is not intended to be instantiated by clients in production code, the constructor may
- * change without notice and only exists to enable unit testing.
- */
- public ConflictItem( DependencyNode parent, DependencyNode node, int depth, int optionalities, String... scopes )
- {
- this.parent = ( parent != null ) ? parent.getChildren() : null;
- this.artifact = ( parent != null ) ? parent.getArtifact() : null;
- this.node = node;
- this.depth = depth;
- this.optionalities = optionalities;
- this.scopes = Arrays.asList( scopes );
- }
-
- /**
- * Determines whether the specified conflict item is a sibling of this item.
- *
- * @param item The other conflict item, must not be {@code null}.
- * @return {@code true} if the given item has the same parent as this item, {@code false} otherwise.
- */
- public boolean isSibling( ConflictItem item )
- {
- return parent == item.parent;
- }
-
- /**
- * Gets the dependency node involved in the conflict.
- *
- * @return The involved dependency node, never {@code null}.
- */
- public DependencyNode getNode()
- {
- return node;
- }
-
- /**
- * Gets the dependency involved in the conflict, short for {@code getNode.getDependency()}.
- *
- * @return The involved dependency, never {@code null}.
- */
- public Dependency getDependency()
- {
- return node.getDependency();
- }
-
- /**
- * Gets the zero-based depth at which the conflicting node occurs in the graph. As such, the depth denotes the
- * number of parent nodes. If actually multiple paths lead to the node, the return value denotes the smallest
- * possible depth.
- *
- * @return The zero-based depth of the node in the graph.
- */
- public int getDepth()
- {
- return depth;
- }
-
- /**
- * Gets the derived scopes of the dependency. In general, the same dependency node could be reached via
- * different paths and each path might result in a different derived scope.
- *
- * @see ScopeDeriver
- * @return The (read-only) set of derived scopes of the dependency, never {@code null}.
- */
- @SuppressWarnings( "unchecked" )
- public Collection<String> getScopes()
- {
- if ( scopes instanceof String )
- {
- return Collections.singleton( (String) scopes );
- }
- return (Collection<String>) scopes;
- }
-
- @SuppressWarnings( "unchecked" )
- void addScope( String scope )
- {
- if ( scopes instanceof Collection )
- {
- ( (Collection<String>) scopes ).add( scope );
- }
- else if ( !scopes.equals( scope ) )
- {
- Collection<Object> set = new HashSet<Object>();
- set.add( scopes );
- set.add( scope );
- scopes = set;
- }
- }
-
- /**
- * Gets the derived optionalities of the dependency. In general, the same dependency node could be reached via
- * different paths and each path might result in a different derived optionality.
- *
- * @return A bit field consisting of {@link ConflictResolver.ConflictItem#OPTIONAL_FALSE} and/or
- * {@link ConflictResolver.ConflictItem#OPTIONAL_TRUE} indicating the derived optionalities the
- * dependency was encountered with.
- */
- public int getOptionalities()
- {
- return optionalities;
- }
-
- void addOptional( boolean optional )
- {
- optionalities |= optional ? OPTIONAL_TRUE : OPTIONAL_FALSE;
- }
-
- @Override
- public String toString()
- {
- return node + " @ " + depth + " < " + artifact;
- }
-
- }
-
- /**
- * A context used to hold information that is relevant for resolving version and scope conflicts.
- *
- * @see VersionSelector
- * @see ScopeSelector
- * @noinstantiate This class is not intended to be instantiated by clients in production code, the constructor may
- * change without notice and only exists to enable unit testing.
- */
- public static final class ConflictContext
- {
-
- final DependencyNode root;
-
- final Map<?, ?> conflictIds;
-
- final Collection<ConflictItem> items;
-
- Object conflictId;
-
- ConflictItem winner;
-
- String scope;
-
- Boolean optional;
-
- ConflictContext( DependencyNode root, Map<?, ?> conflictIds, Collection<ConflictItem> items )
- {
- this.root = root;
- this.conflictIds = conflictIds;
- this.items = Collections.unmodifiableCollection( items );
- }
-
- /**
- * Creates a new conflict context.
- *
- * @param root The root node of the dependency graph, must not be {@code null}.
- * @param conflictId The conflict id for the set of conflicting dependencies in this context, must not be
- * {@code null}.
- * @param conflictIds The mapping from dependency node to conflict id, must not be {@code null}.
- * @param items The conflict items in this context, must not be {@code null}.
- * @noreference This class is not intended to be instantiated by clients in production code, the constructor may
- * change without notice and only exists to enable unit testing.
- */
- public ConflictContext( DependencyNode root, Object conflictId, Map<DependencyNode, Object> conflictIds,
- Collection<ConflictItem> items )
- {
- this( root, conflictIds, items );
- this.conflictId = conflictId;
- }
-
- /**
- * Gets the root node of the dependency graph being transformed.
- *
- * @return The root node of the dependeny graph, never {@code null}.
- */
- public DependencyNode getRoot()
- {
- return root;
- }
-
- /**
- * Determines whether the specified dependency node belongs to this conflict context.
- *
- * @param node The dependency node to check, must not be {@code null}.
- * @return {@code true} if the given node belongs to this conflict context, {@code false} otherwise.
- */
- public boolean isIncluded( DependencyNode node )
- {
- return conflictId.equals( conflictIds.get( node ) );
- }
-
- /**
- * Gets the collection of conflict items in this context.
- *
- * @return The (read-only) collection of conflict items in this context, never {@code null}.
- */
- public Collection<ConflictItem> getItems()
- {
- return items;
- }
-
- /**
- * Gets the conflict item which has been selected as the winner among the conflicting dependencies.
- *
- * @return The winning conflict item or {@code null} if not set yet.
- */
- public ConflictItem getWinner()
- {
- return winner;
- }
-
- /**
- * Sets the conflict item which has been selected as the winner among the conflicting dependencies.
- *
- * @param winner The winning conflict item, may be {@code null}.
- */
- public void setWinner( ConflictItem winner )
- {
- this.winner = winner;
- }
-
- /**
- * Gets the effective scope of the winning dependency.
- *
- * @return The effective scope of the winning dependency or {@code null} if none.
- */
- public String getScope()
- {
- return scope;
- }
-
- /**
- * Sets the effective scope of the winning dependency.
- *
- * @param scope The effective scope, may be {@code null}.
- */
- public void setScope( String scope )
- {
- this.scope = scope;
- }
-
- /**
- * Gets the effective optional flag of the winning dependency.
- *
- * @return The effective optional flag or {@code null} if none.
- */
- public Boolean getOptional()
- {
- return optional;
- }
-
- /**
- * Sets the effective optional flag of the winning dependency.
- *
- * @param optional The effective optional flag, may be {@code null}.
- */
- public void setOptional( Boolean optional )
- {
- this.optional = optional;
- }
-
- @Override
- public String toString()
- {
- return winner + " @ " + scope + " < " + items;
- }
-
- }
-
- /**
- * An extension point of {@link ConflictResolver} that determines the winner among conflicting dependencies. The
- * winning node (and its children) will be retained in the dependency graph, the other nodes will get removed. The
- * version selector does not need to deal with potential scope conflicts, these will be addressed afterwards by the
- * {@link ScopeSelector}.
- * <p>
- * <strong>Note:</strong> Implementations must be stateless.
- */
- public abstract static class VersionSelector
- {
-
- /**
- * Retrieves the version selector for use during the specified graph transformation. The conflict resolver calls
- * this method once per
- * {@link ConflictResolver#transformGraph(DependencyNode, DependencyGraphTransformationContext)} invocation to
- * allow implementations to prepare any auxiliary data that is needed for their operation. Given that
- * implementations must be stateless, a new instance needs to be returned to hold such auxiliary data. The
- * default implementation simply returns the current instance which is appropriate for implementations which do
- * not require auxiliary data.
- *
- * @param root The root node of the (possibly cyclic!) graph to transform, must not be {@code null}.
- * @param context The graph transformation context, must not be {@code null}.
- * @return The scope deriver to use for the given graph transformation, never {@code null}.
- * @throws RepositoryException If the instance could not be retrieved.
- */
- public VersionSelector getInstance( DependencyNode root, DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- return this;
- }
-
- /**
- * Determines the winning node among conflicting dependencies. Implementations will usually iterate
- * {@link ConflictContext#getItems()}, inspect {@link ConflictItem#getNode()} and eventually call
- * {@link ConflictContext#setWinner(ConflictResolver.ConflictItem)} to deliver the winner. Failure to select a
- * winner will automatically fail the entire conflict resolution.
- *
- * @param context The conflict context, must not be {@code null}.
- * @throws RepositoryException If the version selection failed.
- */
- public abstract void selectVersion( ConflictContext context )
- throws RepositoryException;
-
- }
-
- /**
- * An extension point of {@link ConflictResolver} that determines the effective scope of a dependency from a
- * potentially conflicting set of {@link ScopeDeriver derived scopes}. The scope selector gets invoked after the
- * {@link VersionSelector} has picked the winning node.
- * <p>
- * <strong>Note:</strong> Implementations must be stateless.
- */
- public abstract static class ScopeSelector
- {
-
- /**
- * Retrieves the scope selector for use during the specified graph transformation. The conflict resolver calls
- * this method once per
- * {@link ConflictResolver#transformGraph(DependencyNode, DependencyGraphTransformationContext)} invocation to
- * allow implementations to prepare any auxiliary data that is needed for their operation. Given that
- * implementations must be stateless, a new instance needs to be returned to hold such auxiliary data. The
- * default implementation simply returns the current instance which is appropriate for implementations which do
- * not require auxiliary data.
- *
- * @param root The root node of the (possibly cyclic!) graph to transform, must not be {@code null}.
- * @param context The graph transformation context, must not be {@code null}.
- * @return The scope selector to use for the given graph transformation, never {@code null}.
- * @throws RepositoryException If the instance could not be retrieved.
- */
- public ScopeSelector getInstance( DependencyNode root, DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- return this;
- }
-
- /**
- * Determines the effective scope of the dependency given by {@link ConflictContext#getWinner()}.
- * Implementations will usually iterate {@link ConflictContext#getItems()}, inspect
- * {@link ConflictItem#getScopes()} and eventually call {@link ConflictContext#setScope(String)} to deliver the
- * effective scope.
- *
- * @param context The conflict context, must not be {@code null}.
- * @throws RepositoryException If the scope selection failed.
- */
- public abstract void selectScope( ConflictContext context )
- throws RepositoryException;
-
- }
-
- /**
- * An extension point of {@link ConflictResolver} that determines the scope of a dependency in relation to the scope
- * of its parent.
- * <p>
- * <strong>Note:</strong> Implementations must be stateless.
- */
- public abstract static class ScopeDeriver
- {
-
- /**
- * Retrieves the scope deriver for use during the specified graph transformation. The conflict resolver calls
- * this method once per
- * {@link ConflictResolver#transformGraph(DependencyNode, DependencyGraphTransformationContext)} invocation to
- * allow implementations to prepare any auxiliary data that is needed for their operation. Given that
- * implementations must be stateless, a new instance needs to be returned to hold such auxiliary data. The
- * default implementation simply returns the current instance which is appropriate for implementations which do
- * not require auxiliary data.
- *
- * @param root The root node of the (possibly cyclic!) graph to transform, must not be {@code null}.
- * @param context The graph transformation context, must not be {@code null}.
- * @return The scope deriver to use for the given graph transformation, never {@code null}.
- * @throws RepositoryException If the instance could not be retrieved.
- */
- public ScopeDeriver getInstance( DependencyNode root, DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- return this;
- }
-
- /**
- * Determines the scope of a dependency in relation to the scope of its parent. Implementors need to call
- * {@link ScopeContext#setDerivedScope(String)} to deliver the result of their calculation. If said method is
- * not invoked, the conflict resolver will assume the scope of the child dependency remains unchanged.
- *
- * @param context The scope context, must not be {@code null}.
- * @throws RepositoryException If the scope deriviation failed.
- */
- public abstract void deriveScope( ScopeContext context )
- throws RepositoryException;
-
- }
-
- /**
- * An extension point of {@link ConflictResolver} that determines the effective optional flag of a dependency from a
- * potentially conflicting set of derived optionalities. The optionality selector gets invoked after the
- * {@link VersionSelector} has picked the winning node.
- * <p>
- * <strong>Note:</strong> Implementations must be stateless.
- */
- public abstract static class OptionalitySelector
- {
-
- /**
- * Retrieves the optionality selector for use during the specified graph transformation. The conflict resolver
- * calls this method once per
- * {@link ConflictResolver#transformGraph(DependencyNode, DependencyGraphTransformationContext)} invocation to
- * allow implementations to prepare any auxiliary data that is needed for their operation. Given that
- * implementations must be stateless, a new instance needs to be returned to hold such auxiliary data. The
- * default implementation simply returns the current instance which is appropriate for implementations which do
- * not require auxiliary data.
- *
- * @param root The root node of the (possibly cyclic!) graph to transform, must not be {@code null}.
- * @param context The graph transformation context, must not be {@code null}.
- * @return The optionality selector to use for the given graph transformation, never {@code null}.
- * @throws RepositoryException If the instance could not be retrieved.
- */
- public OptionalitySelector getInstance( DependencyNode root, DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- return this;
- }
-
- /**
- * Determines the effective optional flag of the dependency given by {@link ConflictContext#getWinner()}.
- * Implementations will usually iterate {@link ConflictContext#getItems()}, inspect
- * {@link ConflictItem#getOptionalities()} and eventually call {@link ConflictContext#setOptional(Boolean)} to
- * deliver the effective optional flag.
- *
- * @param context The conflict context, must not be {@code null}.
- * @throws RepositoryException If the optionality selection failed.
- */
- public abstract void selectOptionality( ConflictContext context )
- throws RepositoryException;
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaDependencyContextRefiner.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaDependencyContextRefiner.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaDependencyContextRefiner.java
deleted file mode 100644
index d96e04e..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaDependencyContextRefiner.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.util.artifact.JavaScopes;
-
-/**
- * A dependency graph transformer that refines the request context for nodes that belong to the "project" context by
- * appending the classpath type to which the node belongs. For instance, a compile-time project dependency will be
- * assigned the request context "project/compile".
- *
- * @see DependencyNode#getRequestContext()
- */
-public final class JavaDependencyContextRefiner
- implements DependencyGraphTransformer
-{
-
- public DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- String ctx = node.getRequestContext();
-
- if ( "project".equals( ctx ) )
- {
- String scope = getClasspathScope( node );
- if ( scope != null )
- {
- ctx += '/' + scope;
- node.setRequestContext( ctx );
- }
- }
-
- for ( DependencyNode child : node.getChildren() )
- {
- transformGraph( child, context );
- }
-
- return node;
- }
-
- private String getClasspathScope( DependencyNode node )
- {
- Dependency dependency = node.getDependency();
- if ( dependency == null )
- {
- return null;
- }
-
- String scope = dependency.getScope();
-
- if ( JavaScopes.COMPILE.equals( scope ) || JavaScopes.SYSTEM.equals( scope )
- || JavaScopes.PROVIDED.equals( scope ) )
- {
- return JavaScopes.COMPILE;
- }
- else if ( JavaScopes.RUNTIME.equals( scope ) )
- {
- return JavaScopes.RUNTIME;
- }
- else if ( JavaScopes.TEST.equals( scope ) )
- {
- return JavaScopes.TEST;
- }
-
- return null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaDependencyMediator.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaDependencyMediator.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaDependencyMediator.java
deleted file mode 100644
index 441b6df..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaDependencyMediator.java
+++ /dev/null
@@ -1,389 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.util.artifact.JavaScopes;
-
-/**
- * A {@code DependencyGraphTransformer} applying the Maven dependency mediation mechanism.
- *
- * @author Christian Schulte
- * @since 1.2
- * @see <a href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html">Introduction to the Dependency Mechanism</a>
- */
-public final class JavaDependencyMediator
- implements DependencyGraphTransformer
-{
-
- private static final Map<String, Integer> APPLICATION_SCOPE_PRIORITIES = new HashMap<String, Integer>( 5 );
-
- private static final Map<String, Integer> TEST_SCOPE_PRIORITIES = new HashMap<String, Integer>( 5 );
-
- static
- {
- APPLICATION_SCOPE_PRIORITIES.put( JavaScopes.TEST, 0 );
- APPLICATION_SCOPE_PRIORITIES.put( JavaScopes.RUNTIME, 1 );
- APPLICATION_SCOPE_PRIORITIES.put( JavaScopes.PROVIDED, 2 );
- APPLICATION_SCOPE_PRIORITIES.put( JavaScopes.COMPILE, 3 );
- APPLICATION_SCOPE_PRIORITIES.put( JavaScopes.SYSTEM, 4 );
-
- TEST_SCOPE_PRIORITIES.put( JavaScopes.RUNTIME, 0 );
- TEST_SCOPE_PRIORITIES.put( JavaScopes.PROVIDED, 1 );
- TEST_SCOPE_PRIORITIES.put( JavaScopes.COMPILE, 2 );
- TEST_SCOPE_PRIORITIES.put( JavaScopes.TEST, 3 );
- TEST_SCOPE_PRIORITIES.put( JavaScopes.SYSTEM, 4 );
- }
-
- /**
- * Application scope nodes are prioritized over non application scope nodes.
- */
- public static final int APPLICATION_SCOPE_PRIORITIZATION = 1 << 1;
-
- /**
- * Test scope nodes are prioritized over non test scope nodes.
- */
- public static final int TEST_SCOPE_PRIORITIZATION = 1 << 2;
-
- /**
- * Nearest wins only strategy. No scopes are prioritized.
- */
- public static final int NO_PRIORITIZATION = 1 << 3;
-
- /**
- * The prioritization to apply.
- */
- private final int prioritization;
-
- /**
- * Creates a new {@code DependencyGraphTransformer}.
- *
- * @param prioritization The prioritization to apply.
- *
- * @see #APPLICATION_SCOPE_PRIORITIZATION
- * @see #TEST_SCOPE_PRIORITIZATION
- * @see #NO_PRIORITIZATION
- */
- public JavaDependencyMediator( final int prioritization )
- {
- super();
- this.prioritization = prioritization;
- }
-
- @Override
- public DependencyNode transformGraph( final DependencyNode node,
- final DependencyGraphTransformationContext context )
- throws RepositoryException
- {
- DependencyNode result = node;
- result = this.removeNonTransitiveNodes( result );
- result = this.updateTransitiveScopes( result );
-
- for ( ;; )
- {
- if ( this.removeDuplicateNodes( result, result, new HashMap<ConflictMarker.Key, DependencyNode>( 8192 ),
- new HashMap<DependencyNode, DependencyNode>( 8192 ) ) )
- {
- break;
- }
- }
-
- return result;
- }
-
- private DependencyNode removeNonTransitiveNodes( final DependencyNode parent )
- {
- final String parentScope = parent.getDependency() != null
- ? parent.getDependency().getScope() != null
- && parent.getDependency().getScope().length() >= 0
- ? parent.getDependency().getScope()
- : JavaScopes.COMPILE
- : null;
-
- for ( final Iterator<DependencyNode> it = parent.getChildren().iterator(); it.hasNext(); )
- {
- final DependencyNode child = it.next();
-
- recurse:
- {
- if ( parentScope != null )
- {
- String childScope = child.getDependency().getScope() != null
- && child.getDependency().getScope().length() >= 0
- ? child.getDependency().getScope()
- : JavaScopes.COMPILE;
-
- // Provided and test scopes are non-transitive.
- // Optional dependencies are non-transitive.
- if ( JavaScopes.PROVIDED.equals( childScope )
- || JavaScopes.TEST.equals( childScope )
- || child.getDependency().isOptional() )
- {
- it.remove();
- break recurse;
- }
- }
-
- this.removeNonTransitiveNodes( child );
- }
- }
-
- return parent;
- }
-
- private DependencyNode updateTransitiveScopes( final DependencyNode parent )
- {
- final String parentScope = parent.getDependency() != null
- ? parent.getDependency().getScope() != null
- && parent.getDependency().getScope().length() >= 0
- ? parent.getDependency().getScope()
- : JavaScopes.COMPILE
- : null;
-
- for ( final DependencyNode child : parent.getChildren() )
- {
- if ( parentScope != null )
- {
- String childScope = child.getDependency().getScope() != null
- && child.getDependency().getScope().length() >= 0
- ? child.getDependency().getScope()
- : JavaScopes.COMPILE;
-
- if ( ( child.getManagedBits() & DependencyNode.MANAGED_SCOPE ) == 0 )
- {
- // Non-managed child scopes are updated according to the table in the "Dependency Scope" section
- // of the "Introduction to the Dependency Mechanism" document.
-
- if ( JavaScopes.PROVIDED.equals( parentScope ) )
- {
- // Compile and runtime become provided.
- if ( JavaScopes.COMPILE.equals( childScope )
- || JavaScopes.RUNTIME.equals( childScope ) )
- {
- childScope = JavaScopes.PROVIDED;
- child.setScope( childScope );
- }
- }
- else if ( JavaScopes.RUNTIME.equals( parentScope ) )
- {
- // Compile becomes runtime.
- if ( JavaScopes.COMPILE.equals( childScope ) )
- {
- childScope = JavaScopes.RUNTIME;
- child.setScope( childScope );
- }
- }
- else if ( JavaScopes.TEST.equals( parentScope ) )
- {
- // Compile and runtime become test.
- if ( JavaScopes.COMPILE.equals( childScope )
- || JavaScopes.RUNTIME.equals( childScope ) )
- {
- childScope = JavaScopes.TEST;
- child.setScope( childScope );
- }
- }
- }
- }
-
- this.updateTransitiveScopes( child );
- }
-
- return parent;
- }
-
- private boolean removeDuplicateNodes( final DependencyNode rootNode,
- final DependencyNode candidateNode,
- final Map<ConflictMarker.Key, DependencyNode> winnerNodes,
- final Map<DependencyNode, DependencyNode> looserNodes )
- {
- boolean restart = false;
-
- recurse:
- {
- if ( candidateNode.getDependency() != null )
- {
- final ConflictMarker.Key candidateKey = new ConflictMarker.Key( candidateNode.getArtifact() );
- final DependencyNode winnerNode = winnerNodes.get( candidateKey );
-
- if ( winnerNode == null )
- {
- // Conflict not yet seen. Candidate is selected.
- winnerNodes.put( candidateKey, candidateNode );
- }
- else if ( this.isPreferredNode( winnerNode, candidateNode ) )
- {
- // Conflict already seen. Candidate is preferred.
- winnerNodes.put( candidateKey, candidateNode );
- looserNodes.put( candidateNode, winnerNode );
-
- if ( winnerNode.getParent() != null )
- {
- winnerNode.getParent().getChildren().remove( winnerNode );
- }
- else
- {
- rootNode.getChildren().remove( winnerNode );
- }
-
- final DependencyNode winningChild = getWinningChild( winnerNode, winnerNodes.values() );
-
- if ( winningChild != null )
- {
- // The node eliminated by the current candidate node contains a child node which has been
- // selected the winner in a previous iteration. As that winner is eliminated in this iteration,
- // the former looser needs to be re-added and the whole transformation re-started (undo and
- // restart). No need to maintain the maps here because they are thrown away when restarting.
- // Doing it for completeness, however.
- final DependencyNode looserNode = looserNodes.remove( winningChild ); // Can be get().
-
- if ( looserNode != null )
- {
- if ( looserNode.getParent() != null )
- {
- if ( !looserNode.getParent().getChildren().contains( looserNode ) )
- {
- looserNode.getParent().getChildren().add( looserNode );
- }
- }
- else if ( !rootNode.getChildren().contains( looserNode ) )
- {
- rootNode.getChildren().add( looserNode );
- }
-
- // Not needed, but...
- final DependencyNode winner =
- winnerNodes.remove( new ConflictMarker.Key( looserNode.getArtifact() ) );
-
- if ( winner != null )
- {
- looserNodes.remove( winner );
- }
- }
-
- restart = true;
- break recurse;
- }
- }
- else
- {
- // Conflict already seen. Candidate is not preferred.
- looserNodes.put( winnerNode, candidateNode );
- if ( candidateNode.getParent() != null )
- {
- candidateNode.getParent().getChildren().remove( candidateNode );
- }
- else
- {
- rootNode.getChildren().remove( candidateNode );
- }
- // No need to inspect children.
- break recurse;
- }
- }
-
- for ( final DependencyNode child : new ArrayList<DependencyNode>( candidateNode.getChildren() ) )
- {
- if ( !this.removeDuplicateNodes( rootNode, child, winnerNodes, looserNodes ) )
- {
- restart = true;
- break recurse;
- }
- }
- }
-
- return !restart;
- }
-
- private boolean isPreferredNode( final DependencyNode existing, final DependencyNode candidate )
- {
- boolean preferred = false;
- Integer p1 = null;
- Integer p2 = null;
- boolean prioritize = true;
-
- if ( this.prioritization == APPLICATION_SCOPE_PRIORITIZATION )
- {
- p1 = APPLICATION_SCOPE_PRIORITIES.get( existing.getDependency().getScope() );
- p2 = APPLICATION_SCOPE_PRIORITIES.get( candidate.getDependency().getScope() );
- }
- else if ( this.prioritization == TEST_SCOPE_PRIORITIZATION )
- {
- p1 = TEST_SCOPE_PRIORITIES.get( existing.getDependency().getScope() );
- p2 = TEST_SCOPE_PRIORITIES.get( candidate.getDependency().getScope() );
- }
- else if ( this.prioritization == NO_PRIORITIZATION )
- {
- prioritize = false;
- }
- else
- {
- throw new AssertionError( this.prioritization );
- }
-
- final Boolean candidateScopePrioritized = p1 != null && p2 != null ? p2 > p1 : false;
- final boolean equalPriority =
- existing.getDependency().getScope().equals( candidate.getDependency().getScope() );
-
- if ( candidate.getDepth() < existing.getDepth() )
- {
- preferred = !prioritize || equalPriority || candidateScopePrioritized;
- }
- else if ( candidate.getDepth() == existing.getDepth() )
- {
- preferred = prioritize && !equalPriority && candidateScopePrioritized;
- }
-
- return preferred;
- }
-
- private static DependencyNode getWinningChild( final DependencyNode node,
- final Collection<DependencyNode> winnerNodes )
- {
- DependencyNode winningChild = winnerNodes.contains( node )
- ? node
- : null;
-
- if ( winningChild == null )
- {
- for ( final DependencyNode child : node.getChildren() )
- {
- winningChild = getWinningChild( child, winnerNodes );
-
- if ( winningChild != null )
- {
- break;
- }
- }
- }
-
- return winningChild;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaScopeDeriver.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaScopeDeriver.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaScopeDeriver.java
deleted file mode 100644
index 4c5fd3e..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaScopeDeriver.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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;
-import org.eclipse.aether.util.artifact.JavaScopes;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver.ScopeContext;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver.ScopeDeriver;
-
-/**
- * A scope deriver for use with {@link ConflictResolver} that supports the scopes from {@link JavaScopes}.
- */
-public final class JavaScopeDeriver
- extends ScopeDeriver
-{
-
- /**
- * Creates a new instance of this scope deriver.
- */
- public JavaScopeDeriver()
- {
- }
-
- @Override
- public void deriveScope( ScopeContext context )
- throws RepositoryException
- {
- context.setDerivedScope( getDerivedScope( context.getParentScope(), context.getChildScope() ) );
- }
-
- private String getDerivedScope( String parentScope, String childScope )
- {
- String derivedScope;
-
- if ( JavaScopes.SYSTEM.equals( childScope ) || JavaScopes.TEST.equals( childScope ) )
- {
- derivedScope = childScope;
- }
- else if ( parentScope == null || parentScope.length() <= 0 || JavaScopes.COMPILE.equals( parentScope ) )
- {
- derivedScope = childScope;
- }
- else if ( JavaScopes.TEST.equals( parentScope ) || JavaScopes.RUNTIME.equals( parentScope ) )
- {
- derivedScope = parentScope;
- }
- else if ( JavaScopes.SYSTEM.equals( parentScope ) || JavaScopes.PROVIDED.equals( parentScope ) )
- {
- derivedScope = JavaScopes.PROVIDED;
- }
- else
- {
- derivedScope = JavaScopes.RUNTIME;
- }
-
- return derivedScope;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaScopeSelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaScopeSelector.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaScopeSelector.java
deleted file mode 100644
index 93edf05..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaScopeSelector.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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.HashSet;
-import java.util.Set;
-
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.util.artifact.JavaScopes;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver.ConflictContext;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver.ConflictItem;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver.ScopeSelector;
-
-/**
- * A scope selector for use with {@link ConflictResolver} that supports the scopes from {@link JavaScopes}. In general,
- * this selector picks the widest scope present among conflicting dependencies where e.g. "compile" is wider than
- * "runtime" which is wider than "test". If however a direct dependency is involved, its scope is selected.
- */
-public final class JavaScopeSelector
- extends ScopeSelector
-{
-
- /**
- * Creates a new instance of this scope selector.
- */
- public JavaScopeSelector()
- {
- }
-
- @Override
- public void selectScope( ConflictContext context )
- throws RepositoryException
- {
- String scope = context.getWinner().getDependency().getScope();
- if ( !JavaScopes.SYSTEM.equals( scope ) )
- {
- scope = chooseEffectiveScope( context.getItems() );
- }
- context.setScope( scope );
- }
-
- private String chooseEffectiveScope( Collection<ConflictItem> items )
- {
- Set<String> scopes = new HashSet<String>();
- for ( ConflictItem item : items )
- {
- if ( item.getDepth() <= 1 )
- {
- return item.getDependency().getScope();
- }
- scopes.addAll( item.getScopes() );
- }
- return chooseEffectiveScope( scopes );
- }
-
- private String chooseEffectiveScope( Set<String> scopes )
- {
- if ( scopes.size() > 1 )
- {
- scopes.remove( JavaScopes.SYSTEM );
- }
-
- String effectiveScope = "";
-
- if ( scopes.size() == 1 )
- {
- effectiveScope = scopes.iterator().next();
- }
- else if ( scopes.contains( JavaScopes.COMPILE ) )
- {
- effectiveScope = JavaScopes.COMPILE;
- }
- else if ( scopes.contains( JavaScopes.RUNTIME ) )
- {
- effectiveScope = JavaScopes.RUNTIME;
- }
- else if ( scopes.contains( JavaScopes.PROVIDED ) )
- {
- effectiveScope = JavaScopes.PROVIDED;
- }
- else if ( scopes.contains( JavaScopes.TEST ) )
- {
- effectiveScope = JavaScopes.TEST;
- }
-
- return effectiveScope;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/NearestVersionSelector.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/NearestVersionSelector.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/NearestVersionSelector.java
deleted file mode 100644
index c1ffa85..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/NearestVersionSelector.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.collection.UnsolvableVersionConflictException;
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver.ConflictContext;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver.ConflictItem;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver.VersionSelector;
-import org.eclipse.aether.util.graph.visitor.PathRecordingDependencyVisitor;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-
-/**
- * A version selector for use with {@link ConflictResolver} that resolves version conflicts using a nearest-wins
- * strategy. If there is no single node that satisfies all encountered version ranges, the selector will fail.
- */
-public final class NearestVersionSelector
- extends VersionSelector
-{
-
- /**
- * Creates a new instance of this version selector.
- */
- public NearestVersionSelector()
- {
- }
-
- @Override
- public void selectVersion( ConflictContext context )
- throws RepositoryException
- {
- ConflictGroup group = new ConflictGroup();
- for ( ConflictItem item : context.getItems() )
- {
- DependencyNode node = item.getNode();
- VersionConstraint constraint = node.getVersionConstraint();
-
- boolean backtrack = false;
- boolean hardConstraint = constraint.getRange() != null;
-
- if ( hardConstraint )
- {
- if ( group.constraints.add( constraint ) )
- {
- if ( group.winner != null && !constraint.containsVersion( group.winner.getNode().getVersion() ) )
- {
- backtrack = true;
- }
- }
- }
-
- if ( isAcceptable( group, node.getVersion() ) )
- {
- group.candidates.add( item );
-
- if ( backtrack )
- {
- backtrack( group, context );
- }
- else if ( group.winner == null || isNearer( item, group.winner ) )
- {
- group.winner = item;
- }
- }
- else if ( backtrack )
- {
- backtrack( group, context );
- }
- }
- context.setWinner( group.winner );
- }
-
- private void backtrack( ConflictGroup group, ConflictContext context )
- throws UnsolvableVersionConflictException
- {
- group.winner = null;
-
- for ( Iterator<ConflictItem> it = group.candidates.iterator(); it.hasNext(); )
- {
- ConflictItem candidate = it.next();
-
- if ( !isAcceptable( group, candidate.getNode().getVersion() ) )
- {
- it.remove();
- }
- else if ( group.winner == null || isNearer( candidate, group.winner ) )
- {
- group.winner = candidate;
- }
- }
-
- if ( group.winner == null )
- {
- throw newFailure( context );
- }
- }
-
- private boolean isAcceptable( ConflictGroup group, Version version )
- {
- for ( VersionConstraint constraint : group.constraints )
- {
- if ( !constraint.containsVersion( version ) )
- {
- return false;
- }
- }
- return true;
- }
-
- private boolean isNearer( ConflictItem item1, ConflictItem item2 )
- {
- if ( item1.isSibling( item2 ) )
- {
- return item1.getNode().getVersion().compareTo( item2.getNode().getVersion() ) > 0;
- }
- else
- {
- return item1.getDepth() < item2.getDepth();
- }
- }
-
- private UnsolvableVersionConflictException newFailure( final ConflictContext context )
- {
- DependencyFilter filter = new DependencyFilter()
- {
- public boolean accept( DependencyNode node, List<DependencyNode> parents )
- {
- return context.isIncluded( node );
- }
- };
- PathRecordingDependencyVisitor visitor = new PathRecordingDependencyVisitor( filter );
- context.getRoot().accept( visitor );
- return new UnsolvableVersionConflictException( visitor.getPaths() );
- }
-
- static final class ConflictGroup
- {
-
- final Collection<VersionConstraint> constraints;
-
- final Collection<ConflictItem> candidates;
-
- ConflictItem winner;
-
- public ConflictGroup()
- {
- constraints = new HashSet<VersionConstraint>();
- candidates = new ArrayList<ConflictItem>( 64 );
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( winner );
- }
-
- }
-
-}
[47/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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 da30124..0000000
--- a/aether-api/src/main/java/org/eclipse/aether/graph/DependencyNode.java
+++ /dev/null
@@ -1,250 +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 depth of the node.
- *
- * @return The depth of the node.
- *
- * @since 1.2
- */
- long getDepth();
-
- /**
- * Gets the parent node of this node.
- *
- * @return The parent node of this node or {@code null}, if this node is the root of the graph.
- *
- * @since 1.2
- */
- DependencyNode getParent();
-
- /**
- * 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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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-aether/blob/27f8bd73/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 );
-
-}
[10/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersion.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersion.java b/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersion.java
deleted file mode 100644
index 3596a29..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersion.java
+++ /dev/null
@@ -1,464 +0,0 @@
-package org.eclipse.aether.util.version;
-
-/*
- * 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.math.BigInteger;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.eclipse.aether.version.Version;
-
-/**
- * A generic version, that is a version that accepts any input string and tries to apply common sense sorting. See
- * {@link GenericVersionScheme} for details.
- */
-final class GenericVersion
- implements Version
-{
-
- private final String version;
-
- private final Item[] items;
-
- private final int hash;
-
- /**
- * Creates a generic version from the specified string.
- *
- * @param version The version string, must not be {@code null}.
- */
- public GenericVersion( String version )
- {
- this.version = version;
- items = parse( version );
- hash = Arrays.hashCode( items );
- }
-
- private static Item[] parse( String version )
- {
- List<Item> items = new ArrayList<Item>();
-
- for ( Tokenizer tokenizer = new Tokenizer( version ); tokenizer.next(); )
- {
- Item item = tokenizer.toItem();
- items.add( item );
- }
-
- trimPadding( items );
-
- return items.toArray( new Item[items.size()] );
- }
-
- private static void trimPadding( List<Item> items )
- {
- Boolean number = null;
- int end = items.size() - 1;
- for ( int i = end; i > 0; i-- )
- {
- Item item = items.get( i );
- if ( !Boolean.valueOf( item.isNumber() ).equals( number ) )
- {
- end = i;
- number = item.isNumber();
- }
- if ( end == i && ( i == items.size() - 1 || items.get( i - 1 ).isNumber() == item.isNumber() )
- && item.compareTo( null ) == 0 )
- {
- items.remove( i );
- end--;
- }
- }
- }
-
- public int compareTo( Version obj )
- {
- final Item[] these = items;
- final Item[] those = ( (GenericVersion) obj ).items;
-
- boolean number = true;
-
- for ( int index = 0;; index++ )
- {
- if ( index >= these.length && index >= those.length )
- {
- return 0;
- }
- else if ( index >= these.length )
- {
- return -comparePadding( those, index, null );
- }
- else if ( index >= those.length )
- {
- return comparePadding( these, index, null );
- }
-
- Item thisItem = these[index];
- Item thatItem = those[index];
-
- if ( thisItem.isNumber() != thatItem.isNumber() )
- {
- if ( number == thisItem.isNumber() )
- {
- return comparePadding( these, index, number );
- }
- else
- {
- return -comparePadding( those, index, number );
- }
- }
- else
- {
- int rel = thisItem.compareTo( thatItem );
- if ( rel != 0 )
- {
- return rel;
- }
- number = thisItem.isNumber();
- }
- }
- }
-
- private static int comparePadding( Item[] items, int index, Boolean number )
- {
- int rel = 0;
- for ( int i = index; i < items.length; i++ )
- {
- Item item = items[i];
- if ( number != null && number != item.isNumber() )
- {
- break;
- }
- rel = item.compareTo( null );
- if ( rel != 0 )
- {
- break;
- }
- }
- return rel;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- return ( obj instanceof GenericVersion ) && compareTo( (GenericVersion) obj ) == 0;
- }
-
- @Override
- public int hashCode()
- {
- return hash;
- }
-
- @Override
- public String toString()
- {
- return version;
- }
-
- static final class Tokenizer
- {
-
- private static final Integer QUALIFIER_ALPHA = -5;
-
- private static final Integer QUALIFIER_BETA = -4;
-
- private static final Integer QUALIFIER_MILESTONE = -3;
-
- private static final Map<String, Integer> QUALIFIERS;
-
- static
- {
- QUALIFIERS = new TreeMap<String, Integer>( String.CASE_INSENSITIVE_ORDER );
- QUALIFIERS.put( "alpha", QUALIFIER_ALPHA );
- QUALIFIERS.put( "beta", QUALIFIER_BETA );
- QUALIFIERS.put( "milestone", QUALIFIER_MILESTONE );
- QUALIFIERS.put( "cr", -2 );
- QUALIFIERS.put( "rc", -2 );
- QUALIFIERS.put( "snapshot", -1 );
- QUALIFIERS.put( "ga", 0 );
- QUALIFIERS.put( "final", 0 );
- QUALIFIERS.put( "", 0 );
- QUALIFIERS.put( "sp", 1 );
- }
-
- private final String version;
-
- private int index;
-
- private String token;
-
- private boolean number;
-
- private boolean terminatedByNumber;
-
- public Tokenizer( String version )
- {
- this.version = ( version.length() > 0 ) ? version : "0";
- }
-
- public boolean next()
- {
- final int n = version.length();
- if ( index >= n )
- {
- return false;
- }
-
- int state = -2;
-
- int start = index;
- int end = n;
- terminatedByNumber = false;
-
- for ( ; index < n; index++ )
- {
- char c = version.charAt( index );
-
- if ( c == '.' || c == '-' || c == '_' )
- {
- end = index;
- index++;
- break;
- }
- else
- {
- int digit = Character.digit( c, 10 );
- if ( digit >= 0 )
- {
- if ( state == -1 )
- {
- end = index;
- terminatedByNumber = true;
- break;
- }
- if ( state == 0 )
- {
- // normalize numbers and strip leading zeros (prereq for Integer/BigInteger handling)
- start++;
- }
- state = ( state > 0 || digit > 0 ) ? 1 : 0;
- }
- else
- {
- if ( state >= 0 )
- {
- end = index;
- break;
- }
- state = -1;
- }
- }
-
- }
-
- if ( end - start > 0 )
- {
- token = version.substring( start, end );
- number = state >= 0;
- }
- else
- {
- token = "0";
- number = true;
- }
-
- return true;
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( token );
- }
-
- public Item toItem()
- {
- if ( number )
- {
- try
- {
- if ( token.length() < 10 )
- {
- return new Item( Item.KIND_INT, Integer.parseInt( token ) );
- }
- else
- {
- return new Item( Item.KIND_BIGINT, new BigInteger( token ) );
- }
- }
- catch ( NumberFormatException e )
- {
- throw new IllegalStateException( e );
- }
- }
- else
- {
- if ( index >= version.length() )
- {
- if ( "min".equalsIgnoreCase( token ) )
- {
- return Item.MIN;
- }
- else if ( "max".equalsIgnoreCase( token ) )
- {
- return Item.MAX;
- }
- }
- if ( terminatedByNumber && token.length() == 1 )
- {
- switch ( token.charAt( 0 ) )
- {
- case 'a':
- case 'A':
- return new Item( Item.KIND_QUALIFIER, QUALIFIER_ALPHA );
- case 'b':
- case 'B':
- return new Item( Item.KIND_QUALIFIER, QUALIFIER_BETA );
- case 'm':
- case 'M':
- return new Item( Item.KIND_QUALIFIER, QUALIFIER_MILESTONE );
- default:
- }
- }
- Integer qualifier = QUALIFIERS.get( token );
- if ( qualifier != null )
- {
- return new Item( Item.KIND_QUALIFIER, qualifier );
- }
- else
- {
- return new Item( Item.KIND_STRING, token.toLowerCase( Locale.ENGLISH ) );
- }
- }
- }
-
- }
-
- static final class Item
- {
-
- static final int KIND_MAX = 8;
-
- static final int KIND_BIGINT = 5;
-
- static final int KIND_INT = 4;
-
- static final int KIND_STRING = 3;
-
- static final int KIND_QUALIFIER = 2;
-
- static final int KIND_MIN = 0;
-
- static final Item MAX = new Item( KIND_MAX, "max" );
-
- static final Item MIN = new Item( KIND_MIN, "min" );
-
- private final int kind;
-
- private final Object value;
-
- public Item( int kind, Object value )
- {
- this.kind = kind;
- this.value = value;
- }
-
- public boolean isNumber()
- {
- return ( kind & KIND_QUALIFIER ) == 0; // i.e. kind != string/qualifier
- }
-
- public int compareTo( Item that )
- {
- int rel;
- if ( that == null )
- {
- // null in this context denotes the pad item (0 or "ga")
- switch ( kind )
- {
- case KIND_MIN:
- rel = -1;
- break;
- case KIND_MAX:
- case KIND_BIGINT:
- case KIND_STRING:
- rel = 1;
- break;
- case KIND_INT:
- case KIND_QUALIFIER:
- rel = (Integer) value;
- break;
- default:
- throw new IllegalStateException( "unknown version item kind " + kind );
- }
- }
- else
- {
- rel = kind - that.kind;
- if ( rel == 0 )
- {
- switch ( kind )
- {
- case KIND_MAX:
- case KIND_MIN:
- break;
- case KIND_BIGINT:
- rel = ( (BigInteger) value ).compareTo( (BigInteger) that.value );
- break;
- case KIND_INT:
- case KIND_QUALIFIER:
- rel = ( (Integer) value ).compareTo( (Integer) that.value );
- break;
- case KIND_STRING:
- rel = ( (String) value ).compareToIgnoreCase( (String) that.value );
- break;
- default:
- throw new IllegalStateException( "unknown version item kind " + kind );
- }
- }
- }
- return rel;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- return ( obj instanceof Item ) && compareTo( (Item) obj ) == 0;
- }
-
- @Override
- public int hashCode()
- {
- return value.hashCode() + kind * 31;
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( value );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionConstraint.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionConstraint.java b/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionConstraint.java
deleted file mode 100644
index bfcd455..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionConstraint.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.eclipse.aether.util.version;
-
-/*
- * 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.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-import org.eclipse.aether.version.VersionRange;
-
-/**
- * A constraint on versions for a dependency.
- */
-final class GenericVersionConstraint
- implements VersionConstraint
-{
-
- private final VersionRange range;
-
- private final Version version;
-
- /**
- * Creates a version constraint from the specified version range.
- *
- * @param range The version range, must not be {@code null}.
- */
- public GenericVersionConstraint( VersionRange range )
- {
- if ( range == null )
- {
- throw new IllegalArgumentException( "version range missing" );
- }
- this.range = range;
- this.version = null;
- }
-
- /**
- * Creates a version constraint from the specified version.
- *
- * @param version The version, must not be {@code null}.
- */
- public GenericVersionConstraint( Version version )
- {
- if ( version == null )
- {
- throw new IllegalArgumentException( "version missing" );
- }
- this.version = version;
- this.range = null;
- }
-
- public VersionRange getRange()
- {
- return range;
- }
-
- public Version getVersion()
- {
- return version;
- }
-
- public boolean containsVersion( Version version )
- {
- if ( range == null )
- {
- return version.equals( this.version );
- }
- else
- {
- return range.containsVersion( version );
- }
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( ( range == null ) ? version : range );
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- GenericVersionConstraint that = (GenericVersionConstraint) obj;
-
- return eq( range, that.range ) && eq( version, that.getVersion() );
- }
-
- private static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + hash( getRange() );
- hash = hash * 31 + hash( getVersion() );
- return hash;
- }
-
- private static int hash( Object obj )
- {
- return obj != null ? obj.hashCode() : 0;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionRange.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionRange.java b/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionRange.java
deleted file mode 100644
index 832dd94..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionRange.java
+++ /dev/null
@@ -1,242 +0,0 @@
-package org.eclipse.aether.util.version;
-
-/*
- * 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.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionRange;
-
-/**
- * A version range inspired by mathematical range syntax. For example, "[1.0,2.0)", "[1.0,)" or "[1.0]".
- */
-final class GenericVersionRange
- implements VersionRange
-{
-
- private final Bound lowerBound;
-
- private final Bound upperBound;
-
- /**
- * Creates a version range from the specified range specification.
- *
- * @param range The range specification to parse, must not be {@code null}.
- * @throws InvalidVersionSpecificationException If the range could not be parsed.
- */
- public GenericVersionRange( String range )
- throws InvalidVersionSpecificationException
- {
- String process = range;
-
- boolean lowerBoundInclusive, upperBoundInclusive;
- Version lowerBound, upperBound;
-
- if ( range.startsWith( "[" ) )
- {
- lowerBoundInclusive = true;
- }
- else if ( range.startsWith( "(" ) )
- {
- lowerBoundInclusive = false;
- }
- else
- {
- throw new InvalidVersionSpecificationException( range, "Invalid version range " + range
- + ", a range must start with either [ or (" );
- }
-
- if ( range.endsWith( "]" ) )
- {
- upperBoundInclusive = true;
- }
- else if ( range.endsWith( ")" ) )
- {
- upperBoundInclusive = false;
- }
- else
- {
- throw new InvalidVersionSpecificationException( range, "Invalid version range " + range
- + ", a range must end with either [ or (" );
- }
-
- process = process.substring( 1, process.length() - 1 );
-
- int index = process.indexOf( "," );
-
- if ( index < 0 )
- {
- if ( !lowerBoundInclusive || !upperBoundInclusive )
- {
- throw new InvalidVersionSpecificationException( range, "Invalid version range " + range
- + ", single version must be surrounded by []" );
- }
-
- String version = process.trim();
- if ( version.endsWith( ".*" ) )
- {
- String prefix = version.substring( 0, version.length() - 1 );
- lowerBound = parse( prefix + "min" );
- upperBound = parse( prefix + "max" );
- }
- else
- {
- lowerBound = upperBound = parse( version );
- }
- }
- else
- {
- String parsedLowerBound = process.substring( 0, index ).trim();
- String parsedUpperBound = process.substring( index + 1 ).trim();
-
- // more than two bounds, e.g. (1,2,3)
- if ( parsedUpperBound.contains( "," ) )
- {
- throw new InvalidVersionSpecificationException( range, "Invalid version range " + range
- + ", bounds may not contain additional ','" );
- }
-
- lowerBound = parsedLowerBound.length() > 0 ? parse( parsedLowerBound ) : null;
- upperBound = parsedUpperBound.length() > 0 ? parse( parsedUpperBound ) : null;
-
- if ( upperBound != null && lowerBound != null )
- {
- if ( upperBound.compareTo( lowerBound ) < 0 )
- {
- throw new InvalidVersionSpecificationException( range, "Invalid version range " + range
- + ", lower bound must not be greater than upper bound" );
- }
- }
- }
-
- this.lowerBound = ( lowerBound != null ) ? new Bound( lowerBound, lowerBoundInclusive ) : null;
- this.upperBound = ( upperBound != null ) ? new Bound( upperBound, upperBoundInclusive ) : null;
- }
-
- private Version parse( String version )
- {
- return new GenericVersion( version );
- }
-
- public Bound getLowerBound()
- {
- return lowerBound;
- }
-
- public Bound getUpperBound()
- {
- return upperBound;
- }
-
- public boolean containsVersion( Version version )
- {
- if ( lowerBound != null )
- {
- int comparison = lowerBound.getVersion().compareTo( version );
-
- if ( comparison == 0 && !lowerBound.isInclusive() )
- {
- return false;
- }
- if ( comparison > 0 )
- {
- return false;
- }
- }
-
- if ( upperBound != null )
- {
- int comparison = upperBound.getVersion().compareTo( version );
-
- if ( comparison == 0 && !upperBound.isInclusive() )
- {
- return false;
- }
- if ( comparison < 0 )
- {
- return false;
- }
- }
-
- return true;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
- return true;
- }
- else if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- GenericVersionRange that = (GenericVersionRange) obj;
-
- return eq( upperBound, that.upperBound ) && eq( lowerBound, that.lowerBound );
- }
-
- private static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + hash( upperBound );
- hash = hash * 31 + hash( lowerBound );
- return hash;
- }
-
- private static int hash( Object obj )
- {
- return obj != null ? obj.hashCode() : 0;
- }
-
- @Override
- public String toString()
- {
- StringBuilder buffer = new StringBuilder( 64 );
- if ( lowerBound != null )
- {
- buffer.append( lowerBound.isInclusive() ? '[' : '(' );
- buffer.append( lowerBound.getVersion() );
- }
- else
- {
- buffer.append( '(' );
- }
- buffer.append( ',' );
- if ( upperBound != null )
- {
- buffer.append( upperBound.getVersion() );
- buffer.append( upperBound.isInclusive() ? ']' : ')' );
- }
- else
- {
- buffer.append( ')' );
- }
- return buffer.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionScheme.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionScheme.java b/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionScheme.java
deleted file mode 100644
index 8fc0488..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/version/GenericVersionScheme.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package org.eclipse.aether.util.version;
-
-/*
- * 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 org.eclipse.aether.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-import org.eclipse.aether.version.VersionRange;
-import org.eclipse.aether.version.VersionScheme;
-
-/**
- * A version scheme using a generic version syntax and common sense sorting.
- * <p>
- * This scheme accepts versions of any form, interpreting a version as a sequence of numeric and alphabetic segments.
- * The characters '-', '_', and '.' as well as the mere transitions from digit to letter and vice versa delimit the
- * version segments. Delimiters are treated as equivalent.
- * </p>
- * <p>
- * Numeric segments are compared mathematically, alphabetic segments are compared lexicographically and
- * case-insensitively. However, the following qualifier strings are recognized and treated specially: "alpha" = "a" <
- * "beta" = "b" < "milestone" = "m" < "cr" = "rc" < "snapshot" < "final" = "ga" < "sp". All of those
- * well-known qualifiers are considered smaller/older than other strings. An empty segment/string is equivalent to 0.
- * </p>
- * <p>
- * In addition to the above mentioned qualifiers, the tokens "min" and "max" may be used as final version segment to
- * denote the smallest/greatest version having a given prefix. For example, "1.2.min" denotes the smallest version in
- * the 1.2 line, "1.2.max" denotes the greatest version in the 1.2 line. A version range of the form "[M.N.*]" is short
- * for "[M.N.min, M.N.max]".
- * </p>
- * <p>
- * Numbers and strings are considered incomparable against each other. Where version segments of different kind would
- * collide, comparison will instead assume that the previous segments are padded with trailing 0 or "ga" segments,
- * respectively, until the kind mismatch is resolved, e.g. "1-alpha" = "1.0.0-alpha" < "1.0.1-ga" = "1.0.1".
- * </p>
- */
-public final class GenericVersionScheme
- implements VersionScheme
-{
-
- /**
- * Creates a new instance of the version scheme for parsing versions.
- */
- public GenericVersionScheme()
- {
- }
-
- public Version parseVersion( final String version )
- throws InvalidVersionSpecificationException
- {
- return new GenericVersion( version );
- }
-
- public VersionRange parseVersionRange( final String range )
- throws InvalidVersionSpecificationException
- {
- return new GenericVersionRange( range );
- }
-
- public VersionConstraint parseVersionConstraint( final String constraint )
- throws InvalidVersionSpecificationException
- {
- Collection<VersionRange> ranges = new ArrayList<VersionRange>();
-
- String process = constraint;
-
- while ( process.startsWith( "[" ) || process.startsWith( "(" ) )
- {
- int index1 = process.indexOf( ')' );
- int index2 = process.indexOf( ']' );
-
- int index = index2;
- if ( index2 < 0 || ( index1 >= 0 && index1 < index2 ) )
- {
- index = index1;
- }
-
- if ( index < 0 )
- {
- throw new InvalidVersionSpecificationException( constraint, "Unbounded version range " + constraint );
- }
-
- VersionRange range = parseVersionRange( process.substring( 0, index + 1 ) );
- ranges.add( range );
-
- process = process.substring( index + 1 ).trim();
-
- if ( process.length() > 0 && process.startsWith( "," ) )
- {
- process = process.substring( 1 ).trim();
- }
- }
-
- if ( process.length() > 0 && !ranges.isEmpty() )
- {
- throw new InvalidVersionSpecificationException( constraint, "Invalid version range " + constraint
- + ", expected [ or ( but got " + process );
- }
-
- VersionConstraint result;
- if ( ranges.isEmpty() )
- {
- result = new GenericVersionConstraint( parseVersion( constraint ) );
- }
- else
- {
- result = new GenericVersionConstraint( UnionVersionRange.from( ranges ) );
- }
-
- return result;
- }
-
- @Override
- public boolean equals( final Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
-
- return obj != null && getClass().equals( obj.getClass() );
- }
-
- @Override
- public int hashCode()
- {
- return getClass().hashCode();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/version/UnionVersionRange.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/version/UnionVersionRange.java b/aether-util/src/main/java/org/eclipse/aether/util/version/UnionVersionRange.java
deleted file mode 100644
index c54a4b4..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/version/UnionVersionRange.java
+++ /dev/null
@@ -1,181 +0,0 @@
-package org.eclipse.aether.util.version;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionRange;
-
-/**
- * A union of version ranges.
- */
-final class UnionVersionRange
- implements VersionRange
-{
-
- private final Set<VersionRange> ranges;
-
- private final Bound lowerBound;
-
- private final Bound upperBound;
-
- public static VersionRange from( VersionRange... ranges )
- {
- if ( ranges == null )
- {
- return from( Collections.<VersionRange>emptySet() );
- }
- return from( Arrays.asList( ranges ) );
- }
-
- public static VersionRange from( Collection<? extends VersionRange> ranges )
- {
- if ( ranges != null && ranges.size() == 1 )
- {
- return ranges.iterator().next();
- }
- return new UnionVersionRange( ranges );
- }
-
- private UnionVersionRange( Collection<? extends VersionRange> ranges )
- {
- if ( ranges == null || ranges.isEmpty() )
- {
- this.ranges = Collections.emptySet();
- lowerBound = upperBound = null;
- }
- else
- {
- this.ranges = new HashSet<VersionRange>( ranges );
- Bound lowerBound = null, upperBound = null;
- for ( VersionRange range : this.ranges )
- {
- Bound lb = range.getLowerBound();
- if ( lb == null )
- {
- lowerBound = null;
- break;
- }
- else if ( lowerBound == null )
- {
- lowerBound = lb;
- }
- else
- {
- int c = lb.getVersion().compareTo( lowerBound.getVersion() );
- if ( c < 0 || ( c == 0 && !lowerBound.isInclusive() ) )
- {
- lowerBound = lb;
- }
- }
- }
- for ( VersionRange range : this.ranges )
- {
- Bound ub = range.getUpperBound();
- if ( ub == null )
- {
- upperBound = null;
- break;
- }
- else if ( upperBound == null )
- {
- upperBound = ub;
- }
- else
- {
- int c = ub.getVersion().compareTo( upperBound.getVersion() );
- if ( c > 0 || ( c == 0 && !upperBound.isInclusive() ) )
- {
- upperBound = ub;
- }
- }
- }
- this.lowerBound = lowerBound;
- this.upperBound = upperBound;
- }
- }
-
- public boolean containsVersion( Version version )
- {
- for ( VersionRange range : ranges )
- {
- if ( range.containsVersion( version ) )
- {
- return true;
- }
- }
- return false;
- }
-
- public Bound getLowerBound()
- {
- return lowerBound;
- }
-
- public Bound getUpperBound()
- {
- return upperBound;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
- return true;
- }
- else if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- UnionVersionRange that = (UnionVersionRange) obj;
-
- return ranges.equals( that.ranges );
- }
-
- @Override
- public int hashCode()
- {
- int hash = 97 * ranges.hashCode();
- return hash;
- }
-
- @Override
- public String toString()
- {
- StringBuilder buffer = new StringBuilder( 128 );
- for ( VersionRange range : ranges )
- {
- if ( buffer.length() > 0 )
- {
- buffer.append( ", " );
- }
- buffer.append( range );
- }
- return buffer.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/version/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/version/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/version/package-info.java
deleted file mode 100644
index 18dc724..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/version/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.
- */
-/**
- * Ready-to-use version schemes for parsing/comparing versions.
- */
-package org.eclipse.aether.util.version;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/site/site.xml
----------------------------------------------------------------------
diff --git a/aether-util/src/site/site.xml b/aether-util/src/site/site.xml
deleted file mode 100644
index 3a16bf9..0000000
--- a/aether-util/src/site/site.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
- <body>
- <menu name="Overview">
- <item name="Introduction" href="index.html"/>
- <item name="JavaDocs" href="apidocs/index.html"/>
- <item name="Source Xref" href="xref/index.html"/>
- <!--item name="FAQ" href="faq.html"/-->
- </menu>
-
- <menu ref="parent"/>
- <menu ref="reports"/>
- </body>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/ChecksumUtilTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/ChecksumUtilTest.java b/aether-util/src/test/java/org/eclipse/aether/util/ChecksumUtilTest.java
deleted file mode 100644
index 05da6f4..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/ChecksumUtilTest.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package org.eclipse.aether.util;
-
-/*
- * 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 static org.eclipse.aether.internal.test.util.TestFileUtils.*;
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.eclipse.aether.util.ChecksumUtils;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-public class ChecksumUtilTest
-{
- private File emptyFile;
-
- private File patternFile;
-
- private File textFile;
-
- private static Map<String, String> emptyFileChecksums = new HashMap<String, String>();
-
- private static Map<String, String> patternFileChecksums = new HashMap<String, String>();
-
- private static Map<String, String> textFileChecksums = new HashMap<String, String>();
-
- private Map<File, Map<String, String>> sums = new HashMap<File, Map<String, String>>();
-
- @BeforeClass
- public static void beforeClass()
- throws IOException
- {
- emptyFileChecksums.put( "MD5", "d41d8cd98f00b204e9800998ecf8427e" );
- emptyFileChecksums.put( "SHA-1", "da39a3ee5e6b4b0d3255bfef95601890afd80709" );
- patternFileChecksums.put( "MD5", "14f01d6c7de7d4cf0a4887baa3528b5a" );
- patternFileChecksums.put( "SHA-1", "feeeda19f626f9b0ef6cbf5948c1ec9531694295" );
- textFileChecksums.put( "MD5", "12582d1a662cefe3385f2113998e43ed" );
- textFileChecksums.put( "SHA-1", "a8ae272db549850eef2ff54376f8cac2770745ee" );
- }
-
- @Before
- public void before()
- throws IOException
- {
- sums.clear();
-
- emptyFile = createTempFile( new byte[] {}, 0 );
- sums.put( emptyFile, emptyFileChecksums );
-
- patternFile =
- createTempFile( new byte[] { 0, 1, 2, 4, 8, 16, 32, 64, 127, -1, -2, -4, -8, -16, -32, -64, -127 }, 1000 );
- sums.put( patternFile, patternFileChecksums );
-
- textFile = createTempFile( "the quick brown fox jumps over the lazy dog\n".getBytes( "UTF-8" ), 500 );
- sums.put( textFile, textFileChecksums );
-
- }
-
- @Test
- public void testEquality()
- throws Throwable
- {
- Map<String, Object> checksums = null;
-
- for ( File file : new File[] { emptyFile, patternFile, textFile } )
- {
-
- checksums = ChecksumUtils.calc( file, Arrays.asList( "SHA-1", "MD5" ) );
-
- for ( Entry<String, Object> entry : checksums.entrySet() )
- {
- if ( entry.getValue() instanceof Throwable )
- {
- throw (Throwable) entry.getValue();
- }
- String actual = entry.getValue().toString();
- String expected = sums.get( file ).get( entry.getKey() );
- assertEquals( String.format( "checksums do not match for '%s', algorithm '%s'", file.getName(),
- entry.getKey() ), expected, actual );
- }
- assertTrue( "Could not delete file", file.delete() );
- }
- }
-
- @Test
- public void testFileHandleLeakage()
- throws IOException
- {
- for ( File file : new File[] { emptyFile, patternFile, textFile } )
- {
- for ( int i = 0; i < 150; i++ )
- {
- ChecksumUtils.calc( file, Arrays.asList( "SHA-1", "MD5" ) );
- }
- assertTrue( "Could not delete file", file.delete() );
- }
-
- }
-
- @Test
- public void testRead()
- throws IOException
- {
- for ( Map<String, String> checksums : sums.values() )
- {
- String sha1 = checksums.get( "SHA-1" );
- String md5 = checksums.get( "MD5" );
-
- File sha1File = createTempFile( sha1 );
- File md5File = createTempFile( md5 );
-
- assertEquals( sha1, ChecksumUtils.read( sha1File ) );
- assertEquals( md5, ChecksumUtils.read( md5File ) );
-
- assertTrue( "ChecksumUtils leaks file handles (cannot delete checksums.sha1)", sha1File.delete() );
- assertTrue( "ChecksumUtils leaks file handles (cannot delete checksums.md5)", md5File.delete() );
- }
- }
-
- @Test
- public void testReadSpaces()
- throws IOException
- {
- for ( Map<String, String> checksums : sums.values() )
- {
- String sha1 = checksums.get( "SHA-1" );
- String md5 = checksums.get( "MD5" );
-
- File sha1File = createTempFile( "sha1-checksum = " + sha1 );
- File md5File = createTempFile( md5 + " test" );
-
- assertEquals( sha1, ChecksumUtils.read( sha1File ) );
- assertEquals( md5, ChecksumUtils.read( md5File ) );
-
- assertTrue( "ChecksumUtils leaks file handles (cannot delete checksums.sha1)", sha1File.delete() );
- assertTrue( "ChecksumUtils leaks file handles (cannot delete checksums.md5)", md5File.delete() );
- }
- }
-
- @Test
- public void testReadEmptyFile()
- throws IOException
- {
- File file = createTempFile( "" );
-
- assertEquals( "", ChecksumUtils.read( file ) );
-
- assertTrue( "ChecksumUtils leaks file handles (cannot delete checksum.empty)", file.delete() );
- }
-
- @Test
- public void testToHexString()
- {
- assertEquals( null, ChecksumUtils.toHexString( null ) );
- assertEquals( "", ChecksumUtils.toHexString( new byte[] {} ) );
- assertEquals( "00", ChecksumUtils.toHexString( new byte[] { 0 } ) );
- assertEquals( "ff", ChecksumUtils.toHexString( new byte[] { -1 } ) );
- assertEquals( "00017f", ChecksumUtils.toHexString( new byte[] { 0, 1, 127 } ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/ConfigUtilsTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/ConfigUtilsTest.java b/aether-util/src/test/java/org/eclipse/aether/util/ConfigUtilsTest.java
deleted file mode 100644
index 9218031..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/ConfigUtilsTest.java
+++ /dev/null
@@ -1,247 +0,0 @@
-package org.eclipse.aether.util;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.Test;
-
-public class ConfigUtilsTest
-{
-
- Map<Object, Object> config = new HashMap<Object, Object>();
-
- @Test
- public void testGetObject_Default()
- {
- Object val = new Object();
- assertSame( val, ConfigUtils.getObject( config, val, "no-value" ) );
- }
-
- @Test
- public void testGetObject_AlternativeKeys()
- {
- Object val = new Object();
- config.put( "some-object", val );
- assertSame( val, ConfigUtils.getObject( config, null, "no-object", "some-object" ) );
- }
-
- @Test
- public void testGetMap_Default()
- {
- Map<?, ?> val = new HashMap<Object, Object>();
- assertSame( val, ConfigUtils.getMap( config, val, "no-value" ) );
- }
-
- @Test
- public void testGetMap_AlternativeKeys()
- {
- Map<?, ?> val = new HashMap<Object, Object>();
- config.put( "some-map", val );
- assertSame( val, ConfigUtils.getMap( config, null, "no-object", "some-map" ) );
- }
-
- @Test
- public void testGetList_Default()
- {
- List<?> val = new ArrayList<Object>();
- assertSame( val, ConfigUtils.getList( config, val, "no-value" ) );
- }
-
- @Test
- public void testGetList_AlternativeKeys()
- {
- List<?> val = new ArrayList<Object>();
- config.put( "some-list", val );
- assertSame( val, ConfigUtils.getList( config, null, "no-object", "some-list" ) );
- }
-
- @Test
- public void testGetList_CollectionConversion()
- {
- Collection<?> val = Collections.singleton( "item" );
- config.put( "some-collection", val );
- assertEquals( Arrays.asList( "item" ), ConfigUtils.getList( config, null, "some-collection" ) );
- }
-
- @Test
- public void testGetString_Default()
- {
- config.put( "no-string", new Object() );
- assertEquals( "default", ConfigUtils.getString( config, "default", "no-value" ) );
- assertEquals( "default", ConfigUtils.getString( config, "default", "no-string" ) );
- }
-
- @Test
- public void testGetString_AlternativeKeys()
- {
- config.put( "no-string", new Object() );
- config.put( "some-string", "passed" );
- assertEquals( "passed", ConfigUtils.getString( config, "default", "no-string", "some-string" ) );
- }
-
- @Test
- public void testGetString_BooleanConversion()
- {
- config.put( "some-string", Boolean.TRUE );
- assertEquals( "true", ConfigUtils.getString( config, "default", "some-string" ) );
- config.put( "some-string", Boolean.FALSE );
- assertEquals( "false", ConfigUtils.getString( config, "default", "some-string" ) );
- }
-
- @Test
- public void testGetString_NumberConversion()
- {
- config.put( "some-string", Integer.valueOf( -7 ) );
- assertEquals( "-7", ConfigUtils.getString( config, "default", "some-string" ) );
- config.put( "some-string", new Float( -1.5f ) );
- assertEquals( "-1.5", ConfigUtils.getString( config, "default", "some-string" ) );
- }
-
- @Test
- public void testGetBoolean_Default()
- {
- config.put( "no-boolean", new Object() );
- assertEquals( true, ConfigUtils.getBoolean( config, true, "no-value" ) );
- assertEquals( false, ConfigUtils.getBoolean( config, false, "no-value" ) );
- assertEquals( true, ConfigUtils.getBoolean( config, true, "no-boolean" ) );
- assertEquals( false, ConfigUtils.getBoolean( config, false, "no-boolean" ) );
- }
-
- @Test
- public void testGetBoolean_AlternativeKeys()
- {
- config.put( "no-boolean", new Object() );
- config.put( "some-boolean", true );
- assertEquals( true, ConfigUtils.getBoolean( config, false, "no-boolean", "some-boolean" ) );
- config.put( "some-boolean", false );
- assertEquals( false, ConfigUtils.getBoolean( config, true, "no-boolean", "some-boolean" ) );
- }
-
- @Test
- public void testGetBoolean_StringConversion()
- {
- config.put( "some-boolean", "true" );
- assertEquals( true, ConfigUtils.getBoolean( config, false, "some-boolean" ) );
- config.put( "some-boolean", "false" );
- assertEquals( false, ConfigUtils.getBoolean( config, true, "some-boolean" ) );
- }
-
- @Test
- public void testGetInteger_Default()
- {
- config.put( "no-integer", new Object() );
- assertEquals( -17, ConfigUtils.getInteger( config, -17, "no-value" ) );
- assertEquals( 43, ConfigUtils.getInteger( config, 43, "no-integer" ) );
- }
-
- @Test
- public void testGetInteger_AlternativeKeys()
- {
- config.put( "no-integer", "text" );
- config.put( "some-integer", 23 );
- assertEquals( 23, ConfigUtils.getInteger( config, 0, "no-integer", "some-integer" ) );
- }
-
- @Test
- public void testGetInteger_StringConversion()
- {
- config.put( "some-integer", "-123456" );
- assertEquals( -123456, ConfigUtils.getInteger( config, 0, "some-integer" ) );
- }
-
- @Test
- public void testGetInteger_NumberConversion()
- {
- config.put( "some-number", -123456.789 );
- assertEquals( -123456, ConfigUtils.getInteger( config, 0, "some-number" ) );
- }
-
- @Test
- public void testGetLong_Default()
- {
- config.put( "no-long", new Object() );
- assertEquals( -17, ConfigUtils.getLong( config, -17L, "no-value" ) );
- assertEquals( 43, ConfigUtils.getLong( config, 43L, "no-long" ) );
- }
-
- @Test
- public void testGetLong_AlternativeKeys()
- {
- config.put( "no-long", "text" );
- config.put( "some-long", 23 );
- assertEquals( 23, ConfigUtils.getLong( config, 0, "no-long", "some-long" ) );
- }
-
- @Test
- public void testGetLong_StringConversion()
- {
- config.put( "some-long", "-123456789012" );
- assertEquals( -123456789012L, ConfigUtils.getLong( config, 0, "some-long" ) );
- }
-
- @Test
- public void testGetLong_NumberConversion()
- {
- config.put( "some-number", -123456789012.789 );
- assertEquals( -123456789012L, ConfigUtils.getLong( config, 0, "some-number" ) );
- }
-
- @Test
- public void testGetFloat_Default()
- {
- config.put( "no-float", new Object() );
- assertEquals( -17.1f, ConfigUtils.getFloat( config, -17.1f, "no-value" ), 0.01f );
- assertEquals( 43.2f, ConfigUtils.getFloat( config, 43.2f, "no-float" ), 0.01f );
- }
-
- @Test
- public void testGetFloat_AlternativeKeys()
- {
- config.put( "no-float", "text" );
- config.put( "some-float", 12.3f );
- assertEquals( 12.3f, ConfigUtils.getFloat( config, 0, "no-float", "some-float" ), 0.01f );
- }
-
- @Test
- public void testGetFloat_StringConversion()
- {
- config.put( "some-float", "-12.3" );
- assertEquals( -12.3f, ConfigUtils.getFloat( config, 0, "some-float" ), 0.01f );
- config.put( "some-float", "NaN" );
- assertEquals( true, Float.isNaN( ConfigUtils.getFloat( config, 0, "some-float" ) ) );
- }
-
- @Test
- public void testGetFloat_NumberConversion()
- {
- config.put( "some-number", -1234 );
- assertEquals( -1234f, ConfigUtils.getFloat( config, 0, "some-number" ), 0.1f );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/StringUtilsTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/StringUtilsTest.java b/aether-util/src/test/java/org/eclipse/aether/util/StringUtilsTest.java
deleted file mode 100644
index 4ac2f7e..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/StringUtilsTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.eclipse.aether.util;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.util.StringUtils;
-import org.junit.Test;
-
-/**
- */
-public class StringUtilsTest
-{
-
- @Test
- public void testIsEmpty()
- {
- assertTrue( StringUtils.isEmpty( null ) );
- assertTrue( StringUtils.isEmpty( "" ) );
- assertFalse( StringUtils.isEmpty( " " ) );
- assertFalse( StringUtils.isEmpty( "test" ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/artifact/ArtifactIdUtilsTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/artifact/ArtifactIdUtilsTest.java b/aether-util/src/test/java/org/eclipse/aether/util/artifact/ArtifactIdUtilsTest.java
deleted file mode 100644
index 36193f3..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/artifact/ArtifactIdUtilsTest.java
+++ /dev/null
@@ -1,201 +0,0 @@
-package org.eclipse.aether.util.artifact;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.junit.Test;
-
-/**
- */
-public class ArtifactIdUtilsTest
-{
-
- @Test
- public void testToIdArtifact()
- {
- Artifact artifact = null;
- assertSame( null, ArtifactIdUtils.toId( artifact ) );
-
- artifact = new DefaultArtifact( "gid", "aid", "ext", "1.0-20110205.132618-23" );
- assertEquals( "gid:aid:ext:1.0-20110205.132618-23", ArtifactIdUtils.toId( artifact ) );
-
- artifact = new DefaultArtifact( "gid", "aid", "cls", "ext", "1.0-20110205.132618-23" );
- assertEquals( "gid:aid:ext:cls:1.0-20110205.132618-23", ArtifactIdUtils.toId( artifact ) );
- }
-
- @Test
- public void testToIdStrings()
- {
- assertEquals( ":::", ArtifactIdUtils.toId( null, null, null, null, null ) );
-
- assertEquals( "gid:aid:ext:1", ArtifactIdUtils.toId( "gid", "aid", "ext", "", "1" ) );
-
- assertEquals( "gid:aid:ext:cls:1", ArtifactIdUtils.toId( "gid", "aid", "ext", "cls", "1" ) );
- }
-
- @Test
- public void testToBaseIdArtifact()
- {
- Artifact artifact = null;
- assertSame( null, ArtifactIdUtils.toBaseId( artifact ) );
-
- artifact = new DefaultArtifact( "gid", "aid", "ext", "1.0-20110205.132618-23" );
- assertEquals( "gid:aid:ext:1.0-SNAPSHOT", ArtifactIdUtils.toBaseId( artifact ) );
-
- artifact = new DefaultArtifact( "gid", "aid", "cls", "ext", "1.0-20110205.132618-23" );
- assertEquals( "gid:aid:ext:cls:1.0-SNAPSHOT", ArtifactIdUtils.toBaseId( artifact ) );
- }
-
- @Test
- public void testToVersionlessIdArtifact()
- {
- Artifact artifact = null;
- assertSame( null, ArtifactIdUtils.toId( artifact ) );
-
- artifact = new DefaultArtifact( "gid", "aid", "ext", "1" );
- assertEquals( "gid:aid:ext", ArtifactIdUtils.toVersionlessId( artifact ) );
-
- artifact = new DefaultArtifact( "gid", "aid", "cls", "ext", "1" );
- assertEquals( "gid:aid:ext:cls", ArtifactIdUtils.toVersionlessId( artifact ) );
- }
-
- @Test
- public void testToVersionlessIdStrings()
- {
- assertEquals( "::", ArtifactIdUtils.toVersionlessId( null, null, null, null ) );
-
- assertEquals( "gid:aid:ext", ArtifactIdUtils.toVersionlessId( "gid", "aid", "ext", "" ) );
-
- assertEquals( "gid:aid:ext:cls", ArtifactIdUtils.toVersionlessId( "gid", "aid", "ext", "cls" ) );
- }
-
- @Test
- public void testEqualsId()
- {
- Artifact artifact1 = null;
- Artifact artifact2 = null;
- assertEquals( false, ArtifactIdUtils.equalsId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsId( artifact2, artifact1 ) );
-
- artifact1 = new DefaultArtifact( "gid", "aid", "ext", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gidX", "aid", "ext", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aidX", "ext", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aid", "extX", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aid", "ext", "1.0-20110205.132618-24" );
- assertEquals( false, ArtifactIdUtils.equalsId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aid", "ext", "1.0-20110205.132618-23" );
- assertEquals( true, ArtifactIdUtils.equalsId( artifact1, artifact2 ) );
- assertEquals( true, ArtifactIdUtils.equalsId( artifact2, artifact1 ) );
-
- assertEquals( true, ArtifactIdUtils.equalsId( artifact1, artifact1 ) );
- }
-
- @Test
- public void testEqualsBaseId()
- {
- Artifact artifact1 = null;
- Artifact artifact2 = null;
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact2, artifact1 ) );
-
- artifact1 = new DefaultArtifact( "gid", "aid", "ext", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gidX", "aid", "ext", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aidX", "ext", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aid", "extX", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aid", "ext", "X.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsBaseId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aid", "ext", "1.0-20110205.132618-24" );
- assertEquals( true, ArtifactIdUtils.equalsBaseId( artifact1, artifact2 ) );
- assertEquals( true, ArtifactIdUtils.equalsBaseId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aid", "ext", "1.0-20110205.132618-23" );
- assertEquals( true, ArtifactIdUtils.equalsBaseId( artifact1, artifact2 ) );
- assertEquals( true, ArtifactIdUtils.equalsBaseId( artifact2, artifact1 ) );
-
- assertEquals( true, ArtifactIdUtils.equalsBaseId( artifact1, artifact1 ) );
- }
-
- @Test
- public void testEqualsVersionlessId()
- {
- Artifact artifact1 = null;
- Artifact artifact2 = null;
- assertEquals( false, ArtifactIdUtils.equalsVersionlessId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsVersionlessId( artifact2, artifact1 ) );
-
- artifact1 = new DefaultArtifact( "gid", "aid", "ext", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsVersionlessId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsVersionlessId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gidX", "aid", "ext", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsVersionlessId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsVersionlessId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aidX", "ext", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsVersionlessId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsVersionlessId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aid", "extX", "1.0-20110205.132618-23" );
- assertEquals( false, ArtifactIdUtils.equalsVersionlessId( artifact1, artifact2 ) );
- assertEquals( false, ArtifactIdUtils.equalsVersionlessId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aid", "ext", "1.0-20110205.132618-24" );
- assertEquals( true, ArtifactIdUtils.equalsVersionlessId( artifact1, artifact2 ) );
- assertEquals( true, ArtifactIdUtils.equalsVersionlessId( artifact2, artifact1 ) );
-
- artifact2 = new DefaultArtifact( "gid", "aid", "ext", "1.0-20110205.132618-23" );
- assertEquals( true, ArtifactIdUtils.equalsVersionlessId( artifact1, artifact2 ) );
- assertEquals( true, ArtifactIdUtils.equalsVersionlessId( artifact2, artifact1 ) );
-
- assertEquals( true, ArtifactIdUtils.equalsVersionlessId( artifact1, artifact1 ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/artifact/SubArtifactTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/artifact/SubArtifactTest.java b/aether-util/src/test/java/org/eclipse/aether/util/artifact/SubArtifactTest.java
deleted file mode 100644
index dc0e472..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/artifact/SubArtifactTest.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package org.eclipse.aether.util.artifact;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.util.artifact.SubArtifact;
-import org.junit.Test;
-
-/**
- */
-public class SubArtifactTest
-{
-
- private Artifact newMainArtifact( String coords )
- {
- return new DefaultArtifact( coords );
- }
-
- @Test
- public void testMainArtifactFileNotRetained()
- {
- Artifact a = newMainArtifact( "gid:aid:ver" ).setFile( new File( "" ) );
- assertNotNull( a.getFile() );
- a = new SubArtifact( a, "", "pom" );
- assertNull( a.getFile() );
- }
-
- @Test
- public void testMainArtifactPropertiesNotRetained()
- {
- Artifact a = newMainArtifact( "gid:aid:ver" ).setProperties( Collections.singletonMap( "key", "value" ) );
- assertEquals( 1, a.getProperties().size() );
- a = new SubArtifact( a, "", "pom" );
- assertEquals( 0, a.getProperties().size() );
- assertSame( null, a.getProperty( "key", null ) );
- }
-
- @Test( expected = IllegalArgumentException.class )
- public void testMainArtifactMissing()
- {
- new SubArtifact( null, "", "pom" );
- }
-
- @Test
- public void testEmptyClassifier()
- {
- Artifact main = newMainArtifact( "gid:aid:ext:cls:ver" );
- Artifact sub = new SubArtifact( main, "", "pom" );
- assertEquals( "", sub.getClassifier() );
- sub = new SubArtifact( main, null, "pom" );
- assertEquals( "", sub.getClassifier() );
- }
-
- @Test
- public void testEmptyExtension()
- {
- Artifact main = newMainArtifact( "gid:aid:ext:cls:ver" );
- Artifact sub = new SubArtifact( main, "tests", "" );
- assertEquals( "", sub.getExtension() );
- sub = new SubArtifact( main, "tests", null );
- assertEquals( "", sub.getExtension() );
- }
-
- @Test
- public void testSameClassifier()
- {
- Artifact main = newMainArtifact( "gid:aid:ext:cls:ver" );
- Artifact sub = new SubArtifact( main, "*", "pom" );
- assertEquals( "cls", sub.getClassifier() );
- }
-
- @Test
- public void testSameExtension()
- {
- Artifact main = newMainArtifact( "gid:aid:ext:cls:ver" );
- Artifact sub = new SubArtifact( main, "tests", "*" );
- assertEquals( "ext", sub.getExtension() );
- }
-
- @Test
- public void testDerivedClassifier()
- {
- Artifact main = newMainArtifact( "gid:aid:ext:cls:ver" );
- Artifact sub = new SubArtifact( main, "*-tests", "pom" );
- assertEquals( "cls-tests", sub.getClassifier() );
- sub = new SubArtifact( main, "tests-*", "pom" );
- assertEquals( "tests-cls", sub.getClassifier() );
-
- main = newMainArtifact( "gid:aid:ext:ver" );
- sub = new SubArtifact( main, "*-tests", "pom" );
- assertEquals( "tests", sub.getClassifier() );
- sub = new SubArtifact( main, "tests-*", "pom" );
- assertEquals( "tests", sub.getClassifier() );
- }
-
- @Test
- public void testDerivedExtension()
- {
- Artifact main = newMainArtifact( "gid:aid:ext:cls:ver" );
- Artifact sub = new SubArtifact( main, "", "*.asc" );
- assertEquals( "ext.asc", sub.getExtension() );
- sub = new SubArtifact( main, "", "asc.*" );
- assertEquals( "asc.ext", sub.getExtension() );
- }
-
- @Test
- public void testImmutability()
- {
- Artifact a = new SubArtifact( newMainArtifact( "gid:aid:ver" ), "", "pom" );
- assertNotSame( a, a.setFile( new File( "file" ) ) );
- assertNotSame( a, a.setVersion( "otherVersion" ) );
- assertNotSame( a, a.setProperties( Collections.singletonMap( "key", "value" ) ) );
- }
-
- @Test
- public void testPropertiesCopied()
- {
- Map<String, String> props = new HashMap<String, String>();
- props.put( "key", "value1" );
-
- Artifact a = new SubArtifact( newMainArtifact( "gid:aid:ver" ), "", "pom", props, null );
- assertEquals( "value1", a.getProperty( "key", null ) );
- props.clear();
- assertEquals( "value1", a.getProperty( "key", null ) );
-
- props.put( "key", "value2" );
- a = a.setProperties( props );
- assertEquals( "value2", a.getProperty( "key", null ) );
- props.clear();
- assertEquals( "value2", a.getProperty( "key", null ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/filter/AbstractDependencyFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/filter/AbstractDependencyFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/filter/AbstractDependencyFilterTest.java
deleted file mode 100644
index 835c1ce..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/filter/AbstractDependencyFilterTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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;
-
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-
-public abstract class AbstractDependencyFilterTest
-{
-
- protected DependencyFilter getAcceptFilter()
- {
- return new DependencyFilter()
- {
-
- public boolean accept( DependencyNode node, List<DependencyNode> parents )
- {
- return true;
- }
-
- };
- }
-
- protected DependencyFilter getDenyFilter()
- {
- return new DependencyFilter()
- {
-
- public boolean accept( DependencyNode node, List<DependencyNode> parents )
- {
- return false;
- }
- };
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/filter/AndDependencyFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/filter/AndDependencyFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/filter/AndDependencyFilterTest.java
deleted file mode 100644
index 45a7f3d..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/filter/AndDependencyFilterTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.NodeBuilder;
-import org.eclipse.aether.util.filter.AndDependencyFilter;
-import org.junit.Test;
-
-public class AndDependencyFilterTest
- extends AbstractDependencyFilterTest
-{
- @Test
- public void acceptTest()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.artifactId( "test" );
- List<DependencyNode> parents = new LinkedList<DependencyNode>();
-
- // Empty AND
- assertTrue( new AndDependencyFilter().accept( builder.build(), parents ) );
-
- // Basic Boolean Input
- assertTrue( new AndDependencyFilter( getAcceptFilter() ).accept( builder.build(), parents ) );
- assertFalse( new AndDependencyFilter( getDenyFilter() ).accept( builder.build(), parents ) );
-
- assertFalse( new AndDependencyFilter( getDenyFilter(), getDenyFilter() ).accept( builder.build(), parents ) );
- assertFalse( new AndDependencyFilter( getDenyFilter(), getAcceptFilter() ).accept( builder.build(), parents ) );
- assertFalse( new AndDependencyFilter( getAcceptFilter(), getDenyFilter() ).accept( builder.build(), parents ) );
- assertTrue( new AndDependencyFilter( getAcceptFilter(), getAcceptFilter() ).accept( builder.build(), parents ) );
-
- assertFalse( new AndDependencyFilter( getDenyFilter(), getDenyFilter(), getDenyFilter() ).accept( builder.build(),
- parents ) );
- assertFalse( new AndDependencyFilter( getAcceptFilter(), getDenyFilter(), getDenyFilter() ).accept( builder.build(),
- parents ) );
- assertFalse( new AndDependencyFilter( getAcceptFilter(), getAcceptFilter(), getDenyFilter() ).accept( builder.build(),
- parents ) );
- assertTrue( new AndDependencyFilter( getAcceptFilter(), getAcceptFilter(), getAcceptFilter() ).accept( builder.build(),
- parents ) );
-
- // User another constructor
- Collection<DependencyFilter> filters = new LinkedList<DependencyFilter>();
- filters.add( getDenyFilter() );
- filters.add( getAcceptFilter() );
- assertFalse( new AndDependencyFilter( filters ).accept( builder.build(), parents ) );
-
- filters = new LinkedList<DependencyFilter>();
- filters.add( getDenyFilter() );
- filters.add( getDenyFilter() );
- assertFalse( new AndDependencyFilter( filters ).accept( builder.build(), parents ) );
-
- filters = new LinkedList<DependencyFilter>();
- filters.add( getAcceptFilter() );
- filters.add( getAcceptFilter() );
- assertTrue( new AndDependencyFilter( filters ).accept( builder.build(), parents ) );
-
- // newInstance
- assertTrue( AndDependencyFilter.newInstance( getAcceptFilter(), getAcceptFilter() ).accept( builder.build(),
- parents ) );
- assertFalse( AndDependencyFilter.newInstance( getAcceptFilter(), getDenyFilter() ).accept( builder.build(),
- parents ) );
-
- assertFalse( AndDependencyFilter.newInstance( getDenyFilter(), null ).accept( builder.build(), parents ) );
- assertTrue( AndDependencyFilter.newInstance( getAcceptFilter(), null ).accept( builder.build(), parents ) );
- assertNull( AndDependencyFilter.newInstance( null, null ) );
- }
-
-}
[27/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_337_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_337_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_337_4.1-SNAPSHOT.ini
deleted file mode 100644
index 05b1294..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_337_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_343_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_343_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_343_4.0-SNAPSHOT.ini
deleted file mode 100644
index df77fce..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_343_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-10:212:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_343_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_343_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_343_4.1-SNAPSHOT.ini
deleted file mode 100644
index d3c0466..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_343_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-10:212:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_345_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_345_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_345_4.0-SNAPSHOT.ini
deleted file mode 100644
index 3f3b4d4..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_345_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,19 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:3.8.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:278:pom:1.8.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:176:pom:4.0-SNAPSHOT
-10:177:pom:4.0-SNAPSHOT
-10:179:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:175:pom:2.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_345_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_345_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_345_4.1-SNAPSHOT.ini
deleted file mode 100644
index 6d34fde..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_345_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,19 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:55:pom:3.8.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:278:pom:1.8.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:176:pom:4.1-SNAPSHOT
-10:177:pom:4.1-SNAPSHOT
-10:179:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:175:pom:2.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_346_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_346_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_346_4.0-SNAPSHOT.ini
deleted file mode 100644
index baa1676..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_346_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,14 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-10:177:pom:4.0-SNAPSHOT
-10:178:pom:4.0-SNAPSHOT
-10:179:pom:4.0-SNAPSHOT
-10:347:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_346_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_346_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_346_4.1-SNAPSHOT.ini
deleted file mode 100644
index e53daf9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_346_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,14 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-10:177:pom:4.1-SNAPSHOT
-10:178:pom:4.1-SNAPSHOT
-10:179:pom:4.1-SNAPSHOT
-10:347:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_347_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_347_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_347_4.0-SNAPSHOT.ini
deleted file mode 100644
index c8d192e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_347_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,15 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:177:pom:4.0-SNAPSHOT
-10:178:pom:4.0-SNAPSHOT
-10:179:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_347_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_347_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_347_4.1-SNAPSHOT.ini
deleted file mode 100644
index f80defb..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_347_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,15 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:177:pom:4.1-SNAPSHOT
-10:178:pom:4.1-SNAPSHOT
-10:179:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_349_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_349_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_349_4.0-SNAPSHOT.ini
deleted file mode 100644
index dd095bd..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_349_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,43 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.4.1-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:338:pom:2.8-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:172:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:350:pom:4.0-SNAPSHOT
-10:205:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:235:pom:4.0-SNAPSHOT
-10:315:pom:4.0-SNAPSHOT
-10:261:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_349_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_349_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_349_4.1-SNAPSHOT.ini
deleted file mode 100644
index 3d5edfe..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_349_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,44 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:50:pom:3.4.1-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:338:pom:3.0-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:172:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:357:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:350:pom:4.1-SNAPSHOT
-10:205:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:235:pom:4.1-SNAPSHOT
-10:315:pom:4.1-SNAPSHOT
-10:261:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_350_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_350_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_350_4.0-SNAPSHOT.ini
deleted file mode 100644
index 209ff91..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_350_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:339:pom:8.0.1p5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:172:pom:4.0-SNAPSHOT
-10:349:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_350_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_350_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_350_4.1-SNAPSHOT.ini
deleted file mode 100644
index e4c847d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_350_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:339:pom:8.0.1p5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:359:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:172:pom:4.1-SNAPSHOT
-10:349:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:357:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_351_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_351_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_351_4.0-SNAPSHOT.ini
deleted file mode 100644
index 8282eae..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_351_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,46 +0,0 @@
-[dependencies]
-1:352:pom:6.1-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:353:pom:1.2.3-SNAPSHOT
-1:63:pom:1.1-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:248:pom:5.5-SNAPSHOT
-1:50:pom:3.4.1-SNAPSHOT
-1:354:pom:1.6.2-SNAPSHOT
-1:355:pom:3.0.5-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:93:pom:10.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:267:pom:3.0-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:344:pom:1.6.0-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
-1:250:pom:1.0_sap.1-SNAPSHOT
-1:89:pom:2.3-SNAPSHOT
-10:173:pom:4.0-SNAPSHOT
-10:189:pom:4.0-SNAPSHOT
-10:202:pom:4.0-SNAPSHOT
-10:174:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:246:pom:4.0-SNAPSHOT
-10:167:pom:4.0-SNAPSHOT
-10:247:pom:4.0-SNAPSHOT
-10:251:pom:4.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:331:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_351_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_351_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_351_4.1-SNAPSHOT.ini
deleted file mode 100644
index eb1cfa4..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_351_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,50 +0,0 @@
-[dependencies]
-1:352:pom:6.1-SNAPSHOT
-1:358:pom:1.1.2-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:353:pom:1.2.3-SNAPSHOT
-1:63:pom:1.1-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:260:pom:2.3.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:248:pom:5.5-SNAPSHOT
-1:50:pom:3.4.1-SNAPSHOT
-1:354:pom:1.6.2-SNAPSHOT
-1:355:pom:3.0.5-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:93:pom:10.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:267:pom:3.0-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:5:pom:1.6-SNAPSHOT
-1:344:pom:1.6.0-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:75:pom:26-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:289:pom:2.2.0-SNAPSHOT
-1:250:pom:1.0_sap.1-SNAPSHOT
-1:89:pom:2.3-SNAPSHOT
-10:173:pom:4.1-SNAPSHOT
-10:189:pom:4.1-SNAPSHOT
-10:202:pom:4.1-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:246:pom:4.1-SNAPSHOT
-10:167:pom:4.1-SNAPSHOT
-10:247:pom:4.1-SNAPSHOT
-10:251:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:331:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:363:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_356_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_356_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_356_4.0-SNAPSHOT.ini
deleted file mode 100644
index 67ffd1f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_356_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:53:pom:2.3.0.677-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_356_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_356_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_356_4.1-SNAPSHOT.ini
deleted file mode 100644
index 67ffd1f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_356_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:53:pom:2.3.0.677-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_357_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_357_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_357_4.1-SNAPSHOT.ini
deleted file mode 100644
index c0c2600..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_357_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,36 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:4:pom:2.5.4-SNAPSHOT
-1:3:pom:1.28-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:4.2.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:36:pom:2.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:33:pom:711-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_359_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_359_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_359_4.1-SNAPSHOT.ini
deleted file mode 100644
index 5afdd88..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_359_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,29 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:119:pom:1.0-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:357:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:163:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-1:32:pom:720-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:51:pom:1.6.2-SNAPSHOT
-1:151:pom:3.7.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_360_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_360_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_360_1.0-SNAPSHOT.ini
deleted file mode 100644
index a96c5f9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_360_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:184:pom:20080807-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:30:pom:0.7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_361_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_361_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_361_4.1-SNAPSHOT.ini
deleted file mode 100644
index f6f14ff..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_361_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,62 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:63:pom:1.1-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:248:pom:5.5-SNAPSHOT
-1:66:pom:0.11-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:222:pom:beta8-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:69:pom:10.1.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:70:pom:9.0-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:218:pom:2.2.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:72:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:246:pom:4.1-SNAPSHOT
-10:167:pom:4.1-SNAPSHOT
-10:247:pom:4.1-SNAPSHOT
-10:224:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:362:pom:4.1-SNAPSHOT
-10:252:pom:4.1-SNAPSHOT
-10:251:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:216:pom:4.1-SNAPSHOT
-10:230:pom:4.1-SNAPSHOT
-10:220:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:231:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:156:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
-10:228:pom:1.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_362_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_362_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_362_4.1-SNAPSHOT.ini
deleted file mode 100644
index 2990a16..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_362_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,30 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:245:pom:1.0.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:250:pom:1.0_sap.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:246:pom:4.1-SNAPSHOT
-10:254:pom:4.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:245:pom:1.0.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:250:pom:1.0_sap.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:361:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:251:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_363_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_363_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_363_4.1-SNAPSHOT.ini
deleted file mode 100644
index d82b427..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_363_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[dependencies]
-1:358:pom:1.1.2-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:260:pom:2.3.3-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:40:pom:6.1-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_364_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_364_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_364_4.1-SNAPSHOT.ini
deleted file mode 100644
index 6063aa1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_364_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-[dependencies]
-10:152:pom:4.1-SNAPSHOT
-1:358:pom:1.1.2-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:260:pom:2.3.3-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_366_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_366_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_366_4.1-SNAPSHOT.ini
deleted file mode 100644
index 9f6d56d..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_366_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,39 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:46:pom:1.0.2-SNAPSHOT
-1:140:pom:6.0.24-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:185:pom:1.0_sap.2-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:218:pom:2.2.1-SNAPSHOT
-1:219:pom:2.3.4-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:316:pom:4.1-SNAPSHOT
-10:226:pom:4.1-SNAPSHOT
-10:231:pom:4.1-SNAPSHOT
-10:232:pom:4.1-SNAPSHOT
-10:285:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:233:pom:4.1-SNAPSHOT
-10:238:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:228:pom:1.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_42_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_42_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_42_4.0-SNAPSHOT.ini
deleted file mode 100644
index a5ece58..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_42_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_42_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_42_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_42_4.1-SNAPSHOT.ini
deleted file mode 100644
index 4f3a993..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_42_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:12:pom:4.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_43_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_43_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_43_4.0-SNAPSHOT.ini
deleted file mode 100644
index 62d0952..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_43_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,35 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:49:pom:6.0.5.25-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:52:pom:1.8-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:53:pom:2.3.0.677-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:54:pom:0.1.36-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:56:pom:1.2-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:60:pom:0.2.9-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:160:pom:4.0-SNAPSHOT
-10:162:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
-10:356:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_43_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_43_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_43_4.1-SNAPSHOT.ini
deleted file mode 100644
index 1feac7e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_43_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,35 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:48:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:49:pom:6.0.5.25-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:53:pom:2.3.0.677-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:54:pom:0.1.36-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:56:pom:1.2-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:59:pom:1.0.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:60:pom:0.2.9-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-10:162:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
-10:356:pom:4.1-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_62_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_62_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_62_4.0-SNAPSHOT.ini
deleted file mode 100644
index bf91527..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_62_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,46 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:63:pom:1.1-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:66:pom:0.11-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:10.1.0-SNAPSHOT
-1:69:pom:11.1.0-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:69:pom:9.0.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:70:pom:9.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:72:pom:4.0-SNAPSHOT
-10:246:pom:4.0-SNAPSHOT
-10:167:pom:4.0-SNAPSHOT
-10:247:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:251:pom:4.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:315:pom:4.0-SNAPSHOT
-10:242:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
-10:155:pom:4.0-SNAPSHOT
-10:121:pom:3.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_62_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_62_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_62_4.1-SNAPSHOT.ini
deleted file mode 100644
index 1010296..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_62_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,51 +0,0 @@
-[dependencies]
-1:358:pom:1.1.2-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:63:pom:1.1-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:260:pom:2.3.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:66:pom:0.11-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:10.1.0-SNAPSHOT
-1:69:pom:11.1.0-SNAPSHOT
-1:69:pom:8.1.7-SNAPSHOT
-1:69:pom:9.0.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:70:pom:9.0-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:72:pom:4.1-SNAPSHOT
-10:246:pom:4.1-SNAPSHOT
-10:167:pom:4.1-SNAPSHOT
-10:247:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:251:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:315:pom:4.1-SNAPSHOT
-10:242:pom:4.1-SNAPSHOT
-10:364:pom:4.1-SNAPSHOT
-10:363:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
-10:155:pom:4.1-SNAPSHOT
-10:121:pom:3.1-SNAPSHOT
-10:359:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_72_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_72_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_72_4.0-SNAPSHOT.ini
deleted file mode 100644
index a5831b1..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_72_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,68 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:63:pom:1.1-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:73:pom:2.4.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:66:pom:0.11-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:55:pom:4.4-SNAPSHOT
-1:78:pom:2.6-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:10.1.0-SNAPSHOT
-1:79:pom:0.7.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:70:pom:9.0-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:80:pom:4.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:246:pom:4.0-SNAPSHOT
-10:167:pom:4.0-SNAPSHOT
-10:247:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:251:pom:4.0-SNAPSHOT
-10:180:pom:3.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:156:pom:4.0-SNAPSHOT
-10:235:pom:4.0-SNAPSHOT
-10:315:pom:4.0-SNAPSHOT
-10:233:pom:4.0-SNAPSHOT
-10:257:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:160:pom:4.0-SNAPSHOT
-10:43:pom:4.0-SNAPSHOT
-10:161:pom:4.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-10:318:pom:4.0-SNAPSHOT
-10:320:pom:4.0-SNAPSHOT
-10:319:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_72_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_72_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_72_4.1-SNAPSHOT.ini
deleted file mode 100644
index e7c458a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_72_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,73 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:63:pom:1.1-SNAPSHOT
-1:63:pom:1.3-SNAPSHOT
-1:45:pom:3.1-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:73:pom:2.4.1-SNAPSHOT
-1:64:pom:1.3-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:65:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:47:pom:2.6.2-SNAPSHOT
-1:76:pom:1.0-SNAPSHOT
-1:66:pom:0.11-SNAPSHOT
-1:67:pom:1.6.5-SNAPSHOT
-1:50:pom:3.3-SNAPSHOT
-1:158:pom:3.5-SNAPSHOT
-1:52:pom:2.5-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:68:pom:3.8.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:77:pom:1.45-SNAPSHOT
-1:217:pom:1.0_sap.1-SNAPSHOT
-1:55:pom:4.8.2-SNAPSHOT
-1:78:pom:2.6-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:69:pom:10.1.0-SNAPSHOT
-1:79:pom:0.7.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:70:pom:9.0-SNAPSHOT
-1:29:pom:3.0.5-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:61:pom:1.1-SNAPSHOT
-1:71:pom:1.1.3.8-SNAPSHOT
-1:25:pom:0.86-beta1-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:80:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:246:pom:4.1-SNAPSHOT
-10:167:pom:4.1-SNAPSHOT
-10:247:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:251:pom:4.1-SNAPSHOT
-10:180:pom:3.2-SNAPSHOT
-10:174:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:156:pom:4.1-SNAPSHOT
-10:235:pom:4.1-SNAPSHOT
-10:315:pom:4.1-SNAPSHOT
-10:233:pom:4.1-SNAPSHOT
-10:257:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:160:pom:4.1-SNAPSHOT
-10:43:pom:4.1-SNAPSHOT
-10:161:pom:4.1-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-10:318:pom:4.1-SNAPSHOT
-10:320:pom:4.1-SNAPSHOT
-10:319:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_80_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_80_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_80_4.0-SNAPSHOT.ini
deleted file mode 100644
index b9edb46..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_80_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,19 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:81:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:235:pom:4.0-SNAPSHOT
-10:315:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_80_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_80_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_80_4.1-SNAPSHOT.ini
deleted file mode 100644
index f7660bf..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_80_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,19 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:81:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:235:pom:4.1-SNAPSHOT
-10:315:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_81_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_81_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_81_4.0-SNAPSHOT.ini
deleted file mode 100644
index c3bd01f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_81_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,78 +0,0 @@
-[dependencies]
-1:82:pom:9.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:83:pom:1.10.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:85:pom:6.4-SNAPSHOT
-1:85:pom:9.53.busObj.CR.1-SNAPSHOT
-1:86:pom:7.13.2-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:87:pom:6b-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1-SNAPSHOT
-1:88:pom:3.5-SNAPSHOT
-1:91:pom:1.5-SNAPSHOT
-1:92:pom:1.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:93:pom:10.0-SNAPSHOT
-1:94:pom:6.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:95:pom:7.0-SNAPSHOT
-1:95:pom:7.1-SNAPSHOT
-1:95:pom:8.0-SNAPSHOT
-1:96:pom:8.0-SNAPSHOT
-1:97:pom:3.0-SNAPSHOT
-1:98:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:99:pom:1.0-SNAPSHOT
-1:100:pom:4.1-SNAPSHOT
-1:101:pom:1.0_sap.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:102:pom:1.busObj.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:103:pom:6403-SNAPSHOT
-1:104:pom:70-SNAPSHOT
-1:105:pom:70-SNAPSHOT
-1:106:pom:3.5.5-SNAPSHOT
-1:107:pom:1.0-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:110:pom:4.0-SNAPSHOT
-1:111:pom:1.0-SNAPSHOT
-1:112:pom:1.0.30-SNAPSHOT
-1:113:pom:2.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:114:pom:2.50.16.busObj.1-SNAPSHOT
-1:114:pom:2.50.28_sap.1-SNAPSHOT
-1:116:pom:4.0-SNAPSHOT
-10:22:pom:4.0-SNAPSHOT
-10:117:pom:4.0-SNAPSHOT
-10:139:pom:3.0-SNAPSHOT
-10:62:pom:4.0-SNAPSHOT
-10:163:pom:4.0-SNAPSHOT
-10:246:pom:4.0-SNAPSHOT
-10:167:pom:4.0-SNAPSHOT
-10:351:pom:4.0-SNAPSHOT
-10:247:pom:4.0-SNAPSHOT
-10:225:pom:4.0-SNAPSHOT
-10:207:pom:4.0-SNAPSHOT
-10:243:pom:4.0-SNAPSHOT
-10:252:pom:4.0-SNAPSHOT
-10:266:pom:4.0-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:141:pom:4.0-SNAPSHOT
-10:145:pom:4.0-SNAPSHOT
-10:152:pom:4.0-SNAPSHOT
-10:315:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
-10:146:pom:4.0-SNAPSHOT
-10:147:pom:4.0-SNAPSHOT
-10:148:pom:4.0-SNAPSHOT
-10:149:pom:4.0-SNAPSHOT
-10:162:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_81_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_81_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_81_4.1-SNAPSHOT.ini
deleted file mode 100644
index cdaa48e..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_81_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,78 +0,0 @@
-[dependencies]
-1:82:pom:9.0-SNAPSHOT
-1:13:pom:1.7.0-SNAPSHOT
-1:44:pom:1.3-SNAPSHOT
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:83:pom:1.10.0-SNAPSHOT
-1:8:pom:2.1.0-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:85:pom:6.4-SNAPSHOT
-1:85:pom:9.53.busObj.CR.1-SNAPSHOT
-1:86:pom:7.13.2-SNAPSHOT
-1:17:pom:1.2.3-SNAPSHOT
-1:26:pom:3.0.1-SNAPSHOT
-1:87:pom:6b-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:88:pom:3.5-SNAPSHOT
-1:91:pom:1.5-SNAPSHOT
-1:92:pom:1.0-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:93:pom:10.0-SNAPSHOT
-1:94:pom:6.0-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:95:pom:7.0-SNAPSHOT
-1:95:pom:7.1-SNAPSHOT
-1:95:pom:8.0-SNAPSHOT
-1:96:pom:8.0-SNAPSHOT
-1:97:pom:3.0-SNAPSHOT
-1:98:pom:6.0-SNAPSHOT
-1:20:pom:3.3.2-SNAPSHOT
-1:57:pom:4.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:99:pom:1.0-SNAPSHOT
-1:100:pom:4.1-SNAPSHOT
-1:101:pom:1.0_sap.1-SNAPSHOT
-1:28:pom:4.1-SNAPSHOT
-1:102:pom:1.busObj.1-SNAPSHOT
-1:31:pom:2.2-SNAPSHOT
-1:103:pom:6403-SNAPSHOT
-1:104:pom:70-SNAPSHOT
-1:105:pom:70-SNAPSHOT
-1:106:pom:3.5.5-SNAPSHOT
-1:107:pom:1.0-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:110:pom:4.0-SNAPSHOT
-1:111:pom:1.0-SNAPSHOT
-1:112:pom:1.0.30-SNAPSHOT
-1:113:pom:2.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-1:114:pom:2.50.16.busObj.1-SNAPSHOT
-1:114:pom:2.50.28_sap.1-SNAPSHOT
-1:116:pom:4.0-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:117:pom:4.1-SNAPSHOT
-10:139:pom:3.1-SNAPSHOT
-10:62:pom:4.1-SNAPSHOT
-10:163:pom:4.1-SNAPSHOT
-10:246:pom:4.1-SNAPSHOT
-10:167:pom:4.1-SNAPSHOT
-10:351:pom:4.1-SNAPSHOT
-10:247:pom:4.1-SNAPSHOT
-10:225:pom:4.1-SNAPSHOT
-10:207:pom:4.1-SNAPSHOT
-10:243:pom:4.1-SNAPSHOT
-10:252:pom:4.1-SNAPSHOT
-10:266:pom:4.1-SNAPSHOT
-10:11:pom:4.1-SNAPSHOT
-10:141:pom:4.1-SNAPSHOT
-10:145:pom:4.1-SNAPSHOT
-10:152:pom:4.1-SNAPSHOT
-10:315:pom:4.1-SNAPSHOT
-10:12:pom:4.1-SNAPSHOT
-10:146:pom:4.1-SNAPSHOT
-10:147:pom:4.1-SNAPSHOT
-10:148:pom:4.1-SNAPSHOT
-10:149:pom:4.1-SNAPSHOT
-10:162:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_90_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_90_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_90_1.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/10_90_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_100_4.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_100_4.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_100_4.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_100_4.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_101_1.0_sap.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_101_1.0_sap.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_101_1.0_sap.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_101_1.0_sap.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_102_1.busObj.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_102_1.busObj.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_102_1.busObj.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_102_1.busObj.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_103_6403-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_103_6403-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_103_6403-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_103_6403-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_104_70-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_104_70-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_104_70-SNAPSHOT.ini
deleted file mode 100644
index 0e6ed3a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_104_70-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_105_70-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_105_70-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_105_70-SNAPSHOT.ini
deleted file mode 100644
index f334a37..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_105_70-SNAPSHOT.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_106_3.5.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_106_3.5.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_106_3.5.5-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_106_3.5.5-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_107_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_107_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_107_1.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_107_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_108_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_108_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_108_4.0-SNAPSHOT.ini
deleted file mode 100644
index 949516a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_108_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:8:pom:2.7.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:109:pom:6.0.5-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_109_6.0.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_109_6.0.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_109_6.0.5-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_109_6.0.5-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_110_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_110_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_110_4.0-SNAPSHOT.ini
deleted file mode 100644
index d33fdc7..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_110_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:27:pom:6.0-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_111_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_111_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_111_1.0-SNAPSHOT.ini
deleted file mode 100644
index ef8aa98..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_111_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-1:18:pom:5.1.1.41-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_112_1.0.30-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_112_1.0.30-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_112_1.0.30-SNAPSHOT.ini
deleted file mode 100644
index d1717bb..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_112_1.0.30-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:17:pom:1.2.3-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_113_2.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_113_2.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_113_2.0-SNAPSHOT.ini
deleted file mode 100644
index 663a1b8..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_113_2.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[dependencies]
-1:17:pom:1.2.3-SNAPSHOT
-1:87:pom:6b-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:106:pom:3.5.5-SNAPSHOT
-1:112:pom:1.0.30-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_114_2.50.16.busObj.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_114_2.50.16.busObj.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_114_2.50.16.busObj.1-SNAPSHOT.ini
deleted file mode 100644
index b80aa77..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_114_2.50.16.busObj.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[dependencies]
-1:17:pom:1.2.3-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:18:pom:5.1.1.41-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:108:pom:4.0-SNAPSHOT
-1:110:pom:4.0-SNAPSHOT
-1:112:pom:1.0.30-SNAPSHOT
-10:22:pom:4.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_114_2.50.28_sap.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_114_2.50.28_sap.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_114_2.50.28_sap.1-SNAPSHOT.ini
deleted file mode 100644
index d986d0c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_114_2.50.28_sap.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:115:pom:4.2.1-SNAPSHOT
-1:114:pom:2.50.16.busObj.1-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_115_4.2.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_115_4.2.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_115_4.2.1-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_115_4.2.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_116_4.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_116_4.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_116_4.0-SNAPSHOT.ini
deleted file mode 100644
index 235f139..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_116_4.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:18:pom:5.1.1.41-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_118_10.2.2.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_118_10.2.2.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_118_10.2.2.0-SNAPSHOT.ini
deleted file mode 100644
index debc3bf..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_118_10.2.2.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:23:pom:1.2.6_sap.1-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_118_10.5.3.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_118_10.5.3.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_118_10.5.3.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_118_10.5.3.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_119_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_119_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_119_1.0-SNAPSHOT.ini
deleted file mode 100644
index fe9ba3a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_119_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:7:pom:5.8.8-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_120_1.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_120_1.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_120_1.0-SNAPSHOT.ini
deleted file mode 100644
index ba84e97..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_120_1.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:50:pom:3.4-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_122_3.1.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_122_3.1.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_122_3.1.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_122_3.1.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_123_3.1.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_123_3.1.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_123_3.1.1-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_123_3.1.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_124_2.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_124_2.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_124_2.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_124_2.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_8.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_8.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_8.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_8.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_9.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_9.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_9.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_9.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_9.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_9.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_9.5-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_125_9.5-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_2.81-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_2.81-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_2.81-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_2.81-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_2.90-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_2.90-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_2.90-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_2.90-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_3.50-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_3.50-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_3.50-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_126_3.50-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_127_6.20-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_127_6.20-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_127_6.20-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_127_6.20-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_127_6.30-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_127_6.30-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_127_6.30-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_127_6.30-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_128_2006-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_128_2006-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_128_2006-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_128_2006-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_129_10.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_129_10.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_129_10.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_129_10.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_10.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_10.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_10.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_10.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_10.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_10.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_10.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_10.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_11.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_11.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_11.1-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_11.1-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_9.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_9.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_9.2-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_130_9.2-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_5.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_5.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_5.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_5.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_5.3-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_5.3-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_5.3-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_5.3-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_6.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_6.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_6.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_131_6.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_132_7.7-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_132_7.7-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_132_7.7-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_132_7.7-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_12.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_12.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_12.5-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_12.5-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_15.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_15.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_15.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_15.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_15.5-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_15.5-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_15.5-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_133_15.5-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_134_12.6-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_134_12.6-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_134_12.6-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_134_12.6-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_134_12.7-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_134_12.7-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_134_12.7-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_134_12.7-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_135_10.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_135_10.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_135_10.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_135_10.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_135_11.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_135_11.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_135_11.0-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_135_11.0-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_136_3.04-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_136_3.04-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_136_3.04-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_136_3.04-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_136_3.06-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_136_3.06-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_136_3.06-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_136_3.06-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_137_2.2.12-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_137_2.2.12-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_137_2.2.12-SNAPSHOT.ini
deleted file mode 100644
index 61a252c..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_137_2.2.12-SNAPSHOT.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_138_7.7.06-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_138_7.7.06-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_138_7.7.06-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_138_7.7.06-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_13_1.7.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_13_1.7.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_13_1.7.0-SNAPSHOT.ini
deleted file mode 100644
index 0e6ed3a..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_13_1.7.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_5.5.28-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_5.5.28-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_5.5.28-SNAPSHOT.ini
deleted file mode 100644
index 05b1294..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_5.5.28-SNAPSHOT.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_6.0.18-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_6.0.18-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_6.0.18-SNAPSHOT.ini
deleted file mode 100644
index 5ebd8f8..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_6.0.18-SNAPSHOT.ini
+++ /dev/null
@@ -1,14 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.5-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_6.0.24-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_6.0.24-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_6.0.24-SNAPSHOT.ini
deleted file mode 100644
index 816c494..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_140_6.0.24-SNAPSHOT.ini
+++ /dev/null
@@ -1,14 +0,0 @@
-[dependencies]
-1:13:pom:1.7.0-SNAPSHOT
-1:14:pom:2.5.2-SNAPSHOT
-1:8:pom:2.7.0-SNAPSHOT
-1:15:pom:1.36.0-SNAPSHOT
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-1:38:pom:1.3.6-SNAPSHOT
-1:5:pom:1.5-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
-10:42:pom:4.0-SNAPSHOT
-10:12:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_142_9.1-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_142_9.1-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_142_9.1-SNAPSHOT.ini
deleted file mode 100644
index 08ea238..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_142_9.1-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:77:pom:1.45-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_143_6.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_143_6.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_143_6.0-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_143_6.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_144_15.0-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_144_15.0-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_144_15.0-SNAPSHOT.ini
deleted file mode 100644
index a9482de..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_144_15.0-SNAPSHOT.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-1:69:pom:8.1.7-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_14_2.5.2-SNAPSHOT.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_14_2.5.2-SNAPSHOT.ini b/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_14_2.5.2-SNAPSHOT.ini
deleted file mode 100644
index 678ce19..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/cycle-big/1_14_2.5.2-SNAPSHOT.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[dependencies]
-1:2:pom:5.50-SNAPSHOT
-1:9:pom:3.1-SNAPSHOT
-1:6:pom:1.5.8-SNAPSHOT
-1:7:pom:5.8.8-SNAPSHOT
-10:11:pom:4.0-SNAPSHOT
[24/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-root-exclusion-tree.txt
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-root-exclusion-tree.txt b/aether-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-root-exclusion-tree.txt
deleted file mode 100644
index ef3dc74..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-root-exclusion-tree.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-gid:root:ext:ver root-scope
-+- gid:direct-of-root:ext:ver direct-of-root-scope
- +- gid:transitive-of-root:ext:ver transitive-of-root-scope
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/subtree_comparison_error.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/subtree_comparison_error.ini b/aether-impl/src/test/resources/artifact-descriptions/subtree_comparison_error.ini
deleted file mode 100644
index 76d2ba6..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/subtree_comparison_error.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-duplicate:transitive:ext:dependency
-git:aid:ext:ver
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/subtree_comparison_ver.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/subtree_comparison_ver.ini b/aether-impl/src/test/resources/artifact-descriptions/subtree_comparison_ver.ini
deleted file mode 100644
index 5b1bcc9..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/subtree_comparison_ver.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dependencies]
-duplicate:transitive:ext:dependency
-gid:aid:ext:ver
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_a_1.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_a_1.ini b/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_a_1.ini
deleted file mode 100644
index cfdbaeb..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_a_1.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-test:b:jar:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_a_2.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_a_2.ini b/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_a_2.ini
deleted file mode 100644
index 0117b0f..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_a_2.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-test:b:jar:2
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_b_2.ini
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_b_2.ini b/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_b_2.ini
deleted file mode 100644
index 04a3ff0..0000000
--- a/aether-impl/src/test/resources/artifact-descriptions/versionless-cycle/test_b_2.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-test:a:jar:1
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/pom.xml
----------------------------------------------------------------------
diff --git a/aether-spi/pom.xml b/aether-spi/pom.xml
deleted file mode 100644
index fde2d34..0000000
--- a/aether-spi/pom.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- 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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>aether-spi</artifactId>
-
- <name>Aether SPI</name>
- <description>
- The service provider interface for repository system implementations and repository connectors.
- </description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-api</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactDownload.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactDownload.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactDownload.java
deleted file mode 100644
index 3d82ac1..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactDownload.java
+++ /dev/null
@@ -1,264 +0,0 @@
-package org.eclipse.aether.spi.connector;
-
-/*
- * 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.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.transfer.TransferListener;
-
-/**
- * A download of an artifact from a remote repository. A repository connector processing this download has to use
- * {@link #setException(ArtifactTransferException)} and {@link #setSupportedContexts(Collection)} (if applicable) to
- * report the results of the transfer.
- */
-public final class ArtifactDownload
- extends ArtifactTransfer
-{
-
- private boolean existenceCheck;
-
- private String checksumPolicy = "";
-
- private String context = "";
-
- private Collection<String> contexts;
-
- private List<RemoteRepository> repositories = Collections.emptyList();
-
- /**
- * Creates a new uninitialized download.
- */
- public ArtifactDownload()
- {
- // enables default constructor
- }
-
- /**
- * Creates a new download with the specified properties.
- *
- * @param artifact The artifact to download, may be {@code null}.
- * @param context The context in which this download is performed, may be {@code null}.
- * @param file The local file to download the artifact to, may be {@code null}.
- * @param checksumPolicy The checksum policy, may be {@code null}.
- */
- public ArtifactDownload( Artifact artifact, String context, File file, String checksumPolicy )
- {
- setArtifact( artifact );
- setRequestContext( context );
- setFile( file );
- setChecksumPolicy( checksumPolicy );
- }
-
- @Override
- public ArtifactDownload setArtifact( Artifact artifact )
- {
- super.setArtifact( artifact );
- return this;
- }
-
- /**
- * {@inheritDoc} <em>Note:</em> In case of {@link #isExistenceCheck()}, this method may return {@code null}.
- */
- @Override
- public File getFile()
- {
- return super.getFile();
- }
-
- @Override
- public ArtifactDownload setFile( File file )
- {
- super.setFile( file );
- return this;
- }
-
- /**
- * Indicates whether this transfer shall only verify the existence of the artifact in the remote repository rather
- * than actually downloading the file. Just like with an actual transfer, a connector is expected to signal the
- * non-existence of the artifact by associating an {@link org.eclipse.aether.transfer.ArtifactNotFoundException
- * ArtifactNotFoundException} with this download. <em>Note:</em> If an existence check is requested,
- * {@link #getFile()} may be {@code null}, i.e. the connector must not try to access the local file.
- *
- * @return {@code true} if only the artifact existence shall be verified, {@code false} to actually download the
- * artifact.
- */
- public boolean isExistenceCheck()
- {
- return existenceCheck;
- }
-
- /**
- * Controls whether this transfer shall only verify the existence of the artifact in the remote repository rather
- * than actually downloading the file.
- *
- * @param existenceCheck {@code true} if only the artifact existence shall be verified, {@code false} to actually
- * download the artifact.
- * @return This transfer for chaining, never {@code null}.
- */
- public ArtifactDownload setExistenceCheck( boolean existenceCheck )
- {
- this.existenceCheck = existenceCheck;
- return this;
- }
-
- /**
- * Gets the checksum policy for this transfer.
- *
- * @return The checksum policy, never {@code null}.
- */
- public String getChecksumPolicy()
- {
- return checksumPolicy;
- }
-
- /**
- * Sets the checksum policy for this transfer.
- *
- * @param checksumPolicy The checksum policy, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- public ArtifactDownload setChecksumPolicy( String checksumPolicy )
- {
- this.checksumPolicy = ( checksumPolicy != null ) ? checksumPolicy : "";
- return this;
- }
-
- /**
- * Gets the context of this transfer.
- *
- * @return The context id, never {@code null}.
- */
- public String getRequestContext()
- {
- return context;
- }
-
- /**
- * Sets the context of this transfer.
- *
- * @param context The context id, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- public ArtifactDownload setRequestContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- return this;
- }
-
- /**
- * Gets the set of request contexts in which the artifact is generally available. Repository managers can indicate
- * that an artifact is available in more than the requested context to avoid future remote trips for the same
- * artifact in a different context.
- *
- * @return The set of requests context in which the artifact is available, never {@code null}.
- */
- public Collection<String> getSupportedContexts()
- {
- return ( contexts != null ) ? contexts : Collections.singleton( context );
- }
-
- /**
- * Sets the set of request contexts in which the artifact is generally available. Repository managers can indicate
- * that an artifact is available in more than the requested context to avoid future remote trips for the same
- * artifact in a different context. The set of supported contexts defaults to the original request context if not
- * overridden by the repository connector.
- *
- * @param contexts The set of requests context in which the artifact is available, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- public ArtifactDownload setSupportedContexts( Collection<String> contexts )
- {
- if ( contexts == null || contexts.isEmpty() )
- {
- this.contexts = Collections.singleton( context );
- }
- else
- {
- this.contexts = contexts;
- }
- return this;
- }
-
- /**
- * Gets the remote repositories that are being aggregated by the physically contacted remote repository (i.e. a
- * repository manager).
- *
- * @return The remote repositories being aggregated, never {@code null}.
- */
- public List<RemoteRepository> getRepositories()
- {
- return repositories;
- }
-
- /**
- * Sets the remote repositories that are being aggregated by the physically contacted remote repository (i.e. a
- * repository manager).
- *
- * @param repositories The remote repositories being aggregated, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- public ArtifactDownload setRepositories( List<RemoteRepository> repositories )
- {
- if ( repositories == null )
- {
- this.repositories = Collections.emptyList();
- }
- else
- {
- this.repositories = repositories;
- }
- return this;
- }
-
- @Override
- public ArtifactDownload setException( ArtifactTransferException exception )
- {
- super.setException( exception );
- return this;
- }
-
- @Override
- public ArtifactDownload setListener( TransferListener listener )
- {
- super.setListener( listener );
- return this;
- }
-
- @Override
- public ArtifactDownload setTrace( RequestTrace trace )
- {
- super.setTrace( trace );
- return this;
- }
-
- @Override
- public String toString()
- {
- return getArtifact() + " - " + ( isExistenceCheck() ? "?" : "" ) + getFile();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactTransfer.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactTransfer.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactTransfer.java
deleted file mode 100644
index 8399512..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactTransfer.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.eclipse.aether.spi.connector;
-
-/*
- * 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.artifact.Artifact;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-
-/**
- * A download/upload of an artifact.
- *
- * @noextend This class is not intended to be extended by clients.
- */
-public abstract class ArtifactTransfer
- extends Transfer
-{
-
- private Artifact artifact;
-
- private File file;
-
- private ArtifactTransferException exception;
-
- ArtifactTransfer()
- {
- // hide
- }
-
- /**
- * Gets the artifact being transferred.
- *
- * @return The artifact being transferred or {@code null} if not set.
- */
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- /**
- * Sets the artifact to transfer.
- *
- * @param artifact The artifact, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- public ArtifactTransfer setArtifact( Artifact artifact )
- {
- this.artifact = artifact;
- return this;
- }
-
- /**
- * Gets the local file the artifact is downloaded to or uploaded from. In case of a download, a connector should
- * first transfer the bytes to a temporary file and only overwrite the target file once the entire download is
- * completed such that an interrupted/failed download does not corrupt the current file contents.
- *
- * @return The local file or {@code null} if not set.
- */
- public File getFile()
- {
- return file;
- }
-
- /**
- * Sets the local file the artifact is downloaded to or uploaded from.
- *
- * @param file The local file, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- public ArtifactTransfer setFile( File file )
- {
- this.file = file;
- return this;
- }
-
- /**
- * Gets the exception that occurred during the transfer (if any).
- *
- * @return The exception or {@code null} if the transfer was successful.
- */
- public ArtifactTransferException getException()
- {
- return exception;
- }
-
- /**
- * Sets the exception that occurred during the transfer.
- *
- * @param exception The exception, may be {@code null} to denote a successful transfer.
- * @return This transfer for chaining, never {@code null}.
- */
- public ArtifactTransfer setException( ArtifactTransferException exception )
- {
- this.exception = exception;
- return this;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactUpload.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactUpload.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactUpload.java
deleted file mode 100644
index f85539e..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/ArtifactUpload.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package org.eclipse.aether.spi.connector;
-
-/*
- * 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.RequestTrace;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.transfer.TransferListener;
-
-/**
- * An upload of an artifact to a remote repository. A repository connector processing this upload has to use
- * {@link #setException(ArtifactTransferException)} to report the results of the transfer.
- */
-public final class ArtifactUpload
- extends ArtifactTransfer
-{
-
- /**
- * Creates a new uninitialized upload.
- */
- public ArtifactUpload()
- {
- // enables default constructor
- }
-
- /**
- * Creates a new upload with the specified properties.
- *
- * @param artifact The artifact to upload, may be {@code null}.
- * @param file The local file to upload the artifact from, may be {@code null}.
- */
- public ArtifactUpload( Artifact artifact, File file )
- {
- setArtifact( artifact );
- setFile( file );
- }
-
- @Override
- public ArtifactUpload setArtifact( Artifact artifact )
- {
- super.setArtifact( artifact );
- return this;
- }
-
- @Override
- public ArtifactUpload setFile( File file )
- {
- super.setFile( file );
- return this;
- }
-
- @Override
- public ArtifactUpload setException( ArtifactTransferException exception )
- {
- super.setException( exception );
- return this;
- }
-
- @Override
- public ArtifactUpload setListener( TransferListener listener )
- {
- super.setListener( listener );
- return this;
- }
-
- @Override
- public ArtifactUpload setTrace( RequestTrace trace )
- {
- super.setTrace( trace );
- return this;
- }
-
- @Override
- public String toString()
- {
- return getArtifact() + " - " + getFile();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataDownload.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataDownload.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataDownload.java
deleted file mode 100644
index be3a2d0..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataDownload.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package org.eclipse.aether.spi.connector;
-
-/*
- * 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.List;
-
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transfer.MetadataTransferException;
-import org.eclipse.aether.transfer.TransferListener;
-
-/**
- * A download of metadata from a remote repository. A repository connector processing this download has to use
- * {@link #setException(MetadataTransferException)} to report the results of the transfer.
- */
-public final class MetadataDownload
- extends MetadataTransfer
-{
-
- private String checksumPolicy = "";
-
- private String context = "";
-
- private List<RemoteRepository> repositories = Collections.emptyList();
-
- /**
- * Creates a new uninitialized download.
- */
- public MetadataDownload()
- {
- // enables default constructor
- }
-
- /**
- * Creates a new download with the specified properties.
- *
- * @param metadata The metadata to download, may be {@code null}.
- * @param context The context in which this download is performed, may be {@code null}.
- * @param file The local file to download the metadata to, may be {@code null}.
- * @param checksumPolicy The checksum policy, may be {@code null}.
- */
- public MetadataDownload( Metadata metadata, String context, File file, String checksumPolicy )
- {
- setMetadata( metadata );
- setFile( file );
- setChecksumPolicy( checksumPolicy );
- setRequestContext( context );
- }
-
- @Override
- public MetadataDownload setMetadata( Metadata metadata )
- {
- super.setMetadata( metadata );
- return this;
- }
-
- @Override
- public MetadataDownload setFile( File file )
- {
- super.setFile( file );
- return this;
- }
-
- /**
- * Gets the checksum policy for this transfer.
- *
- * @return The checksum policy, never {@code null}.
- */
- public String getChecksumPolicy()
- {
- return checksumPolicy;
- }
-
- /**
- * Sets the checksum policy for this transfer.
- *
- * @param checksumPolicy The checksum policy, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- public MetadataDownload setChecksumPolicy( String checksumPolicy )
- {
- this.checksumPolicy = ( checksumPolicy != null ) ? checksumPolicy : "";
- return this;
- }
-
- /**
- * Gets the context of this transfer.
- *
- * @return The context id, never {@code null}.
- */
- public String getRequestContext()
- {
- return context;
- }
-
- /**
- * Sets the request context of this transfer.
- *
- * @param context The context id, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- public MetadataDownload setRequestContext( String context )
- {
- this.context = ( context != null ) ? context : "";
- return this;
- }
-
- /**
- * Gets the remote repositories that are being aggregated by the physically contacted remote repository (i.e. a
- * repository manager).
- *
- * @return The remote repositories being aggregated, never {@code null}.
- */
- public List<RemoteRepository> getRepositories()
- {
- return repositories;
- }
-
- /**
- * Sets the remote repositories that are being aggregated by the physically contacted remote repository (i.e. a
- * repository manager).
- *
- * @param repositories The remote repositories being aggregated, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- public MetadataDownload setRepositories( List<RemoteRepository> repositories )
- {
- if ( repositories == null )
- {
- this.repositories = Collections.emptyList();
- }
- else
- {
- this.repositories = repositories;
- }
- return this;
- }
-
- @Override
- public MetadataDownload setException( MetadataTransferException exception )
- {
- super.setException( exception );
- return this;
- }
-
- @Override
- public MetadataDownload setListener( TransferListener listener )
- {
- super.setListener( listener );
- return this;
- }
-
- @Override
- public MetadataDownload setTrace( RequestTrace trace )
- {
- super.setTrace( trace );
- return this;
- }
-
- @Override
- public String toString()
- {
- return getMetadata() + " - " + getFile();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataTransfer.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataTransfer.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataTransfer.java
deleted file mode 100644
index 94eb46e..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataTransfer.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.eclipse.aether.spi.connector;
-
-/*
- * 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.metadata.Metadata;
-import org.eclipse.aether.transfer.MetadataTransferException;
-
-/**
- * A download/upload of metadata.
- *
- * @noextend This class is not intended to be extended by clients.
- */
-public abstract class MetadataTransfer
- extends Transfer
-{
-
- private Metadata metadata;
-
- private File file;
-
- private MetadataTransferException exception;
-
- MetadataTransfer()
- {
- // hide
- }
-
- /**
- * Gets the metadata being transferred.
- *
- * @return The metadata being transferred or {@code null} if not set.
- */
- public Metadata getMetadata()
- {
- return metadata;
- }
-
- /**
- * Sets the metadata to transfer.
- *
- * @param metadata The metadata, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- public MetadataTransfer setMetadata( Metadata metadata )
- {
- this.metadata = metadata;
- return this;
- }
-
- /**
- * Gets the local file the metadata is downloaded to or uploaded from. In case of a download, a connector should
- * first transfer the bytes to a temporary file and only overwrite the target file once the entire download is
- * completed such that an interrupted/failed download does not corrupt the current file contents.
- *
- * @return The local file or {@code null} if not set.
- */
- public File getFile()
- {
- return file;
- }
-
- /**
- * Sets the local file the metadata is downloaded to or uploaded from.
- *
- * @param file The local file, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- public MetadataTransfer setFile( File file )
- {
- this.file = file;
- return this;
- }
-
- /**
- * Gets the exception that occurred during the transfer (if any).
- *
- * @return The exception or {@code null} if the transfer was successful.
- */
- public MetadataTransferException getException()
- {
- return exception;
- }
-
- /**
- * Sets the exception that occurred during the transfer.
- *
- * @param exception The exception, may be {@code null} to denote a successful transfer.
- * @return This transfer for chaining, never {@code null}.
- */
- public MetadataTransfer setException( MetadataTransferException exception )
- {
- this.exception = exception;
- return this;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataUpload.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataUpload.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataUpload.java
deleted file mode 100644
index d992757..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/MetadataUpload.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package org.eclipse.aether.spi.connector;
-
-/*
- * 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.RequestTrace;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.transfer.MetadataTransferException;
-import org.eclipse.aether.transfer.TransferListener;
-
-/**
- * An upload of metadata to a remote repository. A repository connector processing this upload has to use
- * {@link #setException(MetadataTransferException)} to report the results of the transfer.
- */
-public final class MetadataUpload
- extends MetadataTransfer
-{
-
- /**
- * Creates a new uninitialized upload.
- */
- public MetadataUpload()
- {
- // enables default constructor
- }
-
- /**
- * Creates a new upload with the specified properties.
- *
- * @param metadata The metadata to upload, may be {@code null}.
- * @param file The local file to upload the metadata from, may be {@code null}.
- */
- public MetadataUpload( Metadata metadata, File file )
- {
- setMetadata( metadata );
- setFile( file );
- }
-
- @Override
- public MetadataUpload setMetadata( Metadata metadata )
- {
- super.setMetadata( metadata );
- return this;
- }
-
- @Override
- public MetadataUpload setFile( File file )
- {
- super.setFile( file );
- return this;
- }
-
- @Override
- public MetadataUpload setException( MetadataTransferException exception )
- {
- super.setException( exception );
- return this;
- }
-
- @Override
- public MetadataUpload setListener( TransferListener listener )
- {
- super.setListener( listener );
- return this;
- }
-
- @Override
- public MetadataUpload setTrace( RequestTrace trace )
- {
- super.setTrace( trace );
- return this;
- }
-
- @Override
- public String toString()
- {
- return getMetadata() + " - " + getFile();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/RepositoryConnector.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/RepositoryConnector.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/RepositoryConnector.java
deleted file mode 100644
index 51e0627..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/RepositoryConnector.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.eclipse.aether.spi.connector;
-
-/*
- * 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.Closeable;
-import java.util.Collection;
-
-/**
- * A connector for a remote repository. The connector is responsible for downloading/uploading of artifacts and metadata
- * from/to a remote repository.
- * <p>
- * If applicable, a connector should obey connect/request timeouts and other relevant settings from the
- * {@link org.eclipse.aether.RepositorySystemSession#getConfigProperties() configuration properties} of the repository
- * session it has been obtained for. However, a connector must not emit any events to the transfer listener configured
- * for the session. Instead, transfer events must be emitted only to the listener (if any) specified for a given
- * download/upload request.
- * <p>
- * <strong>Note:</strong> While a connector itself can use multiple threads internally to performs the transfers,
- * clients must not call a connector concurrently, i.e. connectors are generally not thread-safe.
- *
- * @see org.eclipse.aether.spi.connector.transport.TransporterProvider
- * @see org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider
- * @see org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider
- */
-public interface RepositoryConnector
- extends Closeable
-{
-
- /**
- * Performs the specified downloads. If a download fails, the connector stores the underlying exception in the
- * download object such that callers can inspect the result via {@link ArtifactDownload#getException()} and
- * {@link MetadataDownload#getException()}, respectively. If reasonable, a connector should continue to process the
- * remaining downloads after an error to retrieve as many items as possible. The connector may perform the transfers
- * concurrently and in any order.
- *
- * @param artifactDownloads The artifact downloads to perform, may be {@code null} or empty.
- * @param metadataDownloads The metadata downloads to perform, may be {@code null} or empty.
- */
- void get( Collection<? extends ArtifactDownload> artifactDownloads,
- Collection<? extends MetadataDownload> metadataDownloads );
-
- /**
- * Performs the specified uploads. If an upload fails, the connector stores the underlying exception in the upload
- * object such that callers can inspect the result via {@link ArtifactUpload#getException()} and
- * {@link MetadataUpload#getException()}, respectively. The connector may perform the transfers concurrently and in
- * any order.
- *
- * @param artifactUploads The artifact uploads to perform, may be {@code null} or empty.
- * @param metadataUploads The metadata uploads to perform, may be {@code null} or empty.
- */
- void put( Collection<? extends ArtifactUpload> artifactUploads, Collection<? extends MetadataUpload> metadataUploads );
-
- /**
- * Closes this connector and frees any network resources associated with it. Once closed, a connector must not be
- * used for further transfers, any attempt to do so would yield a {@link IllegalStateException} or similar. Closing
- * an already closed connector is harmless and has no effect.
- */
- void close();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/RepositoryConnectorFactory.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/RepositoryConnectorFactory.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/RepositoryConnectorFactory.java
deleted file mode 100644
index 0d401c4..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/RepositoryConnectorFactory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.aether.spi.connector;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transfer.NoRepositoryConnectorException;
-
-/**
- * A factory to create repository connectors. A repository connector is responsible for uploads/downloads to/from a
- * certain kind of remote repository. When the repository system needs a repository connector for a given remote
- * repository, it iterates the registered factories in descending order of their priority and calls
- * {@link #newInstance(RepositorySystemSession, RemoteRepository)} on them. The first connector returned by a factory
- * will then be used for the transfer.
- */
-public interface RepositoryConnectorFactory
-{
-
- /**
- * Tries to create a repository connector for the specified remote repository. Typically, a factory will inspect
- * {@link RemoteRepository#getProtocol()} and {@link RemoteRepository#getContentType()} to determine whether it can
- * handle a repository.
- *
- * @param session The repository system session from which to configure the connector, must not be {@code null}. In
- * particular, a connector must notify any {@link RepositorySystemSession#getTransferListener()} set for
- * the session and should obey the timeouts configured for the session.
- * @param repository The remote repository to create a connector for, must not be {@code null}.
- * @return The connector for the given repository, never {@code null}.
- * @throws NoRepositoryConnectorException If the factory cannot create a connector for the specified remote
- * repository.
- */
- RepositoryConnector newInstance( RepositorySystemSession session, RemoteRepository repository )
- throws NoRepositoryConnectorException;
-
- /**
- * The priority of this factory. When multiple factories can handle a given repository, factories with higher
- * priority are preferred over those with lower priority.
- *
- * @return The priority of this factory.
- */
- float getPriority();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/Transfer.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/Transfer.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/Transfer.java
deleted file mode 100644
index fc77011..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/Transfer.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.eclipse.aether.spi.connector;
-
-/*
- * 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.RequestTrace;
-import org.eclipse.aether.transfer.TransferListener;
-
-/**
- * An artifact/metadata transfer.
- *
- * @noextend This class is not intended to be extended by clients.
- */
-public abstract class Transfer
-{
-
- private TransferListener listener;
-
- private RequestTrace trace;
-
- Transfer()
- {
- // hide from public
- }
-
- /**
- * Gets the exception that occurred during the transfer (if any).
- *
- * @return The exception or {@code null} if the transfer was successful.
- */
- public abstract Exception getException();
-
- /**
- * Gets the listener that is to be notified during the transfer.
- *
- * @return The transfer listener or {@code null} if none.
- */
- public TransferListener getListener()
- {
- return listener;
- }
-
- /**
- * Sets the listener that is to be notified during the transfer.
- *
- * @param listener The transfer listener to notify, may be {@code null} if none.
- * @return This transfer for chaining, never {@code null}.
- */
- Transfer setListener( TransferListener listener )
- {
- this.listener = listener;
- return this;
- }
-
- /**
- * Gets the trace information that describes the higher level request/operation in which this transfer 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 transfer is issued.
- *
- * @param trace The trace information about the higher level operation, may be {@code null}.
- * @return This transfer for chaining, never {@code null}.
- */
- Transfer setTrace( RequestTrace trace )
- {
- this.trace = trace;
- return this;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/ChecksumPolicy.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/ChecksumPolicy.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/ChecksumPolicy.java
deleted file mode 100644
index eb1716d..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/ChecksumPolicy.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package org.eclipse.aether.spi.connector.checksum;
-
-/*
- * 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.transfer.ChecksumFailureException;
-
-/**
- * A checksum policy gets employed by repository connectors to validate the integrity of a downloaded file. For each
- * downloaded file, a checksum policy instance is obtained and presented with the available checksums to conclude
- * whether the download is valid or not. The following pseudo-code illustrates the usage of a checksum policy by a
- * repository connector in some more detail (the retry logic has been omitted for the sake of brevity):
- *
- * <pre>
- * void validateChecksums() throws ChecksumFailureException {
- * for (checksum : checksums) {
- * switch (checksum.state) {
- * case MATCH:
- * if (policy.onChecksumMatch(...)) {
- * return;
- * }
- * break;
- * case MISMATCH:
- * policy.onChecksumMismatch(...);
- * break;
- * case ERROR:
- * policy.onChecksumError(...);
- * break;
- * }
- * }
- * policy.onNoMoreChecksums();
- * }
- *
- * void downloadFile() throws Exception {
- * ...
- * policy = newChecksumPolicy();
- * try {
- * validateChecksums();
- * } catch (ChecksumFailureException e) {
- * if (!policy.onTransferChecksumFailure(...)) {
- * throw e;
- * }
- * }
- * }
- * </pre>
- *
- * Checksum policies might be stateful and are generally not thread-safe.
- */
-public interface ChecksumPolicy
-{
-
- /**
- * Bit flag indicating a checksum which is not part of the official repository layout/structure.
- */
- int KIND_UNOFFICIAL = 0x01;
-
- /**
- * Signals a match between the locally computed checksum value and the checksum value declared by the remote
- * repository.
- *
- * @param algorithm The name of the checksum algorithm being used, must not be {@code null}.
- * @param kind A bit field providing further details about the checksum. See the {@code KIND_*} constants in this
- * interface for possible bit flags.
- * @return {@code true} to accept the download as valid and stop further validation, {@code false} to continue
- * validation with the next checksum.
- */
- boolean onChecksumMatch( String algorithm, int kind );
-
- /**
- * Signals a mismatch between the locally computed checksum value and the checksum value declared by the remote
- * repository. A simple policy would just rethrow the provided exception. More sophisticated policies could update
- * their internal state and defer a conclusion until all available checksums have been processed.
- *
- * @param algorithm The name of the checksum algorithm being used, must not be {@code null}.
- * @param kind A bit field providing further details about the checksum. See the {@code KIND_*} constants in this
- * interface for possible bit flags.
- * @param exception The exception describing the checksum mismatch, must not be {@code null}.
- * @throws ChecksumFailureException If the checksum validation is to be failed. If the method returns normally,
- * validation continues with the next checksum.
- */
- void onChecksumMismatch( String algorithm, int kind, ChecksumFailureException exception )
- throws ChecksumFailureException;
-
- /**
- * Signals an error while computing the local checksum value or retrieving the checksum value from the remote
- * repository.
- *
- * @param algorithm The name of the checksum algorithm being used, must not be {@code null}.
- * @param kind A bit field providing further details about the checksum. See the {@code KIND_*} constants in this
- * interface for possible bit flags.
- * @param exception The exception describing the checksum error, must not be {@code null}.
- * @throws ChecksumFailureException If the checksum validation is to be failed. If the method returns normally,
- * validation continues with the next checksum.
- */
- void onChecksumError( String algorithm, int kind, ChecksumFailureException exception )
- throws ChecksumFailureException;
-
- /**
- * Signals that all available checksums have been processed.
- *
- * @throws ChecksumFailureException If the checksum validation is to be failed. If the method returns normally, the
- * download is assumed to be valid.
- */
- void onNoMoreChecksums()
- throws ChecksumFailureException;
-
- /**
- * Signals that the download is being retried after a previously thrown {@link ChecksumFailureException} that is
- * {@link ChecksumFailureException#isRetryWorthy() retry-worthy}. Policies that maintain internal state will usually
- * have to reset some of this state at this point to prepare for a new round of validation.
- */
- void onTransferRetry();
-
- /**
- * Signals that (even after a potential retry) checksum validation has failed. A policy could opt to merely log this
- * issue or insist on rejecting the downloaded file as unusable.
- *
- * @param exception The exception that was thrown from a prior call to
- * {@link #onChecksumMismatch(String, int, ChecksumFailureException)},
- * {@link #onChecksumError(String, int, ChecksumFailureException)} or {@link #onNoMoreChecksums()}.
- * @return {@code true} to accept the download nevertheless and let artifact resolution succeed, {@code false} to
- * reject the transferred file as unusable.
- */
- boolean onTransferChecksumFailure( ChecksumFailureException exception );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/ChecksumPolicyProvider.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/ChecksumPolicyProvider.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/ChecksumPolicyProvider.java
deleted file mode 100644
index f502300..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/ChecksumPolicyProvider.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.eclipse.aether.spi.connector.checksum;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transfer.TransferResource;
-
-/**
- * Assists repository connectors in applying checksum policies to downloaded resources.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface ChecksumPolicyProvider
-{
-
- /**
- * Retrieves the checksum policy with the specified identifier for use on the given remote resource.
- *
- * @param session The repository system session during which the request is made, must not be {@code null}.
- * @param repository The repository hosting the resource being transferred, must not be {@code null}.
- * @param resource The transfer resource on which the policy will be applied, must not be {@code null}.
- * @param policy The identifier of the policy to apply, must not be {@code null}.
- * @return The policy to apply or {@code null} if checksums should be ignored.
- */
- ChecksumPolicy newChecksumPolicy( RepositorySystemSession session, RemoteRepository repository,
- TransferResource resource, String policy );
-
- /**
- * Returns the least strict policy. A checksum policy is said to be less strict than another policy if it would
- * accept a downloaded resource in all cases where the other policy would reject the resource.
- *
- * @param session The repository system session during which the request is made, must not be {@code null}.
- * @param policy1 A policy to compare, must not be {@code null}.
- * @param policy2 A policy to compare, must not be {@code null}.
- * @return The least strict policy among the two input policies.
- */
- String getEffectiveChecksumPolicy( RepositorySystemSession session, String policy1, String policy2 );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/package-info.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/package-info.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/package-info.java
deleted file mode 100644
index 94d0653..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/checksum/package-info.java
+++ /dev/null
@@ -1,25 +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 support infrastructure for repository connectors to apply checksum policies when validating the integrity of
- * downloaded files.
- */
-package org.eclipse.aether.spi.connector.checksum;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayout.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayout.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayout.java
deleted file mode 100644
index 7ae69ac..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayout.java
+++ /dev/null
@@ -1,181 +0,0 @@
-package org.eclipse.aether.spi.connector.layout;
-
-/*
- * 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.net.URI;
-import java.util.List;
-import java.util.Locale;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-
-/**
- * The layout for a remote repository whose artifacts/metadata can be addressed via URIs.
- * <p>
- * <strong>Note:</strong> Implementations must be stateless.
- */
-public interface RepositoryLayout
-{
-
- /**
- * A descriptor for a checksum file. This descriptor simply associates the location of a checksum file with the
- * underlying algorithm used to calculate/verify it. Checksum algorithms are denoted by names as used with
- * {@link java.security.MessageDigest#getInstance(String)}, e.g. {@code "SHA-1"} or {@code "MD5"}.
- */
- static final class Checksum
- {
-
- private final String algorithm;
-
- private final URI location;
-
- /**
- * Creates a new checksum file descriptor with the specified algorithm and location. The method
- * {@link #forLocation(URI, String)} is usually more convenient though.
- *
- * @param algorithm The algorithm used to calculate the checksum, must not be {@code null}.
- * @param location The relative URI to the checksum file within a repository, must not be {@code null}.
- */
- public Checksum( String algorithm, URI location )
- {
- verify( algorithm, location );
- this.algorithm = algorithm;
- this.location = location;
- }
-
- /**
- * Creates a checksum file descriptor for the specified artifact/metadata location and algorithm. The location
- * of the checksum file itself is derived from the supplied resource URI by appending the file extension
- * corresponding to the algorithm. The file extension in turn is derived from the algorithm name by stripping
- * out any hyphen ('-') characters and lower-casing the name, e.g. "SHA-1" is mapped to ".sha1".
- *
- * @param location The relative URI to the artifact/metadata whose checksum file is being obtained, must not be
- * {@code null} and must not have a query or fragment part.
- * @param algorithm The algorithm used to calculate the checksum, must not be {@code null}.
- * @return The checksum file descriptor, never {@code null}.
- */
- public static Checksum forLocation( URI location, String algorithm )
- {
- verify( algorithm, location );
- if ( location.getRawQuery() != null )
- {
- throw new IllegalArgumentException( "resource location must not have query parameters: " + location );
- }
- if ( location.getRawFragment() != null )
- {
- throw new IllegalArgumentException( "resource location must not have a fragment: " + location );
- }
- String extension = '.' + algorithm.replace( "-", "" ).toLowerCase( Locale.ENGLISH );
- return new Checksum( algorithm, URI.create( location.toString() + extension ) );
- }
-
- private static void verify( String algorithm, URI location )
- {
- if ( algorithm == null || algorithm.length() <= 0 )
- {
- throw new IllegalArgumentException( "checksum algorithm has not been specified" );
- }
- if ( location == null )
- {
- throw new IllegalArgumentException( "checksum location has not been specified" );
- }
- if ( location.isAbsolute() )
- {
- throw new IllegalArgumentException( "checksum location must be relative" );
- }
- }
-
- /**
- * Gets the name of the algorithm that is used to calculate the checksum.
- *
- * @return The algorithm name, never {@code null}.
- * @see java.security.MessageDigest#getInstance(String)
- */
- public String getAlgorithm()
- {
- return algorithm;
- }
-
- /**
- * Gets the location of the checksum file with a remote repository. The URI is relative to the root directory of
- * the repository.
- *
- * @return The relative URI to the checksum file, never {@code null}.
- */
- public URI getLocation()
- {
- return location;
- }
-
- @Override
- public String toString()
- {
- return location + " (" + algorithm + ")";
- }
-
- }
-
- /**
- * Gets the location within a remote repository where the specified artifact resides. The URI is relative to the
- * root directory of the repository.
- *
- * @param artifact The artifact to get the URI for, must not be {@code null}.
- * @param upload {@code false} if the artifact is being downloaded, {@code true} if the artifact is being uploaded.
- * @return The relative URI to the artifact, never {@code null}.
- */
- URI getLocation( Artifact artifact, boolean upload );
-
- /**
- * Gets the location within a remote repository where the specified metadata resides. The URI is relative to the
- * root directory of the repository.
- *
- * @param metadata The metadata to get the URI for, must not be {@code null}.
- * @param upload {@code false} if the metadata is being downloaded, {@code true} if the metadata is being uploaded.
- * @return The relative URI to the metadata, never {@code null}.
- */
- URI getLocation( Metadata metadata, boolean upload );
-
- /**
- * Gets the checksums files that a remote repository keeps to help detect data corruption during transfers of the
- * specified artifact.
- *
- * @param artifact The artifact to get the checksum files for, must not be {@code null}.
- * @param upload {@code false} if the checksums are being downloaded/verified, {@code true} if the checksums are
- * being uploaded/created.
- * @param location The relative URI to the artifact within the repository as previously obtained from
- * {@link #getLocation(Artifact, boolean)}, must not be {@code null}.
- * @return The checksum files for the given artifact, possibly empty but never {@code null}.
- */
- List<Checksum> getChecksums( Artifact artifact, boolean upload, URI location );
-
- /**
- * Gets the checksums files that a remote repository keeps to help detect data corruption during transfers of the
- * specified metadata.
- *
- * @param metadata The metadata to get the checksum files for, must not be {@code null}.
- * @param upload {@code false} if the checksums are being downloaded/verified, {@code true} if the checksums are
- * being uploaded/created.
- * @param location The relative URI to the metadata within the repository as previously obtained from
- * {@link #getLocation(Metadata, boolean)}, must not be {@code null}.
- * @return The checksum files for the given metadata, possibly empty but never {@code null}.
- */
- List<Checksum> getChecksums( Metadata metadata, boolean upload, URI location );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayoutFactory.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayoutFactory.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayoutFactory.java
deleted file mode 100644
index 8aa71d7..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayoutFactory.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.eclipse.aether.spi.connector.layout;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transfer.NoRepositoryLayoutException;
-
-/**
- * A factory to obtain repository layouts. A repository layout is responsible to map an artifact or some metadata to a
- * URI relative to the repository root where the resource resides. When the repository system needs to access a given
- * remote repository, it iterates the registered factories in descending order of their priority and calls
- * {@link #newInstance(RepositorySystemSession, RemoteRepository)} on them. The first layout returned by a factory will
- * then be used for transferring artifacts/metadata.
- */
-public interface RepositoryLayoutFactory
-{
-
- /**
- * Tries to create a repository layout for the specified remote repository. Typically, a factory will inspect
- * {@link RemoteRepository#getContentType()} to determine whether it can handle a repository.
- *
- * @param session The repository system session from which to configure the layout, must not be {@code null}.
- * @param repository The remote repository to create a layout for, must not be {@code null}.
- * @return The layout for the given repository, never {@code null}.
- * @throws NoRepositoryLayoutException If the factory cannot create a repository layout for the specified remote
- * repository.
- */
- RepositoryLayout newInstance( RepositorySystemSession session, RemoteRepository repository )
- throws NoRepositoryLayoutException;
-
- /**
- * The priority of this factory. When multiple factories can handle a given repository, factories with higher
- * priority are preferred over those with lower priority.
- *
- * @return The priority of this factory.
- */
- float getPriority();
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayoutProvider.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayoutProvider.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayoutProvider.java
deleted file mode 100644
index 5cdf53b..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayoutProvider.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.eclipse.aether.spi.connector.layout;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transfer.NoRepositoryLayoutException;
-
-/**
- * Retrieves a repository layout from the installed layout factories.
- *
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface RepositoryLayoutProvider
-{
-
- /**
- * Tries to retrieve a repository layout for the specified remote repository.
- *
- * @param session The repository system session from which to configure the layout, must not be {@code null}.
- * @param repository The remote repository to create a layout for, must not be {@code null}.
- * @return The layout for the given repository, never {@code null}.
- * @throws NoRepositoryLayoutException If none of the installed layout factories can provide a repository layout for
- * the specified remote repository.
- */
- RepositoryLayout newRepositoryLayout( RepositorySystemSession session, RemoteRepository repository )
- throws NoRepositoryLayoutException;
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/package-info.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/package-info.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/package-info.java
deleted file mode 100644
index 2b36f7c..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/package-info.java
+++ /dev/null
@@ -1,26 +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 contract to locate URI-based resources using custom repository layouts. By implementing a
- * {@link org.eclipse.aether.spi.connector.layout.RepositoryLayoutFactory} and registering it with the repository
- * system, an application enables access to remote repositories that use new content types/layouts.
- */
-package org.eclipse.aether.spi.connector.layout;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/package-info.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/package-info.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/package-info.java
deleted file mode 100644
index f31a2a8..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/package-info.java
+++ /dev/null
@@ -1,30 +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 contract to access artifacts/metadata in remote repositories. By implementing a
- * {@link org.eclipse.aether.spi.connector.RepositoryConnectorFactory} and registering it with the repository system,
- * an application can enable access to arbitrary remote repositories. It should be noted that a repository connector is
- * powerful yet burdensome to implement. In many cases, implementing a
- * {@link org.eclipse.aether.spi.connector.transport.TransporterFactory} or
- * {@link org.eclipse.aether.spi.connector.layout.RepositoryLayoutFactory} will be sufficient and easier to access a
- * custom remote repository.
- */
-package org.eclipse.aether.spi.connector;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/AbstractTransporter.java
----------------------------------------------------------------------
diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/AbstractTransporter.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/AbstractTransporter.java
deleted file mode 100644
index acad985..0000000
--- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/transport/AbstractTransporter.java
+++ /dev/null
@@ -1,260 +0,0 @@
-package org.eclipse.aether.spi.connector.transport;
-
-/*
- * 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.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.eclipse.aether.transfer.TransferCancelledException;
-
-/**
- * A skeleton implementation for custom transporters.
- */
-public abstract class AbstractTransporter
- implements Transporter
-{
-
- private final AtomicBoolean closed;
-
- /**
- * Enables subclassing.
- */
- protected AbstractTransporter()
- {
- closed = new AtomicBoolean();
- }
-
- public void peek( PeekTask task )
- throws Exception
- {
- failIfClosed( task );
- implPeek( task );
- }
-
- /**
- * Implements {@link #peek(PeekTask)}, gets only called if the transporter has not been closed.
- *
- * @param task The existence check to perform, must not be {@code null}.
- * @throws Exception If the existence of the specified resource could not be confirmed.
- */
- protected abstract void implPeek( PeekTask task )
- throws Exception;
-
- public void get( GetTask task )
- throws Exception
- {
- failIfClosed( task );
- implGet( task );
- }
-
- /**
- * Implements {@link #get(GetTask)}, gets only called if the transporter has not been closed.
- *
- * @param task The download to perform, must not be {@code null}.
- * @throws Exception If the transfer failed.
- */
- protected abstract void implGet( GetTask task )
- throws Exception;
-
- /**
- * Performs stream-based I/O for the specified download task and notifies the configured transport listener.
- * Subclasses might want to invoke this utility method from within their {@link #implGet(GetTask)} to avoid
- * boilerplate I/O code.
- *
- * @param task The download to perform, must not be {@code null}.
- * @param is The input stream to download the data from, must not be {@code null}.
- * @param close {@code true} if the supplied input stream should be automatically closed, {@code false} to leave the
- * stream open.
- * @param length The size in bytes of the downloaded resource or {@code -1} if unknown, not to be confused with the
- * length of the supplied input stream which might be smaller if the download is resumed.
- * @param resume {@code true} if the download resumes from {@link GetTask#getResumeOffset()}, {@code false} if the
- * download starts at the first byte of the resource.
- * @throws IOException If the transfer encountered an I/O error.
- * @throws TransferCancelledException If the transfer was cancelled.
- */
- protected void utilGet( GetTask task, InputStream is, boolean close, long length, boolean resume )
- throws IOException, TransferCancelledException
- {
- OutputStream os = null;
- try
- {
- os = task.newOutputStream( resume );
- task.getListener().transportStarted( resume ? task.getResumeOffset() : 0, length );
- copy( os, is, task.getListener() );
- os.close();
- os = null;
-
- if ( close )
- {
- is.close();
- is = null;
- }
- }
- finally
- {
- try
- {
- if ( os != null )
- {
- os.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed
- }
- finally
- {
- try
- {
- if ( close && is != null )
- {
- is.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed
- }
- }
- }
- }
-
- public void put( PutTask task )
- throws Exception
- {
- failIfClosed( task );
- implPut( task );
- }
-
- /**
- * Implements {@link #put(PutTask)}, gets only called if the transporter has not been closed.
- *
- * @param task The upload to perform, must not be {@code null}.
- * @throws Exception If the transfer failed.
- */
- protected abstract void implPut( PutTask task )
- throws Exception;
-
- /**
- * Performs stream-based I/O for the specified upload task and notifies the configured transport listener.
- * Subclasses might want to invoke this utility method from within their {@link #implPut(PutTask)} to avoid
- * boilerplate I/O code.
- *
- * @param task The upload to perform, must not be {@code null}.
- * @param os The output stream to upload the data to, must not be {@code null}.
- * @param close {@code true} if the supplied output stream should be automatically closed, {@code false} to leave
- * the stream open.
- * @throws IOException If the transfer encountered an I/O error.
- * @throws TransferCancelledException If the transfer was cancelled.
- */
- protected void utilPut( PutTask task, OutputStream out, boolean close )
- throws IOException, TransferCancelledException
- {
- InputStream in = null;
- try
- {
- in = task.newInputStream();
- task.getListener().transportStarted( 0, task.getDataLength() );
- copy( out, in, task.getListener() );
-
- if ( close )
- {
- out.close();
- }
- else
- {
- out.flush();
- }
-
- out = null;
-
- in.close();
- in = null;
- }
- finally
- {
- try
- {
- if ( close && out != null )
- {
- out.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed
- }
- finally
- {
- try
- {
- if ( in != null )
- {
- in.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed
- }
- }
- }
- }
-
- public void close()
- {
- if ( closed.compareAndSet( false, true ) )
- {
- implClose();
- }
- }
-
- /**
- * Implements {@link #close()}, gets only called if the transporter has not already been closed.
- */
- protected abstract void implClose();
-
- private void failIfClosed( TransportTask task )
- {
- if ( closed.get() )
- {
- throw new IllegalStateException( "transporter closed, cannot execute task " + task );
- }
- }
-
- private static void copy( OutputStream os, InputStream is, TransportListener listener )
- throws IOException, TransferCancelledException
- {
- ByteBuffer buffer = ByteBuffer.allocate( 1024 * 32 );
- byte[] array = buffer.array();
- for ( int read = is.read( array ); read >= 0; read = is.read( array ) )
- {
- os.write( array, 0, read );
- buffer.rewind();
- buffer.limit( read );
- listener.transportProgressed( buffer );
- }
- }
-
-}
[41/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java b/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
deleted file mode 100644
index 27f2285..0000000
--- a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
+++ /dev/null
@@ -1,595 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * 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.io.IOException;
-import java.net.URI;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.eclipse.aether.ConfigurationProperties;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.ArtifactDownload;
-import org.eclipse.aether.spi.connector.ArtifactUpload;
-import org.eclipse.aether.spi.connector.MetadataDownload;
-import org.eclipse.aether.spi.connector.MetadataUpload;
-import org.eclipse.aether.spi.connector.RepositoryConnector;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayout;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
-import org.eclipse.aether.spi.connector.transport.GetTask;
-import org.eclipse.aether.spi.connector.transport.PeekTask;
-import org.eclipse.aether.spi.connector.transport.PutTask;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.connector.transport.TransporterProvider;
-import org.eclipse.aether.spi.io.FileProcessor;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.transfer.ChecksumFailureException;
-import org.eclipse.aether.transfer.NoRepositoryConnectorException;
-import org.eclipse.aether.transfer.NoRepositoryLayoutException;
-import org.eclipse.aether.transfer.NoTransporterException;
-import org.eclipse.aether.transfer.TransferEvent;
-import org.eclipse.aether.transfer.TransferResource;
-import org.eclipse.aether.util.ChecksumUtils;
-import org.eclipse.aether.util.ConfigUtils;
-import org.eclipse.aether.util.concurrency.RunnableErrorForwarder;
-import org.eclipse.aether.util.concurrency.WorkerThreadFactory;
-
-/**
- */
-final class BasicRepositoryConnector
- implements RepositoryConnector
-{
-
- private static final String CONFIG_PROP_THREADS = "aether.connector.basic.threads";
-
- private static final String CONFIG_PROP_RESUME = "aether.connector.resumeDownloads";
-
- private static final String CONFIG_PROP_RESUME_THRESHOLD = "aether.connector.resumeThreshold";
-
- private static final String CONFIG_PROP_SMART_CHECKSUMS = "aether.connector.smartChecksums";
-
- private final Logger logger;
-
- private final FileProcessor fileProcessor;
-
- private final RemoteRepository repository;
-
- private final RepositorySystemSession session;
-
- private final Transporter transporter;
-
- private final RepositoryLayout layout;
-
- private final ChecksumPolicyProvider checksumPolicyProvider;
-
- private final PartialFile.Factory partialFileFactory;
-
- private final int maxThreads;
-
- private final boolean smartChecksums;
-
- private final boolean persistedChecksums;
-
- private Executor executor;
-
- private boolean closed;
-
- public BasicRepositoryConnector( RepositorySystemSession session, RemoteRepository repository,
- TransporterProvider transporterProvider, RepositoryLayoutProvider layoutProvider,
- ChecksumPolicyProvider checksumPolicyProvider, FileProcessor fileProcessor,
- Logger logger )
- throws NoRepositoryConnectorException
- {
- try
- {
- layout = layoutProvider.newRepositoryLayout( session, repository );
- }
- catch ( NoRepositoryLayoutException e )
- {
- throw new NoRepositoryConnectorException( repository, e.getMessage(), e );
- }
- try
- {
- transporter = transporterProvider.newTransporter( session, repository );
- }
- catch ( NoTransporterException e )
- {
- throw new NoRepositoryConnectorException( repository, e.getMessage(), e );
- }
- this.checksumPolicyProvider = checksumPolicyProvider;
-
- this.session = session;
- this.repository = repository;
- this.fileProcessor = fileProcessor;
- this.logger = logger;
-
- maxThreads = ConfigUtils.getInteger( session, 5, CONFIG_PROP_THREADS, "maven.artifact.threads" );
- smartChecksums = ConfigUtils.getBoolean( session, true, CONFIG_PROP_SMART_CHECKSUMS );
- persistedChecksums =
- ConfigUtils.getBoolean( session, ConfigurationProperties.DEFAULT_PERSISTED_CHECKSUMS,
- ConfigurationProperties.PERSISTED_CHECKSUMS );
-
- boolean resumeDownloads =
- ConfigUtils.getBoolean( session, true, CONFIG_PROP_RESUME + '.' + repository.getId(), CONFIG_PROP_RESUME );
- long resumeThreshold =
- ConfigUtils.getLong( session, 64 * 1024, CONFIG_PROP_RESUME_THRESHOLD + '.' + repository.getId(),
- CONFIG_PROP_RESUME_THRESHOLD );
- int requestTimeout =
- ConfigUtils.getInteger( session, ConfigurationProperties.DEFAULT_REQUEST_TIMEOUT,
- ConfigurationProperties.REQUEST_TIMEOUT + '.' + repository.getId(),
- ConfigurationProperties.REQUEST_TIMEOUT );
- partialFileFactory = new PartialFile.Factory( resumeDownloads, resumeThreshold, requestTimeout, logger );
- }
-
- private Executor getExecutor( Collection<?> artifacts, Collection<?> metadatas )
- {
- if ( maxThreads <= 1 )
- {
- return DirectExecutor.INSTANCE;
- }
- int tasks = safe( artifacts ).size() + safe( metadatas ).size();
- if ( tasks <= 1 )
- {
- return DirectExecutor.INSTANCE;
- }
- if ( executor == null )
- {
- executor =
- new ThreadPoolExecutor( maxThreads, maxThreads, 3, TimeUnit.SECONDS,
- new LinkedBlockingQueue<Runnable>(),
- new WorkerThreadFactory( getClass().getSimpleName() + '-'
- + repository.getHost() + '-' ) );
- }
- return executor;
- }
-
- @Override
- protected void finalize()
- throws Throwable
- {
- try
- {
- close();
- }
- finally
- {
- super.finalize();
- }
- }
-
- public void close()
- {
- if ( !closed )
- {
- closed = true;
- if ( executor instanceof ExecutorService )
- {
- ( (ExecutorService) executor ).shutdown();
- }
- transporter.close();
- }
- }
-
- public void get( Collection<? extends ArtifactDownload> artifactDownloads,
- Collection<? extends MetadataDownload> metadataDownloads )
- {
- if ( closed )
- {
- throw new IllegalStateException( "connector closed" );
- }
-
- Executor executor = getExecutor( artifactDownloads, metadataDownloads );
- RunnableErrorForwarder errorForwarder = new RunnableErrorForwarder();
-
- for ( MetadataDownload transfer : safe( metadataDownloads ) )
- {
- URI location = layout.getLocation( transfer.getMetadata(), false );
-
- TransferResource resource = newTransferResource( location, transfer.getFile(), transfer.getTrace() );
- TransferEvent.Builder builder = newEventBuilder( resource, false, false );
- MetadataTransportListener listener = new MetadataTransportListener( transfer, repository, builder );
-
- ChecksumPolicy checksumPolicy = newChecksumPolicy( transfer.getChecksumPolicy(), resource );
- List<RepositoryLayout.Checksum> checksums = null;
- if ( checksumPolicy != null )
- {
- checksums = layout.getChecksums( transfer.getMetadata(), false, location );
- }
-
- Runnable task = new GetTaskRunner( location, transfer.getFile(), checksumPolicy, checksums, listener );
- executor.execute( errorForwarder.wrap( task ) );
- }
-
- for ( ArtifactDownload transfer : safe( artifactDownloads ) )
- {
- URI location = layout.getLocation( transfer.getArtifact(), false );
-
- TransferResource resource = newTransferResource( location, transfer.getFile(), transfer.getTrace() );
- TransferEvent.Builder builder = newEventBuilder( resource, false, transfer.isExistenceCheck() );
- ArtifactTransportListener listener = new ArtifactTransportListener( transfer, repository, builder );
-
- Runnable task;
- if ( transfer.isExistenceCheck() )
- {
- task = new PeekTaskRunner( location, listener );
- }
- else
- {
- ChecksumPolicy checksumPolicy = newChecksumPolicy( transfer.getChecksumPolicy(), resource );
- List<RepositoryLayout.Checksum> checksums = null;
- if ( checksumPolicy != null )
- {
- checksums = layout.getChecksums( transfer.getArtifact(), false, location );
- }
-
- task = new GetTaskRunner( location, transfer.getFile(), checksumPolicy, checksums, listener );
- }
- executor.execute( errorForwarder.wrap( task ) );
- }
-
- errorForwarder.await();
- }
-
- public void put( Collection<? extends ArtifactUpload> artifactUploads,
- Collection<? extends MetadataUpload> metadataUploads )
- {
- if ( closed )
- {
- throw new IllegalStateException( "connector closed" );
- }
-
- for ( ArtifactUpload transfer : safe( artifactUploads ) )
- {
- URI location = layout.getLocation( transfer.getArtifact(), true );
-
- TransferResource resource = newTransferResource( location, transfer.getFile(), transfer.getTrace() );
- TransferEvent.Builder builder = newEventBuilder( resource, true, false );
- ArtifactTransportListener listener = new ArtifactTransportListener( transfer, repository, builder );
-
- List<RepositoryLayout.Checksum> checksums = layout.getChecksums( transfer.getArtifact(), true, location );
-
- Runnable task = new PutTaskRunner( location, transfer.getFile(), checksums, listener );
- task.run();
- }
-
- for ( MetadataUpload transfer : safe( metadataUploads ) )
- {
- URI location = layout.getLocation( transfer.getMetadata(), true );
-
- TransferResource resource = newTransferResource( location, transfer.getFile(), transfer.getTrace() );
- TransferEvent.Builder builder = newEventBuilder( resource, true, false );
- MetadataTransportListener listener = new MetadataTransportListener( transfer, repository, builder );
-
- List<RepositoryLayout.Checksum> checksums = layout.getChecksums( transfer.getMetadata(), true, location );
-
- Runnable task = new PutTaskRunner( location, transfer.getFile(), checksums, listener );
- task.run();
- }
- }
-
- private static <T> Collection<T> safe( Collection<T> items )
- {
- return ( items != null ) ? items : Collections.<T>emptyList();
- }
-
- private TransferResource newTransferResource( URI path, File file, RequestTrace trace )
- {
- return new TransferResource( repository.getUrl(), path.toString(), file, trace );
- }
-
- private TransferEvent.Builder newEventBuilder( TransferResource resource, boolean upload, boolean peek )
- {
- TransferEvent.Builder builder = new TransferEvent.Builder( session, resource );
- if ( upload )
- {
- builder.setRequestType( TransferEvent.RequestType.PUT );
- }
- else if ( !peek )
- {
- builder.setRequestType( TransferEvent.RequestType.GET );
- }
- else
- {
- builder.setRequestType( TransferEvent.RequestType.GET_EXISTENCE );
- }
- return builder;
- }
-
- private ChecksumPolicy newChecksumPolicy( String policy, TransferResource resource )
- {
- return checksumPolicyProvider.newChecksumPolicy( session, repository, resource, policy );
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( repository );
- }
-
- abstract class TaskRunner
- implements Runnable
- {
-
- protected final URI path;
-
- protected final TransferTransportListener<?> listener;
-
- public TaskRunner( URI path, TransferTransportListener<?> listener )
- {
- this.path = path;
- this.listener = listener;
- }
-
- public void run()
- {
- try
- {
- listener.transferInitiated();
- runTask();
- listener.transferSucceeded();
- }
- catch ( Exception e )
- {
- listener.transferFailed( e, transporter.classify( e ) );
- }
- }
-
- protected abstract void runTask()
- throws Exception;
-
- }
-
- class PeekTaskRunner
- extends TaskRunner
- {
-
- public PeekTaskRunner( URI path, TransferTransportListener<?> listener )
- {
- super( path, listener );
- }
-
- protected void runTask()
- throws Exception
- {
- transporter.peek( new PeekTask( path ) );
- }
-
- }
-
- class GetTaskRunner
- extends TaskRunner
- implements PartialFile.RemoteAccessChecker, ChecksumValidator.ChecksumFetcher
- {
-
- private final File file;
-
- private final ChecksumValidator checksumValidator;
-
- public GetTaskRunner( URI path, File file, ChecksumPolicy checksumPolicy,
- List<RepositoryLayout.Checksum> checksums, TransferTransportListener<?> listener )
- {
- super( path, listener );
- this.file = file;
- checksumValidator =
- new ChecksumValidator( logger, file, fileProcessor, this, checksumPolicy, safe( checksums ) );
- }
-
- public void checkRemoteAccess()
- throws Exception
- {
- transporter.peek( new PeekTask( path ) );
- }
-
- public boolean fetchChecksum( URI remote, File local )
- throws Exception
- {
- try
- {
- transporter.get( new GetTask( remote ).setDataFile( local ) );
- }
- catch ( Exception e )
- {
- if ( transporter.classify( e ) == Transporter.ERROR_NOT_FOUND )
- {
- return false;
- }
- throw e;
- }
- return true;
- }
-
- protected void runTask()
- throws Exception
- {
- if ( file == null )
- {
- throw new IllegalArgumentException( "destination file has not been specified" );
- }
- fileProcessor.mkdirs( file.getParentFile() );
-
- PartialFile partFile = partialFileFactory.newInstance( file, this );
- if ( partFile == null )
- {
- logger.debug( "Concurrent download of " + file + " just finished, skipping download" );
- return;
- }
-
- try
- {
- File tmp = partFile.getFile();
- listener.setChecksumCalculator( checksumValidator.newChecksumCalculator( tmp ) );
- for ( int firstTrial = 0, lastTrial = 1, trial = firstTrial;; trial++ )
- {
- boolean resume = partFile.isResume() && trial <= firstTrial;
- GetTask task = new GetTask( path ).setDataFile( tmp, resume ).setListener( listener );
- transporter.get( task );
- try
- {
- checksumValidator.validate( listener.getChecksums(), smartChecksums ? task.getChecksums()
- : null );
- break;
- }
- catch ( ChecksumFailureException e )
- {
- boolean retry = trial < lastTrial && e.isRetryWorthy();
- if ( !retry && !checksumValidator.handle( e ) )
- {
- throw e;
- }
- listener.transferCorrupted( e );
- if ( retry )
- {
- checksumValidator.retry();
- }
- else
- {
- break;
- }
- }
- }
- fileProcessor.move( tmp, file );
- if ( persistedChecksums )
- {
- checksumValidator.commit();
- }
- }
- finally
- {
- partFile.close();
- checksumValidator.close();
- }
- }
-
- }
-
- class PutTaskRunner
- extends TaskRunner
- {
-
- private final File file;
-
- private final Collection<RepositoryLayout.Checksum> checksums;
-
- public PutTaskRunner( URI path, File file, List<RepositoryLayout.Checksum> checksums,
- TransferTransportListener<?> listener )
- {
- super( path, listener );
- this.file = file;
- this.checksums = safe( checksums );
- }
-
- protected void runTask()
- throws Exception
- {
- if ( file == null )
- {
- throw new IllegalArgumentException( "source file has not been specified" );
- }
- transporter.put( new PutTask( path ).setDataFile( file ).setListener( listener ) );
- uploadChecksums( file, path );
- }
-
- private void uploadChecksums( File file, URI location )
- {
- if ( checksums.isEmpty() )
- {
- return;
- }
- try
- {
- Set<String> algos = new HashSet<String>();
- for ( RepositoryLayout.Checksum checksum : checksums )
- {
- algos.add( checksum.getAlgorithm() );
- }
- Map<String, Object> sumsByAlgo = ChecksumUtils.calc( file, algos );
- for ( RepositoryLayout.Checksum checksum : checksums )
- {
- uploadChecksum( checksum.getLocation(), sumsByAlgo.get( checksum.getAlgorithm() ) );
- }
- }
- catch ( IOException e )
- {
- String msg = "Failed to upload checksums for " + file + ": " + e.getMessage();
- if ( logger.isDebugEnabled() )
- {
- logger.warn( msg, e );
- }
- else
- {
- logger.warn( msg );
- }
- }
- }
-
- private void uploadChecksum( URI location, Object checksum )
- {
- try
- {
- if ( checksum instanceof Exception )
- {
- throw (Exception) checksum;
- }
- transporter.put( new PutTask( location ).setDataString( (String) checksum ) );
- }
- catch ( Exception e )
- {
- String msg = "Failed to upload checksum " + location + ": " + e.getMessage();
- if ( logger.isDebugEnabled() )
- {
- logger.warn( msg, e );
- }
- else
- {
- logger.warn( msg );
- }
- }
- }
-
- }
-
- private static class DirectExecutor
- implements Executor
- {
-
- static final Executor INSTANCE = new DirectExecutor();
-
- public void execute( Runnable command )
- {
- command.run();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnectorFactory.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnectorFactory.java b/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnectorFactory.java
deleted file mode 100644
index 8338daf..0000000
--- a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnectorFactory.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * 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 javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.RepositoryConnector;
-import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
-import org.eclipse.aether.spi.connector.transport.TransporterProvider;
-import org.eclipse.aether.spi.io.FileProcessor;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.NoRepositoryConnectorException;
-
-/**
- * A repository connector factory that employs pluggable
- * {@link org.eclipse.aether.spi.connector.transport.TransporterFactory transporters} and
- * {@link org.eclipse.aether.spi.connector.layout.RepositoryLayoutFactory repository layouts} for the transfers.
- */
-@Named( "basic" )
-public final class BasicRepositoryConnectorFactory
- implements RepositoryConnectorFactory, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private TransporterProvider transporterProvider;
-
- private RepositoryLayoutProvider layoutProvider;
-
- private ChecksumPolicyProvider checksumPolicyProvider;
-
- private FileProcessor fileProcessor;
-
- private float priority;
-
- /**
- * Creates an (uninitialized) instance of this connector factory. <em>Note:</em> In case of manual instantiation by
- * clients, the new factory needs to be configured via its various mutators before first use or runtime errors will
- * occur.
- */
- public BasicRepositoryConnectorFactory()
- {
- // enables default constructor
- }
-
- @Inject
- BasicRepositoryConnectorFactory( TransporterProvider transporterProvider, RepositoryLayoutProvider layoutProvider,
- ChecksumPolicyProvider checksumPolicyProvider, FileProcessor fileProcessor,
- LoggerFactory loggerFactory )
- {
- setTransporterProvider( transporterProvider );
- setRepositoryLayoutProvider( layoutProvider );
- setChecksumPolicyProvider( checksumPolicyProvider );
- setFileProcessor( fileProcessor );
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setTransporterProvider( locator.getService( TransporterProvider.class ) );
- setRepositoryLayoutProvider( locator.getService( RepositoryLayoutProvider.class ) );
- setChecksumPolicyProvider( locator.getService( ChecksumPolicyProvider.class ) );
- setFileProcessor( locator.getService( FileProcessor.class ) );
- }
-
- /**
- * Sets the logger factory to use for this component.
- *
- * @param loggerFactory The logger factory to use, may be {@code null} to disable logging.
- * @return This component for chaining, never {@code null}.
- */
- public BasicRepositoryConnectorFactory setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, BasicRepositoryConnector.class );
- return this;
- }
-
- /**
- * Sets the transporter provider to use for this component.
- *
- * @param transporterProvider The transporter provider to use, must not be {@code null}.
- * @return This component for chaining, never {@code null}.
- */
- public BasicRepositoryConnectorFactory setTransporterProvider( TransporterProvider transporterProvider )
- {
- if ( transporterProvider == null )
- {
- throw new IllegalArgumentException( "transporter provider has not been specified" );
- }
- this.transporterProvider = transporterProvider;
- return this;
- }
-
- /**
- * Sets the repository layout provider to use for this component.
- *
- * @param layoutProvider The repository layout provider to use, must not be {@code null}.
- * @return This component for chaining, never {@code null}.
- */
- public BasicRepositoryConnectorFactory setRepositoryLayoutProvider( RepositoryLayoutProvider layoutProvider )
- {
- if ( layoutProvider == null )
- {
- throw new IllegalArgumentException( "repository layout provider has not been specified" );
- }
- this.layoutProvider = layoutProvider;
- return this;
- }
-
- /**
- * Sets the checksum policy provider to use for this component.
- *
- * @param checksumPolicyProvider The checksum policy provider to use, must not be {@code null}.
- * @return This component for chaining, never {@code null}.
- */
- public BasicRepositoryConnectorFactory setChecksumPolicyProvider( ChecksumPolicyProvider checksumPolicyProvider )
- {
- if ( checksumPolicyProvider == null )
- {
- throw new IllegalArgumentException( "checksum policy provider has not been specified" );
- }
- this.checksumPolicyProvider = checksumPolicyProvider;
- return this;
- }
-
- /**
- * Sets the file processor to use for this component.
- *
- * @param fileProcessor The file processor to use, must not be {@code null}.
- * @return This component for chaining, never {@code null}.
- */
- public BasicRepositoryConnectorFactory setFileProcessor( FileProcessor fileProcessor )
- {
- if ( fileProcessor == null )
- {
- throw new IllegalArgumentException( "file processor has not been specified" );
- }
- this.fileProcessor = fileProcessor;
- return this;
- }
-
- public float getPriority()
- {
- return priority;
- }
-
- /**
- * Sets the priority of this component.
- *
- * @param priority The priority.
- * @return This component for chaining, never {@code null}.
- */
- public BasicRepositoryConnectorFactory setPriority( float priority )
- {
- this.priority = priority;
- return this;
- }
-
- public RepositoryConnector newInstance( RepositorySystemSession session, RemoteRepository repository )
- throws NoRepositoryConnectorException
- {
- return new BasicRepositoryConnector( session, repository, transporterProvider, layoutProvider,
- checksumPolicyProvider, fileProcessor, logger );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumCalculator.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumCalculator.java b/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumCalculator.java
deleted file mode 100644
index 89ba6f0..0000000
--- a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumCalculator.java
+++ /dev/null
@@ -1,217 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * 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.io.FileInputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.aether.spi.connector.layout.RepositoryLayout;
-import org.eclipse.aether.util.ChecksumUtils;
-
-/**
- * Calculates checksums for a downloaded file.
- */
-final class ChecksumCalculator
-{
-
- static class Checksum
- {
- final String algorithm;
-
- final MessageDigest digest;
-
- Exception error;
-
- public Checksum( String algorithm )
- {
- this.algorithm = algorithm;
- MessageDigest digest = null;
- try
- {
- digest = MessageDigest.getInstance( algorithm );
- }
- catch ( NoSuchAlgorithmException e )
- {
- error = e;
- }
- this.digest = digest;
- }
-
- public void update( ByteBuffer buffer )
- {
- if ( digest != null )
- {
- digest.update( buffer );
- }
- }
-
- public void reset()
- {
- if ( digest != null )
- {
- digest.reset();
- error = null;
- }
- }
-
- public void error( Exception error )
- {
- if ( digest != null )
- {
- this.error = error;
- }
- }
-
- public Object get()
- {
- if ( error != null )
- {
- return error;
- }
- return ChecksumUtils.toHexString( digest.digest() );
- }
-
- }
-
- private final List<Checksum> checksums;
-
- private final File targetFile;
-
- public static ChecksumCalculator newInstance( File targetFile, Collection<RepositoryLayout.Checksum> checksums )
- {
- if ( checksums == null || checksums.isEmpty() )
- {
- return null;
- }
- return new ChecksumCalculator( targetFile, checksums );
- }
-
- private ChecksumCalculator( File targetFile, Collection<RepositoryLayout.Checksum> checksums )
- {
- this.checksums = new ArrayList<Checksum>();
- Set<String> algos = new HashSet<String>();
- for ( RepositoryLayout.Checksum checksum : checksums )
- {
- String algo = checksum.getAlgorithm();
- if ( algos.add( algo ) )
- {
- this.checksums.add( new Checksum( algo ) );
- }
- }
- this.targetFile = targetFile;
- }
-
- public void init( long dataOffset )
- {
- for ( Checksum checksum : checksums )
- {
- checksum.reset();
- }
- if ( dataOffset <= 0 )
- {
- return;
- }
- try
- {
- FileInputStream fis = new FileInputStream( targetFile );
- try
- {
- long total = 0;
- ByteBuffer buffer = ByteBuffer.allocate( 1024 * 32 );
- for ( byte[] array = buffer.array(); total < dataOffset; )
- {
- int read = fis.read( array );
- if ( read < 0 )
- {
- if ( total < dataOffset )
- {
- throw new IOException( targetFile + " contains only " + total
- + " bytes, cannot resume download from offset " + dataOffset );
- }
- break;
- }
- total += read;
- if ( total > dataOffset )
- {
- read -= total - dataOffset;
- }
- buffer.rewind();
- buffer.limit( read );
- update( buffer );
- }
- fis.close();
- fis = null;
- }
- finally
- {
- try
- {
- if ( fis != null )
- {
- fis.close();
- }
- }
- catch ( IOException e )
- {
- // Suppressed
- }
- }
- }
- catch ( IOException e )
- {
- for ( Checksum checksum : checksums )
- {
- checksum.error( e );
- }
- }
- }
-
- public void update( ByteBuffer data )
- {
- for ( Checksum checksum : checksums )
- {
- data.mark();
- checksum.update( data );
- data.reset();
- }
- }
-
- public Map<String, Object> get()
- {
- Map<String, Object> results = new HashMap<String, Object>();
- for ( Checksum checksum : checksums )
- {
- results.put( checksum.algorithm, checksum.get() );
- }
- return results;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumValidator.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumValidator.java b/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumValidator.java
deleted file mode 100644
index 8289997..0000000
--- a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumValidator.java
+++ /dev/null
@@ -1,265 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * 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.io.IOException;
-import java.net.URI;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Map;
-import java.util.UUID;
-
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayout.Checksum;
-import org.eclipse.aether.spi.io.FileProcessor;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.transfer.ChecksumFailureException;
-import org.eclipse.aether.util.ChecksumUtils;
-
-/**
- * Performs checksum validation for a downloaded file.
- */
-final class ChecksumValidator
-{
-
- interface ChecksumFetcher
- {
-
- boolean fetchChecksum( URI remote, File local )
- throws Exception;
-
- }
-
- private final Logger logger;
-
- private final File dataFile;
-
- private final Collection<File> tempFiles;
-
- private final FileProcessor fileProcessor;
-
- private final ChecksumFetcher checksumFetcher;
-
- private final ChecksumPolicy checksumPolicy;
-
- private final Collection<Checksum> checksums;
-
- private final Map<File, Object> checksumFiles;
-
- public ChecksumValidator( Logger logger, File dataFile, FileProcessor fileProcessor,
- ChecksumFetcher checksumFetcher, ChecksumPolicy checksumPolicy,
- Collection<Checksum> checksums )
- {
- this.logger = logger;
- this.dataFile = dataFile;
- this.tempFiles = new HashSet<File>();
- this.fileProcessor = fileProcessor;
- this.checksumFetcher = checksumFetcher;
- this.checksumPolicy = checksumPolicy;
- this.checksums = checksums;
- checksumFiles = new HashMap<File, Object>();
- }
-
- public ChecksumCalculator newChecksumCalculator( File targetFile )
- {
- if ( checksumPolicy != null )
- {
- return ChecksumCalculator.newInstance( targetFile, checksums );
- }
- return null;
- }
-
- public void validate( Map<String, ?> actualChecksums, Map<String, ?> inlinedChecksums )
- throws ChecksumFailureException
- {
- if ( checksumPolicy == null )
- {
- return;
- }
- if ( inlinedChecksums != null && validateInlinedChecksums( actualChecksums, inlinedChecksums ) )
- {
- return;
- }
- if ( validateExternalChecksums( actualChecksums ) )
- {
- return;
- }
- checksumPolicy.onNoMoreChecksums();
- }
-
- private boolean validateInlinedChecksums( Map<String, ?> actualChecksums, Map<String, ?> inlinedChecksums )
- throws ChecksumFailureException
- {
- for ( Map.Entry<String, ?> entry : inlinedChecksums.entrySet() )
- {
- String algo = entry.getKey();
- Object calculated = actualChecksums.get( algo );
- if ( !( calculated instanceof String ) )
- {
- continue;
- }
-
- String actual = String.valueOf( calculated );
- String expected = entry.getValue().toString();
- checksumFiles.put( getChecksumFile( algo ), expected );
-
- if ( !isEqualChecksum( expected, actual ) )
- {
- checksumPolicy.onChecksumMismatch( algo, ChecksumPolicy.KIND_UNOFFICIAL,
- new ChecksumFailureException( expected, actual ) );
- }
- else if ( checksumPolicy.onChecksumMatch( algo, ChecksumPolicy.KIND_UNOFFICIAL ) )
- {
- return true;
- }
- }
- return false;
- }
-
- private boolean validateExternalChecksums( Map<String, ?> actualChecksums )
- throws ChecksumFailureException
- {
- for ( Checksum checksum : checksums )
- {
- String algo = checksum.getAlgorithm();
- Object calculated = actualChecksums.get( algo );
- if ( calculated instanceof Exception )
- {
- checksumPolicy.onChecksumError( algo, 0, new ChecksumFailureException( (Exception) calculated ) );
- continue;
- }
- try
- {
- File checksumFile = getChecksumFile( checksum.getAlgorithm() );
- File tmp = createTempFile( checksumFile );
- try
- {
- if ( !checksumFetcher.fetchChecksum( checksum.getLocation(), tmp ) )
- {
- continue;
- }
- }
- catch ( Exception e )
- {
- checksumPolicy.onChecksumError( algo, 0, new ChecksumFailureException( e ) );
- continue;
- }
-
- String actual = String.valueOf( calculated );
- String expected = ChecksumUtils.read( tmp );
- checksumFiles.put( checksumFile, tmp );
-
- if ( !isEqualChecksum( expected, actual ) )
- {
- checksumPolicy.onChecksumMismatch( algo, 0, new ChecksumFailureException( expected, actual ) );
- }
- else if ( checksumPolicy.onChecksumMatch( algo, 0 ) )
- {
- return true;
- }
- }
- catch ( IOException e )
- {
- checksumPolicy.onChecksumError( algo, 0, new ChecksumFailureException( e ) );
- }
- }
- return false;
- }
-
- private static boolean isEqualChecksum( String expected, String actual )
- {
- return expected.equalsIgnoreCase( actual );
- }
-
- private File getChecksumFile( String algorithm )
- {
- String ext = algorithm.replace( "-", "" ).toLowerCase( Locale.ENGLISH );
- return new File( dataFile.getPath() + '.' + ext );
- }
-
- private File createTempFile( File path )
- throws IOException
- {
- File file =
- File.createTempFile( path.getName() + "-"
- + UUID.randomUUID().toString().replace( "-", "" ).substring( 0, 8 ), ".tmp", path.getParentFile() );
- tempFiles.add( file );
- return file;
- }
-
- private void clearTempFiles()
- {
- for ( File file : tempFiles )
- {
- if ( !file.delete() && file.exists() )
- {
- logger.debug( "Could not delete temorary file " + file );
- }
- }
- tempFiles.clear();
- }
-
- public void retry()
- {
- checksumPolicy.onTransferRetry();
- checksumFiles.clear();
- clearTempFiles();
- }
-
- public boolean handle( ChecksumFailureException exception )
- {
- return checksumPolicy.onTransferChecksumFailure( exception );
- }
-
- public void commit()
- {
- for ( Map.Entry<File, Object> entry : checksumFiles.entrySet() )
- {
- File checksumFile = entry.getKey();
- Object tmp = entry.getValue();
- try
- {
- if ( tmp instanceof File )
- {
- fileProcessor.move( (File) tmp, checksumFile );
- tempFiles.remove( tmp );
- }
- else
- {
- fileProcessor.write( checksumFile, String.valueOf( tmp ) );
- }
- }
- catch ( IOException e )
- {
- logger.debug( "Failed to write checksum file " + checksumFile + ": " + e.getMessage(), e );
- }
- }
- checksumFiles.clear();
- }
-
- public void close()
- {
- clearTempFiles();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/MetadataTransportListener.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/MetadataTransportListener.java b/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/MetadataTransportListener.java
deleted file mode 100644
index 7f8bc6d..0000000
--- a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/MetadataTransportListener.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * 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.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.MetadataTransfer;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.transfer.MetadataNotFoundException;
-import org.eclipse.aether.transfer.MetadataTransferException;
-import org.eclipse.aether.transfer.TransferEvent;
-
-final class MetadataTransportListener
- extends TransferTransportListener<MetadataTransfer>
-{
-
- private final RemoteRepository repository;
-
- public MetadataTransportListener( MetadataTransfer transfer, RemoteRepository repository,
- TransferEvent.Builder eventBuilder )
- {
- super( transfer, eventBuilder );
- this.repository = repository;
- }
-
- @Override
- public void transferFailed( Exception exception, int classification )
- {
- MetadataTransferException e;
- if ( classification == Transporter.ERROR_NOT_FOUND )
- {
- e = new MetadataNotFoundException( getTransfer().getMetadata(), repository );
- }
- else
- {
- e = new MetadataTransferException( getTransfer().getMetadata(), repository, exception );
- }
- getTransfer().setException( e );
- super.transferFailed( e, classification );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java b/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java
deleted file mode 100644
index 217ab5e..0000000
--- a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java
+++ /dev/null
@@ -1,305 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * 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.Closeable;
-import java.io.File;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.nio.channels.FileLock;
-import java.nio.channels.OverlappingFileLockException;
-import java.util.UUID;
-
-import org.eclipse.aether.spi.log.Logger;
-
-/**
- * A partially downloaded file with optional support for resume. If resume is enabled, a well-known location is used for
- * the partial file in combination with a lock file to prevent concurrent requests from corrupting it (and wasting
- * network bandwith). Otherwise, a (non-locked) unique temporary file is used.
- */
-final class PartialFile
- implements Closeable
-{
-
- static final String EXT_PART = ".part";
-
- static final String EXT_LOCK = ".lock";
-
- interface RemoteAccessChecker
- {
-
- void checkRemoteAccess()
- throws Exception;
-
- }
-
- static class LockFile
- {
-
- private final File lockFile;
-
- private final FileLock lock;
-
- private final boolean concurrent;
-
- public LockFile( File partFile, int requestTimeout, RemoteAccessChecker checker, Logger logger )
- throws Exception
- {
- lockFile = new File( partFile.getPath() + EXT_LOCK );
- boolean[] concurrent = { false };
- lock = lock( lockFile, partFile, requestTimeout, checker, logger, concurrent );
- this.concurrent = concurrent[0];
- }
-
- private static FileLock lock( File lockFile, File partFile, int requestTimeout, RemoteAccessChecker checker,
- Logger logger, boolean[] concurrent )
- throws Exception
- {
- boolean interrupted = false;
- try
- {
- for ( long lastLength = -1, lastTime = 0;; )
- {
- FileLock lock = tryLock( lockFile );
- if ( lock != null )
- {
- return lock;
- }
-
- long currentLength = partFile.length();
- long currentTime = System.currentTimeMillis();
- if ( currentLength != lastLength )
- {
- if ( lastLength < 0 )
- {
- concurrent[0] = true;
- /*
- * NOTE: We're going with the optimistic assumption that the other thread is downloading the
- * file from an equivalent repository. As a bare minimum, ensure the repository we are given
- * at least knows about the file and is accessible to us.
- */
- checker.checkRemoteAccess();
- logger.debug( "Concurrent download of " + partFile + " in progress, awaiting completion" );
- }
- lastLength = currentLength;
- lastTime = currentTime;
- }
- else if ( requestTimeout > 0 && currentTime - lastTime > Math.max( requestTimeout, 3 * 1000 ) )
- {
- throw new IOException( "Timeout while waiting for concurrent download of " + partFile
- + " to progress" );
- }
-
- try
- {
- Thread.sleep( 100 );
- }
- catch ( InterruptedException e )
- {
- interrupted = true;
- }
- }
- }
- finally
- {
- if ( interrupted )
- {
- Thread.currentThread().interrupt();
- }
- }
- }
-
- private static FileLock tryLock( File lockFile )
- throws IOException
- {
- RandomAccessFile raf = null;
- FileLock lock = null;
- try
- {
- raf = new RandomAccessFile( lockFile, "rw" );
- lock = raf.getChannel().tryLock( 0, 1, false );
- if ( lock == null )
- {
- raf.close();
- raf = null;
- }
- return lock;
- }
- catch ( OverlappingFileLockException e )
- {
- return null;
- }
- catch ( RuntimeException e )
- {
- lockFile.delete();
- lock = null;
- throw e;
- }
- catch ( IOException e )
- {
- lockFile.delete();
- lock = null;
- throw e;
- }
- finally
- {
- try
- {
- if ( lock == null && raf != null )
- {
- raf.close();
- }
- }
- catch ( final IOException e )
- {
- // Suppressed
- }
- }
- }
-
- public boolean isConcurrent()
- {
- return concurrent;
- }
-
- public void close() throws IOException
- {
- lock.channel().close();
- lockFile.delete();
- }
-
- @Override
- public String toString()
- {
- return lockFile + " - " + lock.isValid();
- }
-
- }
-
- static class Factory
- {
-
- private final boolean resume;
-
- private final long resumeThreshold;
-
- private final int requestTimeout;
-
- private final Logger logger;
-
- public Factory( boolean resume, long resumeThreshold, int requestTimeout, Logger logger )
- {
- this.resume = resume;
- this.resumeThreshold = resumeThreshold;
- this.requestTimeout = requestTimeout;
- this.logger = logger;
- }
-
- public PartialFile newInstance( File dstFile, RemoteAccessChecker checker )
- throws Exception
- {
- if ( resume )
- {
- File partFile = new File( dstFile.getPath() + EXT_PART );
-
- long reqTimestamp = System.currentTimeMillis();
- LockFile lockFile = new LockFile( partFile, requestTimeout, checker, logger );
- if ( lockFile.isConcurrent() && dstFile.lastModified() >= reqTimestamp - 100 )
- {
- lockFile.close();
- return null;
- }
- try
- {
- if ( !partFile.createNewFile() && !partFile.isFile() )
- {
- throw new IOException( partFile.exists() ? "Path exists but is not a file" : "Unknown error" );
- }
- return new PartialFile( partFile, lockFile, resumeThreshold, logger );
- }
- catch ( IOException e )
- {
- lockFile.close();
- logger.debug( "Cannot create resumable file " + partFile.getAbsolutePath() + ": " + e );
- // fall through and try non-resumable/temporary file location
- }
- }
-
- File tempFile =
- File.createTempFile( dstFile.getName() + '-' + UUID.randomUUID().toString().replace( "-", "" ), ".tmp",
- dstFile.getParentFile() );
- return new PartialFile( tempFile, logger );
- }
-
- }
-
- private final File partFile;
-
- private final LockFile lockFile;
-
- private final long threshold;
-
- private final Logger logger;
-
- private PartialFile( File partFile, Logger logger )
- {
- this( partFile, null, 0, logger );
- }
-
- private PartialFile( File partFile, LockFile lockFile, long threshold, Logger logger )
- {
- this.partFile = partFile;
- this.lockFile = lockFile;
- this.threshold = threshold;
- this.logger = logger;
- }
-
- public File getFile()
- {
- return partFile;
- }
-
- public boolean isResume()
- {
- return lockFile != null && partFile.length() >= threshold;
- }
-
- public void close() throws IOException
- {
- if ( partFile.exists() && !isResume() )
- {
- if ( !partFile.delete() && partFile.exists() )
- {
- logger.debug( "Could not delete temorary file " + partFile );
- }
- }
- if ( lockFile != null )
- {
- lockFile.close();
- }
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( getFile() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/TransferTransportListener.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/TransferTransportListener.java b/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/TransferTransportListener.java
deleted file mode 100644
index bd95577..0000000
--- a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/TransferTransportListener.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * 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.nio.ByteBuffer;
-import java.util.Collections;
-import java.util.Map;
-
-import org.eclipse.aether.spi.connector.Transfer;
-import org.eclipse.aether.spi.connector.transport.TransportListener;
-import org.eclipse.aether.transfer.TransferCancelledException;
-import org.eclipse.aether.transfer.TransferEvent;
-import org.eclipse.aether.transfer.TransferEvent.EventType;
-import org.eclipse.aether.transfer.TransferListener;
-
-class TransferTransportListener<T extends Transfer>
- extends TransportListener
-{
-
- private final T transfer;
-
- private final TransferListener listener;
-
- private final TransferEvent.Builder eventBuilder;
-
- private ChecksumCalculator checksumCalculator;
-
- protected TransferTransportListener( T transfer, TransferEvent.Builder eventBuilder )
- {
- this.transfer = transfer;
- this.listener = transfer.getListener();
- this.eventBuilder = eventBuilder;
- }
-
- protected T getTransfer()
- {
- return transfer;
- }
-
- public void transferInitiated()
- throws TransferCancelledException
- {
- if ( listener != null )
- {
- eventBuilder.resetType( EventType.INITIATED );
- listener.transferInitiated( eventBuilder.build() );
- }
- }
-
- @Override
- public void transportStarted( long dataOffset, long dataLength )
- throws TransferCancelledException
- {
- if ( checksumCalculator != null )
- {
- checksumCalculator.init( dataOffset );
- }
- if ( listener != null )
- {
- eventBuilder.resetType( EventType.STARTED ).setTransferredBytes( dataOffset );
- TransferEvent event = eventBuilder.build();
- event.getResource().setContentLength( dataLength ).setResumeOffset( dataOffset );
- listener.transferStarted( event );
- }
- }
-
- @Override
- public void transportProgressed( ByteBuffer data )
- throws TransferCancelledException
- {
- if ( checksumCalculator != null )
- {
- checksumCalculator.update( data );
- }
- if ( listener != null )
- {
- eventBuilder.resetType( EventType.PROGRESSED ).addTransferredBytes( data.remaining() ).setDataBuffer( data );
- listener.transferProgressed( eventBuilder.build() );
- }
- }
-
- public void transferCorrupted( Exception exception )
- throws TransferCancelledException
- {
- if ( listener != null )
- {
- eventBuilder.resetType( EventType.CORRUPTED ).setException( exception );
- listener.transferCorrupted( eventBuilder.build() );
- }
- }
-
- public void transferFailed( Exception exception, int classification )
- {
- if ( listener != null )
- {
- eventBuilder.resetType( EventType.FAILED ).setException( exception );
- listener.transferFailed( eventBuilder.build() );
- }
- }
-
- public void transferSucceeded()
- {
- if ( listener != null )
- {
- eventBuilder.resetType( EventType.SUCCEEDED );
- listener.transferSucceeded( eventBuilder.build() );
- }
- }
-
- public Map<String, Object> getChecksums()
- {
- if ( checksumCalculator == null )
- {
- return Collections.emptyMap();
- }
- return checksumCalculator.get();
- }
-
- public void setChecksumCalculator( ChecksumCalculator checksumCalculator )
- {
- this.checksumCalculator = checksumCalculator;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/package-info.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/package-info.java b/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/package-info.java
deleted file mode 100644
index df86897..0000000
--- a/aether-connector-basic/src/main/java/org/eclipse/aether/connector/basic/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.
- */
-/**
- * Support for downloads/uploads using remote repositories that have a URI-based content structure/layout.
- */
-package org.eclipse.aether.connector.basic;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/site/site.xml
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/site/site.xml b/aether-connector-basic/src/site/site.xml
deleted file mode 100644
index 3a16bf9..0000000
--- a/aether-connector-basic/src/site/site.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
- <body>
- <menu name="Overview">
- <item name="Introduction" href="index.html"/>
- <item name="JavaDocs" href="apidocs/index.html"/>
- <item name="Source Xref" href="xref/index.html"/>
- <!--item name="FAQ" href="faq.html"/-->
- </menu>
-
- <menu ref="parent"/>
- <menu ref="reports"/>
- </body>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumCalculatorTest.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumCalculatorTest.java b/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumCalculatorTest.java
deleted file mode 100644
index 0dc43af..0000000
--- a/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumCalculatorTest.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.nio.ByteBuffer;
-import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayout;
-import org.junit.Before;
-import org.junit.Test;
-
-public class ChecksumCalculatorTest
-{
-
- private static final String SHA1 = "SHA-1";
-
- private static final String MD5 = "MD5";
-
- private File file;
-
- private ChecksumCalculator newCalculator( String... algos )
- {
- List<RepositoryLayout.Checksum> checksums = new ArrayList<RepositoryLayout.Checksum>();
- for ( String algo : algos )
- {
- checksums.add( new RepositoryLayout.Checksum( algo, URI.create( "irrelevant" ) ) );
- }
- return ChecksumCalculator.newInstance( file, checksums );
- }
-
- private ByteBuffer toBuffer( String data )
- {
- try
- {
- return ByteBuffer.wrap( data.getBytes( "UTF-8" ) );
- }
- catch ( UnsupportedEncodingException e )
- {
- throw new IllegalStateException( e );
- }
- }
-
- @Before
- public void init()
- throws Exception
- {
- file = TestFileUtils.createTempFile( "Hello World!" );
- }
-
- @Test
- public void testNoOffset()
- {
- ChecksumCalculator calculator = newCalculator( SHA1, MD5 );
- calculator.init( 0 );
- calculator.update( toBuffer( "Hello World!" ) );
- Map<String, Object> digests = calculator.get();
- assertNotNull( digests );
- assertEquals( "2ef7bde608ce5404e97d5f042f95f89f1c232871", digests.get( SHA1 ) );
- assertEquals( "ed076287532e86365e841e92bfc50d8c", digests.get( MD5 ) );
- assertEquals( 2, digests.size() );
- }
-
- @Test
- public void testWithOffset()
- {
- ChecksumCalculator calculator = newCalculator( SHA1, MD5 );
- calculator.init( 6 );
- calculator.update( toBuffer( "World!" ) );
- Map<String, Object> digests = calculator.get();
- assertNotNull( digests );
- assertEquals( "2ef7bde608ce5404e97d5f042f95f89f1c232871", digests.get( SHA1 ) );
- assertEquals( "ed076287532e86365e841e92bfc50d8c", digests.get( MD5 ) );
- assertEquals( 2, digests.size() );
- }
-
- @Test
- public void testWithExcessiveOffset()
- {
- ChecksumCalculator calculator = newCalculator( SHA1, MD5 );
- calculator.init( 100 );
- calculator.update( toBuffer( "World!" ) );
- Map<String, Object> digests = calculator.get();
- assertNotNull( digests );
- assertTrue( digests.get( SHA1 ) instanceof IOException );
- assertTrue( digests.get( MD5 ) instanceof IOException );
- assertEquals( 2, digests.size() );
- }
-
- @Test
- public void testUnknownAlgorithm()
- {
- ChecksumCalculator calculator = newCalculator( "unknown", SHA1 );
- calculator.init( 0 );
- calculator.update( toBuffer( "Hello World!" ) );
- Map<String, Object> digests = calculator.get();
- assertNotNull( digests );
- assertEquals( "2ef7bde608ce5404e97d5f042f95f89f1c232871", digests.get( SHA1 ) );
- assertTrue( digests.get( "unknown" ) instanceof NoSuchAlgorithmException );
- assertEquals( 2, digests.size() );
- }
-
- @Test
- public void testNoInitCall()
- {
- ChecksumCalculator calculator = newCalculator( SHA1, MD5 );
- calculator.update( toBuffer( "Hello World!" ) );
- Map<String, Object> digests = calculator.get();
- assertNotNull( digests );
- assertEquals( "2ef7bde608ce5404e97d5f042f95f89f1c232871", digests.get( SHA1 ) );
- assertEquals( "ed076287532e86365e841e92bfc50d8c", digests.get( MD5 ) );
- assertEquals( 2, digests.size() );
- }
-
- @Test
- public void testRestart()
- {
- ChecksumCalculator calculator = newCalculator( SHA1, MD5 );
- calculator.init( 0 );
- calculator.update( toBuffer( "Ignored" ) );
- calculator.init( 0 );
- calculator.update( toBuffer( "Hello World!" ) );
- Map<String, Object> digests = calculator.get();
- assertNotNull( digests );
- assertEquals( "2ef7bde608ce5404e97d5f042f95f89f1c232871", digests.get( SHA1 ) );
- assertEquals( "ed076287532e86365e841e92bfc50d8c", digests.get( MD5 ) );
- assertEquals( 2, digests.size() );
- }
-
- @Test
- public void testRestartAfterError()
- {
- ChecksumCalculator calculator = newCalculator( SHA1, MD5 );
- calculator.init( 100 );
- calculator.init( 0 );
- calculator.update( toBuffer( "Hello World!" ) );
- Map<String, Object> digests = calculator.get();
- assertNotNull( digests );
- assertEquals( "2ef7bde608ce5404e97d5f042f95f89f1c232871", digests.get( SHA1 ) );
- assertEquals( "ed076287532e86365e841e92bfc50d8c", digests.get( MD5 ) );
- assertEquals( 2, digests.size() );
- }
-
-}
[03/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/graph/Dependency.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/graph/Dependency.java b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/Dependency.java
new file mode 100644
index 0000000..b9e7cb4
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/Dependency.java
@@ -0,0 +1,330 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyCycle.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyCycle.java b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyCycle.java
new file mode 100644
index 0000000..1076ab8
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyCycle.java
@@ -0,0 +1,53 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyFilter.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyFilter.java b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyFilter.java
new file mode 100644
index 0000000..41776ff
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyFilter.java
@@ -0,0 +1,42 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyNode.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyNode.java b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyNode.java
new file mode 100644
index 0000000..da30124
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyNode.java
@@ -0,0 +1,250 @@
+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 depth of the node.
+ *
+ * @return The depth of the node.
+ *
+ * @since 1.2
+ */
+ long getDepth();
+
+ /**
+ * Gets the parent node of this node.
+ *
+ * @return The parent node of this node or {@code null}, if this node is the root of the graph.
+ *
+ * @since 1.2
+ */
+ DependencyNode getParent();
+
+ /**
+ * 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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyVisitor.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyVisitor.java b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyVisitor.java
new file mode 100644
index 0000000..2a85f2d
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/DependencyVisitor.java
@@ -0,0 +1,47 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/graph/Exclusion.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/graph/Exclusion.java b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/Exclusion.java
new file mode 100644
index 0000000..497cf43
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/Exclusion.java
@@ -0,0 +1,131 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/graph/package-info.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/graph/package-info.java b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/package-info.java
new file mode 100644
index 0000000..c3ba9db
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/graph/package-info.java
@@ -0,0 +1,24 @@
+// 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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallRequest.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallRequest.java b/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallRequest.java
new file mode 100644
index 0000000..f9b3163
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallRequest.java
@@ -0,0 +1,177 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallResult.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallResult.java b/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallResult.java
new file mode 100644
index 0000000..6624585
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallResult.java
@@ -0,0 +1,174 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallationException.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallationException.java b/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallationException.java
new file mode 100644
index 0000000..9a556bb
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/installation/InstallationException.java
@@ -0,0 +1,52 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/installation/package-info.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/installation/package-info.java b/maven-resolver-api/src/main/java/org/eclipse/aether/installation/package-info.java
new file mode 100644
index 0000000..d4ac077
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/installation/package-info.java
@@ -0,0 +1,24 @@
+// 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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/AbstractMetadata.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/AbstractMetadata.java b/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/AbstractMetadata.java
new file mode 100644
index 0000000..49dab35
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/AbstractMetadata.java
@@ -0,0 +1,160 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/DefaultMetadata.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/DefaultMetadata.java b/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/DefaultMetadata.java
new file mode 100644
index 0000000..1efbb72
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/DefaultMetadata.java
@@ -0,0 +1,192 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/MergeableMetadata.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/MergeableMetadata.java b/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/MergeableMetadata.java
new file mode 100644
index 0000000..deaff70
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/MergeableMetadata.java
@@ -0,0 +1,51 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/Metadata.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/Metadata.java b/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/Metadata.java
new file mode 100644
index 0000000..84e9212
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/Metadata.java
@@ -0,0 +1,138 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/package-info.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/package-info.java b/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/package-info.java
new file mode 100644
index 0000000..e41f98e
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/metadata/package-info.java
@@ -0,0 +1,24 @@
+// 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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/package-info.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/package-info.java b/maven-resolver-api/src/main/java/org/eclipse/aether/package-info.java
new file mode 100644
index 0000000..8d11fa8
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/package-info.java
@@ -0,0 +1,24 @@
+// 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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/ArtifactRepository.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/ArtifactRepository.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/ArtifactRepository.java
new file mode 100644
index 0000000..c62bf87
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/ArtifactRepository.java
@@ -0,0 +1,45 @@
+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-aether/blob/27f8bd73/maven-resolver-api/src/main/java/org/eclipse/aether/repository/Authentication.java
----------------------------------------------------------------------
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/repository/Authentication.java b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/Authentication.java
new file mode 100644
index 0000000..d85c2a2
--- /dev/null
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/repository/Authentication.java
@@ -0,0 +1,55 @@
+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 );
+
+}
[17/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransferListener.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransferListener.java b/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransferListener.java
deleted file mode 100644
index 3c3120e..0000000
--- a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransferListener.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.nio.ByteBuffer;
-
-import org.apache.maven.wagon.events.TransferEvent;
-import org.apache.maven.wagon.observers.AbstractTransferListener;
-import org.eclipse.aether.spi.connector.transport.TransportListener;
-import org.eclipse.aether.transfer.TransferCancelledException;
-
-/**
- * A wagon transfer listener that forwards events to a transport listener.
- */
-final class WagonTransferListener
- extends AbstractTransferListener
-{
-
- private final TransportListener listener;
-
- public WagonTransferListener( TransportListener listener )
- {
- this.listener = listener;
- }
-
- @Override
- public void transferStarted( TransferEvent event )
- {
- try
- {
- listener.transportStarted( 0, event.getResource().getContentLength() );
- }
- catch ( TransferCancelledException e )
- {
- /*
- * NOTE: Wagon transfers are not freely abortable. In particular, aborting from
- * AbstractWagon.fire(Get|Put)Started() would result in unclosed streams so we avoid this case.
- */
- }
- }
-
- @Override
- public void transferProgress( TransferEvent event, byte[] buffer, int length )
- {
- try
- {
- listener.transportProgressed( ByteBuffer.wrap( buffer, 0, length ) );
- }
- catch ( TransferCancelledException e )
- {
- throw new WagonCancelledException( e );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporter.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporter.java b/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporter.java
deleted file mode 100644
index 635f211..0000000
--- a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporter.java
+++ /dev/null
@@ -1,700 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.reflect.Method;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Queue;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.maven.wagon.ResourceDoesNotExistException;
-import org.apache.maven.wagon.StreamingWagon;
-import org.apache.maven.wagon.Wagon;
-import org.apache.maven.wagon.authentication.AuthenticationInfo;
-import org.apache.maven.wagon.proxy.ProxyInfo;
-import org.apache.maven.wagon.proxy.ProxyInfoProvider;
-import org.apache.maven.wagon.repository.Repository;
-import org.apache.maven.wagon.repository.RepositoryPermissions;
-import org.eclipse.aether.ConfigurationProperties;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.AuthenticationContext;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.GetTask;
-import org.eclipse.aether.spi.connector.transport.PeekTask;
-import org.eclipse.aether.spi.connector.transport.PutTask;
-import org.eclipse.aether.spi.connector.transport.TransportTask;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.transfer.NoTransporterException;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- * A transporter using Maven Wagon.
- */
-final class WagonTransporter
- implements Transporter
-{
-
- private static final String CONFIG_PROP_CONFIG = "aether.connector.wagon.config";
-
- private static final String CONFIG_PROP_FILE_MODE = "aether.connector.perms.fileMode";
-
- private static final String CONFIG_PROP_DIR_MODE = "aether.connector.perms.dirMode";
-
- private static final String CONFIG_PROP_GROUP = "aether.connector.perms.group";
-
- private final Logger logger;
-
- private final RemoteRepository repository;
-
- private final RepositorySystemSession session;
-
- private final AuthenticationContext repoAuthContext;
-
- private final AuthenticationContext proxyAuthContext;
-
- private final WagonProvider wagonProvider;
-
- private final WagonConfigurator wagonConfigurator;
-
- private final String wagonHint;
-
- private final Repository wagonRepo;
-
- private final AuthenticationInfo wagonAuth;
-
- private final ProxyInfoProvider wagonProxy;
-
- private final Properties headers;
-
- private final Queue<Wagon> wagons = new ConcurrentLinkedQueue<Wagon>();
-
- private final AtomicBoolean closed = new AtomicBoolean();
-
- public WagonTransporter( WagonProvider wagonProvider, WagonConfigurator wagonConfigurator,
- RemoteRepository repository, RepositorySystemSession session, Logger logger )
- throws NoTransporterException
- {
- this.logger = logger;
- this.wagonProvider = wagonProvider;
- this.wagonConfigurator = wagonConfigurator;
- this.repository = repository;
- this.session = session;
-
- wagonRepo = new Repository( repository.getId(), repository.getUrl() );
- wagonRepo.setPermissions( getPermissions( repository.getId(), session ) );
-
- wagonHint = wagonRepo.getProtocol().toLowerCase( Locale.ENGLISH );
- if ( wagonHint == null || wagonHint.length() <= 0 )
- {
- throw new NoTransporterException( repository );
- }
-
- try
- {
- wagons.add( lookupWagon() );
- }
- catch ( Exception e )
- {
- logger.debug( e.getMessage(), e );
- throw new NoTransporterException( repository, e.getMessage(), e );
- }
-
- repoAuthContext = AuthenticationContext.forRepository( session, repository );
- proxyAuthContext = AuthenticationContext.forProxy( session, repository );
-
- wagonAuth = getAuthenticationInfo( repository, repoAuthContext );
- wagonProxy = getProxy( repository, proxyAuthContext );
-
- headers = new Properties();
- headers.put( "User-Agent", ConfigUtils.getString( session, ConfigurationProperties.DEFAULT_USER_AGENT,
- ConfigurationProperties.USER_AGENT ) );
- Map<?, ?> headers =
- ConfigUtils.getMap( session, null, ConfigurationProperties.HTTP_HEADERS + "." + repository.getId(),
- ConfigurationProperties.HTTP_HEADERS );
- if ( headers != null )
- {
- this.headers.putAll( headers );
- }
- }
-
- private static RepositoryPermissions getPermissions( String repoId, RepositorySystemSession session )
- {
- RepositoryPermissions result = null;
-
- RepositoryPermissions perms = new RepositoryPermissions();
-
- String suffix = '.' + repoId;
-
- String fileMode = ConfigUtils.getString( session, (String) null, CONFIG_PROP_FILE_MODE + suffix );
- if ( fileMode != null )
- {
- perms.setFileMode( fileMode );
- result = perms;
- }
-
- String dirMode = ConfigUtils.getString( session, (String) null, CONFIG_PROP_DIR_MODE + suffix );
- if ( dirMode != null )
- {
- perms.setDirectoryMode( dirMode );
- result = perms;
- }
-
- String group = ConfigUtils.getString( session, (String) null, CONFIG_PROP_GROUP + suffix );
- if ( group != null )
- {
- perms.setGroup( group );
- result = perms;
- }
-
- return result;
- }
-
- private AuthenticationInfo getAuthenticationInfo( RemoteRepository repository,
- final AuthenticationContext authContext )
- {
- AuthenticationInfo auth = null;
-
- if ( authContext != null )
- {
- auth = new AuthenticationInfo()
- {
- @Override
- public String getUserName()
- {
- return authContext.get( AuthenticationContext.USERNAME );
- }
-
- @Override
- public String getPassword()
- {
- return authContext.get( AuthenticationContext.PASSWORD );
- }
-
- @Override
- public String getPrivateKey()
- {
- return authContext.get( AuthenticationContext.PRIVATE_KEY_PATH );
- }
-
- @Override
- public String getPassphrase()
- {
- return authContext.get( AuthenticationContext.PRIVATE_KEY_PASSPHRASE );
- }
- };
- }
-
- return auth;
- }
-
- private ProxyInfoProvider getProxy( RemoteRepository repository, final AuthenticationContext authContext )
- {
- ProxyInfoProvider proxy = null;
-
- Proxy p = repository.getProxy();
- if ( p != null )
- {
- final ProxyInfo prox;
- if ( authContext != null )
- {
- prox = new ProxyInfo()
- {
- @Override
- public String getUserName()
- {
- return authContext.get( AuthenticationContext.USERNAME );
- }
-
- @Override
- public String getPassword()
- {
- return authContext.get( AuthenticationContext.PASSWORD );
- }
-
- @Override
- public String getNtlmDomain()
- {
- return authContext.get( AuthenticationContext.NTLM_DOMAIN );
- }
-
- @Override
- public String getNtlmHost()
- {
- return authContext.get( AuthenticationContext.NTLM_WORKSTATION );
- }
- };
- }
- else
- {
- prox = new ProxyInfo();
- }
- prox.setType( p.getType() );
- prox.setHost( p.getHost() );
- prox.setPort( p.getPort() );
-
- proxy = new ProxyInfoProvider()
- {
- public ProxyInfo getProxyInfo( String protocol )
- {
- return prox;
- }
- };
- }
-
- return proxy;
- }
-
- private Wagon lookupWagon()
- throws Exception
- {
- return wagonProvider.lookup( wagonHint );
- }
-
- private void releaseWagon( Wagon wagon )
- {
- wagonProvider.release( wagon );
- }
-
- private void connectWagon( Wagon wagon )
- throws Exception
- {
- if ( !headers.isEmpty() )
- {
- try
- {
- Method setHttpHeaders = wagon.getClass().getMethod( "setHttpHeaders", Properties.class );
- setHttpHeaders.invoke( wagon, headers );
- }
- catch ( NoSuchMethodException e )
- {
- // normal for non-http wagons
- }
- catch ( Exception e )
- {
- logger.debug( "Could not set user agent for wagon " + wagon.getClass().getName() + ": " + e );
- }
- }
-
- int connectTimeout =
- ConfigUtils.getInteger( session, ConfigurationProperties.DEFAULT_CONNECT_TIMEOUT,
- ConfigurationProperties.CONNECT_TIMEOUT );
- int requestTimeout =
- ConfigUtils.getInteger( session, ConfigurationProperties.DEFAULT_REQUEST_TIMEOUT,
- ConfigurationProperties.REQUEST_TIMEOUT );
-
- wagon.setTimeout( Math.max( Math.max( connectTimeout, requestTimeout ), 0 ) );
-
- wagon.setInteractive( ConfigUtils.getBoolean( session, ConfigurationProperties.DEFAULT_INTERACTIVE,
- ConfigurationProperties.INTERACTIVE ) );
-
- Object configuration = ConfigUtils.getObject( session, null, CONFIG_PROP_CONFIG + "." + repository.getId() );
- if ( configuration != null && wagonConfigurator != null )
- {
- try
- {
- wagonConfigurator.configure( wagon, configuration );
- }
- catch ( Exception e )
- {
- String msg =
- "Could not apply configuration for " + repository.getId() + " to wagon "
- + wagon.getClass().getName() + ":" + e.getMessage();
- if ( logger.isDebugEnabled() )
- {
- logger.warn( msg, e );
- }
- else
- {
- logger.warn( msg );
- }
- }
- }
-
- wagon.connect( wagonRepo, wagonAuth, wagonProxy );
- }
-
- private void disconnectWagon( Wagon wagon )
- {
- try
- {
- if ( wagon != null )
- {
- wagon.disconnect();
- }
- }
- catch ( Exception e )
- {
- logger.debug( "Could not disconnect wagon " + wagon, e );
- }
- }
-
- private Wagon pollWagon()
- throws Exception
- {
- Wagon wagon = wagons.poll();
-
- if ( wagon == null )
- {
- try
- {
- wagon = lookupWagon();
- connectWagon( wagon );
- }
- catch ( Exception e )
- {
- releaseWagon( wagon );
- throw e;
- }
- }
- else if ( wagon.getRepository() == null )
- {
- try
- {
- connectWagon( wagon );
- }
- catch ( Exception e )
- {
- wagons.add( wagon );
- throw e;
- }
- }
-
- return wagon;
- }
-
- public int classify( Throwable error )
- {
- if ( error instanceof ResourceDoesNotExistException )
- {
- return ERROR_NOT_FOUND;
- }
- return ERROR_OTHER;
- }
-
- public void peek( PeekTask task )
- throws Exception
- {
- execute( task, new PeekTaskRunner( task ) );
- }
-
- public void get( GetTask task )
- throws Exception
- {
- execute( task, new GetTaskRunner( task ) );
- }
-
- public void put( PutTask task )
- throws Exception
- {
- execute( task, new PutTaskRunner( task ) );
- }
-
- private void execute( TransportTask task, TaskRunner runner )
- throws Exception
- {
- if ( closed.get() )
- {
- throw new IllegalStateException( "transporter closed, cannot execute task " + task );
- }
- try
- {
- WagonTransferListener listener = new WagonTransferListener( task.getListener() );
- Wagon wagon = pollWagon();
- try
- {
- wagon.addTransferListener( listener );
- runner.run( wagon );
- }
- finally
- {
- wagon.removeTransferListener( listener );
- wagons.add( wagon );
- }
- }
- catch ( Exception e )
- {
- throw WagonCancelledException.unwrap( e );
- }
- }
-
- private static File newTempFile()
- throws IOException
- {
- return File.createTempFile( "wagon-" + UUID.randomUUID().toString().replace( "-", "" ), ".tmp" );
- }
-
- private void delTempFile( File path )
- {
- if ( path != null && !path.delete() && path.exists() )
- {
- path.deleteOnExit();
- logger.debug( "Could not delete temorary file " + path );
- }
- }
-
- private static void copy( OutputStream os, InputStream is )
- throws IOException
- {
- byte[] buffer = new byte[1024 * 32];
- for ( int read = is.read( buffer ); read >= 0; read = is.read( buffer ) )
- {
- os.write( buffer, 0, read );
- }
- }
-
- private static void close( Closeable file )
- {
- if ( file != null )
- {
- try
- {
- file.close();
- }
- catch ( IOException e )
- {
- // too bad
- }
- }
- }
-
- public void close()
- {
- if ( closed.compareAndSet( false, true ) )
- {
- AuthenticationContext.close( repoAuthContext );
- AuthenticationContext.close( proxyAuthContext );
-
- for ( Wagon wagon = wagons.poll(); wagon != null; wagon = wagons.poll() )
- {
- disconnectWagon( wagon );
- releaseWagon( wagon );
- }
- }
- }
-
- private interface TaskRunner
- {
-
- void run( Wagon wagon )
- throws Exception;
-
- }
-
- private static class PeekTaskRunner
- implements TaskRunner
- {
-
- private final PeekTask task;
-
- public PeekTaskRunner( PeekTask task )
- {
- this.task = task;
- }
-
- public void run( Wagon wagon )
- throws Exception
- {
- String src = task.getLocation().toString();
- if ( !wagon.resourceExists( src ) )
- {
- throw new ResourceDoesNotExistException( "Could not find " + src + " in "
- + wagon.getRepository().getUrl() );
- }
- }
-
- }
-
- private class GetTaskRunner
- implements TaskRunner
- {
-
- private final GetTask task;
-
- public GetTaskRunner( GetTask task )
- {
- this.task = task;
- }
-
- public void run( Wagon wagon )
- throws Exception
- {
- String src = task.getLocation().toString();
- File file = task.getDataFile();
- if ( file == null && wagon instanceof StreamingWagon )
- {
- OutputStream dst = task.newOutputStream();
- try
- {
- ( (StreamingWagon) wagon ).getToStream( src, dst );
- }
- finally
- {
- dst.close();
- }
- }
- else
- {
- File dst = ( file != null ) ? file : newTempFile();
- try
- {
- wagon.get( src, dst );
- if ( !dst.exists() )
- {
- /*
- * NOTE: Wagon (1.0-beta-6) doesn't create the destination file when transferring a 0-byte
- * resource. So if the resource we asked for didn't cause any exception but doesn't show up in
- * the dst file either, Wagon tells us in its weird way the file is empty.
- */
- new FileOutputStream( dst ).close();
- }
- if ( file == null )
- {
- readTempFile( dst );
- }
- }
- finally
- {
- if ( file == null )
- {
- delTempFile( dst );
- }
- }
- }
- }
-
- private void readTempFile( File dst )
- throws IOException
- {
- FileInputStream in = null;
- OutputStream out = null;
- try
- {
- in = new FileInputStream( dst );
- out = task.newOutputStream();
- copy( out, in );
- out.close();
- out = null;
- in.close();
- in = null;
- }
- finally
- {
- close( out );
- close( in );
- }
- }
-
- }
-
- private class PutTaskRunner
- implements TaskRunner
- {
-
- private final PutTask task;
-
- public PutTaskRunner( PutTask task )
- {
- this.task = task;
- }
-
- public void run( Wagon wagon )
- throws Exception
- {
- String dst = task.getLocation().toString();
- File file = task.getDataFile();
- if ( file == null && wagon instanceof StreamingWagon )
- {
- InputStream src = null;
- try
- {
- src = task.newInputStream();
- // StreamingWagon uses an internal buffer on src input stream.
- ( (StreamingWagon) wagon ).putFromStream( src, dst, task.getDataLength(), -1 );
- src.close();
- src = null;
- }
- finally
- {
- close( src );
- }
- }
- else
- {
- File src = ( file != null ) ? file : createTempFile();
- try
- {
- wagon.put( src, dst );
- }
- finally
- {
- if ( file == null )
- {
- delTempFile( src );
- }
- }
- }
- }
-
- private File createTempFile()
- throws IOException
- {
- File tmp = null;
- FileOutputStream out = null;
- InputStream in = null;
- try
- {
- tmp = newTempFile();
- in = task.newInputStream();
- out = new FileOutputStream( tmp );
- copy( out, in );
- out.close();
- out = null;
- in.close();
- in = null;
- return tmp;
- }
- catch ( IOException e )
- {
- delTempFile( tmp );
- throw e;
- }
- finally
- {
- close( out );
- close( in );
- }
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporterFactory.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporterFactory.java b/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporterFactory.java
deleted file mode 100644
index 490acac..0000000
--- a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporterFactory.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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 javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.NoTransporterException;
-
-/**
- * A transporter factory using <a href="http://maven.apache.org/wagon/" target="_blank">Apache Maven Wagon</a>. Note
- * that this factory merely serves as an adapter to the Wagon API and by itself does not provide any transport services
- * unless one or more wagon implementations are registered with the {@link WagonProvider}.
- */
-@Named( "wagon" )
-public final class WagonTransporterFactory
- implements TransporterFactory, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private WagonProvider wagonProvider;
-
- private WagonConfigurator wagonConfigurator;
-
- private float priority = -1;
-
- /**
- * Creates an (uninitialized) instance of this transporter factory. <em>Note:</em> In case of manual instantiation
- * by clients, the new factory needs to be configured via its various mutators before first use or runtime errors
- * will occur.
- */
- public WagonTransporterFactory()
- {
- // enables default constructor
- }
-
- @Inject
- WagonTransporterFactory( WagonProvider wagonProvider, WagonConfigurator wagonConfigurator,
- LoggerFactory loggerFactory )
- {
- setWagonProvider( wagonProvider );
- setWagonConfigurator( wagonConfigurator );
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setWagonProvider( locator.getService( WagonProvider.class ) );
- setWagonConfigurator( locator.getService( WagonConfigurator.class ) );
- }
-
- /**
- * Sets the logger factory to use for this component.
- *
- * @param loggerFactory The logger factory to use, may be {@code null} to disable logging.
- * @return This component for chaining, never {@code null}.
- */
- public WagonTransporterFactory setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, WagonTransporter.class );
- return this;
- }
-
- /**
- * Sets the wagon provider to use to acquire and release wagon instances.
- *
- * @param wagonProvider The wagon provider to use, may be {@code null}.
- * @return This factory for chaining, never {@code null}.
- */
- public WagonTransporterFactory setWagonProvider( WagonProvider wagonProvider )
- {
- this.wagonProvider = wagonProvider;
- return this;
- }
-
- /**
- * Sets the wagon configurator to use to apply provider-specific configuration to wagon instances.
- *
- * @param wagonConfigurator The wagon configurator to use, may be {@code null}.
- * @return This factory for chaining, never {@code null}.
- */
- public WagonTransporterFactory setWagonConfigurator( WagonConfigurator wagonConfigurator )
- {
- this.wagonConfigurator = wagonConfigurator;
- return this;
- }
-
- public float getPriority()
- {
- return priority;
- }
-
- /**
- * Sets the priority of this component.
- *
- * @param priority The priority.
- * @return This component for chaining, never {@code null}.
- */
- public WagonTransporterFactory setPriority( float priority )
- {
- this.priority = priority;
- return this;
- }
-
- public Transporter newInstance( RepositorySystemSession session, RemoteRepository repository )
- throws NoTransporterException
- {
- return new WagonTransporter( wagonProvider, wagonConfigurator, repository, session, logger );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/package-info.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/package-info.java b/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/package-info.java
deleted file mode 100644
index 82df9ac..0000000
--- a/aether-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/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.
- */
-/**
- * Support for downloads/uploads using <a href="http://maven.apache.org/wagon/" target="_blank">Apache Maven Wagon</a>.
- */
-package org.eclipse.aether.transport.wagon;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/site/site.xml
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/site/site.xml b/aether-transport-wagon/src/site/site.xml
deleted file mode 100644
index 3a16bf9..0000000
--- a/aether-transport-wagon/src/site/site.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
- <body>
- <menu name="Overview">
- <item name="Introduction" href="index.html"/>
- <item name="JavaDocs" href="apidocs/index.html"/>
- <item name="Source Xref" href="xref/index.html"/>
- <!--item name="FAQ" href="faq.html"/-->
- </menu>
-
- <menu ref="parent"/>
- <menu ref="reports"/>
- </body>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/AbstractWagonTransporterTest.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/AbstractWagonTransporterTest.java b/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/AbstractWagonTransporterTest.java
deleted file mode 100644
index 61f8a8e..0000000
--- a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/AbstractWagonTransporterTest.java
+++ /dev/null
@@ -1,534 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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 static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.File;
-import java.net.URI;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.maven.wagon.ResourceDoesNotExistException;
-import org.apache.maven.wagon.TransferFailedException;
-import org.apache.maven.wagon.Wagon;
-import org.eclipse.aether.ConfigurationProperties;
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.eclipse.aether.repository.Authentication;
-import org.eclipse.aether.repository.Proxy;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.GetTask;
-import org.eclipse.aether.spi.connector.transport.PeekTask;
-import org.eclipse.aether.spi.connector.transport.PutTask;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.transfer.NoTransporterException;
-import org.eclipse.aether.transfer.TransferCancelledException;
-import org.eclipse.aether.util.repository.AuthenticationBuilder;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- */
-public abstract class AbstractWagonTransporterTest
-{
-
- private DefaultRepositorySystemSession session;
-
- private TransporterFactory factory;
-
- private Transporter transporter;
-
- private String id;
-
- private Map<String, String> fs;
-
- protected abstract Wagon newWagon();
-
- private RemoteRepository newRepo( String url )
- {
- return new RemoteRepository.Builder( "test", "default", url ).build();
- }
-
- private void newTransporter( String url )
- throws Exception
- {
- newTransporter( newRepo( url ) );
- }
-
- private void newTransporter( RemoteRepository repo )
- throws Exception
- {
- if ( transporter != null )
- {
- transporter.close();
- transporter = null;
- }
- transporter = factory.newInstance( session, repo );
- }
-
- @Before
- public void setUp()
- throws Exception
- {
- session = TestUtils.newSession();
- factory = new WagonTransporterFactory( new WagonProvider()
- {
- public Wagon lookup( String roleHint )
- throws Exception
- {
- if ( "mem".equalsIgnoreCase( roleHint ) )
- {
- return newWagon();
- }
- throw new IllegalArgumentException( "Unknown wagon role: " + roleHint );
- }
-
- public void release( Wagon wagon )
- {
- }
- }, new WagonConfigurator()
- {
- public void configure( Wagon wagon, Object configuration )
- throws Exception
- {
- ( (Configurable) wagon ).setConfiguration( configuration );
- }
- }, new TestLoggerFactory() );
- id = UUID.randomUUID().toString().replace( "-", "" );
- fs = MemWagonUtils.getFilesystem( id );
- fs.put( "file.txt", "test" );
- fs.put( "empty.txt", "" );
- fs.put( "some space.txt", "space" );
- newTransporter( "mem://" + id );
- }
-
- @After
- public void tearDown()
- {
- if ( transporter != null )
- {
- transporter.close();
- transporter = null;
- }
- factory = null;
- session = null;
- }
-
- @Test
- public void testClassify()
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( new TransferFailedException( "test" ) ) );
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( new ResourceDoesNotExistException( "test" ) ) );
- }
-
- @Test
- public void testPeek()
- throws Exception
- {
- transporter.peek( new PeekTask( URI.create( "file.txt" ) ) );
- }
-
- @Test
- public void testPeek_NotFound()
- throws Exception
- {
- try
- {
- transporter.peek( new PeekTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( ResourceDoesNotExistException e )
- {
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testPeek_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.peek( new PeekTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_ToMemory()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", task.getDataString() );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( task.getDataString(), listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_ToFile()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "failure" );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setDataFile( file ).setListener( listener );
- transporter.get( task );
- assertEquals( "test", TestFileUtils.readString( file ) );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "test", listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_EmptyResource()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "failure" );
- assertTrue( file.delete() && !file.exists() );
- RecordingTransportListener listener = new RecordingTransportListener();
- GetTask task = new GetTask( URI.create( "empty.txt" ) ).setDataFile( file ).setListener( listener );
- transporter.get( task );
- assertEquals( "", TestFileUtils.readString( file ) );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 0, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- assertEquals( "", listener.baos.toString( "UTF-8" ) );
- }
-
- @Test
- public void testGet_EncodedResourcePath()
- throws Exception
- {
- GetTask task = new GetTask( URI.create( "some%20space.txt" ) );
- transporter.get( task );
- assertEquals( "space", task.getDataString() );
- }
-
- @Test
- public void testGet_FileHandleLeak()
- throws Exception
- {
- for ( int i = 0; i < 100; i++ )
- {
- File file = TestFileUtils.createTempFile( "failure" );
- transporter.get( new GetTask( URI.create( "file.txt" ) ).setDataFile( file ) );
- assertTrue( i + ", " + file.getAbsolutePath(), file.delete() );
- }
- }
-
- @Test
- public void testGet_NotFound()
- throws Exception
- {
- try
- {
- transporter.get( new GetTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( ResourceDoesNotExistException e )
- {
- assertEquals( Transporter.ERROR_NOT_FOUND, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.get( new GetTask( URI.create( "file.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testGet_StartCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelStart = true;
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setListener( listener );
- transporter.get( task );
- assertEquals( 1, listener.startedCount );
- }
-
- @Test
- public void testGet_ProgressCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelProgress = true;
- GetTask task = new GetTask( URI.create( "file.txt" ) ).setListener( listener );
- try
- {
- transporter.get( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 4, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 1, listener.progressedCount );
- }
-
- @Test
- public void testPut_FromMemory()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", fs.get( "file.txt" ) );
- }
-
- @Test
- public void testPut_FromFile()
- throws Exception
- {
- File file = TestFileUtils.createTempFile( "upload" );
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "file.txt" ) ).setListener( listener ).setDataFile( file );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", fs.get( "file.txt" ) );
- }
-
- @Test
- public void testPut_EmptyResource()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "file.txt" ) ).setListener( listener );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 0, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 0, listener.progressedCount );
- assertEquals( "", fs.get( "file.txt" ) );
- }
-
- @Test
- public void testPut_NonExistentParentDir()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task =
- new PutTask( URI.create( "dir/sub/dir/file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "upload", fs.get( "dir/sub/dir/file.txt" ) );
- }
-
- @Test
- public void testPut_EncodedResourcePath()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- PutTask task = new PutTask( URI.create( "some%20space.txt" ) ).setListener( listener ).setDataString( "OK" );
- transporter.put( task );
- assertEquals( 0, listener.dataOffset );
- assertEquals( 2, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
- assertEquals( "OK", fs.get( "some space.txt" ) );
- }
-
- @Test
- public void testPut_FileHandleLeak()
- throws Exception
- {
- for ( int i = 0; i < 100; i++ )
- {
- File src = TestFileUtils.createTempFile( "upload" );
- transporter.put( new PutTask( URI.create( "file.txt" ) ).setDataFile( src ) );
- assertTrue( i + ", " + src.getAbsolutePath(), src.delete() );
- }
- }
-
- @Test
- public void testPut_Closed()
- throws Exception
- {
- transporter.close();
- try
- {
- transporter.put( new PutTask( URI.create( "missing.txt" ) ) );
- fail( "Expected error" );
- }
- catch ( IllegalStateException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- }
-
- @Test
- public void testPut_StartCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelStart = true;
- PutTask task = new PutTask( URI.create( "file.txt" ) ).setListener( listener ).setDataString( "upload" );
- transporter.put( task );
- assertEquals( 1, listener.startedCount );
- }
-
- @Test
- public void testPut_ProgressCancelled()
- throws Exception
- {
- RecordingTransportListener listener = new RecordingTransportListener();
- listener.cancelProgress = true;
- PutTask task = new PutTask( URI.create( "file.txt" ) ).setListener( listener ).setDataString( "upload" );
- try
- {
- transporter.put( task );
- fail( "Expected error" );
- }
- catch ( TransferCancelledException e )
- {
- assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
- }
- assertEquals( 0, listener.dataOffset );
- assertEquals( 6, listener.dataLength );
- assertEquals( 1, listener.startedCount );
- assertEquals( 1, listener.progressedCount );
- }
-
- @Test( expected = NoTransporterException.class )
- public void testInit_BadProtocol()
- throws Exception
- {
- newTransporter( "bad:/void" );
- }
-
- @Test
- public void testInit_CaseInsensitiveProtocol()
- throws Exception
- {
- newTransporter( "mem:/void" );
- newTransporter( "MEM:/void" );
- newTransporter( "mEm:/void" );
- }
-
- @Test
- public void testInit_Configuration()
- throws Exception
- {
- session.setConfigProperty( "aether.connector.wagon.config.test", "passed" );
- newTransporter( "mem://" + id + "?config=passed" );
- transporter.peek( new PeekTask( URI.create( "file.txt" ) ) );
- }
-
- @Test
- public void testInit_UserAgent()
- throws Exception
- {
- session.setConfigProperty( ConfigurationProperties.USER_AGENT, "Test/1.0" );
- newTransporter( "mem://" + id + "?userAgent=Test/1.0" );
- transporter.peek( new PeekTask( URI.create( "file.txt" ) ) );
- }
-
- @Test
- public void testInit_Timeout()
- throws Exception
- {
- session.setConfigProperty( ConfigurationProperties.REQUEST_TIMEOUT, "12345678" );
- newTransporter( "mem://" + id + "?requestTimeout=12345678" );
- transporter.peek( new PeekTask( URI.create( "file.txt" ) ) );
- }
-
- @Test
- public void testInit_ServerAuth()
- throws Exception
- {
- String url =
- "mem://" + id + "?serverUsername=testuser&serverPassword=testpass"
- + "&serverPrivateKey=testkey&serverPassphrase=testphrase";
- Authentication auth =
- new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).addPrivateKey( "testkey",
- "testphrase" ).build();
- RemoteRepository repo =
- new RemoteRepository.Builder( "test", "default", url ).setAuthentication( auth ).build();
- newTransporter( repo );
- transporter.peek( new PeekTask( URI.create( "file.txt" ) ) );
- }
-
- @Test
- public void testInit_Proxy()
- throws Exception
- {
- String url = "mem://" + id + "?proxyHost=testhost&proxyPort=8888";
- RemoteRepository repo =
- new RemoteRepository.Builder( "test", "default", url ).setProxy( new Proxy( "http", "testhost", 8888 ) ).build();
- newTransporter( repo );
- transporter.peek( new PeekTask( URI.create( "file.txt" ) ) );
- }
-
- @Test
- public void testInit_ProxyAuth()
- throws Exception
- {
- String url = "mem://" + id + "?proxyUsername=testuser&proxyPassword=testpass";
- Authentication auth = new AuthenticationBuilder().addUsername( "testuser" ).addPassword( "testpass" ).build();
- RemoteRepository repo =
- new RemoteRepository.Builder( "test", "default", url ).setProxy( new Proxy( "http", "testhost", 8888, auth ) ).build();
- newTransporter( repo );
- transporter.peek( new PeekTask( URI.create( "file.txt" ) ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/Configurable.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/Configurable.java b/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/Configurable.java
deleted file mode 100644
index 9a90f6f..0000000
--- a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/Configurable.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.
- */
-
-/**
- */
-public interface Configurable
-{
-
- Object getConfiguration();
-
- void setConfiguration( Object config );
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemStreamWagon.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemStreamWagon.java b/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemStreamWagon.java
deleted file mode 100644
index 35efca1..0000000
--- a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemStreamWagon.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.maven.wagon.ConnectionException;
-import org.apache.maven.wagon.InputData;
-import org.apache.maven.wagon.OutputData;
-import org.apache.maven.wagon.ResourceDoesNotExistException;
-import org.apache.maven.wagon.StreamWagon;
-import org.apache.maven.wagon.TransferFailedException;
-import org.apache.maven.wagon.authentication.AuthenticationException;
-import org.apache.maven.wagon.authorization.AuthorizationException;
-import org.apache.maven.wagon.resource.Resource;
-
-/**
- */
-public class MemStreamWagon
- extends StreamWagon
- implements Configurable
-{
-
- private Map<String, String> fs;
-
- private Properties headers;
-
- private Object config;
-
- public void setConfiguration( Object config )
- {
- this.config = config;
- }
-
- public Object getConfiguration()
- {
- return config;
- }
-
- public void setHttpHeaders( Properties httpHeaders )
- {
- headers = httpHeaders;
- }
-
- @Override
- protected void openConnectionInternal()
- throws ConnectionException, AuthenticationException
- {
- fs =
- MemWagonUtils.openConnection( this, getAuthenticationInfo(),
- getProxyInfo( "mem", getRepository().getHost() ), headers );
- }
-
- @Override
- public void closeConnection()
- throws ConnectionException
- {
- fs = null;
- }
-
- private String getData( String resource )
- {
- return fs.get( URI.create( resource ).getSchemeSpecificPart() );
- }
-
- @Override
- public boolean resourceExists( String resourceName )
- throws TransferFailedException, AuthorizationException
- {
- String data = getData( resourceName );
- return data != null;
- }
-
- @Override
- public void fillInputData( InputData inputData )
- throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
- {
- String data = getData( inputData.getResource().getName() );
- if ( data == null )
- {
- throw new ResourceDoesNotExistException( "Missing resource: " + inputData.getResource().getName() );
- }
- byte[] bytes;
- try
- {
- bytes = data.getBytes( "UTF-8" );
- }
- catch ( UnsupportedEncodingException e )
- {
- throw new TransferFailedException( e.getMessage(), e );
- }
- inputData.getResource().setContentLength( bytes.length );
- inputData.setInputStream( new ByteArrayInputStream( bytes ) );
- }
-
- @Override
- public void fillOutputData( OutputData outputData )
- throws TransferFailedException
- {
- outputData.setOutputStream( new ByteArrayOutputStream() );
- }
-
- @Override
- protected void finishPutTransfer( Resource resource, InputStream input, OutputStream output )
- throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException
- {
- String data;
- try
- {
- data = ( (ByteArrayOutputStream) output ).toString( "UTF-8" );
- }
- catch ( UnsupportedEncodingException e )
- {
- throw new TransferFailedException( e.getMessage(), e );
- }
- fs.put( URI.create( resource.getName() ).getSchemeSpecificPart(), data );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemWagon.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemWagon.java b/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemWagon.java
deleted file mode 100644
index ec3d7d6..0000000
--- a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemWagon.java
+++ /dev/null
@@ -1,232 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.maven.wagon.AbstractWagon;
-import org.apache.maven.wagon.ConnectionException;
-import org.apache.maven.wagon.InputData;
-import org.apache.maven.wagon.OutputData;
-import org.apache.maven.wagon.ResourceDoesNotExistException;
-import org.apache.maven.wagon.TransferFailedException;
-import org.apache.maven.wagon.authentication.AuthenticationException;
-import org.apache.maven.wagon.authorization.AuthorizationException;
-import org.apache.maven.wagon.events.TransferEvent;
-import org.apache.maven.wagon.resource.Resource;
-
-/**
- */
-public class MemWagon
- extends AbstractWagon
- implements Configurable
-{
-
- private Map<String, String> fs;
-
- private Properties headers;
-
- private Object config;
-
- public void setConfiguration( Object config )
- {
- this.config = config;
- }
-
- public Object getConfiguration()
- {
- return config;
- }
-
- public void setHttpHeaders( Properties httpHeaders )
- {
- headers = httpHeaders;
- }
-
- @Override
- protected void openConnectionInternal()
- throws ConnectionException, AuthenticationException
- {
- fs =
- MemWagonUtils.openConnection( this, getAuthenticationInfo(),
- getProxyInfo( "mem", getRepository().getHost() ), headers );
- }
-
- @Override
- protected void closeConnection()
- throws ConnectionException
- {
- fs = null;
- }
-
- private String getData( String resource )
- {
- return fs.get( URI.create( resource ).getSchemeSpecificPart() );
- }
-
- @Override
- public boolean resourceExists( String resourceName )
- throws TransferFailedException, AuthorizationException
- {
- String data = getData( resourceName );
- return data != null;
- }
-
- public void get( String resourceName, File destination )
- throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
- {
- getIfNewer( resourceName, destination, 0 );
- }
-
- public boolean getIfNewer( String resourceName, File destination, long timestamp )
- throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
- {
- Resource resource = new Resource( resourceName );
- fireGetInitiated( resource, destination );
- resource.setLastModified( timestamp );
- getTransfer( resource, destination, getInputStream( resource ) );
- return true;
- }
-
- protected InputStream getInputStream( Resource resource )
- throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
- {
- InputData inputData = new InputData();
- inputData.setResource( resource );
- try
- {
- fillInputData( inputData );
- }
- catch ( TransferFailedException e )
- {
- fireTransferError( resource, e, TransferEvent.REQUEST_GET );
- cleanupGetTransfer( resource );
- throw e;
- }
- catch ( ResourceDoesNotExistException e )
- {
- fireTransferError( resource, e, TransferEvent.REQUEST_GET );
- cleanupGetTransfer( resource );
- throw e;
- }
- catch ( AuthorizationException e )
- {
- fireTransferError( resource, e, TransferEvent.REQUEST_GET );
- cleanupGetTransfer( resource );
- throw e;
- }
- finally
- {
- if ( inputData.getInputStream() == null )
- {
- cleanupGetTransfer( resource );
- }
- }
- return inputData.getInputStream();
- }
-
- protected void fillInputData( InputData inputData )
- throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
- {
- String data = getData( inputData.getResource().getName() );
- if ( data == null )
- {
- throw new ResourceDoesNotExistException( "Missing resource: " + inputData.getResource().getName() );
- }
- byte[] bytes;
- try
- {
- bytes = data.getBytes( "UTF-8" );
- }
- catch ( UnsupportedEncodingException e )
- {
- throw new TransferFailedException( e.getMessage(), e );
- }
- inputData.getResource().setContentLength( bytes.length );
- inputData.setInputStream( new ByteArrayInputStream( bytes ) );
- }
-
- public void put( File source, String resourceName )
- throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
- {
- Resource resource = new Resource( resourceName );
- firePutInitiated( resource, source );
- resource.setContentLength( source.length() );
- resource.setLastModified( source.lastModified() );
- OutputStream os = getOutputStream( resource );
- putTransfer( resource, source, os, true );
- }
-
- protected OutputStream getOutputStream( Resource resource )
- throws TransferFailedException
- {
- OutputData outputData = new OutputData();
- outputData.setResource( resource );
- try
- {
- fillOutputData( outputData );
- }
- catch ( TransferFailedException e )
- {
- fireTransferError( resource, e, TransferEvent.REQUEST_PUT );
- throw e;
- }
- finally
- {
- if ( outputData.getOutputStream() == null )
- {
- cleanupPutTransfer( resource );
- }
- }
-
- return outputData.getOutputStream();
- }
-
- protected void fillOutputData( OutputData outputData )
- throws TransferFailedException
- {
- outputData.setOutputStream( new ByteArrayOutputStream() );
- }
-
- @Override
- protected void finishPutTransfer( Resource resource, InputStream input, OutputStream output )
- throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException
- {
- String data;
- try
- {
- data = ( (ByteArrayOutputStream) output ).toString( "UTF-8" );
- }
- catch ( UnsupportedEncodingException e )
- {
- throw new TransferFailedException( e.getMessage(), e );
- }
- fs.put( URI.create( resource.getName() ).getSchemeSpecificPart(), data );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemWagonUtils.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemWagonUtils.java b/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemWagonUtils.java
deleted file mode 100644
index 86d2cc7..0000000
--- a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/MemWagonUtils.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.net.URI;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import org.apache.maven.wagon.ConnectionException;
-import org.apache.maven.wagon.Wagon;
-import org.apache.maven.wagon.authentication.AuthenticationException;
-import org.apache.maven.wagon.authentication.AuthenticationInfo;
-import org.apache.maven.wagon.proxy.ProxyInfo;
-
-/**
- */
-class MemWagonUtils
-{
-
- private static final ConcurrentMap<String, Map<String, String>> mounts =
- new ConcurrentHashMap<String, Map<String, String>>();
-
- public static Map<String, String> getFilesystem( String id )
- {
- Map<String, String> fs = mounts.get( id );
- if ( fs == null )
- {
- fs = new ConcurrentHashMap<String, String>();
- Map<String, String> prev = mounts.putIfAbsent( id, fs );
- if ( prev != null )
- {
- fs = prev;
- }
- }
- return fs;
- }
-
- public static Map<String, String> openConnection( Wagon wagon, AuthenticationInfo auth, ProxyInfo proxy,
- Properties headers )
- throws ConnectionException, AuthenticationException
- {
- URI uri = URI.create( wagon.getRepository().getUrl() );
-
- String query = uri.getQuery();
- if ( query != null )
- {
- verify( query, "config", String.valueOf( ( (Configurable) wagon ).getConfiguration() ) );
-
- verify( query, "userAgent", ( headers != null ) ? headers.getProperty( "User-Agent" ) : null );
- verify( query, "requestTimeout", Integer.toString( wagon.getTimeout() ) );
-
- verify( query, "serverUsername", ( auth != null ) ? auth.getUserName() : null );
- verify( query, "serverPassword", ( auth != null ) ? auth.getPassword() : null );
- verify( query, "serverPrivateKey", ( auth != null ) ? auth.getPrivateKey() : null );
- verify( query, "serverPassphrase", ( auth != null ) ? auth.getPassphrase() : null );
-
- verify( query, "proxyHost", ( proxy != null ) ? proxy.getHost() : null );
- verify( query, "proxyPort", ( proxy != null ) ? Integer.toString( proxy.getPort() ) : null );
- verify( query, "proxyUsername", ( proxy != null ) ? proxy.getUserName() : null );
- verify( query, "proxyPassword", ( proxy != null ) ? proxy.getPassword() : null );
- }
-
- return getFilesystem( uri.getHost() );
- }
-
- private static void verify( String query, String key, String value )
- throws ConnectionException
- {
- int index = query.indexOf( key + "=" );
- if ( index < 0 )
- {
- return;
- }
- String expected = query.substring( index + key.length() + 1 );
- index = expected.indexOf( "&" );
- if ( index >= 0 )
- {
- expected = expected.substring( 0, index );
- }
-
- if ( expected.length() == 0 )
- {
- if ( value != null )
- {
- throw new ConnectionException( "Bad " + key + ": " + value );
- }
- }
- else if ( !expected.equals( value ) )
- {
- throw new ConnectionException( "Bad " + key + ": " + value );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/PlexusSupportTest.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/PlexusSupportTest.java b/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/PlexusSupportTest.java
deleted file mode 100644
index 231fa95..0000000
--- a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/PlexusSupportTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.codehaus.plexus.ContainerConfiguration;
-import org.codehaus.plexus.PlexusTestCase;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.spi.log.LoggerFactory;
-
-/**
- */
-public class PlexusSupportTest
- extends PlexusTestCase
-{
-
- @Override
- protected void customizeContainerConfiguration( ContainerConfiguration containerConfiguration )
- {
- containerConfiguration.setClassPathScanning( "cache" );
- }
-
- public void testExistenceOfPlexusComponentMetadata()
- throws Exception
- {
- getContainer().addComponent( new TestLoggerFactory(), LoggerFactory.class, null );
-
- TransporterFactory factory = lookup( TransporterFactory.class, "wagon" );
- assertNotNull( factory );
- assertEquals( WagonTransporterFactory.class, factory.getClass() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/RecordingTransportListener.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/RecordingTransportListener.java b/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/RecordingTransportListener.java
deleted file mode 100644
index 7f61985..0000000
--- a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/RecordingTransportListener.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-
-import org.eclipse.aether.spi.connector.transport.TransportListener;
-import org.eclipse.aether.transfer.TransferCancelledException;
-
-class RecordingTransportListener
- extends TransportListener
-{
-
- public final ByteArrayOutputStream baos = new ByteArrayOutputStream( 1024 );
-
- public long dataOffset;
-
- public long dataLength;
-
- public int startedCount;
-
- public int progressedCount;
-
- public boolean cancelStart;
-
- public boolean cancelProgress;
-
- @Override
- public void transportStarted( long dataOffset, long dataLength )
- throws TransferCancelledException
- {
- startedCount++;
- progressedCount = 0;
- this.dataLength = dataLength;
- this.dataOffset = dataOffset;
- baos.reset();
- if ( cancelStart )
- {
- throw new TransferCancelledException();
- }
- }
-
- @Override
- public void transportProgressed( ByteBuffer data )
- throws TransferCancelledException
- {
- progressedCount++;
- baos.write( data.array(), data.arrayOffset() + data.position(), data.remaining() );
- if ( cancelProgress )
- {
- throw new TransferCancelledException();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/StreamWagonTransporterTest.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/StreamWagonTransporterTest.java b/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/StreamWagonTransporterTest.java
deleted file mode 100644
index c3f3fd4..0000000
--- a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/StreamWagonTransporterTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.apache.maven.wagon.Wagon;
-
-/**
- */
-public class StreamWagonTransporterTest
- extends AbstractWagonTransporterTest
-{
-
- @Override
- protected Wagon newWagon()
- {
- return new MemStreamWagon();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/WagonTransporterTest.java
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/WagonTransporterTest.java b/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/WagonTransporterTest.java
deleted file mode 100644
index 5a10399..0000000
--- a/aether-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/WagonTransporterTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.eclipse.aether.transport.wagon;
-
-/*
- * 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.apache.maven.wagon.Wagon;
-
-/**
- */
-public class WagonTransporterTest
- extends AbstractWagonTransporterTest
-{
-
- @Override
- protected Wagon newWagon()
- {
- return new MemWagon();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-transport-wagon/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/aether-transport-wagon/src/test/resources/logback-test.xml b/aether-transport-wagon/src/test/resources/logback-test.xml
deleted file mode 100644
index d031998..0000000
--- a/aether-transport-wagon/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- ! 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.
- !-->
-
-<configuration>
- <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <pattern>%d{HH:mm:ss.SSS} [%-18thread] %c{1} [%p] %m%n</pattern>
- </encoder>
- </appender>
-
- <logger name="org.sonatype.tests.jetty.server" level="INFO"/>
- <logger name="org.sonatype.tests.jetty.server.behaviour" level="DEBUG"/>
- <logger name="org.sonatype.tests" level="DEBUG"/>
-
- <root level="WARN">
- <appender-ref ref="CONSOLE"/>
- </root>
-</configuration>
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/pom.xml
----------------------------------------------------------------------
diff --git a/aether-util/pom.xml b/aether-util/pom.xml
deleted file mode 100644
index 2e3d0a5..0000000
--- a/aether-util/pom.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- 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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>aether-util</artifactId>
-
- <name>Aether Utilities</name>
- <description>
- A collection of utility classes to ease usage of the repository system.
- </description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.aether</groupId>
- <artifactId>aether-test-util</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
[16/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/ChecksumUtils.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/ChecksumUtils.java b/aether-util/src/main/java/org/eclipse/aether/util/ChecksumUtils.java
deleted file mode 100644
index f4b9b74..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/ChecksumUtils.java
+++ /dev/null
@@ -1,205 +0,0 @@
-package org.eclipse.aether.util;
-
-/*
- * 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.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * A utility class to assist in the verification and generation of checksums.
- */
-public final class ChecksumUtils
-{
-
- private ChecksumUtils()
- {
- // hide constructor
- }
-
- /**
- * Extracts the checksum from the specified file.
- *
- * @param checksumFile The path to the checksum file, must not be {@code null}.
- * @return The checksum stored in the file, never {@code null}.
- * @throws IOException If the checksum does not exist or could not be read for other reasons.
- */
- public static String read( File checksumFile )
- throws IOException
- {
- String checksum = "";
- BufferedReader reader = null;
- try
- {
- reader = new BufferedReader( new InputStreamReader( new FileInputStream( checksumFile ), "UTF-8" ), 512 );
- for ( String line = reader.readLine(); line != null; line = reader.readLine() )
- {
- line = line.trim();
- if ( line.length() > 0 )
- {
- checksum = line;
- break;
- }
- }
- reader.close();
- reader = null;
- }
- finally
- {
- try
- {
- if ( reader != null )
- {
- reader.close();
- }
- }
- catch ( IOException e )
- {
- // Suppressed
- }
- }
-
- if ( checksum.matches( ".+= [0-9A-Fa-f]+" ) )
- {
- int lastSpacePos = checksum.lastIndexOf( ' ' );
- checksum = checksum.substring( lastSpacePos + 1 );
- }
- else
- {
- int spacePos = checksum.indexOf( ' ' );
-
- if ( spacePos != -1 )
- {
- checksum = checksum.substring( 0, spacePos );
- }
- }
-
- return checksum;
- }
-
- /**
- * Calculates checksums for the specified file.
- *
- * @param dataFile The file for which to calculate checksums, must not be {@code null}.
- * @param algos The names of checksum algorithms (cf. {@link MessageDigest#getInstance(String)} to use, must not be
- * {@code null}.
- * @return The calculated checksums, indexed by algorithm name, or the exception that occurred while trying to
- * calculate it, never {@code null}.
- * @throws IOException If the data file could not be read.
- */
- public static Map<String, Object> calc( File dataFile, Collection<String> algos )
- throws IOException
- {
- Map<String, Object> results = new LinkedHashMap<String, Object>();
-
- Map<String, MessageDigest> digests = new LinkedHashMap<String, MessageDigest>();
- for ( String algo : algos )
- {
- try
- {
- digests.put( algo, MessageDigest.getInstance( algo ) );
- }
- catch ( NoSuchAlgorithmException e )
- {
- results.put( algo, e );
- }
- }
-
- FileInputStream in = null;
- try
- {
- in = new FileInputStream( dataFile );
- for ( byte[] buffer = new byte[ 32 * 1024 ];; )
- {
- int read = in.read( buffer );
- if ( read < 0 )
- {
- break;
- }
- for ( MessageDigest digest : digests.values() )
- {
- digest.update( buffer, 0, read );
- }
- }
- in.close();
- in = null;
- }
- finally
- {
- try
- {
- if ( in != null )
- {
- in.close();
- }
- }
- catch ( IOException e )
- {
- // Suppressed
- }
- }
-
- for ( Map.Entry<String, MessageDigest> entry : digests.entrySet() )
- {
- byte[] bytes = entry.getValue().digest();
-
- results.put( entry.getKey(), toHexString( bytes ) );
- }
-
- return results;
- }
-
- /**
- * Creates a hexadecimal representation of the specified bytes. Each byte is converted into a two-digit hex number
- * and appended to the result with no separator between consecutive bytes.
- *
- * @param bytes The bytes to represent in hex notation, may be be {@code null}.
- * @return The hexadecimal representation of the input or {@code null} if the input was {@code null}.
- */
- public static String toHexString( byte[] bytes )
- {
- if ( bytes == null )
- {
- return null;
- }
-
- StringBuilder buffer = new StringBuilder( bytes.length * 2 );
-
- for ( byte aByte : bytes )
- {
- int b = aByte & 0xFF;
- if ( b < 0x10 )
- {
- buffer.append( '0' );
- }
- buffer.append( Integer.toHexString( b ) );
- }
-
- return buffer.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/ConfigUtils.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/ConfigUtils.java b/aether-util/src/main/java/org/eclipse/aether/util/ConfigUtils.java
deleted file mode 100644
index c19c113..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/ConfigUtils.java
+++ /dev/null
@@ -1,398 +0,0 @@
-package org.eclipse.aether.util;
-
-/*
- * 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 java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.RepositorySystemSession;
-
-/**
- * A utility class to read configuration properties from a repository system session.
- *
- * @see RepositorySystemSession#getConfigProperties()
- */
-public final class ConfigUtils
-{
-
- private ConfigUtils()
- {
- // hide constructor
- }
-
- /**
- * Gets the specified configuration property as is.
- *
- * @param properties The configuration properties to read, must not be {@code null}.
- * @param defaultValue The default value to return in case none of the property keys are set, may be {@code null}.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a valid value is found.
- * @return The property value or {@code null} if none.
- */
- public static Object getObject( Map<?, ?> properties, Object defaultValue, String... keys )
- {
- for ( String key : keys )
- {
- Object value = properties.get( key );
-
- if ( value != null )
- {
- return value;
- }
- }
-
- return defaultValue;
- }
-
- /**
- * Gets the specified configuration property as is.
- *
- * @param session The repository system session from which to read the configuration property, must not be
- * {@code null}.
- * @param defaultValue The default value to return in case none of the property keys are set, may be {@code null}.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a valid value is found.
- * @return The property value or {@code null} if none.
- */
- public static Object getObject( RepositorySystemSession session, Object defaultValue, String... keys )
- {
- return getObject( session.getConfigProperties(), defaultValue, keys );
- }
-
- /**
- * Gets the specified configuration property as a string value.
- *
- * @param properties The configuration properties to read, must not be {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a
- * string/boolean/number, may be {@code null}.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a string value is found.
- * @return The property value or {@code null} if none.
- */
- public static String getString( Map<?, ?> properties, String defaultValue, String... keys )
- {
- for ( String key : keys )
- {
- Object value = properties.get( key );
-
- if ( value instanceof String || value instanceof Boolean || value instanceof Number )
- {
- return value.toString();
- }
- }
-
- return defaultValue;
- }
-
- /**
- * Gets the specified configuration property as a string value.
- *
- * @param session The repository system session from which to read the configuration property, must not be
- * {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a
- * string/boolean/number, may be {@code null}.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a string value is found.
- * @return The property value or {@code null} if none.
- */
- public static String getString( RepositorySystemSession session, String defaultValue, String... keys )
- {
- return getString( session.getConfigProperties(), defaultValue, keys );
- }
-
- /**
- * Gets the specified configuration property as an integer number.
- *
- * @param properties The configuration properties to read, must not be {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a number or numeric
- * string.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a {@link Number} or a string representation of an {@link Integer} is found.
- * @return The property value.
- */
- public static int getInteger( Map<?, ?> properties, int defaultValue, String... keys )
- {
- for ( String key : keys )
- {
- Object value = properties.get( key );
-
- if ( value instanceof Number )
- {
- return ( (Number) value ).intValue();
- }
-
- try
- {
- return Integer.valueOf( (String) value );
- }
- catch ( Exception e )
- {
- // try next key
- }
- }
-
- return defaultValue;
- }
-
- /**
- * Gets the specified configuration property as an integer number.
- *
- * @param session The repository system session from which to read the configuration property, must not be
- * {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a number or numeric
- * string.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a {@link Number} or a string representation of an {@link Integer} is found.
- * @return The property value.
- */
- public static int getInteger( RepositorySystemSession session, int defaultValue, String... keys )
- {
- return getInteger( session.getConfigProperties(), defaultValue, keys );
- }
-
- /**
- * Gets the specified configuration property as a long number.
- *
- * @param properties The configuration properties to read, must not be {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a number or numeric
- * string.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a {@link Number} or a string representation of a {@link Long} is found.
- * @return The property value.
- */
- public static long getLong( Map<?, ?> properties, long defaultValue, String... keys )
- {
- for ( String key : keys )
- {
- Object value = properties.get( key );
-
- if ( value instanceof Number )
- {
- return ( (Number) value ).longValue();
- }
-
- try
- {
- return Long.valueOf( (String) value );
- }
- catch ( Exception e )
- {
- // try next key
- }
- }
-
- return defaultValue;
- }
-
- /**
- * Gets the specified configuration property as a long number.
- *
- * @param session The repository system session from which to read the configuration property, must not be
- * {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a number or numeric
- * string.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a {@link Number} or a string representation of a {@link Long} is found.
- * @return The property value.
- */
- public static long getLong( RepositorySystemSession session, long defaultValue, String... keys )
- {
- return getLong( session.getConfigProperties(), defaultValue, keys );
- }
-
- /**
- * Gets the specified configuration property as a single-precision floating point number.
- *
- * @param properties The configuration properties to read, must not be {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a number or numeric
- * string.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a {@link Number} or a string representation of a {@link Float} is found.
- * @return The property value.
- */
- public static float getFloat( Map<?, ?> properties, float defaultValue, String... keys )
- {
- for ( String key : keys )
- {
- Object value = properties.get( key );
-
- if ( value instanceof Number )
- {
- return ( (Number) value ).floatValue();
- }
-
- try
- {
- return Float.valueOf( (String) value );
- }
- catch ( Exception e )
- {
- // try next key
- }
- }
-
- return defaultValue;
- }
-
- /**
- * Gets the specified configuration property as a single-precision floating point number.
- *
- * @param session The repository system session from which to read the configuration property, must not be
- * {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a number or numeric
- * string.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a {@link Number} or a string representation of a {@link Float} is found.
- * @return The property value.
- */
- public static float getFloat( RepositorySystemSession session, float defaultValue, String... keys )
- {
- return getFloat( session.getConfigProperties(), defaultValue, keys );
- }
-
- /**
- * Gets the specified configuration property as boolean flag.
- *
- * @param properties The configuration properties to read, must not be {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a boolean or string.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a {@link Boolean} or a string (to be {@link Boolean#parseBoolean(String) parsed as boolean}) is found.
- * @return The property value.
- */
- public static boolean getBoolean( Map<?, ?> properties, boolean defaultValue, String... keys )
- {
- for ( String key : keys )
- {
- Object value = properties.get( key );
-
- if ( value instanceof Boolean )
- {
- return (Boolean) value;
- }
- else if ( value instanceof String )
- {
- return Boolean.parseBoolean( (String) value );
- }
- }
-
- return defaultValue;
- }
-
- /**
- * Gets the specified configuration property as a boolean flag.
- *
- * @param session The repository system session from which to read the configuration property, must not be
- * {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a boolean or string.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a {@link Boolean} or a string (to be {@link Boolean#parseBoolean(String) parsed as boolean}) is found.
- * @return The property value.
- */
- public static boolean getBoolean( RepositorySystemSession session, boolean defaultValue, String... keys )
- {
- return getBoolean( session.getConfigProperties(), defaultValue, keys );
- }
-
- /**
- * Gets the specified configuration property as a list of objects.
- *
- * @param properties The configuration properties to read, must not be {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a collection.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a collection is found.
- * @return The property value or {@code null} if none.
- */
- public static List<?> getList( Map<?, ?> properties, List<?> defaultValue, String... keys )
- {
- for ( String key : keys )
- {
- Object value = properties.get( key );
-
- if ( value instanceof List )
- {
- return (List<?>) value;
- }
- else if ( value instanceof Collection )
- {
- return Collections.unmodifiableList( new ArrayList<Object>( (Collection<?>) value ) );
- }
- }
-
- return defaultValue;
- }
-
- /**
- * Gets the specified configuration property as a list of objects.
- *
- * @param session The repository system session from which to read the configuration property, must not be
- * {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a collection.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a collection is found.
- * @return The property value or {@code null} if none.
- */
- public static List<?> getList( RepositorySystemSession session, List<?> defaultValue, String... keys )
- {
- return getList( session.getConfigProperties(), defaultValue, keys );
- }
-
- /**
- * Gets the specified configuration property as a map or key value pairs.
- *
- * @param properties The configuration properties to read, must not be {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a map.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a map is found.
- * @return The property value or {@code null} if none.
- */
- public static Map<?, ?> getMap( Map<?, ?> properties, Map<?, ?> defaultValue, String... keys )
- {
- for ( String key : keys )
- {
- Object value = properties.get( key );
-
- if ( value instanceof Map )
- {
- return (Map<?, ?>) value;
- }
- }
-
- return defaultValue;
- }
-
- /**
- * Gets the specified configuration property as map of key value pairs.
- *
- * @param session The repository system session from which to read the configuration property, must not be
- * {@code null}.
- * @param defaultValue The default value to return in case none of the property keys is set to a map.
- * @param keys The property keys to read, must not be {@code null}. The specified keys are read one after one until
- * a map is found.
- * @return The property value or {@code null} if none.
- */
- public static Map<?, ?> getMap( RepositorySystemSession session, Map<?, ?> defaultValue, String... keys )
- {
- return getMap( session.getConfigProperties(), defaultValue, keys );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/StringUtils.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/StringUtils.java b/aether-util/src/main/java/org/eclipse/aether/util/StringUtils.java
deleted file mode 100644
index e0ed12a..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/StringUtils.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.eclipse.aether.util;
-
-/*
- * 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 utility class to ease string processing.
- */
-public final class StringUtils
-{
-
- private StringUtils()
- {
- // hide constructor
- }
-
- /**
- * Checks whether a string is {@code null} or of zero length.
- *
- * @param string The string to check, may be {@code null}.
- * @return {@code true} if the string is {@code null} or of zero length, {@code false} otherwise.
- */
- public static boolean isEmpty( String string )
- {
- return string == null || string.length() <= 0;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/artifact/ArtifactIdUtils.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/artifact/ArtifactIdUtils.java b/aether-util/src/main/java/org/eclipse/aether/util/artifact/ArtifactIdUtils.java
deleted file mode 100644
index 54ffc64..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/artifact/ArtifactIdUtils.java
+++ /dev/null
@@ -1,269 +0,0 @@
-package org.eclipse.aether.util.artifact;
-
-/*
- * 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.artifact.Artifact;
-
-/**
- * A utility class for artifact identifiers.
- */
-public final class ArtifactIdUtils
-{
-
- private static final char SEP = ':';
-
- private ArtifactIdUtils()
- {
- // hide constructor
- }
-
- /**
- * Creates an artifact identifier of the form {@code <groupId>:<artifactId>:<extension>[:<classifier>]:<version>}.
- *
- * @param artifact The artifact to create an identifer for, may be {@code null}.
- * @return The artifact identifier or {@code null} if the input was {@code null}.
- */
- public static String toId( Artifact artifact )
- {
- String id = null;
- if ( artifact != null )
- {
- id =
- toId( artifact.getGroupId(), artifact.getArtifactId(), artifact.getExtension(),
- artifact.getClassifier(), artifact.getVersion() );
- }
- return id;
- }
-
- /**
- * Creates an artifact identifier of the form {@code <groupId>:<artifactId>:<extension>[:<classifier>]:<version>}.
- *
- * @param groupId The group id, may be {@code null}.
- * @param artifactId The artifact id, may be {@code null}.
- * @param extension The file extensiion, may be {@code null}.
- * @param classifier The classifier, may be {@code null}.
- * @param version The version, may be {@code null}.
- * @return The artifact identifier, never {@code null}.
- */
- public static String toId( String groupId, String artifactId, String extension, String classifier, String version )
- {
- StringBuilder buffer = concat( groupId, artifactId, extension, classifier );
- buffer.append( SEP );
- if ( version != null )
- {
- buffer.append( version );
- }
- return buffer.toString();
- }
-
- /**
- * Creates an artifact identifier of the form
- * {@code <groupId>:<artifactId>:<extension>[:<classifier>]:<baseVersion>}.
- *
- * @param artifact The artifact to create an identifer for, may be {@code null}.
- * @return The artifact identifier or {@code null} if the input was {@code null}.
- */
- public static String toBaseId( Artifact artifact )
- {
- String id = null;
- if ( artifact != null )
- {
- id =
- toId( artifact.getGroupId(), artifact.getArtifactId(), artifact.getExtension(),
- artifact.getClassifier(), artifact.getBaseVersion() );
- }
- return id;
- }
-
- /**
- * Creates an artifact identifier of the form {@code <groupId>:<artifactId>:<extension>[:<classifier>]}.
- *
- * @param artifact The artifact to create an identifer for, may be {@code null}.
- * @return The artifact identifier or {@code null} if the input was {@code null}.
- */
- public static String toVersionlessId( Artifact artifact )
- {
- String id = null;
- if ( artifact != null )
- {
- id =
- toVersionlessId( artifact.getGroupId(), artifact.getArtifactId(), artifact.getExtension(),
- artifact.getClassifier() );
- }
- return id;
- }
-
- /**
- * Creates an artifact identifier of the form {@code <groupId>:<artifactId>:<extension>[:<classifier>]}.
- *
- * @param groupId The group id, may be {@code null}.
- * @param artifactId The artifact id, may be {@code null}.
- * @param extension The file extensiion, may be {@code null}.
- * @param classifier The classifier, may be {@code null}.
- * @return The artifact identifier, never {@code null}.
- */
- public static String toVersionlessId( String groupId, String artifactId, String extension, String classifier )
- {
- return concat( groupId, artifactId, extension, classifier ).toString();
- }
-
- private static StringBuilder concat( String groupId, String artifactId, String extension, String classifier )
- {
- StringBuilder buffer = new StringBuilder( 128 );
-
- if ( groupId != null )
- {
- buffer.append( groupId );
- }
- buffer.append( SEP );
- if ( artifactId != null )
- {
- buffer.append( artifactId );
- }
- buffer.append( SEP );
- if ( extension != null )
- {
- buffer.append( extension );
- }
- if ( classifier != null && classifier.length() > 0 )
- {
- buffer.append( SEP ).append( classifier );
- }
-
- return buffer;
- }
-
- /**
- * Determines whether two artifacts have the same identifier. This method is equivalent to calling
- * {@link String#equals(Object)} on the return values from {@link #toId(Artifact)} for the artifacts but does not
- * incur the overhead of creating temporary strings.
- *
- * @param artifact1 The first artifact, may be {@code null}.
- * @param artifact2 The second artifact, may be {@code null}.
- * @return {@code true} if both artifacts are not {@code null} and have equal ids, {@code false} otherwise.
- */
- public static boolean equalsId( Artifact artifact1, Artifact artifact2 )
- {
- if ( artifact1 == null || artifact2 == null )
- {
- return false;
- }
- if ( !eq( artifact1.getArtifactId(), artifact2.getArtifactId() ) )
- {
- return false;
- }
- if ( !eq( artifact1.getGroupId(), artifact2.getGroupId() ) )
- {
- return false;
- }
- if ( !eq( artifact1.getExtension(), artifact2.getExtension() ) )
- {
- return false;
- }
- if ( !eq( artifact1.getClassifier(), artifact2.getClassifier() ) )
- {
- return false;
- }
- if ( !eq( artifact1.getVersion(), artifact2.getVersion() ) )
- {
- return false;
- }
- return true;
- }
-
- /**
- * Determines whether two artifacts have the same base identifier. This method is equivalent to calling
- * {@link String#equals(Object)} on the return values from {@link #toBaseId(Artifact)} for the artifacts but does
- * not incur the overhead of creating temporary strings.
- *
- * @param artifact1 The first artifact, may be {@code null}.
- * @param artifact2 The second artifact, may be {@code null}.
- * @return {@code true} if both artifacts are not {@code null} and have equal base ids, {@code false} otherwise.
- */
- public static boolean equalsBaseId( Artifact artifact1, Artifact artifact2 )
- {
- if ( artifact1 == null || artifact2 == null )
- {
- return false;
- }
- if ( !eq( artifact1.getArtifactId(), artifact2.getArtifactId() ) )
- {
- return false;
- }
- if ( !eq( artifact1.getGroupId(), artifact2.getGroupId() ) )
- {
- return false;
- }
- if ( !eq( artifact1.getExtension(), artifact2.getExtension() ) )
- {
- return false;
- }
- if ( !eq( artifact1.getClassifier(), artifact2.getClassifier() ) )
- {
- return false;
- }
- if ( !eq( artifact1.getBaseVersion(), artifact2.getBaseVersion() ) )
- {
- return false;
- }
- return true;
- }
-
- /**
- * Determines whether two artifacts have the same versionless identifier. This method is equivalent to calling
- * {@link String#equals(Object)} on the return values from {@link #toVersionlessId(Artifact)} for the artifacts but
- * does not incur the overhead of creating temporary strings.
- *
- * @param artifact1 The first artifact, may be {@code null}.
- * @param artifact2 The second artifact, may be {@code null}.
- * @return {@code true} if both artifacts are not {@code null} and have equal versionless ids, {@code false}
- * otherwise.
- */
- public static boolean equalsVersionlessId( Artifact artifact1, Artifact artifact2 )
- {
- if ( artifact1 == null || artifact2 == null )
- {
- return false;
- }
- if ( !eq( artifact1.getArtifactId(), artifact2.getArtifactId() ) )
- {
- return false;
- }
- if ( !eq( artifact1.getGroupId(), artifact2.getGroupId() ) )
- {
- return false;
- }
- if ( !eq( artifact1.getExtension(), artifact2.getExtension() ) )
- {
- return false;
- }
- if ( !eq( artifact1.getClassifier(), artifact2.getClassifier() ) )
- {
- return false;
- }
- return true;
- }
-
- private static <T> boolean eq( T s1, T s2 )
- {
- return s1 != null ? s1.equals( s2 ) : s2 == null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/artifact/DefaultArtifactTypeRegistry.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/artifact/DefaultArtifactTypeRegistry.java b/aether-util/src/main/java/org/eclipse/aether/util/artifact/DefaultArtifactTypeRegistry.java
deleted file mode 100644
index 9fb29af..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/artifact/DefaultArtifactTypeRegistry.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.eclipse.aether.util.artifact;
-
-/*
- * 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.artifact.ArtifactType;
-
-/**
- * A simple artifact type registry.
- */
-public final class DefaultArtifactTypeRegistry
- extends SimpleArtifactTypeRegistry
-{
-
- /**
- * Creates a new artifact type registry with initally no registered artifact types. Use {@link #add(ArtifactType)}
- * to populate the registry.
- */
- public DefaultArtifactTypeRegistry()
- {
- }
-
- /**
- * Adds the specified artifact type to the registry.
- *
- * @param type The artifact type to add, must not be {@code null}.
- * @return This registry for chaining, never {@code null}.
- */
- public DefaultArtifactTypeRegistry add( ArtifactType type )
- {
- super.add( type );
- return this;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/artifact/DelegatingArtifact.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/artifact/DelegatingArtifact.java b/aether-util/src/main/java/org/eclipse/aether/util/artifact/DelegatingArtifact.java
deleted file mode 100644
index 8816ae5..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/artifact/DelegatingArtifact.java
+++ /dev/null
@@ -1,169 +0,0 @@
-package org.eclipse.aether.util.artifact;
-
-/*
- * 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;
-
-import org.eclipse.aether.artifact.AbstractArtifact;
-import org.eclipse.aether.artifact.Artifact;
-
-/**
- * An artifact that delegates to another artifact instance. This class serves as a base for subclasses that want to
- * carry additional data fields.
- */
-public abstract class DelegatingArtifact
- extends AbstractArtifact
-{
-
- private final Artifact delegate;
-
- /**
- * Creates a new artifact instance that delegates to the specified artifact.
- *
- * @param delegate The artifact to delegate to, must not be {@code null}.
- */
- protected DelegatingArtifact( Artifact delegate )
- {
- if ( delegate == null )
- {
- throw new IllegalArgumentException( "delegate artifact not specified" );
- }
- this.delegate = delegate;
- }
-
- /**
- * Creates a new artifact instance that delegates to the specified artifact. Subclasses should use this hook to
- * instantiate themselves, taking along any data from the current instance that was added.
- *
- * @param delegate The artifact to delegate to, must not be {@code null}.
- * @return The new delegating artifact, never {@code null}.
- */
- protected abstract DelegatingArtifact newInstance( Artifact delegate );
-
- public String getGroupId()
- {
- return delegate.getGroupId();
- }
-
- public String getArtifactId()
- {
- return delegate.getArtifactId();
- }
-
- public String getVersion()
- {
- return delegate.getVersion();
- }
-
- public Artifact setVersion( String version )
- {
- Artifact artifact = delegate.setVersion( version );
- if ( artifact != delegate )
- {
- return newInstance( artifact );
- }
- return this;
- }
-
- public String getBaseVersion()
- {
- return delegate.getBaseVersion();
- }
-
- public boolean isSnapshot()
- {
- return delegate.isSnapshot();
- }
-
- public String getClassifier()
- {
- return delegate.getClassifier();
- }
-
- public String getExtension()
- {
- return delegate.getExtension();
- }
-
- public File getFile()
- {
- return delegate.getFile();
- }
-
- public Artifact setFile( File file )
- {
- Artifact artifact = delegate.setFile( file );
- if ( artifact != delegate )
- {
- return newInstance( artifact );
- }
- return this;
- }
-
- public String getProperty( String key, String defaultValue )
- {
- return delegate.getProperty( key, defaultValue );
- }
-
- public Map<String, String> getProperties()
- {
- return delegate.getProperties();
- }
-
- public Artifact setProperties( Map<String, String> properties )
- {
- Artifact artifact = delegate.setProperties( properties );
- if ( artifact != delegate )
- {
- return newInstance( artifact );
- }
- return this;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
- return true;
- }
-
- if ( obj instanceof DelegatingArtifact )
- {
- return delegate.equals( ( (DelegatingArtifact) obj ).delegate );
- }
-
- return delegate.equals( obj );
- }
-
- @Override
- public int hashCode()
- {
- return delegate.hashCode();
- }
-
- @Override
- public String toString()
- {
- return delegate.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/artifact/JavaScopes.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/artifact/JavaScopes.java b/aether-util/src/main/java/org/eclipse/aether/util/artifact/JavaScopes.java
deleted file mode 100644
index bf4894c..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/artifact/JavaScopes.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.eclipse.aether.util.artifact;
-
-/*
- * 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 dependency scopes used for Java dependencies.
- *
- * @see org.eclipse.aether.graph.Dependency#getScope()
- */
-public final class JavaScopes
-{
-
- public static final String COMPILE = "compile";
-
- public static final String PROVIDED = "provided";
-
- public static final String SYSTEM = "system";
-
- public static final String RUNTIME = "runtime";
-
- public static final String TEST = "test";
-
- private JavaScopes()
- {
- // hide constructor
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/artifact/OverlayArtifactTypeRegistry.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/artifact/OverlayArtifactTypeRegistry.java b/aether-util/src/main/java/org/eclipse/aether/util/artifact/OverlayArtifactTypeRegistry.java
deleted file mode 100644
index 6768b16..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/artifact/OverlayArtifactTypeRegistry.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.aether.util.artifact;
-
-/*
- * 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.artifact.ArtifactType;
-import org.eclipse.aether.artifact.ArtifactTypeRegistry;
-
-/**
- * An artifact type registry which first consults its own mappings and in case of an unknown type falls back to another
- * type registry.
- */
-public final class OverlayArtifactTypeRegistry
- extends SimpleArtifactTypeRegistry
-{
-
- private final ArtifactTypeRegistry delegate;
-
- /**
- * Creates a new artifact type registry with initially no registered artifact types and the specified fallback
- * registry. Use {@link #add(ArtifactType)} to populate the registry.
- *
- * @param delegate The artifact type registry to fall back to, may be {@code null}.
- */
- public OverlayArtifactTypeRegistry( ArtifactTypeRegistry delegate )
- {
- this.delegate = delegate;
- }
-
- /**
- * Adds the specified artifact type to the registry.
- *
- * @param type The artifact type to add, must not be {@code null}.
- * @return This registry for chaining, never {@code null}.
- */
- public OverlayArtifactTypeRegistry add( ArtifactType type )
- {
- super.add( type );
- return this;
- }
-
- public ArtifactType get( String typeId )
- {
- ArtifactType type = super.get( typeId );
-
- if ( type == null && delegate != null )
- {
- type = delegate.get( typeId );
- }
-
- return type;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/artifact/SimpleArtifactTypeRegistry.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/artifact/SimpleArtifactTypeRegistry.java b/aether-util/src/main/java/org/eclipse/aether/util/artifact/SimpleArtifactTypeRegistry.java
deleted file mode 100644
index b0bfc9f..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/artifact/SimpleArtifactTypeRegistry.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.aether.util.artifact;
-
-/*
- * 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.HashMap;
-import java.util.Map;
-
-import org.eclipse.aether.artifact.ArtifactType;
-import org.eclipse.aether.artifact.ArtifactTypeRegistry;
-
-/**
- * A simple map-based artifact type registry.
- */
-class SimpleArtifactTypeRegistry
- implements ArtifactTypeRegistry
-{
-
- private final Map<String, ArtifactType> types;
-
- /**
- * Creates a new artifact type registry with initally no registered artifact types. Use {@link #add(ArtifactType)}
- * to populate the registry.
- */
- public SimpleArtifactTypeRegistry()
- {
- types = new HashMap<String, ArtifactType>();
- }
-
- /**
- * Adds the specified artifact type to the registry.
- *
- * @param type The artifact type to add, must not be {@code null}.
- * @return This registry for chaining, never {@code null}.
- */
- public SimpleArtifactTypeRegistry add( ArtifactType type )
- {
- types.put( type.getId(), type );
- return this;
- }
-
- public ArtifactType get( String typeId )
- {
- ArtifactType type = types.get( typeId );
-
- return type;
- }
-
- @Override
- public String toString()
- {
- return types.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/artifact/SubArtifact.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/artifact/SubArtifact.java b/aether-util/src/main/java/org/eclipse/aether/util/artifact/SubArtifact.java
deleted file mode 100644
index ed4d55b..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/artifact/SubArtifact.java
+++ /dev/null
@@ -1,233 +0,0 @@
-package org.eclipse.aether.util.artifact;
-
-/*
- * 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;
-
-import org.eclipse.aether.artifact.AbstractArtifact;
-import org.eclipse.aether.artifact.Artifact;
-
-/**
- * An artifact whose identity is derived from another 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 SubArtifact
- extends AbstractArtifact
-{
-
- private final Artifact mainArtifact;
-
- private final String classifier;
-
- private final String extension;
-
- private final File file;
-
- private final Map<String, String> properties;
-
- /**
- * Creates a new sub artifact. The classifier and extension specified for this artifact may use the asterisk
- * character "*" to refer to the corresponding property of the main artifact. For instance, the classifier
- * "*-sources" can be used to refer to the source attachment of an artifact. Likewise, the extension "*.asc" can be
- * used to refer to the GPG signature of an artifact.
- *
- * @param mainArtifact The artifact from which to derive the identity, must not be {@code null}.
- * @param classifier The classifier for this artifact, may be {@code null} if none.
- * @param extension The extension for this artifact, may be {@code null} if none.
- */
- public SubArtifact( Artifact mainArtifact, String classifier, String extension )
- {
- this( mainArtifact, classifier, extension, (File) null );
- }
-
- /**
- * Creates a new sub artifact. The classifier and extension specified for this artifact may use the asterisk
- * character "*" to refer to the corresponding property of the main artifact. For instance, the classifier
- * "*-sources" can be used to refer to the source attachment of an artifact. Likewise, the extension "*.asc" can be
- * used to refer to the GPG signature of an artifact.
- *
- * @param mainArtifact The artifact from which to derive the identity, must not be {@code null}.
- * @param classifier The classifier for this artifact, may be {@code null} if none.
- * @param extension The extension for this artifact, may be {@code null} if none.
- * @param file The file for this artifact, may be {@code null} if unresolved.
- */
- public SubArtifact( Artifact mainArtifact, String classifier, String extension, File file )
- {
- this( mainArtifact, classifier, extension, null, file );
- }
-
- /**
- * Creates a new sub artifact. The classifier and extension specified for this artifact may use the asterisk
- * character "*" to refer to the corresponding property of the main artifact. For instance, the classifier
- * "*-sources" can be used to refer to the source attachment of an artifact. Likewise, the extension "*.asc" can be
- * used to refer to the GPG signature of an artifact.
- *
- * @param mainArtifact The artifact from which to derive the identity, must not be {@code null}.
- * @param classifier The classifier for this artifact, may be {@code null} if none.
- * @param extension The extension for this artifact, may be {@code null} if none.
- * @param properties The properties of the artifact, may be {@code null}.
- */
- public SubArtifact( Artifact mainArtifact, String classifier, String extension, Map<String, String> properties )
- {
- this( mainArtifact, classifier, extension, properties, null );
- }
-
- /**
- * Creates a new sub artifact. The classifier and extension specified for this artifact may use the asterisk
- * character "*" to refer to the corresponding property of the main artifact. For instance, the classifier
- * "*-sources" can be used to refer to the source attachment of an artifact. Likewise, the extension "*.asc" can be
- * used to refer to the GPG signature of an artifact.
- *
- * @param mainArtifact The artifact from which to derive the identity, must not be {@code null}.
- * @param classifier The classifier for this artifact, may be {@code null} if none.
- * @param extension The extension for this artifact, may be {@code null} if none.
- * @param properties The properties of the artifact, may be {@code null}.
- * @param file The file for this artifact, may be {@code null} if unresolved.
- */
- public SubArtifact( Artifact mainArtifact, String classifier, String extension, Map<String, String> properties,
- File file )
- {
- if ( mainArtifact == null )
- {
- throw new IllegalArgumentException( "no artifact specified" );
- }
- this.mainArtifact = mainArtifact;
- this.classifier = classifier;
- this.extension = extension;
- this.file = file;
- this.properties = copyProperties( properties );
- }
-
- private SubArtifact( Artifact mainArtifact, String classifier, String extension, File file,
- Map<String, String> properties )
- {
- // NOTE: This constructor assumes immutability of the provided properties, for internal use only
- this.mainArtifact = mainArtifact;
- this.classifier = classifier;
- this.extension = extension;
- this.file = file;
- this.properties = properties;
- }
-
- public String getGroupId()
- {
- return mainArtifact.getGroupId();
- }
-
- public String getArtifactId()
- {
- return mainArtifact.getArtifactId();
- }
-
- public String getVersion()
- {
- return mainArtifact.getVersion();
- }
-
- public String getBaseVersion()
- {
- return mainArtifact.getBaseVersion();
- }
-
- public boolean isSnapshot()
- {
- return mainArtifact.isSnapshot();
- }
-
- public String getClassifier()
- {
- return expand( classifier, mainArtifact.getClassifier() );
- }
-
- public String getExtension()
- {
- return expand( extension, mainArtifact.getExtension() );
- }
-
- public File getFile()
- {
- return file;
- }
-
- public Artifact setFile( File file )
- {
- if ( ( this.file == null ) ? file == null : this.file.equals( file ) )
- {
- return this;
- }
- return new SubArtifact( mainArtifact, classifier, extension, file, properties );
- }
-
- public Map<String, String> getProperties()
- {
- return properties;
- }
-
- public Artifact setProperties( Map<String, String> properties )
- {
- if ( this.properties.equals( properties ) || ( properties == null && this.properties.isEmpty() ) )
- {
- return this;
- }
- return new SubArtifact( mainArtifact, classifier, extension, properties, file );
- }
-
- private static String expand( String pattern, String replacement )
- {
- String result = "";
- if ( pattern != null )
- {
- result = pattern.replace( "*", replacement );
-
- if ( replacement.length() <= 0 )
- {
- if ( pattern.startsWith( "*" ) )
- {
- int i = 0;
- for ( ; i < result.length(); i++ )
- {
- char c = result.charAt( i );
- if ( c != '-' && c != '.' )
- {
- break;
- }
- }
- result = result.substring( i );
- }
- if ( pattern.endsWith( "*" ) )
- {
- int i = result.length() - 1;
- for ( ; i >= 0; i-- )
- {
- char c = result.charAt( i );
- if ( c != '-' && c != '.' )
- {
- break;
- }
- }
- result = result.substring( 0, i + 1 );
- }
- }
- }
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/artifact/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/artifact/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/artifact/package-info.java
deleted file mode 100644
index 153159f..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/artifact/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.
- */
-/**
- * Utilities around artifacts and artifact type registries.
- */
-package org.eclipse.aether.util.artifact;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/concurrency/RunnableErrorForwarder.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/concurrency/RunnableErrorForwarder.java b/aether-util/src/main/java/org/eclipse/aether/util/concurrency/RunnableErrorForwarder.java
deleted file mode 100644
index 270ea82..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/concurrency/RunnableErrorForwarder.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package org.eclipse.aether.util.concurrency;
-
-/*
- * 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.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.concurrent.locks.LockSupport;
-
-/**
- * A utility class to forward any uncaught {@link Error} or {@link RuntimeException} from a {@link Runnable} executed in
- * a worker thread back to the parent thread. The simplified usage pattern looks like this:
- *
- * <pre>
- * RunnableErrorForwarder errorForwarder = new RunnableErrorForwarder();
- * for ( Runnable task : tasks )
- * {
- * executor.execute( errorForwarder.wrap( task ) );
- * }
- * errorForwarder.await();
- * </pre>
- */
-public final class RunnableErrorForwarder
-{
-
- private final Thread thread = Thread.currentThread();
-
- private final AtomicInteger counter = new AtomicInteger();
-
- private final AtomicReference<Throwable> error = new AtomicReference<Throwable>();
-
- /**
- * Creates a new error forwarder for worker threads spawned by the current thread.
- */
- public RunnableErrorForwarder()
- {
- }
-
- /**
- * Wraps the specified runnable into an equivalent runnable that will allow forwarding of uncaught errors.
- *
- * @param runnable The runnable from which to forward errors, must not be {@code null}.
- * @return The error-forwarding runnable to eventually execute, never {@code null}.
- */
- public Runnable wrap( final Runnable runnable )
- {
- if ( runnable == null )
- {
- throw new IllegalArgumentException( "runnable missing" );
- }
-
- counter.incrementAndGet();
-
- return new Runnable()
- {
- public void run()
- {
- try
- {
- runnable.run();
- }
- catch ( RuntimeException e )
- {
- error.compareAndSet( null, e );
- throw e;
- }
- catch ( Error e )
- {
- error.compareAndSet( null, e );
- throw e;
- }
- finally
- {
- counter.decrementAndGet();
- LockSupport.unpark( thread );
- }
- }
- };
- }
-
- /**
- * Causes the current thread to wait until all previously {@link #wrap(Runnable) wrapped} runnables have terminated
- * and potentially re-throws an uncaught {@link RuntimeException} or {@link Error} from any of the runnables. In
- * case multiple runnables encountered uncaught errors, one error is arbitrarily selected. <em>Note:</em> This
- * method must be called from the same thread that created this error forwarder instance.
- */
- public void await()
- {
- awaitTerminationOfAllRunnables();
-
- Throwable error = this.error.get();
- if ( error != null )
- {
- if ( error instanceof RuntimeException )
- {
- throw (RuntimeException) error;
- }
- else if ( error instanceof ThreadDeath )
- {
- throw new IllegalStateException( error );
- }
- else if ( error instanceof Error )
- {
- throw (Error) error;
- }
- throw new IllegalStateException( error );
- }
- }
-
- private void awaitTerminationOfAllRunnables()
- {
- if ( !thread.equals( Thread.currentThread() ) )
- {
- throw new IllegalStateException( "wrong caller thread, expected " + thread + " and not "
- + Thread.currentThread() );
- }
-
- boolean interrupted = false;
-
- while ( counter.get() > 0 )
- {
- LockSupport.park();
-
- if ( Thread.interrupted() )
- {
- interrupted = true;
- }
- }
-
- if ( interrupted )
- {
- Thread.currentThread().interrupt();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/concurrency/WorkerThreadFactory.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/concurrency/WorkerThreadFactory.java b/aether-util/src/main/java/org/eclipse/aether/util/concurrency/WorkerThreadFactory.java
deleted file mode 100644
index 26d0fb6..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/concurrency/WorkerThreadFactory.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.eclipse.aether.util.concurrency;
-
-/*
- * 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.concurrent.Executors;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * A factory to create worker threads with a given name prefix.
- */
-public final class WorkerThreadFactory
- implements ThreadFactory
-{
-
- private final ThreadFactory factory;
-
- private final String namePrefix;
-
- private final AtomicInteger threadIndex;
-
- private static final AtomicInteger POOL_INDEX = new AtomicInteger();
-
- /**
- * Creates a new thread factory whose threads will have names using the specified prefix.
- *
- * @param namePrefix The prefix for the thread names, may be {@code null} or empty to derive the prefix from the
- * caller's simple class name.
- */
- public WorkerThreadFactory( String namePrefix )
- {
- this.factory = Executors.defaultThreadFactory();
- this.namePrefix =
- ( ( namePrefix != null && namePrefix.length() > 0 ) ? namePrefix : getCallerSimpleClassName() + '-' )
- + POOL_INDEX.getAndIncrement() + '-';
- threadIndex = new AtomicInteger();
- }
-
- private static String getCallerSimpleClassName()
- {
- StackTraceElement[] stack = new Exception().getStackTrace();
- if ( stack == null || stack.length <= 2 )
- {
- return "Worker-";
- }
- String name = stack[2].getClassName();
- name = name.substring( name.lastIndexOf( '.' ) + 1 );
- return name;
- }
-
- public Thread newThread( Runnable r )
- {
- Thread thread = factory.newThread( r );
- thread.setName( namePrefix + threadIndex.getAndIncrement() );
- thread.setDaemon( true );
- return thread;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/concurrency/package-info.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/concurrency/package-info.java b/aether-util/src/main/java/org/eclipse/aether/util/concurrency/package-info.java
deleted file mode 100644
index 2bb7853..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/concurrency/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.
- */
-/**
- * Utilities for concurrent task processing.
- */
-package org.eclipse.aether.util.concurrency;
-
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/filter/AbstractPatternDependencyFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/filter/AbstractPatternDependencyFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/filter/AbstractPatternDependencyFilter.java
deleted file mode 100644
index d707d26..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/filter/AbstractPatternDependencyFilter.java
+++ /dev/null
@@ -1,232 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionRange;
-import org.eclipse.aether.version.VersionScheme;
-
-/**
- */
-class AbstractPatternDependencyFilter
- implements DependencyFilter
-{
-
- private final Set<String> patterns = new HashSet<String>();
-
- private final VersionScheme versionScheme;
-
- /**
- * Creates a new filter using the specified patterns.
- *
- * @param patterns The include patterns, may be {@code null} or empty to include no artifacts.
- */
- public AbstractPatternDependencyFilter( final String... patterns )
- {
- this( null, patterns );
- }
-
- /**
- * Creates a new filter using the specified patterns.
- *
- * @param versionScheme To be used for parsing versions/version ranges. If {@code null} and pattern specifies a
- * range no artifact will be included.
- * @param patterns The include patterns, may be {@code null} or empty to include no artifacts.
- */
- public AbstractPatternDependencyFilter( final VersionScheme versionScheme, final String... patterns )
- {
- this( versionScheme, patterns == null ? null : Arrays.asList( patterns ) );
- }
-
- /**
- * Creates a new filter using the specified patterns.
- *
- * @param patterns The include patterns, may be {@code null} or empty to include no artifacts.
- */
- public AbstractPatternDependencyFilter( final Collection<String> patterns )
- {
- this( null, patterns );
- }
-
- /**
- * Creates a new filter using the specified patterns and {@link VersionScheme} .
- *
- * @param versionScheme To be used for parsing versions/version ranges. If {@code null} and pattern specifies a
- * range no artifact will be included.
- * @param patterns The include patterns, may be {@code null} or empty to include no artifacts.
- */
- public AbstractPatternDependencyFilter( final VersionScheme versionScheme, final Collection<String> patterns )
- {
- if ( patterns != null )
- {
- this.patterns.addAll( patterns );
- }
- this.versionScheme = versionScheme;
- }
-
- public boolean accept( final DependencyNode node, List<DependencyNode> parents )
- {
- final Dependency dependency = node.getDependency();
- if ( dependency == null )
- {
- return true;
- }
- return accept( dependency.getArtifact() );
- }
-
- protected boolean accept( final Artifact artifact )
- {
- for ( final String pattern : patterns )
- {
- final boolean matched = accept( artifact, pattern );
- if ( matched )
- {
- return true;
- }
- }
- return false;
- }
-
- private boolean accept( final Artifact artifact, final String pattern )
- {
- final String[] tokens =
- new String[] { artifact.getGroupId(), artifact.getArtifactId(), artifact.getExtension(),
- artifact.getBaseVersion() };
-
- final String[] patternTokens = pattern.split( ":" );
-
- // fail immediately if pattern tokens outnumber tokens to match
- boolean matched = ( patternTokens.length <= tokens.length );
-
- for ( int i = 0; matched && i < patternTokens.length; i++ )
- {
- matched = matches( tokens[i], patternTokens[i] );
- }
-
- return matched;
- }
-
- private boolean matches( final String token, final String pattern )
- {
- boolean matches;
-
- // support full wildcard and implied wildcard
- if ( "*".equals( pattern ) || pattern.length() == 0 )
- {
- matches = true;
- }
- // support contains wildcard
- else if ( pattern.startsWith( "*" ) && pattern.endsWith( "*" ) )
- {
- final String contains = pattern.substring( 1, pattern.length() - 1 );
-
- matches = ( token.contains( contains ) );
- }
- // support leading wildcard
- else if ( pattern.startsWith( "*" ) )
- {
- final String suffix = pattern.substring( 1, pattern.length() );
-
- matches = token.endsWith( suffix );
- }
- // support trailing wildcard
- else if ( pattern.endsWith( "*" ) )
- {
- final String prefix = pattern.substring( 0, pattern.length() - 1 );
-
- matches = token.startsWith( prefix );
- }
- // support versions range
- else if ( pattern.startsWith( "[" ) || pattern.startsWith( "(" ) )
- {
- matches = isVersionIncludedInRange( token, pattern );
- }
- // support exact match
- else
- {
- matches = token.equals( pattern );
- }
-
- return matches;
- }
-
- private boolean isVersionIncludedInRange( final String version, final String range )
- {
- if ( versionScheme == null )
- {
- return false;
- }
- else
- {
- try
- {
- final Version parsedVersion = versionScheme.parseVersion( version );
- final VersionRange parsedRange = versionScheme.parseVersionRange( range );
-
- return parsedRange.containsVersion( parsedVersion );
- }
- catch ( final InvalidVersionSpecificationException e )
- {
- return false;
- }
- }
- }
-
- @Override
- public boolean equals( final Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
-
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- final AbstractPatternDependencyFilter that = (AbstractPatternDependencyFilter) obj;
-
- return this.patterns.equals( that.patterns )
- && ( this.versionScheme == null ? that.versionScheme == null
- : this.versionScheme.equals( that.versionScheme ) );
- }
-
- @Override
- public int hashCode()
- {
- int hash = 17;
- hash = hash * 31 + patterns.hashCode();
- hash = hash * 31 + ( ( versionScheme == null ) ? 0 : versionScheme.hashCode() );
- return hash;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/main/java/org/eclipse/aether/util/filter/AndDependencyFilter.java
----------------------------------------------------------------------
diff --git a/aether-util/src/main/java/org/eclipse/aether/util/filter/AndDependencyFilter.java b/aether-util/src/main/java/org/eclipse/aether/util/filter/AndDependencyFilter.java
deleted file mode 100644
index 9997c94..0000000
--- a/aether-util/src/main/java/org/eclipse/aether/util/filter/AndDependencyFilter.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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.Collections;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * A dependency filter that combines zero or more other filters using a logical {@code AND}. The resulting filter
- * accepts a given dependency node if and only if all constituent filters accept it.
- */
-public final class AndDependencyFilter
- implements DependencyFilter
-{
-
- private final Set<DependencyFilter> filters = new LinkedHashSet<DependencyFilter>();
-
- /**
- * Creates a new filter from the specified filters. Prefer {@link #newInstance(DependencyFilter, DependencyFilter)}
- * if any of the input filters might be {@code null}.
- *
- * @param filters The filters to combine, may be {@code null} but must not contain {@code null} elements.
- */
- public AndDependencyFilter( DependencyFilter... filters )
- {
- if ( filters != null )
- {
- Collections.addAll( this.filters, filters );
- }
- }
-
- /**
- * Creates a new filter from the specified filters.
- *
- * @param filters The filters to combine, may be {@code null} but must not contain {@code null} elements.
- */
- public AndDependencyFilter( Collection<DependencyFilter> filters )
- {
- if ( filters != null )
- {
- this.filters.addAll( filters );
- }
- }
-
- /**
- * Creates a new filter from the specified filters.
- *
- * @param filter1 The first filter to combine, may be {@code null}.
- * @param filter2 The second filter to combine, may be {@code null}.
- * @return The combined filter or {@code null} if both filter were {@code null}.
- */
- public static DependencyFilter newInstance( DependencyFilter filter1, DependencyFilter filter2 )
- {
- if ( filter1 == null )
- {
- return filter2;
- }
- else if ( filter2 == null )
- {
- return filter1;
- }
- return new AndDependencyFilter( filter1, filter2 );
- }
-
- public boolean accept( DependencyNode node, List<DependencyNode> parents )
- {
- for ( DependencyFilter filter : filters )
- {
- if ( !filter.accept( node, parents ) )
- {
- return false;
- }
- }
- return true;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj )
- {
- return true;
- }
-
- if ( obj == null || !getClass().equals( obj.getClass() ) )
- {
- return false;
- }
-
- AndDependencyFilter that = (AndDependencyFilter) obj;
-
- return this.filters.equals( that.filters );
- }
-
- @Override
- public int hashCode()
- {
- int hash = getClass().hashCode();
- hash = hash * 31 + filters.hashCode();
- return hash;
- }
-
-}
[38/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
deleted file mode 100644
index 37d296e..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
+++ /dev/null
@@ -1,773 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositoryEvent;
-import org.eclipse.aether.RepositoryEvent.EventType;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.SyncContext;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.ArtifactProperties;
-import org.eclipse.aether.impl.ArtifactResolver;
-import org.eclipse.aether.impl.OfflineController;
-import org.eclipse.aether.impl.RemoteRepositoryManager;
-import org.eclipse.aether.impl.RepositoryConnectorProvider;
-import org.eclipse.aether.impl.RepositoryEventDispatcher;
-import org.eclipse.aether.impl.SyncContextFactory;
-import org.eclipse.aether.impl.UpdateCheck;
-import org.eclipse.aether.impl.UpdateCheckManager;
-import org.eclipse.aether.impl.VersionResolver;
-import org.eclipse.aether.repository.ArtifactRepository;
-import org.eclipse.aether.repository.LocalArtifactRegistration;
-import org.eclipse.aether.repository.LocalArtifactRequest;
-import org.eclipse.aether.repository.LocalArtifactResult;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.repository.WorkspaceReader;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResolutionException;
-import org.eclipse.aether.resolution.ArtifactResult;
-import org.eclipse.aether.resolution.ResolutionErrorPolicy;
-import org.eclipse.aether.resolution.VersionRequest;
-import org.eclipse.aether.resolution.VersionResolutionException;
-import org.eclipse.aether.resolution.VersionResult;
-import org.eclipse.aether.spi.connector.ArtifactDownload;
-import org.eclipse.aether.spi.connector.RepositoryConnector;
-import org.eclipse.aether.spi.io.FileProcessor;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.ArtifactNotFoundException;
-import org.eclipse.aether.transfer.ArtifactTransferException;
-import org.eclipse.aether.transfer.NoRepositoryConnectorException;
-import org.eclipse.aether.transfer.RepositoryOfflineException;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- */
-@Named
-public class DefaultArtifactResolver
- implements ArtifactResolver, Service
-{
-
- private static final String CONFIG_PROP_SNAPSHOT_NORMALIZATION = "aether.artifactResolver.snapshotNormalization";
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private FileProcessor fileProcessor;
-
- private RepositoryEventDispatcher repositoryEventDispatcher;
-
- private VersionResolver versionResolver;
-
- private UpdateCheckManager updateCheckManager;
-
- private RepositoryConnectorProvider repositoryConnectorProvider;
-
- private RemoteRepositoryManager remoteRepositoryManager;
-
- private SyncContextFactory syncContextFactory;
-
- private OfflineController offlineController;
-
- public DefaultArtifactResolver()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultArtifactResolver( FileProcessor fileProcessor, RepositoryEventDispatcher repositoryEventDispatcher,
- VersionResolver versionResolver, UpdateCheckManager updateCheckManager,
- RepositoryConnectorProvider repositoryConnectorProvider,
- RemoteRepositoryManager remoteRepositoryManager, SyncContextFactory syncContextFactory,
- OfflineController offlineController, LoggerFactory loggerFactory )
- {
- setFileProcessor( fileProcessor );
- setRepositoryEventDispatcher( repositoryEventDispatcher );
- setVersionResolver( versionResolver );
- setUpdateCheckManager( updateCheckManager );
- setRepositoryConnectorProvider( repositoryConnectorProvider );
- setRemoteRepositoryManager( remoteRepositoryManager );
- setSyncContextFactory( syncContextFactory );
- setOfflineController( offlineController );
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setFileProcessor( locator.getService( FileProcessor.class ) );
- setRepositoryEventDispatcher( locator.getService( RepositoryEventDispatcher.class ) );
- setVersionResolver( locator.getService( VersionResolver.class ) );
- setUpdateCheckManager( locator.getService( UpdateCheckManager.class ) );
- setRepositoryConnectorProvider( locator.getService( RepositoryConnectorProvider.class ) );
- setRemoteRepositoryManager( locator.getService( RemoteRepositoryManager.class ) );
- setSyncContextFactory( locator.getService( SyncContextFactory.class ) );
- setOfflineController( locator.getService( OfflineController.class ) );
- }
-
- public DefaultArtifactResolver setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultArtifactResolver setFileProcessor( FileProcessor fileProcessor )
- {
- if ( fileProcessor == null )
- {
- throw new IllegalArgumentException( "file processor has not been specified" );
- }
- this.fileProcessor = fileProcessor;
- return this;
- }
-
- public DefaultArtifactResolver setRepositoryEventDispatcher( RepositoryEventDispatcher repositoryEventDispatcher )
- {
- if ( repositoryEventDispatcher == null )
- {
- throw new IllegalArgumentException( "repository event dispatcher has not been specified" );
- }
- this.repositoryEventDispatcher = repositoryEventDispatcher;
- return this;
- }
-
- public DefaultArtifactResolver setVersionResolver( VersionResolver versionResolver )
- {
- if ( versionResolver == null )
- {
- throw new IllegalArgumentException( "version resolver has not been specified" );
- }
- this.versionResolver = versionResolver;
- return this;
- }
-
- public DefaultArtifactResolver setUpdateCheckManager( UpdateCheckManager updateCheckManager )
- {
- if ( updateCheckManager == null )
- {
- throw new IllegalArgumentException( "update check manager has not been specified" );
- }
- this.updateCheckManager = updateCheckManager;
- return this;
- }
-
- public DefaultArtifactResolver setRepositoryConnectorProvider( RepositoryConnectorProvider repositoryConnectorProvider )
- {
- if ( repositoryConnectorProvider == null )
- {
- throw new IllegalArgumentException( "repository connector provider has not been specified" );
- }
- this.repositoryConnectorProvider = repositoryConnectorProvider;
- return this;
- }
-
- public DefaultArtifactResolver setRemoteRepositoryManager( RemoteRepositoryManager remoteRepositoryManager )
- {
- if ( remoteRepositoryManager == null )
- {
- throw new IllegalArgumentException( "remote repository manager has not been specified" );
- }
- this.remoteRepositoryManager = remoteRepositoryManager;
- return this;
- }
-
- public DefaultArtifactResolver setSyncContextFactory( SyncContextFactory syncContextFactory )
- {
- if ( syncContextFactory == null )
- {
- throw new IllegalArgumentException( "sync context factory has not been specified" );
- }
- this.syncContextFactory = syncContextFactory;
- return this;
- }
-
- public DefaultArtifactResolver setOfflineController( OfflineController offlineController )
- {
- if ( offlineController == null )
- {
- throw new IllegalArgumentException( "offline controller has not been specified" );
- }
- this.offlineController = offlineController;
- return this;
- }
-
- public ArtifactResult resolveArtifact( RepositorySystemSession session, ArtifactRequest request )
- throws ArtifactResolutionException
- {
- return resolveArtifacts( session, Collections.singleton( request ) ).get( 0 );
- }
-
- public List<ArtifactResult> resolveArtifacts( RepositorySystemSession session,
- Collection<? extends ArtifactRequest> requests )
- throws ArtifactResolutionException
- {
- SyncContext syncContext = syncContextFactory.newInstance( session, false );
-
- try
- {
- Collection<Artifact> artifacts = new ArrayList<Artifact>( requests.size() );
- for ( ArtifactRequest request : requests )
- {
- if ( request.getArtifact().getProperty( ArtifactProperties.LOCAL_PATH, null ) != null )
- {
- continue;
- }
- artifacts.add( request.getArtifact() );
- }
-
- syncContext.acquire( artifacts, null );
-
- return resolve( session, requests );
- }
- finally
- {
- syncContext.close();
- }
- }
-
- private List<ArtifactResult> resolve( RepositorySystemSession session,
- Collection<? extends ArtifactRequest> requests )
- throws ArtifactResolutionException
- {
- List<ArtifactResult> results = new ArrayList<ArtifactResult>( requests.size() );
- boolean failures = false;
-
- LocalRepositoryManager lrm = session.getLocalRepositoryManager();
- WorkspaceReader workspace = session.getWorkspaceReader();
-
- List<ResolutionGroup> groups = new ArrayList<ResolutionGroup>();
-
- for ( ArtifactRequest request : requests )
- {
- RequestTrace trace = RequestTrace.newChild( request.getTrace(), request );
-
- ArtifactResult result = new ArtifactResult( request );
- results.add( result );
-
- Artifact artifact = request.getArtifact();
- List<RemoteRepository> repos = request.getRepositories();
-
- artifactResolving( session, trace, artifact );
-
- String localPath = artifact.getProperty( ArtifactProperties.LOCAL_PATH, null );
- if ( localPath != null )
- {
- // unhosted artifact, just validate file
- File file = new File( localPath );
- if ( !file.isFile() )
- {
- failures = true;
- result.addException( new ArtifactNotFoundException( artifact, null ) );
- }
- else
- {
- artifact = artifact.setFile( file );
- result.setArtifact( artifact );
- artifactResolved( session, trace, artifact, null, result.getExceptions() );
- }
- continue;
- }
-
- VersionResult versionResult;
- try
- {
- VersionRequest versionRequest = new VersionRequest( artifact, repos, request.getRequestContext() );
- versionRequest.setTrace( trace );
- versionResult = versionResolver.resolveVersion( session, versionRequest );
- }
- catch ( VersionResolutionException e )
- {
- result.addException( e );
- continue;
- }
-
- artifact = artifact.setVersion( versionResult.getVersion() );
-
- if ( versionResult.getRepository() != null )
- {
- if ( versionResult.getRepository() instanceof RemoteRepository )
- {
- repos = Collections.singletonList( (RemoteRepository) versionResult.getRepository() );
- }
- else
- {
- repos = Collections.emptyList();
- }
- }
-
- if ( workspace != null )
- {
- File file = workspace.findArtifact( artifact );
- if ( file != null )
- {
- artifact = artifact.setFile( file );
- result.setArtifact( artifact );
- result.setRepository( workspace.getRepository() );
- artifactResolved( session, trace, artifact, result.getRepository(), null );
- continue;
- }
- }
-
- LocalArtifactResult local =
- lrm.find( session, new LocalArtifactRequest( artifact, repos, request.getRequestContext() ) );
- if ( isLocallyInstalled( local, versionResult ) )
- {
- if ( local.getRepository() != null )
- {
- result.setRepository( local.getRepository() );
- }
- else
- {
- result.setRepository( lrm.getRepository() );
- }
- try
- {
- artifact = artifact.setFile( getFile( session, artifact, local.getFile() ) );
- result.setArtifact( artifact );
- artifactResolved( session, trace, artifact, result.getRepository(), null );
- }
- catch ( ArtifactTransferException e )
- {
- result.addException( e );
- }
- if ( !local.isAvailable() )
- {
- /*
- * NOTE: Interop with simple local repository: An artifact installed by a simple local repo manager
- * will not show up in the repository tracking file of the enhanced local repository. If however the
- * maven-metadata-local.xml tells us the artifact was installed locally, we sync the repository
- * tracking file.
- */
- lrm.add( session, new LocalArtifactRegistration( artifact ) );
- }
- continue;
- }
- else if ( local.getFile() != null )
- {
- logger.debug( "Verifying availability of " + local.getFile() + " from " + repos );
- }
-
- AtomicBoolean resolved = new AtomicBoolean( false );
- Iterator<ResolutionGroup> groupIt = groups.iterator();
- for ( RemoteRepository repo : repos )
- {
- if ( !repo.getPolicy( artifact.isSnapshot() ).isEnabled() )
- {
- continue;
- }
-
- try
- {
- Utils.checkOffline( session, offlineController, repo );
- }
- catch ( RepositoryOfflineException e )
- {
- Exception exception =
- new ArtifactNotFoundException( artifact, repo, "Cannot access " + repo.getId() + " ("
- + repo.getUrl() + ") in offline mode and the artifact " + artifact
- + " has not been downloaded from it before.", e );
- result.addException( exception );
- continue;
- }
-
- ResolutionGroup group = null;
- while ( groupIt.hasNext() )
- {
- ResolutionGroup t = groupIt.next();
- if ( t.matches( repo ) )
- {
- group = t;
- break;
- }
- }
- if ( group == null )
- {
- group = new ResolutionGroup( repo );
- groups.add( group );
- groupIt = Collections.<ResolutionGroup>emptyList().iterator();
- }
- group.items.add( new ResolutionItem( trace, artifact, resolved, result, local, repo ) );
- }
- }
-
- for ( ResolutionGroup group : groups )
- {
- performDownloads( session, group );
- }
-
- for ( ArtifactResult result : results )
- {
- ArtifactRequest request = result.getRequest();
-
- Artifact artifact = result.getArtifact();
- if ( artifact == null || artifact.getFile() == null )
- {
- failures = true;
- if ( result.getExceptions().isEmpty() )
- {
- Exception exception = new ArtifactNotFoundException( request.getArtifact(), null );
- result.addException( exception );
- }
- RequestTrace trace = RequestTrace.newChild( request.getTrace(), request );
- artifactResolved( session, trace, request.getArtifact(), null, result.getExceptions() );
- }
- }
-
- if ( failures )
- {
- throw new ArtifactResolutionException( results );
- }
-
- return results;
- }
-
- private boolean isLocallyInstalled( LocalArtifactResult lar, VersionResult vr )
- {
- if ( lar.isAvailable() )
- {
- return true;
- }
- if ( lar.getFile() != null )
- {
- if ( vr.getRepository() instanceof LocalRepository )
- {
- // resolution of (snapshot) version found locally installed artifact
- return true;
- }
- else if ( vr.getRepository() == null && lar.getRequest().getRepositories().isEmpty() )
- {
- // resolution of version range found locally installed artifact
- return true;
- }
- }
- return false;
- }
-
- private File getFile( RepositorySystemSession session, Artifact artifact, File file )
- throws ArtifactTransferException
- {
- if ( artifact.isSnapshot() && !artifact.getVersion().equals( artifact.getBaseVersion() )
- && ConfigUtils.getBoolean( session, true, CONFIG_PROP_SNAPSHOT_NORMALIZATION ) )
- {
- String name = file.getName().replace( artifact.getVersion(), artifact.getBaseVersion() );
- File dst = new File( file.getParent(), name );
-
- boolean copy = dst.length() != file.length() || dst.lastModified() != file.lastModified();
- if ( copy )
- {
- try
- {
- fileProcessor.copy( file, dst );
- dst.setLastModified( file.lastModified() );
- }
- catch ( IOException e )
- {
- throw new ArtifactTransferException( artifact, null, e );
- }
- }
-
- file = dst;
- }
-
- return file;
- }
-
- private void performDownloads( RepositorySystemSession session, ResolutionGroup group )
- {
- List<ArtifactDownload> downloads = gatherDownloads( session, group );
- if ( downloads.isEmpty() )
- {
- return;
- }
-
- for ( ArtifactDownload download : downloads )
- {
- artifactDownloading( session, download.getTrace(), download.getArtifact(), group.repository );
- }
-
- try
- {
- RepositoryConnector connector =
- repositoryConnectorProvider.newRepositoryConnector( session, group.repository );
- try
- {
- connector.get( downloads, null );
- }
- finally
- {
- connector.close();
- }
- }
- catch ( NoRepositoryConnectorException e )
- {
- for ( ArtifactDownload download : downloads )
- {
- download.setException( new ArtifactTransferException( download.getArtifact(), group.repository, e ) );
- }
- }
-
- evaluateDownloads( session, group );
- }
-
- private List<ArtifactDownload> gatherDownloads( RepositorySystemSession session, ResolutionGroup group )
- {
- LocalRepositoryManager lrm = session.getLocalRepositoryManager();
- List<ArtifactDownload> downloads = new ArrayList<ArtifactDownload>();
-
- for ( ResolutionItem item : group.items )
- {
- Artifact artifact = item.artifact;
-
- if ( item.resolved.get() )
- {
- // resolved in previous resolution group
- continue;
- }
-
- ArtifactDownload download = new ArtifactDownload();
- download.setArtifact( artifact );
- download.setRequestContext( item.request.getRequestContext() );
- download.setListener( SafeTransferListener.wrap( session, logger ) );
- download.setTrace( item.trace );
- if ( item.local.getFile() != null )
- {
- download.setFile( item.local.getFile() );
- download.setExistenceCheck( true );
- }
- else
- {
- String path =
- lrm.getPathForRemoteArtifact( artifact, group.repository, item.request.getRequestContext() );
- download.setFile( new File( lrm.getRepository().getBasedir(), path ) );
- }
-
- boolean snapshot = artifact.isSnapshot();
- RepositoryPolicy policy =
- remoteRepositoryManager.getPolicy( session, group.repository, !snapshot, snapshot );
-
- int errorPolicy = Utils.getPolicy( session, artifact, group.repository );
- if ( ( errorPolicy & ResolutionErrorPolicy.CACHE_ALL ) != 0 )
- {
- UpdateCheck<Artifact, ArtifactTransferException> check =
- new UpdateCheck<Artifact, ArtifactTransferException>();
- check.setItem( artifact );
- check.setFile( download.getFile() );
- check.setFileValid( false );
- check.setRepository( group.repository );
- check.setPolicy( policy.getUpdatePolicy() );
- item.updateCheck = check;
- updateCheckManager.checkArtifact( session, check );
- if ( !check.isRequired() )
- {
- item.result.addException( check.getException() );
- continue;
- }
- }
-
- download.setChecksumPolicy( policy.getChecksumPolicy() );
- download.setRepositories( item.repository.getMirroredRepositories() );
- downloads.add( download );
- item.download = download;
- }
-
- return downloads;
- }
-
- private void evaluateDownloads( RepositorySystemSession session, ResolutionGroup group )
- {
- LocalRepositoryManager lrm = session.getLocalRepositoryManager();
-
- for ( ResolutionItem item : group.items )
- {
- ArtifactDownload download = item.download;
- if ( download == null )
- {
- continue;
- }
-
- Artifact artifact = download.getArtifact();
- if ( download.getException() == null )
- {
- item.resolved.set( true );
- item.result.setRepository( group.repository );
- try
- {
- artifact = artifact.setFile( getFile( session, artifact, download.getFile() ) );
- item.result.setArtifact( artifact );
-
- lrm.add( session,
- new LocalArtifactRegistration( artifact, group.repository, download.getSupportedContexts() ) );
- }
- catch ( ArtifactTransferException e )
- {
- download.setException( e );
- item.result.addException( e );
- }
- }
- else
- {
- item.result.addException( download.getException() );
- }
-
- /*
- * NOTE: Touch after registration with local repo to ensure concurrent resolution is not rejected with
- * "already updated" via session data when actual update to local repo is still pending.
- */
- if ( item.updateCheck != null )
- {
- item.updateCheck.setException( download.getException() );
- updateCheckManager.touchArtifact( session, item.updateCheck );
- }
-
- artifactDownloaded( session, download.getTrace(), artifact, group.repository, download.getException() );
- if ( download.getException() == null )
- {
- artifactResolved( session, download.getTrace(), artifact, group.repository, null );
- }
- }
- }
-
- private void artifactResolving( RepositorySystemSession session, RequestTrace trace, Artifact artifact )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.ARTIFACT_RESOLVING );
- event.setTrace( trace );
- event.setArtifact( artifact );
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- private void artifactResolved( RepositorySystemSession session, RequestTrace trace, Artifact artifact,
- ArtifactRepository repository, List<Exception> exceptions )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.ARTIFACT_RESOLVED );
- event.setTrace( trace );
- event.setArtifact( artifact );
- event.setRepository( repository );
- event.setExceptions( exceptions );
- if ( artifact != null )
- {
- event.setFile( artifact.getFile() );
- }
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- private void artifactDownloading( RepositorySystemSession session, RequestTrace trace, Artifact artifact,
- RemoteRepository repository )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.ARTIFACT_DOWNLOADING );
- event.setTrace( trace );
- event.setArtifact( artifact );
- event.setRepository( repository );
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- private void artifactDownloaded( RepositorySystemSession session, RequestTrace trace, Artifact artifact,
- RemoteRepository repository, Exception exception )
- {
- RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.ARTIFACT_DOWNLOADED );
- event.setTrace( trace );
- event.setArtifact( artifact );
- event.setRepository( repository );
- event.setException( exception );
- if ( artifact != null )
- {
- event.setFile( artifact.getFile() );
- }
-
- repositoryEventDispatcher.dispatch( event.build() );
- }
-
- static class ResolutionGroup
- {
-
- final RemoteRepository repository;
-
- final List<ResolutionItem> items = new ArrayList<ResolutionItem>();
-
- ResolutionGroup( RemoteRepository repository )
- {
- this.repository = repository;
- }
-
- boolean matches( RemoteRepository repo )
- {
- return repository.getUrl().equals( repo.getUrl() )
- && repository.getContentType().equals( repo.getContentType() )
- && repository.isRepositoryManager() == repo.isRepositoryManager();
- }
-
- }
-
- static class ResolutionItem
- {
-
- final RequestTrace trace;
-
- final ArtifactRequest request;
-
- final ArtifactResult result;
-
- final LocalArtifactResult local;
-
- final RemoteRepository repository;
-
- final Artifact artifact;
-
- final AtomicBoolean resolved;
-
- ArtifactDownload download;
-
- UpdateCheck<Artifact, ArtifactTransferException> updateCheck;
-
- ResolutionItem( RequestTrace trace, Artifact artifact, AtomicBoolean resolved, ArtifactResult result,
- LocalArtifactResult local, RemoteRepository repository )
- {
- this.trace = trace;
- this.artifact = artifact;
- this.resolved = resolved;
- this.result = result;
- this.request = result.getRequest();
- this.local = local;
- this.repository = repository;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java
deleted file mode 100644
index 20c0484..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.transfer.TransferResource;
-
-/**
- */
-@Named
-public final class DefaultChecksumPolicyProvider
- implements ChecksumPolicyProvider, Service
-{
-
- private static final int ORDINAL_IGNORE = 0;
-
- private static final int ORDINAL_WARN = 1;
-
- private static final int ORDINAL_FAIL = 2;
-
- private LoggerFactory loggerFactory = NullLoggerFactory.INSTANCE;
-
- public DefaultChecksumPolicyProvider()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultChecksumPolicyProvider( LoggerFactory loggerFactory )
- {
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- }
-
- public DefaultChecksumPolicyProvider setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.loggerFactory = loggerFactory;
- return this;
- }
-
- public ChecksumPolicy newChecksumPolicy( RepositorySystemSession session, RemoteRepository repository,
- TransferResource resource, String policy )
- {
- if ( RepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( policy ) )
- {
- return null;
- }
- if ( RepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( policy ) )
- {
- return new FailChecksumPolicy( loggerFactory, resource );
- }
- return new WarnChecksumPolicy( loggerFactory, resource );
- }
-
- public String getEffectiveChecksumPolicy( RepositorySystemSession session, String policy1, String policy2 )
- {
- if ( policy1 != null && policy1.equals( policy2 ) )
- {
- return policy1;
- }
- int ordinal1 = ordinalOfPolicy( policy1 );
- int ordinal2 = ordinalOfPolicy( policy2 );
- if ( ordinal2 < ordinal1 )
- {
- return ( ordinal2 != ORDINAL_WARN ) ? policy2 : RepositoryPolicy.CHECKSUM_POLICY_WARN;
- }
- else
- {
- return ( ordinal1 != ORDINAL_WARN ) ? policy1 : RepositoryPolicy.CHECKSUM_POLICY_WARN;
- }
- }
-
- private static int ordinalOfPolicy( String policy )
- {
- if ( RepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( policy ) )
- {
- return ORDINAL_FAIL;
- }
- else if ( RepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( policy ) )
- {
- return ORDINAL_IGNORE;
- }
- else
- {
- return ORDINAL_WARN;
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectionContext.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectionContext.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectionContext.java
deleted file mode 100644
index 1ad6cc7..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectionContext.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.graph.Dependency;
-
-/**
- * @see DefaultDependencyCollector
- */
-final class DefaultDependencyCollectionContext
- implements DependencyCollectionContext
-{
-
- private final RepositorySystemSession session;
-
- private Artifact artifact;
-
- private Dependency dependency;
-
- private List<Dependency> managedDependencies;
-
- public DefaultDependencyCollectionContext( RepositorySystemSession session, Artifact artifact,
- Dependency dependency, List<Dependency> managedDependencies )
- {
- this.session = session;
- this.artifact = ( dependency != null ) ? dependency.getArtifact() : artifact;
- this.dependency = dependency;
- this.managedDependencies = managedDependencies;
- }
-
- public RepositorySystemSession getSession()
- {
- return session;
- }
-
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- public Dependency getDependency()
- {
- return dependency;
- }
-
- public List<Dependency> getManagedDependencies()
- {
- return managedDependencies;
- }
-
- public void set( Dependency dependency, List<Dependency> managedDependencies )
- {
- artifact = dependency.getArtifact();
- this.dependency = dependency;
- this.managedDependencies = managedDependencies;
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( getDependency() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
deleted file mode 100644
index 4fb8374..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
+++ /dev/null
@@ -1,876 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.ArtifactProperties;
-import org.eclipse.aether.collection.CollectRequest;
-import org.eclipse.aether.collection.CollectResult;
-import org.eclipse.aether.collection.DependencyCollectionException;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.collection.DependencyManagement;
-import org.eclipse.aether.collection.DependencyManager;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.graph.DefaultDependencyNode;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.impl.ArtifactDescriptorReader;
-import org.eclipse.aether.impl.DependencyCollector;
-import org.eclipse.aether.impl.RemoteRepositoryManager;
-import org.eclipse.aether.impl.VersionRangeResolver;
-import org.eclipse.aether.repository.ArtifactRepository;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ArtifactDescriptorException;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResolutionException;
-import org.eclipse.aether.resolution.VersionRangeResult;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-import org.eclipse.aether.util.ConfigUtils;
-import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
-import org.eclipse.aether.util.graph.transformer.TransformationContextKeys;
-import org.eclipse.aether.version.Version;
-
-/**
- */
-@Named
-public class DefaultDependencyCollector
- implements DependencyCollector, Service
-{
-
- private static final String CONFIG_PROP_MAX_EXCEPTIONS = "aether.dependencyCollector.maxExceptions";
-
- private static final String CONFIG_PROP_MAX_CYCLES = "aether.dependencyCollector.maxCycles";
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private RemoteRepositoryManager remoteRepositoryManager;
-
- private ArtifactDescriptorReader descriptorReader;
-
- private VersionRangeResolver versionRangeResolver;
-
- public DefaultDependencyCollector()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultDependencyCollector( RemoteRepositoryManager remoteRepositoryManager,
- ArtifactDescriptorReader artifactDescriptorReader,
- VersionRangeResolver versionRangeResolver, LoggerFactory loggerFactory )
- {
- setRemoteRepositoryManager( remoteRepositoryManager );
- setArtifactDescriptorReader( artifactDescriptorReader );
- setVersionRangeResolver( versionRangeResolver );
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- setRemoteRepositoryManager( locator.getService( RemoteRepositoryManager.class ) );
- setArtifactDescriptorReader( locator.getService( ArtifactDescriptorReader.class ) );
- setVersionRangeResolver( locator.getService( VersionRangeResolver.class ) );
- }
-
- public DefaultDependencyCollector setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public DefaultDependencyCollector setRemoteRepositoryManager( RemoteRepositoryManager remoteRepositoryManager )
- {
- if ( remoteRepositoryManager == null )
- {
- throw new IllegalArgumentException( "remote repository manager has not been specified" );
- }
- this.remoteRepositoryManager = remoteRepositoryManager;
- return this;
- }
-
- public DefaultDependencyCollector setArtifactDescriptorReader( ArtifactDescriptorReader artifactDescriptorReader )
- {
- if ( artifactDescriptorReader == null )
- {
- throw new IllegalArgumentException( "artifact descriptor reader has not been specified" );
- }
- descriptorReader = artifactDescriptorReader;
- return this;
- }
-
- public DefaultDependencyCollector setVersionRangeResolver( VersionRangeResolver versionRangeResolver )
- {
- if ( versionRangeResolver == null )
- {
- throw new IllegalArgumentException( "version range resolver has not been specified" );
- }
- this.versionRangeResolver = versionRangeResolver;
- return this;
- }
-
- public CollectResult collectDependencies( RepositorySystemSession session, CollectRequest request )
- throws DependencyCollectionException
- {
- session = optimizeSession( session );
-
- RequestTrace trace = RequestTrace.newChild( request.getTrace(), request );
-
- CollectResult result = new CollectResult( request );
-
- DependencySelector depSelector = session.getDependencySelector();
- DependencyManager depManager = session.getDependencyManager();
- DependencyTraverser depTraverser = session.getDependencyTraverser();
- VersionFilter verFilter = session.getVersionFilter();
-
- Dependency root = request.getRoot();
- List<RemoteRepository> repositories = request.getRepositories();
- List<Dependency> dependencies = request.getDependencies();
- List<Dependency> managedDependencies = request.getManagedDependencies();
-
- Map<String, Object> stats = logger.isDebugEnabled() ? new LinkedHashMap<String, Object>() : null;
- long time1 = System.nanoTime();
-
- DefaultDependencyNode node;
- if ( root != null )
- {
- List<? extends Version> versions;
- VersionRangeResult rangeResult;
- try
- {
- VersionRangeRequest rangeRequest =
- new VersionRangeRequest( root.getArtifact(), request.getRepositories(),
- request.getRequestContext() );
- rangeRequest.setTrace( trace );
- rangeResult = versionRangeResolver.resolveVersionRange( session, rangeRequest );
- versions = filterVersions( root, rangeResult, verFilter, new DefaultVersionFilterContext( session ) );
- }
- catch ( VersionRangeResolutionException e )
- {
- result.addException( e );
- throw new DependencyCollectionException( result, e.getMessage() );
- }
-
- Version version = versions.get( versions.size() - 1 );
- root = root.setArtifact( root.getArtifact().setVersion( version.toString() ) );
-
- ArtifactDescriptorResult descriptorResult;
- try
- {
- ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest();
- descriptorRequest.setArtifact( root.getArtifact() );
- descriptorRequest.setRepositories( request.getRepositories() );
- descriptorRequest.setRequestContext( request.getRequestContext() );
- descriptorRequest.setTrace( trace );
- if ( isLackingDescriptor( root.getArtifact() ) )
- {
- descriptorResult = new ArtifactDescriptorResult( descriptorRequest );
- }
- else
- {
- descriptorResult = descriptorReader.readArtifactDescriptor( session, descriptorRequest );
- }
- }
- catch ( ArtifactDescriptorException e )
- {
- result.addException( e );
- throw new DependencyCollectionException( result, e.getMessage() );
- }
-
- root = root.setArtifact( descriptorResult.getArtifact() );
-
- if ( !session.isIgnoreArtifactDescriptorRepositories() )
- {
- repositories = remoteRepositoryManager.aggregateRepositories( session, repositories,
- descriptorResult.getRepositories(),
- true );
- }
- dependencies = mergeDeps( dependencies, descriptorResult.getDependencies() );
- managedDependencies = mergeDeps( managedDependencies, descriptorResult.getManagedDependencies() );
-
- node = new DefaultDependencyNode( root );
- node.setRequestContext( request.getRequestContext() );
- node.setRelocations( descriptorResult.getRelocations() );
- node.setVersionConstraint( rangeResult.getVersionConstraint() );
- node.setVersion( version );
- node.setAliases( descriptorResult.getAliases() );
- node.setRepositories( request.getRepositories() );
- }
- else
- {
- node = new DefaultDependencyNode( request.getRootArtifact() );
- }
-
- result.setRoot( node );
-
- boolean traverse = root == null || depTraverser == null || depTraverser.traverseDependency( root );
- String errorPath = null;
- if ( traverse && !dependencies.isEmpty() )
- {
- DataPool pool = new DataPool( session );
-
- NodeStack nodes = new NodeStack();
- nodes.push( node );
-
- DefaultDependencyCollectionContext context =
- new DefaultDependencyCollectionContext( session, request.getRootArtifact(), root, managedDependencies );
-
- DefaultVersionFilterContext versionContext = new DefaultVersionFilterContext( session );
-
- Args args = new Args( session, trace, pool, nodes, context, versionContext, request );
- Results results = new Results( result, session );
-
- process( args, results, dependencies, repositories,
- depSelector != null ? depSelector.deriveChildSelector( context ) : null,
- depManager != null ? depManager.deriveChildManager( context ) : null,
- depTraverser != null ? depTraverser.deriveChildTraverser( context ) : null,
- verFilter != null ? verFilter.deriveChildFilter( context ) : null );
-
- errorPath = results.errorPath;
- }
-
- long time2 = System.nanoTime();
-
- DependencyGraphTransformer transformer = session.getDependencyGraphTransformer();
- if ( transformer != null )
- {
- try
- {
- DefaultDependencyGraphTransformationContext context =
- new DefaultDependencyGraphTransformationContext( session );
- context.put( TransformationContextKeys.STATS, stats );
- result.setRoot( transformer.transformGraph( node, context ) );
- }
- catch ( RepositoryException e )
- {
- result.addException( e );
- }
- }
-
- if ( stats != null )
- {
- long time3 = System.nanoTime();
- stats.put( "DefaultDependencyCollector.collectTime", time2 - time1 );
- stats.put( "DefaultDependencyCollector.transformTime", time3 - time2 );
- logger.debug( "Dependency collection stats: " + stats );
- }
-
- if ( errorPath != null )
- {
- throw new DependencyCollectionException( result, "Failed to collect dependencies at " + errorPath );
- }
- if ( !result.getExceptions().isEmpty() )
- {
- throw new DependencyCollectionException( result );
- }
-
- return result;
- }
-
- private static RepositorySystemSession optimizeSession( RepositorySystemSession session )
- {
- DefaultRepositorySystemSession optimized = new DefaultRepositorySystemSession( session );
- optimized.setArtifactTypeRegistry( CachingArtifactTypeRegistry.newInstance( session ) );
- return optimized;
- }
-
- private List<Dependency> mergeDeps( List<Dependency> dominant, List<Dependency> recessive )
- {
- List<Dependency> result;
- if ( dominant == null || dominant.isEmpty() )
- {
- result = recessive;
- }
- else if ( recessive == null || recessive.isEmpty() )
- {
- result = dominant;
- }
- else
- {
- int initialCapacity = dominant.size() + recessive.size();
- result = new ArrayList<Dependency>( initialCapacity );
- Collection<String> ids = new HashSet<String>( initialCapacity, 1.0f );
- for ( Dependency dependency : dominant )
- {
- ids.add( getId( dependency.getArtifact() ) );
- result.add( dependency );
- }
- for ( Dependency dependency : recessive )
- {
- if ( !ids.contains( getId( dependency.getArtifact() ) ) )
- {
- result.add( dependency );
- }
- }
- }
- return result;
- }
-
- private static String getId( Artifact a )
- {
- return a.getGroupId() + ':' + a.getArtifactId() + ':' + a.getClassifier() + ':' + a.getExtension();
- }
-
- private void process( final Args args, Results results, List<Dependency> dependencies,
- List<RemoteRepository> repositories, DependencySelector depSelector,
- DependencyManager depManager, DependencyTraverser depTraverser, VersionFilter verFilter )
- {
- for ( Dependency dependency : dependencies )
- {
- processDependency( args, results, repositories, depSelector, depManager, depTraverser, verFilter,
- dependency );
- }
- }
-
- private void processDependency( Args args, Results results, List<RemoteRepository> repositories,
- DependencySelector depSelector, DependencyManager depManager,
- DependencyTraverser depTraverser, VersionFilter verFilter, Dependency dependency )
- {
-
- List<Artifact> relocations = Collections.emptyList();
- boolean disableVersionManagement = false;
- processDependency( args, results, repositories, depSelector, depManager, depTraverser, verFilter, dependency,
- relocations, disableVersionManagement );
- }
-
- private void processDependency( Args args, Results results, List<RemoteRepository> repositories,
- DependencySelector depSelector, DependencyManager depManager,
- DependencyTraverser depTraverser, VersionFilter verFilter, Dependency dependency,
- List<Artifact> relocations, boolean disableVersionManagement )
- {
- PremanagedDependency preManaged =
- PremanagedDependency.create( depManager, dependency, disableVersionManagement, args.premanagedState );
-
- dependency = preManaged.managedDependency;
-
- if ( depSelector != null && !depSelector.selectDependency( dependency ) )
- {
- return;
- }
-
- boolean noDescriptor = isLackingDescriptor( dependency.getArtifact() );
-
- boolean traverse = !noDescriptor && ( depTraverser == null || depTraverser.traverseDependency( dependency ) );
-
- List<? extends Version> versions;
- VersionRangeResult rangeResult;
- try
- {
- VersionRangeRequest rangeRequest = createVersionRangeRequest( args, repositories, dependency );
-
- rangeResult = cachedResolveRangeResult( rangeRequest, args.pool, args.session );
-
- versions = filterVersions( dependency, rangeResult, verFilter, args.versionContext );
- }
- catch ( VersionRangeResolutionException e )
- {
- results.addException( dependency, e, args.nodes );
- return;
- }
-
- for ( Version version : versions )
- {
- Artifact originalArtifact = dependency.getArtifact().setVersion( version.toString() );
- Dependency d = dependency.setArtifact( originalArtifact );
-
- ArtifactDescriptorRequest descriptorRequest = createArtifactDescriptorRequest( args, repositories, d );
-
- final ArtifactDescriptorResult descriptorResult =
- getArtifactDescriptorResult( args, results, noDescriptor, d, descriptorRequest );
- if ( descriptorResult != null )
- {
- d = d.setArtifact( descriptorResult.getArtifact() );
-
- DependencyNode node = args.nodes.top();
-
- int cycleEntry = args.nodes.find( d.getArtifact() );
- if ( cycleEntry >= 0 )
- {
- results.addCycle( args.nodes, cycleEntry, d );
- DependencyNode cycleNode = args.nodes.get( cycleEntry );
- if ( cycleNode.getDependency() != null )
- {
- DefaultDependencyNode child =
- createDependencyNode( node, relocations, preManaged, rangeResult, version, d,
- descriptorResult, cycleNode );
- node.getChildren().add( child );
- continue;
- }
- }
-
- if ( !descriptorResult.getRelocations().isEmpty() )
- {
- boolean disableVersionManagementSubsequently =
- originalArtifact.getGroupId().equals( d.getArtifact().getGroupId() )
- && originalArtifact.getArtifactId().equals( d.getArtifact().getArtifactId() );
-
- processDependency( args, results, repositories, depSelector, depManager, depTraverser, verFilter, d,
- descriptorResult.getRelocations(), disableVersionManagementSubsequently );
- return;
- }
- else
- {
- d = args.pool.intern( d );
-
- List<RemoteRepository> repos =
- getRemoteRepositories( rangeResult.getRepository( version ), repositories );
-
- DefaultDependencyNode child =
- createDependencyNode( node, relocations, preManaged, rangeResult, version, d,
- descriptorResult.getAliases(), repos, args.request.getRequestContext() );
-
- node.getChildren().add( child );
-
- boolean recurse = traverse && !descriptorResult.getDependencies().isEmpty();
- if ( recurse )
- {
- doRecurse( args, results, repositories, depSelector, depManager, depTraverser, verFilter, d,
- descriptorResult, child );
- }
- }
- }
- else
- {
- DependencyNode node = args.nodes.top();
- List<RemoteRepository> repos =
- getRemoteRepositories( rangeResult.getRepository( version ), repositories );
- DefaultDependencyNode child =
- createDependencyNode( node, relocations, preManaged, rangeResult, version, d, null, repos,
- args.request.getRequestContext() );
- node.getChildren().add( child );
- }
- }
- }
-
- private void doRecurse( Args args, Results results, List<RemoteRepository> repositories,
- DependencySelector depSelector, DependencyManager depManager,
- DependencyTraverser depTraverser, VersionFilter verFilter, Dependency d,
- ArtifactDescriptorResult descriptorResult, DefaultDependencyNode child )
- {
- DefaultDependencyCollectionContext context = args.collectionContext;
- context.set( d, descriptorResult.getManagedDependencies() );
-
- DependencySelector childSelector = depSelector != null ? depSelector.deriveChildSelector( context ) : null;
- DependencyManager childManager = depManager != null ? depManager.deriveChildManager( context ) : null;
- DependencyTraverser childTraverser = depTraverser != null ? depTraverser.deriveChildTraverser( context ) : null;
- VersionFilter childFilter = verFilter != null ? verFilter.deriveChildFilter( context ) : null;
-
- final List<RemoteRepository> childRepos = args.ignoreRepos
- ? repositories
- : remoteRepositoryManager.aggregateRepositories( args.session, repositories,
- descriptorResult.getRepositories(), true );
-
- Object key =
- args.pool.toKey( d.getArtifact(), childRepos, childSelector, childManager, childTraverser, childFilter );
-
- List<DependencyNode> children = args.pool.getChildren( key );
- if ( children == null )
- {
- args.pool.putChildren( key, child.getChildren() );
-
- args.nodes.push( child );
-
- process( args, results, descriptorResult.getDependencies(), childRepos, childSelector, childManager,
- childTraverser, childFilter );
-
- args.nodes.pop();
- }
- else
- {
- child.setChildren( children );
- }
- }
-
- private ArtifactDescriptorResult getArtifactDescriptorResult( Args args, Results results, boolean noDescriptor,
- Dependency d,
- ArtifactDescriptorRequest descriptorRequest )
- {
- return noDescriptor
- ? new ArtifactDescriptorResult( descriptorRequest )
- : resolveCachedArtifactDescriptor( args.pool, descriptorRequest, args.session, d, results, args );
- }
-
- private ArtifactDescriptorResult resolveCachedArtifactDescriptor( DataPool pool,
- ArtifactDescriptorRequest descriptorRequest,
- RepositorySystemSession session, Dependency d,
- Results results, Args args )
- {
- Object key = pool.toKey( descriptorRequest );
- ArtifactDescriptorResult descriptorResult = pool.getDescriptor( key, descriptorRequest );
- if ( descriptorResult == null )
- {
- try
- {
- descriptorResult = descriptorReader.readArtifactDescriptor( session, descriptorRequest );
- pool.putDescriptor( key, descriptorResult );
- }
- catch ( ArtifactDescriptorException e )
- {
- results.addException( d, e, args.nodes );
- pool.putDescriptor( key, e );
- return null;
- }
-
- }
- else if ( descriptorResult == DataPool.NO_DESCRIPTOR )
- {
- return null;
- }
-
- return descriptorResult;
- }
-
- private static DefaultDependencyNode createDependencyNode( DependencyNode parent,
- List<Artifact> relocations,
- PremanagedDependency preManaged,
- VersionRangeResult rangeResult, Version version,
- Dependency d, Collection<Artifact> aliases,
- List<RemoteRepository> repos, String requestContext )
- {
- DefaultDependencyNode child = new DefaultDependencyNode( parent, d );
- preManaged.applyTo( child );
- child.setRelocations( relocations );
- child.setVersionConstraint( rangeResult.getVersionConstraint() );
- child.setVersion( version );
- child.setAliases( aliases );
- child.setRepositories( repos );
- child.setRequestContext( requestContext );
- return child;
- }
-
- private static DefaultDependencyNode createDependencyNode( DependencyNode parent,
- List<Artifact> relocations,
- PremanagedDependency preManaged,
- VersionRangeResult rangeResult, Version version,
- Dependency d, ArtifactDescriptorResult descriptorResult,
- DependencyNode cycleNode )
- {
- DefaultDependencyNode child =
- createDependencyNode( parent, relocations, preManaged, rangeResult, version, d,
- descriptorResult.getAliases(), cycleNode.getRepositories(),
- cycleNode.getRequestContext() );
-
- child.setChildren( cycleNode.getChildren() );
- return child;
- }
-
- private static ArtifactDescriptorRequest createArtifactDescriptorRequest( Args args,
- List<RemoteRepository> repositories,
- Dependency d )
- {
- ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest();
- descriptorRequest.setArtifact( d.getArtifact() );
- descriptorRequest.setRepositories( repositories );
- descriptorRequest.setRequestContext( args.request.getRequestContext() );
- descriptorRequest.setTrace( args.trace );
- return descriptorRequest;
- }
-
- private static VersionRangeRequest createVersionRangeRequest( Args args, List<RemoteRepository> repositories,
- Dependency dependency )
- {
- VersionRangeRequest rangeRequest = new VersionRangeRequest();
- rangeRequest.setArtifact( dependency.getArtifact() );
- rangeRequest.setRepositories( repositories );
- rangeRequest.setRequestContext( args.request.getRequestContext() );
- rangeRequest.setTrace( args.trace );
- return rangeRequest;
- }
-
- private VersionRangeResult cachedResolveRangeResult( VersionRangeRequest rangeRequest, DataPool pool,
- RepositorySystemSession session )
- throws VersionRangeResolutionException
- {
- Object key = pool.toKey( rangeRequest );
- VersionRangeResult rangeResult = pool.getConstraint( key, rangeRequest );
- if ( rangeResult == null )
- {
- rangeResult = versionRangeResolver.resolveVersionRange( session, rangeRequest );
- pool.putConstraint( key, rangeResult );
- }
- return rangeResult;
- }
-
-
- private static boolean isLackingDescriptor( Artifact artifact )
- {
- return artifact.getProperty( ArtifactProperties.LOCAL_PATH, null ) != null;
- }
-
- private static List<RemoteRepository> getRemoteRepositories( ArtifactRepository repository,
- List<RemoteRepository> repositories )
- {
- if ( repository instanceof RemoteRepository )
- {
- return Collections.singletonList( (RemoteRepository) repository );
- }
- if ( repository != null )
- {
- return Collections.emptyList();
- }
- return repositories;
- }
-
- private static List<? extends Version> filterVersions( Dependency dependency, VersionRangeResult rangeResult,
- VersionFilter verFilter,
- DefaultVersionFilterContext verContext )
- throws VersionRangeResolutionException
- {
- if ( rangeResult.getVersions().isEmpty() )
- {
- throw new VersionRangeResolutionException( rangeResult,
- "No versions available for " + dependency.getArtifact()
- + " within specified range" );
- }
-
- List<? extends Version> versions;
- if ( verFilter != null && rangeResult.getVersionConstraint().getRange() != null )
- {
- verContext.set( dependency, rangeResult );
- try
- {
- verFilter.filterVersions( verContext );
- }
- catch ( RepositoryException e )
- {
- throw new VersionRangeResolutionException( rangeResult,
- "Failed to filter versions for " + dependency.getArtifact()
- + ": " + e.getMessage(), e );
- }
- versions = verContext.get();
- if ( versions.isEmpty() )
- {
- throw new VersionRangeResolutionException( rangeResult,
- "No acceptable versions for " + dependency.getArtifact()
- + ": " + rangeResult.getVersions() );
- }
- }
- else
- {
- versions = rangeResult.getVersions();
- }
- return versions;
- }
-
- static class Args
- {
-
- final RepositorySystemSession session;
-
- final boolean ignoreRepos;
-
- final boolean premanagedState;
-
- final RequestTrace trace;
-
- final DataPool pool;
-
- final NodeStack nodes;
-
- final DefaultDependencyCollectionContext collectionContext;
-
- final DefaultVersionFilterContext versionContext;
-
- final CollectRequest request;
-
-
- public Args( RepositorySystemSession session, RequestTrace trace, DataPool pool, NodeStack nodes,
- DefaultDependencyCollectionContext collectionContext, DefaultVersionFilterContext versionContext,
- CollectRequest request )
- {
- this.session = session;
- this.request = request;
- this.ignoreRepos = session.isIgnoreArtifactDescriptorRepositories();
- this.premanagedState = ConfigUtils.getBoolean( session, false, DependencyManagerUtils.CONFIG_PROP_VERBOSE );
- this.trace = trace;
- this.pool = pool;
- this.nodes = nodes;
- this.collectionContext = collectionContext;
- this.versionContext = versionContext;
- }
-
- }
-
- static class Results
- {
-
- private final CollectResult result;
-
- final int maxExceptions;
-
- final int maxCycles;
-
- String errorPath;
-
- public Results( CollectResult result, RepositorySystemSession session )
- {
- this.result = result;
- this.maxExceptions = ConfigUtils.getInteger( session, 50, CONFIG_PROP_MAX_EXCEPTIONS );
- this.maxCycles = ConfigUtils.getInteger( session, 10, CONFIG_PROP_MAX_CYCLES );
- }
-
- public void addException( Dependency dependency, Exception e, NodeStack nodes )
- {
- if ( maxExceptions < 0 || result.getExceptions().size() < maxExceptions )
- {
- result.addException( e );
- if ( errorPath == null )
- {
- StringBuilder buffer = new StringBuilder( 256 );
- for ( int i = 0; i < nodes.size(); i++ )
- {
- if ( buffer.length() > 0 )
- {
- buffer.append( " -> " );
- }
- Dependency dep = nodes.get( i ).getDependency();
- if ( dep != null )
- {
- buffer.append( dep.getArtifact() );
- }
- }
- if ( buffer.length() > 0 )
- {
- buffer.append( " -> " );
- }
- buffer.append( dependency.getArtifact() );
- errorPath = buffer.toString();
- }
- }
- }
-
- public void addCycle( NodeStack nodes, int cycleEntry, Dependency dependency )
- {
- if ( maxCycles < 0 || result.getCycles().size() < maxCycles )
- {
- result.addCycle( new DefaultDependencyCycle( nodes, cycleEntry, dependency ) );
- }
- }
-
- }
-
- static class PremanagedDependency
- {
- final String premanagedVersion;
-
- final String premanagedScope;
-
- final Boolean premanagedOptional;
-
- final int managedBits;
-
- final Dependency managedDependency;
-
- final boolean premanagedState;
-
- PremanagedDependency( String premanagedVersion, String premanagedScope, Boolean premanagedOptional,
- int managedBits, Dependency managedDependency, boolean premanagedState )
- {
- this.premanagedVersion = premanagedVersion;
- this.premanagedScope = premanagedScope;
- this.premanagedOptional = premanagedOptional;
- this.managedBits = managedBits;
- this.managedDependency = managedDependency;
- this.premanagedState = premanagedState;
- }
-
- static PremanagedDependency create( DependencyManager depManager, Dependency dependency,
- boolean disableVersionManagement, boolean premanagedState )
- {
- DependencyManagement depMngt = depManager != null ? depManager.manageDependency( dependency ) : null;
-
- int managedBits = 0;
- String premanagedVersion = null;
- String premanagedScope = null;
- Boolean premanagedOptional = null;
-
- if ( depMngt != null )
- {
- if ( depMngt.getVersion() != null && !disableVersionManagement )
- {
- Artifact artifact = dependency.getArtifact();
- premanagedVersion = artifact.getVersion();
- dependency = dependency.setArtifact( artifact.setVersion( depMngt.getVersion() ) );
- managedBits |= DependencyNode.MANAGED_VERSION;
- }
- if ( depMngt.getProperties() != null )
- {
- Artifact artifact = dependency.getArtifact();
- dependency = dependency.setArtifact( artifact.setProperties( depMngt.getProperties() ) );
- managedBits |= DependencyNode.MANAGED_PROPERTIES;
- }
- if ( depMngt.getScope() != null )
- {
- premanagedScope = dependency.getScope();
- dependency = dependency.setScope( depMngt.getScope() );
- managedBits |= DependencyNode.MANAGED_SCOPE;
- }
- if ( depMngt.getOptional() != null )
- {
- premanagedOptional = dependency.isOptional();
- dependency = dependency.setOptional( depMngt.getOptional() );
- managedBits |= DependencyNode.MANAGED_OPTIONAL;
- }
- if ( depMngt.getExclusions() != null )
- {
- dependency = dependency.setExclusions( depMngt.getExclusions() );
- managedBits |= DependencyNode.MANAGED_EXCLUSIONS;
- }
- }
- return new PremanagedDependency( premanagedVersion, premanagedScope, premanagedOptional, managedBits,
- dependency, premanagedState );
- }
-
- public void applyTo( DefaultDependencyNode child )
- {
- child.setManagedBits( managedBits );
- if ( premanagedState )
- {
- child.setData( DependencyManagerUtils.NODE_DATA_PREMANAGED_VERSION, premanagedVersion );
- child.setData( DependencyManagerUtils.NODE_DATA_PREMANAGED_SCOPE, premanagedScope );
- child.setData( DependencyManagerUtils.NODE_DATA_PREMANAGED_OPTIONAL, premanagedOptional );
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCycle.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCycle.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCycle.java
deleted file mode 100644
index 5ffcf67..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCycle.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.graph.DependencyCycle;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.util.artifact.ArtifactIdUtils;
-
-/**
- * @see DefaultDependencyCollector
- */
-final class DefaultDependencyCycle
- implements DependencyCycle
-{
-
- private final List<Dependency> dependencies;
-
- private final int cycleEntry;
-
- public DefaultDependencyCycle( NodeStack nodes, int cycleEntry, Dependency dependency )
- {
- // skip root node unless it actually has a dependency or is considered the cycle entry (due to its label)
- int offset = ( cycleEntry > 0 && nodes.get( 0 ).getDependency() == null ) ? 1 : 0;
- Dependency[] dependencies = new Dependency[nodes.size() - offset + 1];
- for ( int i = 0, n = dependencies.length - 1; i < n; i++ )
- {
- DependencyNode node = nodes.get( i + offset );
- dependencies[i] = node.getDependency();
- // when cycle starts at root artifact as opposed to root dependency, synthesize a dependency
- if ( dependencies[i] == null )
- {
- dependencies[i] = new Dependency( node.getArtifact(), null );
- }
- }
- dependencies[dependencies.length - 1] = dependency;
- this.dependencies = Collections.unmodifiableList( Arrays.asList( dependencies ) );
- this.cycleEntry = cycleEntry;
- }
-
- public List<Dependency> getPrecedingDependencies()
- {
- return dependencies.subList( 0, cycleEntry );
- }
-
- public List<Dependency> getCyclicDependencies()
- {
- return dependencies.subList( cycleEntry, dependencies.size() );
- }
-
- @Override
- public String toString()
- {
- StringBuilder buffer = new StringBuilder( 256 );
- for ( int i = 0, n = dependencies.size(); i < n; i++ )
- {
- if ( i > 0 )
- {
- buffer.append( " -> " );
- }
- buffer.append( ArtifactIdUtils.toVersionlessId( dependencies.get( i ).getArtifact() ) );
- }
- return buffer.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyGraphTransformationContext.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyGraphTransformationContext.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyGraphTransformationContext.java
deleted file mode 100644
index d877ad6..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyGraphTransformationContext.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.HashMap;
-import java.util.Map;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-
-/**
- */
-class DefaultDependencyGraphTransformationContext
- implements DependencyGraphTransformationContext
-{
-
- private final RepositorySystemSession session;
-
- private final Map<Object, Object> map;
-
- public DefaultDependencyGraphTransformationContext( RepositorySystemSession session )
- {
- this.session = session;
- this.map = new HashMap<Object, Object>();
- }
-
- public RepositorySystemSession getSession()
- {
- return session;
- }
-
- public Object get( Object key )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "key must not be null" );
- }
- return map.get( key );
- }
-
- public Object put( Object key, Object value )
- {
- if ( key == null )
- {
- throw new IllegalArgumentException( "key must not be null" );
- }
- if ( value != null )
- {
- return map.put( key, value );
- }
- else
- {
- return map.remove( key );
- }
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( map );
- }
-
-}
[35/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzer.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzer.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzer.java
deleted file mode 100644
index c2cdd83..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzer.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Calendar;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-
-/**
- */
-@Named
-public class DefaultUpdatePolicyAnalyzer
- implements UpdatePolicyAnalyzer, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- public DefaultUpdatePolicyAnalyzer()
- {
- // enables default constructor
- }
-
- @Inject
- DefaultUpdatePolicyAnalyzer( LoggerFactory loggerFactory )
- {
- setLoggerFactory( loggerFactory );
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- }
-
- public DefaultUpdatePolicyAnalyzer setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() );
- return this;
- }
-
- public String getEffectiveUpdatePolicy( RepositorySystemSession session, String policy1, String policy2 )
- {
- return ordinalOfUpdatePolicy( policy1 ) < ordinalOfUpdatePolicy( policy2 ) ? policy1 : policy2;
- }
-
- private int ordinalOfUpdatePolicy( String policy )
- {
- if ( RepositoryPolicy.UPDATE_POLICY_DAILY.equals( policy ) )
- {
- return 1440;
- }
- else if ( RepositoryPolicy.UPDATE_POLICY_ALWAYS.equals( policy ) )
- {
- return 0;
- }
- else if ( policy != null && policy.startsWith( RepositoryPolicy.UPDATE_POLICY_INTERVAL ) )
- {
- return getMinutes( policy );
- }
- else
- {
- // assume "never"
- return Integer.MAX_VALUE;
- }
- }
-
- public boolean isUpdatedRequired( RepositorySystemSession session, long lastModified, String policy )
- {
- boolean checkForUpdates;
-
- if ( policy == null )
- {
- policy = "";
- }
-
- if ( RepositoryPolicy.UPDATE_POLICY_ALWAYS.equals( policy ) )
- {
- checkForUpdates = true;
- }
- else if ( RepositoryPolicy.UPDATE_POLICY_DAILY.equals( policy ) )
- {
- Calendar cal = Calendar.getInstance();
- cal.set( Calendar.HOUR_OF_DAY, 0 );
- cal.set( Calendar.MINUTE, 0 );
- cal.set( Calendar.SECOND, 0 );
- cal.set( Calendar.MILLISECOND, 0 );
-
- checkForUpdates = cal.getTimeInMillis() > lastModified;
- }
- else if ( policy.startsWith( RepositoryPolicy.UPDATE_POLICY_INTERVAL ) )
- {
- int minutes = getMinutes( policy );
-
- Calendar cal = Calendar.getInstance();
- cal.add( Calendar.MINUTE, -minutes );
-
- checkForUpdates = cal.getTimeInMillis() > lastModified;
- }
- else
- {
- // assume "never"
- checkForUpdates = false;
-
- if ( !RepositoryPolicy.UPDATE_POLICY_NEVER.equals( policy ) )
- {
- logger.warn( "Unknown repository update policy '" + policy + "', assuming '"
- + RepositoryPolicy.UPDATE_POLICY_NEVER + "'" );
- }
- }
-
- return checkForUpdates;
- }
-
- private int getMinutes( String policy )
- {
- int minutes;
- try
- {
- String s = policy.substring( RepositoryPolicy.UPDATE_POLICY_INTERVAL.length() + 1 );
- minutes = Integer.valueOf( s );
- }
- catch ( RuntimeException e )
- {
- minutes = 24 * 60;
-
- logger.warn( "Non-parseable repository update policy '" + policy + "', assuming '"
- + RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":1440'" );
- }
- return minutes;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultVersionFilterContext.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultVersionFilterContext.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultVersionFilterContext.java
deleted file mode 100644
index 2007368..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultVersionFilterContext.java
+++ /dev/null
@@ -1,217 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Collections;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.repository.ArtifactRepository;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.VersionRangeResult;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-
-/**
- * @see DefaultDependencyCollector
- */
-final class DefaultVersionFilterContext
- implements VersionFilter.VersionFilterContext
-{
-
- private final Iterator<Version> EMPTY = Collections.<Version>emptySet().iterator();
-
- private final RepositorySystemSession session;
-
- private Dependency dependency;
-
- VersionRangeResult result;
-
- int count;
-
- byte[] deleted = new byte[64];
-
- public DefaultVersionFilterContext( RepositorySystemSession session )
- {
- this.session = session;
- }
-
- public void set( Dependency dependency, VersionRangeResult result )
- {
- this.dependency = dependency;
- this.result = result;
- count = result.getVersions().size();
- if ( deleted.length < count )
- {
- deleted = new byte[count];
- }
- else
- {
- for ( int i = count - 1; i >= 0; i-- )
- {
- deleted[i] = 0;
- }
- }
- }
-
- public List<Version> get()
- {
- if ( count == result.getVersions().size() )
- {
- return result.getVersions();
- }
- if ( count <= 1 )
- {
- if ( count <= 0 )
- {
- return Collections.emptyList();
- }
- return Collections.singletonList( iterator().next() );
- }
- List<Version> versions = new ArrayList<Version>( count );
- for ( Version version : this )
- {
- versions.add( version );
- }
- return versions;
- }
-
- public RepositorySystemSession getSession()
- {
- return session;
- }
-
- public Dependency getDependency()
- {
- return dependency;
- }
-
- public VersionConstraint getVersionConstraint()
- {
- return result.getVersionConstraint();
- }
-
- public int getCount()
- {
- return count;
- }
-
- public ArtifactRepository getRepository( Version version )
- {
- return result.getRepository( version );
- }
-
- public List<RemoteRepository> getRepositories()
- {
- return Collections.unmodifiableList( result.getRequest().getRepositories() );
- }
-
- public Iterator<Version> iterator()
- {
- return ( count > 0 ) ? new VersionIterator() : EMPTY;
- }
-
- @Override
- public String toString()
- {
- return dependency + " " + result.getVersions();
- }
-
- private class VersionIterator
- implements Iterator<Version>
- {
-
- private final List<Version> versions;
-
- private final int size;
-
- private int count;
-
- private int index;
-
- private int next;
-
- public VersionIterator()
- {
- count = DefaultVersionFilterContext.this.count;
- index = -1;
- next = 0;
- versions = result.getVersions();
- size = versions.size();
- advance();
- }
-
- private void advance()
- {
- for ( next = index + 1; next < size && deleted[next] != 0; next++ )
- {
- // just advancing index
- }
- }
-
- public boolean hasNext()
- {
- return next < size;
- }
-
- public Version next()
- {
- if ( count != DefaultVersionFilterContext.this.count )
- {
- throw new ConcurrentModificationException();
- }
- if ( next >= size )
- {
- throw new NoSuchElementException();
- }
- index = next;
- advance();
- return versions.get( index );
- }
-
- public void remove()
- {
- if ( count != DefaultVersionFilterContext.this.count )
- {
- throw new ConcurrentModificationException();
- }
- if ( index < 0 || deleted[index] == 1 )
- {
- throw new IllegalStateException();
- }
- deleted[index] = 1;
- count = --DefaultVersionFilterContext.this.count;
- }
-
- @Override
- public String toString()
- {
- return ( index < 0 ) ? "null" : String.valueOf( versions.get( index ) );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManager.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManager.java
deleted file mode 100644
index 11ba9a1..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManager.java
+++ /dev/null
@@ -1,225 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Properties;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.repository.LocalArtifactRegistration;
-import org.eclipse.aether.repository.LocalArtifactRequest;
-import org.eclipse.aether.repository.LocalArtifactResult;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- * These are implementation details for enhanced local repository manager, subject to change without prior notice.
- * Repositories from which a cached artifact was resolved are tracked in a properties file named
- * <code>_remote.repositories</code>, with content key as filename>repo_id and value as empty string. If a file has
- * been installed in the repository, but not downloaded from a remote repository, it is tracked as empty repository id
- * and always resolved. For example:
- *
- * <pre>
- * artifact-1.0.pom>=
- * artifact-1.0.jar>=
- * artifact-1.0.pom>central=
- * artifact-1.0.jar>central=
- * artifact-1.0.zip>central=
- * artifact-1.0-classifier.zip>central=
- * artifact-1.0.pom>my_repo_id=
- * </pre>
- *
- * @see EnhancedLocalRepositoryManagerFactory
- */
-class EnhancedLocalRepositoryManager
- extends SimpleLocalRepositoryManager
-{
-
- private static final String LOCAL_REPO_ID = "";
-
- private final String trackingFilename;
-
- private final TrackingFileManager trackingFileManager;
-
- public EnhancedLocalRepositoryManager( File basedir, RepositorySystemSession session )
- {
- super( basedir, "enhanced" );
- String filename = ConfigUtils.getString( session, "", "aether.enhancedLocalRepository.trackingFilename" );
- if ( filename.length() <= 0 || filename.contains( "/" ) || filename.contains( "\\" )
- || filename.contains( ".." ) )
- {
- filename = "_remote.repositories";
- }
- trackingFilename = filename;
- trackingFileManager = new TrackingFileManager();
- }
-
- @Override
- public EnhancedLocalRepositoryManager setLogger( Logger logger )
- {
- super.setLogger( logger );
- trackingFileManager.setLogger( logger );
- return this;
- }
-
- @Override
- public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request )
- {
- String path = getPathForArtifact( request.getArtifact(), false );
- File file = new File( getRepository().getBasedir(), path );
-
- LocalArtifactResult result = new LocalArtifactResult( request );
-
- if ( file.isFile() )
- {
- result.setFile( file );
-
- Properties props = readRepos( file );
-
- if ( props.get( getKey( file, LOCAL_REPO_ID ) ) != null )
- {
- // artifact installed into the local repo is always accepted
- result.setAvailable( true );
- }
- else
- {
- String context = request.getContext();
- for ( RemoteRepository repository : request.getRepositories() )
- {
- if ( props.get( getKey( file, getRepositoryKey( repository, context ) ) ) != null )
- {
- // artifact downloaded from remote repository is accepted only downloaded from request
- // repositories
- result.setAvailable( true );
- result.setRepository( repository );
- break;
- }
- }
- if ( !result.isAvailable() && !isTracked( props, file ) )
- {
- /*
- * NOTE: The artifact is present but not tracked at all, for inter-op with simple local repo, assume
- * the artifact was locally installed.
- */
- result.setAvailable( true );
- }
- }
- }
-
- return result;
- }
-
- @Override
- public void add( RepositorySystemSession session, LocalArtifactRegistration request )
- {
- Collection<String> repositories;
- if ( request.getRepository() == null )
- {
- repositories = Collections.singleton( LOCAL_REPO_ID );
- }
- else
- {
- repositories = getRepositoryKeys( request.getRepository(), request.getContexts() );
- }
- addArtifact( request.getArtifact(), repositories, request.getRepository() == null );
- }
-
- private Collection<String> getRepositoryKeys( RemoteRepository repository, Collection<String> contexts )
- {
- Collection<String> keys = new HashSet<String>();
-
- if ( contexts != null )
- {
- for ( String context : contexts )
- {
- keys.add( getRepositoryKey( repository, context ) );
- }
- }
-
- return keys;
- }
-
- private void addArtifact( Artifact artifact, Collection<String> repositories, boolean local )
- {
- if ( artifact == null )
- {
- throw new IllegalArgumentException( "artifact to register not specified" );
- }
- String path = getPathForArtifact( artifact, local );
- File file = new File( getRepository().getBasedir(), path );
- addRepo( file, repositories );
- }
-
- private Properties readRepos( File artifactFile )
- {
- File trackingFile = getTrackingFile( artifactFile );
-
- Properties props = trackingFileManager.read( trackingFile );
-
- return ( props != null ) ? props : new Properties();
- }
-
- private void addRepo( File artifactFile, Collection<String> repositories )
- {
- Map<String, String> updates = new HashMap<String, String>();
- for ( String repository : repositories )
- {
- updates.put( getKey( artifactFile, repository ), "" );
- }
-
- File trackingFile = getTrackingFile( artifactFile );
-
- trackingFileManager.update( trackingFile, updates );
- }
-
- private File getTrackingFile( File artifactFile )
- {
- return new File( artifactFile.getParentFile(), trackingFilename );
- }
-
- private String getKey( File file, String repository )
- {
- return file.getName() + '>' + repository;
- }
-
- private boolean isTracked( Properties props, File file )
- {
- if ( props != null )
- {
- String keyPrefix = file.getName() + '>';
- for ( Object key : props.keySet() )
- {
- if ( key.toString().startsWith( keyPrefix ) )
- {
- return true;
- }
- }
- }
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerFactory.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerFactory.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerFactory.java
deleted file mode 100644
index cfd2013..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerFactory.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
-import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-
-/**
- * Creates enhanced local repository managers for repository types {@code "default"} or {@code "" (automatic)}. Enhanced
- * local repository manager is built upon the classical Maven 2.0 local repository structure but additionally keeps
- * track of from what repositories a cached artifact was resolved. Resolution of locally cached artifacts will be
- * rejected in case the current resolution request does not match the known source repositories of an artifact, thereby
- * emulating physically separated artifact caches per remote repository.
- */
-@Named( "enhanced" )
-public class EnhancedLocalRepositoryManagerFactory
- implements LocalRepositoryManagerFactory, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private float priority = 10;
-
- public EnhancedLocalRepositoryManagerFactory()
- {
- // enable no-arg constructor
- }
-
- @Inject
- EnhancedLocalRepositoryManagerFactory( LoggerFactory loggerFactory )
- {
- setLoggerFactory( loggerFactory );
- }
-
- public LocalRepositoryManager newInstance( RepositorySystemSession session, LocalRepository repository )
- throws NoLocalRepositoryManagerException
- {
- if ( "".equals( repository.getContentType() ) || "default".equals( repository.getContentType() ) )
- {
- return new EnhancedLocalRepositoryManager( repository.getBasedir(), session ).setLogger( logger );
- }
- else
- {
- throw new NoLocalRepositoryManagerException( repository );
- }
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- }
-
- public EnhancedLocalRepositoryManagerFactory setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, EnhancedLocalRepositoryManager.class );
- return this;
- }
-
- public float getPriority()
- {
- return priority;
- }
-
- /**
- * Sets the priority of this component.
- *
- * @param priority The priority.
- * @return This component for chaining, never {@code null}.
- */
- public EnhancedLocalRepositoryManagerFactory setPriority( float priority )
- {
- this.priority = priority;
- return this;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/FailChecksumPolicy.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/FailChecksumPolicy.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/FailChecksumPolicy.java
deleted file mode 100644
index 4f3de45..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/FailChecksumPolicy.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.spi.log.LoggerFactory;
-import org.eclipse.aether.transfer.ChecksumFailureException;
-import org.eclipse.aether.transfer.TransferResource;
-
-/**
- * Implements {@link org.eclipse.aether.repository.RepositoryPolicy#CHECKSUM_POLICY_FAIL}.
- */
-final class FailChecksumPolicy
- extends AbstractChecksumPolicy
-{
-
- public FailChecksumPolicy( LoggerFactory loggerFactory, TransferResource resource )
- {
- super( loggerFactory, resource );
- }
-
- public boolean onTransferChecksumFailure( ChecksumFailureException error )
- {
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/LoggerFactoryProvider.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/LoggerFactoryProvider.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/LoggerFactoryProvider.java
deleted file mode 100644
index 3d46490..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/LoggerFactoryProvider.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Provider;
-import javax.inject.Singleton;
-
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-
-/**
- * Helps Sisu-based applications to pick the right logger factory depending on the classpath.
- */
-@Named
-@Singleton
-public class LoggerFactoryProvider
- implements Provider<LoggerFactory>
-{
-
- @Inject
- @Named( "slf4j" )
- private Provider<LoggerFactory> slf4j;
-
- public LoggerFactory get()
- {
- try
- {
- LoggerFactory factory = slf4j.get();
- if ( factory != null )
- {
- return factory;
- }
- }
- catch ( LinkageError e )
- {
- // fall through
- }
- catch ( RuntimeException e )
- {
- // fall through
- }
- return NullLoggerFactory.INSTANCE;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/Maven2RepositoryLayoutFactory.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/Maven2RepositoryLayoutFactory.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/Maven2RepositoryLayoutFactory.java
deleted file mode 100644
index 9202c4b..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/Maven2RepositoryLayoutFactory.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.net.URI;
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayout;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayoutFactory;
-import org.eclipse.aether.transfer.NoRepositoryLayoutException;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- * Provides a Maven-2 repository layout for repositories with content type {@code "default"}.
- */
-@Named( "maven2" )
-public final class Maven2RepositoryLayoutFactory
- implements RepositoryLayoutFactory
-{
-
- static final String CONFIG_PROP_SIGNATURE_CHECKSUMS = "aether.checksums.forSignature";
-
- private float priority;
-
- public float getPriority()
- {
- return priority;
- }
-
- /**
- * Sets the priority of this component.
- *
- * @param priority The priority.
- * @return This component for chaining, never {@code null}.
- */
- public Maven2RepositoryLayoutFactory setPriority( float priority )
- {
- this.priority = priority;
- return this;
- }
-
- public RepositoryLayout newInstance( RepositorySystemSession session, RemoteRepository repository )
- throws NoRepositoryLayoutException
- {
- if ( !"default".equals( repository.getContentType() ) )
- {
- throw new NoRepositoryLayoutException( repository );
- }
- boolean forSignature = ConfigUtils.getBoolean( session, false, CONFIG_PROP_SIGNATURE_CHECKSUMS );
- return forSignature ? Maven2RepositoryLayout.INSTANCE : Maven2RepositoryLayoutEx.INSTANCE;
- }
-
- private static class Maven2RepositoryLayout
- implements RepositoryLayout
- {
-
- public static final RepositoryLayout INSTANCE = new Maven2RepositoryLayout();
-
- private URI toUri( String path )
- {
- try
- {
- return new URI( null, null, path, null );
- }
- catch ( URISyntaxException e )
- {
- throw new IllegalStateException( e );
- }
- }
-
- public URI getLocation( Artifact artifact, boolean upload )
- {
- StringBuilder path = new StringBuilder( 128 );
-
- path.append( artifact.getGroupId().replace( '.', '/' ) ).append( '/' );
-
- path.append( artifact.getArtifactId() ).append( '/' );
-
- path.append( artifact.getBaseVersion() ).append( '/' );
-
- path.append( artifact.getArtifactId() ).append( '-' ).append( artifact.getVersion() );
-
- if ( artifact.getClassifier().length() > 0 )
- {
- path.append( '-' ).append( artifact.getClassifier() );
- }
-
- if ( artifact.getExtension().length() > 0 )
- {
- path.append( '.' ).append( artifact.getExtension() );
- }
-
- return toUri( path.toString() );
- }
-
- public URI getLocation( Metadata metadata, boolean upload )
- {
- StringBuilder path = new StringBuilder( 128 );
-
- if ( metadata.getGroupId().length() > 0 )
- {
- path.append( metadata.getGroupId().replace( '.', '/' ) ).append( '/' );
-
- if ( metadata.getArtifactId().length() > 0 )
- {
- path.append( metadata.getArtifactId() ).append( '/' );
-
- if ( metadata.getVersion().length() > 0 )
- {
- path.append( metadata.getVersion() ).append( '/' );
- }
- }
- }
-
- path.append( metadata.getType() );
-
- return toUri( path.toString() );
- }
-
- public List<Checksum> getChecksums( Artifact artifact, boolean upload, URI location )
- {
- return getChecksums( location );
- }
-
- public List<Checksum> getChecksums( Metadata metadata, boolean upload, URI location )
- {
- return getChecksums( location );
- }
-
- private List<Checksum> getChecksums( URI location )
- {
- return Arrays.asList( Checksum.forLocation( location, "SHA-1" ), Checksum.forLocation( location, "MD5" ) );
- }
-
- }
-
- private static class Maven2RepositoryLayoutEx
- extends Maven2RepositoryLayout
- {
-
- public static final RepositoryLayout INSTANCE = new Maven2RepositoryLayoutEx();
-
- @Override
- public List<Checksum> getChecksums( Artifact artifact, boolean upload, URI location )
- {
- if ( isSignature( artifact.getExtension() ) )
- {
- return Collections.emptyList();
- }
- return super.getChecksums( artifact, upload, location );
- }
-
- private boolean isSignature( String extension )
- {
- return extension.endsWith( ".asc" );
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/NodeStack.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/NodeStack.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/NodeStack.java
deleted file mode 100644
index b0e0cd3..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/NodeStack.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Arrays;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.graph.DependencyNode;
-
-/**
- * @see DefaultDependencyCollector
- */
-final class NodeStack
-{
-
- private DependencyNode[] nodes = new DependencyNode[96];
-
- private int size;
-
- public DependencyNode top()
- {
- if ( size <= 0 )
- {
- throw new IllegalStateException( "stack empty" );
- }
- return nodes[size - 1];
- }
-
- public void push( DependencyNode node )
- {
- if ( size >= nodes.length )
- {
- DependencyNode[] tmp = new DependencyNode[size + 64];
- System.arraycopy( nodes, 0, tmp, 0, nodes.length );
- nodes = tmp;
- }
- nodes[size++] = node;
- }
-
- public void pop()
- {
- if ( size <= 0 )
- {
- throw new IllegalStateException( "stack empty" );
- }
- size--;
- }
-
- public int find( Artifact artifact )
- {
- for ( int i = size - 1; i >= 0; i-- )
- {
- DependencyNode node = nodes[i];
-
- Artifact a = node.getArtifact();
- if ( a == null )
- {
- break;
- }
-
- if ( !a.getArtifactId().equals( artifact.getArtifactId() ) )
- {
- continue;
- }
- if ( !a.getGroupId().equals( artifact.getGroupId() ) )
- {
- continue;
- }
- if ( !a.getExtension().equals( artifact.getExtension() ) )
- {
- continue;
- }
- if ( !a.getClassifier().equals( artifact.getClassifier() ) )
- {
- continue;
- }
- /*
- * NOTE: While a:1 and a:2 are technically different artifacts, we want to consider the path a:2 -> b:2 ->
- * a:1 a cycle in the current context. The artifacts themselves might not form a cycle but their producing
- * projects surely do. Furthermore, conflict resolution will always have to consider a:1 a loser (otherwise
- * its ancestor a:2 would get pruned and so would a:1) so there is no point in building the sub graph of
- * a:1.
- */
-
- return i;
- }
-
- return -1;
- }
-
- public int size()
- {
- return size;
- }
-
- public DependencyNode get( int index )
- {
- return nodes[index];
- }
-
- @Override
- public String toString()
- {
- return Arrays.toString( nodes );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ObjectPool.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ObjectPool.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ObjectPool.java
deleted file mode 100644
index af2d949..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ObjectPool.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.lang.ref.Reference;
-import java.lang.ref.WeakReference;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import org.eclipse.aether.graph.Dependency;
-
-/**
- * Pool of immutable object instances, used to avoid excessive memory consumption of (dirty) dependency graph which
- * tends to have many duplicate artifacts/dependencies.
- */
-final class ObjectPool
-{
-
- private final Map<Object, Reference<Dependency>> dependencies =
- new WeakHashMap<Object, Reference<Dependency>>( 256 );
-
- public synchronized Dependency intern( Dependency dependency )
- {
- Reference<Dependency> pooledRef = dependencies.get( dependency );
- if ( pooledRef != null )
- {
- Dependency pooled = pooledRef.get();
- if ( pooled != null )
- {
- return pooled;
- }
- }
- dependencies.put( dependency, new WeakReference<Dependency>( dependency ) );
- return dependency;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/PrioritizedComponent.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/PrioritizedComponent.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/PrioritizedComponent.java
deleted file mode 100644
index fc9ebeb..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/PrioritizedComponent.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.
- */
-
-final class PrioritizedComponent<T>
- implements Comparable<PrioritizedComponent<?>>
-{
-
- private final T component;
-
- private final Class<?> type;
-
- private final float priority;
-
- private final int index;
-
- public PrioritizedComponent( T component, Class<?> type, float priority, int index )
- {
- this.component = component;
- this.type = type;
- this.priority = priority;
- this.index = index;
- }
-
- public T getComponent()
- {
- return component;
- }
-
- public Class<?> getType()
- {
- return type;
- }
-
- public float getPriority()
- {
- return priority;
- }
-
- public boolean isDisabled()
- {
- return Float.isNaN( priority );
- }
-
- public int compareTo( PrioritizedComponent<?> o )
- {
- int rel = ( isDisabled() ? 1 : 0 ) - ( o.isDisabled() ? 1 : 0 );
- if ( rel == 0 )
- {
- rel = Float.compare( o.priority, priority );
- if ( rel == 0 )
- {
- rel = index - o.index;
- }
- }
- return rel;
- }
-
- @Override
- public String toString()
- {
- return priority + " (#" + index + "): " + String.valueOf( component );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/PrioritizedComponents.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/PrioritizedComponents.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/PrioritizedComponents.java
deleted file mode 100644
index 3ec5613..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/PrioritizedComponents.java
+++ /dev/null
@@ -1,156 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.ConfigurationProperties;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.util.ConfigUtils;
-
-/**
- * Helps to sort pluggable components by their priority.
- */
-final class PrioritizedComponents<T>
-{
-
- private static final String FACTORY_SUFFIX = "Factory";
-
- private final Map<?, ?> configProps;
-
- private final boolean useInsertionOrder;
-
- private final List<PrioritizedComponent<T>> components;
-
- private int firstDisabled;
-
- public PrioritizedComponents( RepositorySystemSession session )
- {
- this( session.getConfigProperties() );
- }
-
- PrioritizedComponents( Map<?, ?> configurationProperties )
- {
- configProps = configurationProperties;
- useInsertionOrder =
- ConfigUtils.getBoolean( configProps, ConfigurationProperties.DEFAULT_IMPLICIT_PRIORITIES,
- ConfigurationProperties.IMPLICIT_PRIORITIES );
- components = new ArrayList<PrioritizedComponent<T>>();
- firstDisabled = 0;
- }
-
- public void add( T component, float priority )
- {
- Class<?> type = getImplClass( component );
- int index = components.size();
- priority = useInsertionOrder ? -index : ConfigUtils.getFloat( configProps, priority, getConfigKeys( type ) );
- PrioritizedComponent<T> pc = new PrioritizedComponent<T>( component, type, priority, index );
-
- if ( !useInsertionOrder )
- {
- index = Collections.binarySearch( components, pc );
- if ( index < 0 )
- {
- index = -index - 1;
- }
- else
- {
- index++;
- }
- }
- components.add( index, pc );
-
- if ( index <= firstDisabled && !pc.isDisabled() )
- {
- firstDisabled++;
- }
- }
-
- private static Class<?> getImplClass( Object component )
- {
- Class<?> type = component.getClass();
- // detect and ignore CGLIB-based proxy classes employed by Guice for AOP (cf. BytecodeGen.newEnhancer)
- int idx = type.getName().indexOf( "$$" );
- if ( idx >= 0 )
- {
- Class<?> base = type.getSuperclass();
- if ( base != null && idx == base.getName().length() && type.getName().startsWith( base.getName() ) )
- {
- type = base;
- }
- }
- return type;
- }
-
- static String[] getConfigKeys( Class<?> type )
- {
- List<String> keys = new ArrayList<String>();
- keys.add( ConfigurationProperties.PREFIX_PRIORITY + type.getName() );
- String sn = type.getSimpleName();
- keys.add( ConfigurationProperties.PREFIX_PRIORITY + sn );
- if ( sn.endsWith( FACTORY_SUFFIX ) )
- {
- keys.add( ConfigurationProperties.PREFIX_PRIORITY + sn.substring( 0, sn.length() - FACTORY_SUFFIX.length() ) );
- }
- return keys.toArray( new String[keys.size()] );
- }
-
- public boolean isEmpty()
- {
- return components.isEmpty();
- }
-
- public List<PrioritizedComponent<T>> getAll()
- {
- return components;
- }
-
- public List<PrioritizedComponent<T>> getEnabled()
- {
- return components.subList( 0, firstDisabled );
- }
-
- public void list( StringBuilder buffer )
- {
- for ( int i = 0; i < components.size(); i++ )
- {
- if ( i > 0 )
- {
- buffer.append( ", " );
- }
- PrioritizedComponent<?> component = components.get( i );
- buffer.append( component.getType().getSimpleName() );
- if ( component.isDisabled() )
- {
- buffer.append( " (disabled)" );
- }
- }
- }
-
- @Override
- public String toString()
- {
- return components.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SafeTransferListener.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SafeTransferListener.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SafeTransferListener.java
deleted file mode 100644
index 1ba8a37..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SafeTransferListener.java
+++ /dev/null
@@ -1,188 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.RepositorySystemSession;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.transfer.AbstractTransferListener;
-import org.eclipse.aether.transfer.TransferCancelledException;
-import org.eclipse.aether.transfer.TransferEvent;
-import org.eclipse.aether.transfer.TransferListener;
-
-class SafeTransferListener
- extends AbstractTransferListener
-{
-
- private final Logger logger;
-
- private final TransferListener listener;
-
- public static TransferListener wrap( RepositorySystemSession session, Logger logger )
- {
- TransferListener listener = session.getTransferListener();
- if ( listener == null )
- {
- return null;
- }
- return new SafeTransferListener( listener, logger );
- }
-
- protected SafeTransferListener( RepositorySystemSession session, Logger logger )
- {
- this( session.getTransferListener(), logger );
- }
-
- private SafeTransferListener( TransferListener listener, Logger logger )
- {
- this.listener = listener;
- this.logger = logger;
- }
-
- private void logError( TransferEvent event, Throwable e )
- {
- String msg = "Failed to dispatch transfer event '" + event + "' to " + listener.getClass().getCanonicalName();
- logger.debug( msg, e );
- }
-
- @Override
- public void transferInitiated( TransferEvent event )
- throws TransferCancelledException
- {
- if ( listener != null )
- {
- try
- {
- listener.transferInitiated( event );
- }
- catch ( RuntimeException e )
- {
- logError( event, e );
- }
- catch ( LinkageError e )
- {
- logError( event, e );
- }
- }
- }
-
- @Override
- public void transferStarted( TransferEvent event )
- throws TransferCancelledException
- {
- if ( listener != null )
- {
- try
- {
- listener.transferStarted( event );
- }
- catch ( RuntimeException e )
- {
- logError( event, e );
- }
- catch ( LinkageError e )
- {
- logError( event, e );
- }
- }
- }
-
- @Override
- public void transferProgressed( TransferEvent event )
- throws TransferCancelledException
- {
- if ( listener != null )
- {
- try
- {
- listener.transferProgressed( event );
- }
- catch ( RuntimeException e )
- {
- logError( event, e );
- }
- catch ( LinkageError e )
- {
- logError( event, e );
- }
- }
- }
-
- @Override
- public void transferCorrupted( TransferEvent event )
- throws TransferCancelledException
- {
- if ( listener != null )
- {
- try
- {
- listener.transferCorrupted( event );
- }
- catch ( RuntimeException e )
- {
- logError( event, e );
- }
- catch ( LinkageError e )
- {
- logError( event, e );
- }
- }
- }
-
- @Override
- public void transferSucceeded( TransferEvent event )
- {
- if ( listener != null )
- {
- try
- {
- listener.transferSucceeded( event );
- }
- catch ( RuntimeException e )
- {
- logError( event, e );
- }
- catch ( LinkageError e )
- {
- logError( event, e );
- }
- }
- }
-
- @Override
- public void transferFailed( TransferEvent event )
- {
- if ( listener != null )
- {
- try
- {
- listener.transferFailed( event );
- }
- catch ( RuntimeException e )
- {
- logError( event, e );
- }
- catch ( LinkageError e )
- {
- logError( event, e );
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleDigest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleDigest.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleDigest.java
deleted file mode 100644
index 1dcefa4..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleDigest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.UnsupportedEncodingException;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-
-/**
- * A simple digester for strings.
- */
-class SimpleDigest
-{
-
- private MessageDigest digest;
-
- private long hash;
-
- public SimpleDigest()
- {
- try
- {
- digest = MessageDigest.getInstance( "SHA-1" );
- }
- catch ( NoSuchAlgorithmException e )
- {
- try
- {
- digest = MessageDigest.getInstance( "MD5" );
- }
- catch ( NoSuchAlgorithmException ne )
- {
- digest = null;
- hash = 13;
- }
- }
- }
-
- public void update( String data )
- {
- if ( data == null || data.length() <= 0 )
- {
- return;
- }
- if ( digest != null )
- {
- try
- {
- digest.update( data.getBytes( "UTF-8" ) );
- }
- catch ( UnsupportedEncodingException e )
- {
- throw new AssertionError( e );
- }
- }
- else
- {
- hash = hash * 31 + data.hashCode();
- }
- }
-
- public String digest()
- {
- if ( digest != null )
- {
- StringBuilder buffer = new StringBuilder( 64 );
-
- byte[] bytes = digest.digest();
- for ( byte aByte : bytes )
- {
- int b = aByte & 0xFF;
-
- if ( b < 0x10 )
- {
- buffer.append( '0' );
- }
-
- buffer.append( Integer.toHexString( b ) );
- }
-
- return buffer.toString();
- }
- else
- {
- return Long.toHexString( hash );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManager.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManager.java
deleted file mode 100644
index 97c7bba..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManager.java
+++ /dev/null
@@ -1,269 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.SortedSet;
-import java.util.TreeSet;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.LocalArtifactRegistration;
-import org.eclipse.aether.repository.LocalArtifactRequest;
-import org.eclipse.aether.repository.LocalArtifactResult;
-import org.eclipse.aether.repository.LocalMetadataRegistration;
-import org.eclipse.aether.repository.LocalMetadataRequest;
-import org.eclipse.aether.repository.LocalMetadataResult;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.log.Logger;
-
-/**
- * A local repository manager that realizes the classical Maven 2.0 local repository.
- */
-class SimpleLocalRepositoryManager
- implements LocalRepositoryManager
-{
-
- private final LocalRepository repository;
-
- public SimpleLocalRepositoryManager( File basedir )
- {
- this( basedir, "simple" );
- }
-
- public SimpleLocalRepositoryManager( String basedir )
- {
- this( ( basedir != null ) ? new File( basedir ) : null, "simple" );
- }
-
- SimpleLocalRepositoryManager( File basedir, String type )
- {
- if ( basedir == null )
- {
- throw new IllegalArgumentException( "base directory has not been specified" );
- }
- repository = new LocalRepository( basedir.getAbsoluteFile(), type );
- }
-
- public SimpleLocalRepositoryManager setLogger( Logger logger )
- {
- return this;
- }
-
- public LocalRepository getRepository()
- {
- return repository;
- }
-
- String getPathForArtifact( Artifact artifact, boolean local )
- {
- StringBuilder path = new StringBuilder( 128 );
-
- path.append( artifact.getGroupId().replace( '.', '/' ) ).append( '/' );
-
- path.append( artifact.getArtifactId() ).append( '/' );
-
- path.append( artifact.getBaseVersion() ).append( '/' );
-
- path.append( artifact.getArtifactId() ).append( '-' );
- if ( local )
- {
- path.append( artifact.getBaseVersion() );
- }
- else
- {
- path.append( artifact.getVersion() );
- }
-
- if ( artifact.getClassifier().length() > 0 )
- {
- path.append( '-' ).append( artifact.getClassifier() );
- }
-
- if ( artifact.getExtension().length() > 0 )
- {
- path.append( '.' ).append( artifact.getExtension() );
- }
-
- return path.toString();
- }
-
- public String getPathForLocalArtifact( Artifact artifact )
- {
- return getPathForArtifact( artifact, true );
- }
-
- public String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context )
- {
- return getPathForArtifact( artifact, false );
- }
-
- public String getPathForLocalMetadata( Metadata metadata )
- {
- return getPath( metadata, "local" );
- }
-
- public String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context )
- {
- return getPath( metadata, getRepositoryKey( repository, context ) );
- }
-
- String getRepositoryKey( RemoteRepository repository, String context )
- {
- String key;
-
- if ( repository.isRepositoryManager() )
- {
- // repository serves dynamic contents, take request parameters into account for key
-
- StringBuilder buffer = new StringBuilder( 128 );
-
- buffer.append( repository.getId() );
-
- buffer.append( '-' );
-
- SortedSet<String> subKeys = new TreeSet<String>();
- for ( RemoteRepository mirroredRepo : repository.getMirroredRepositories() )
- {
- subKeys.add( mirroredRepo.getId() );
- }
-
- SimpleDigest digest = new SimpleDigest();
- digest.update( context );
- for ( String subKey : subKeys )
- {
- digest.update( subKey );
- }
- buffer.append( digest.digest() );
-
- key = buffer.toString();
- }
- else
- {
- // repository serves static contents, its id is sufficient as key
-
- key = repository.getId();
- }
-
- return key;
- }
-
- private String getPath( Metadata metadata, String repositoryKey )
- {
- StringBuilder path = new StringBuilder( 128 );
-
- if ( metadata.getGroupId().length() > 0 )
- {
- path.append( metadata.getGroupId().replace( '.', '/' ) ).append( '/' );
-
- if ( metadata.getArtifactId().length() > 0 )
- {
- path.append( metadata.getArtifactId() ).append( '/' );
-
- if ( metadata.getVersion().length() > 0 )
- {
- path.append( metadata.getVersion() ).append( '/' );
- }
- }
- }
-
- path.append( insertRepositoryKey( metadata.getType(), repositoryKey ) );
-
- return path.toString();
- }
-
- private String insertRepositoryKey( String filename, String repositoryKey )
- {
- String result;
- int idx = filename.indexOf( '.' );
- if ( idx < 0 )
- {
- result = filename + '-' + repositoryKey;
- }
- else
- {
- result = filename.substring( 0, idx ) + '-' + repositoryKey + filename.substring( idx );
- }
- return result;
- }
-
- public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request )
- {
- String path = getPathForArtifact( request.getArtifact(), false );
- File file = new File( getRepository().getBasedir(), path );
-
- LocalArtifactResult result = new LocalArtifactResult( request );
- if ( file.isFile() )
- {
- result.setFile( file );
- result.setAvailable( true );
- }
-
- return result;
- }
-
- public void add( RepositorySystemSession session, LocalArtifactRegistration request )
- {
- // noop
- }
-
- @Override
- public String toString()
- {
- return String.valueOf( getRepository() );
- }
-
- public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )
- {
- LocalMetadataResult result = new LocalMetadataResult( request );
-
- String path;
-
- Metadata metadata = request.getMetadata();
- String context = request.getContext();
- RemoteRepository remote = request.getRepository();
-
- if ( remote != null )
- {
- path = getPathForRemoteMetadata( metadata, remote, context );
- }
- else
- {
- path = getPathForLocalMetadata( metadata );
- }
-
- File file = new File( getRepository().getBasedir(), path );
- if ( file.isFile() )
- {
- result.setFile( file );
- }
-
- return result;
- }
-
- public void add( RepositorySystemSession session, LocalMetadataRegistration request )
- {
- // noop
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerFactory.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerFactory.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerFactory.java
deleted file mode 100644
index 3c2cf6d..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerFactory.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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 javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
-import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-
-/**
- * Creates local repository managers for repository type {@code "simple"}.
- */
-@Named( "simple" )
-public class SimpleLocalRepositoryManagerFactory
- implements LocalRepositoryManagerFactory, Service
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- private float priority;
-
- public SimpleLocalRepositoryManagerFactory()
- {
- // enable no-arg constructor
- }
-
- @Inject
- SimpleLocalRepositoryManagerFactory( LoggerFactory loggerFactory )
- {
- setLoggerFactory( loggerFactory );
- }
-
- public LocalRepositoryManager newInstance( RepositorySystemSession session, LocalRepository repository )
- throws NoLocalRepositoryManagerException
- {
- if ( "".equals( repository.getContentType() ) || "simple".equals( repository.getContentType() ) )
- {
- return new SimpleLocalRepositoryManager( repository.getBasedir() ).setLogger( logger );
- }
- else
- {
- throw new NoLocalRepositoryManagerException( repository );
- }
- }
-
- public void initService( ServiceLocator locator )
- {
- setLoggerFactory( locator.getService( LoggerFactory.class ) );
- }
-
- public SimpleLocalRepositoryManagerFactory setLoggerFactory( LoggerFactory loggerFactory )
- {
- this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, SimpleLocalRepositoryManager.class );
- return this;
- }
-
- public float getPriority()
- {
- return priority;
- }
-
- /**
- * Sets the priority of this component.
- *
- * @param priority The priority.
- * @return This component for chaining, never {@code null}.
- */
- public SimpleLocalRepositoryManagerFactory setPriority( float priority )
- {
- this.priority = priority;
- return this;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManager.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManager.java
deleted file mode 100644
index 9b17e3a..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManager.java
+++ /dev/null
@@ -1,241 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.nio.channels.Channels;
-import java.nio.channels.FileChannel;
-import java.nio.channels.FileLock;
-import java.nio.channels.OverlappingFileLockException;
-import java.util.Map;
-import java.util.Properties;
-
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-
-/**
- * Manages potentially concurrent accesses to a properties file.
- */
-class TrackingFileManager
-{
-
- private Logger logger = NullLoggerFactory.LOGGER;
-
- public TrackingFileManager setLogger( Logger logger )
- {
- this.logger = ( logger != null ) ? logger : NullLoggerFactory.LOGGER;
- return this;
- }
-
- public Properties read( File file )
- {
- synchronized ( getLock( file ) )
- {
- FileLock lock = null;
- FileInputStream stream = null;
- try
- {
- if ( !file.exists() )
- {
- return null;
- }
-
- stream = new FileInputStream( file );
-
- lock = lock( stream.getChannel(), Math.max( 1, file.length() ), true );
-
- Properties props = new Properties();
- props.load( stream );
-
- lock.release();
- lock = null;
-
- stream.close();
- stream = null;
-
- return props;
- }
- catch ( IOException e )
- {
- logger.warn( "Failed to read tracking file " + file, e );
- }
- finally
- {
- release( lock, file );
- close( stream, file );
- }
- }
-
- return null;
- }
-
- public Properties update( File file, Map<String, String> updates )
- {
- Properties props = new Properties();
-
- synchronized ( getLock( file ) )
- {
- File directory = file.getParentFile();
- if ( !directory.mkdirs() && !directory.exists() )
- {
- logger.warn( "Failed to create parent directories for tracking file " + file );
- return props;
- }
-
- RandomAccessFile raf = null;
- FileLock lock = null;
- try
- {
- raf = new RandomAccessFile( file, "rw" );
- lock = lock( raf.getChannel(), Math.max( 1, raf.length() ), false );
-
- if ( file.canRead() )
- {
- props.load( Channels.newInputStream( raf.getChannel() ) );
- }
-
- for ( Map.Entry<String, String> update : updates.entrySet() )
- {
- if ( update.getValue() == null )
- {
- props.remove( update.getKey() );
- }
- else
- {
- props.setProperty( update.getKey(), update.getValue() );
- }
- }
-
- logger.debug( "Writing tracking file " + file );
- raf.setLength( 0 );
- props.store( Channels.newOutputStream( raf.getChannel() ),
- "NOTE: This is an Aether internal implementation file"
- + ", its format can be changed without prior notice." );
-
- lock.release();
- lock = null;
-
- raf.close();
- raf = null;
- }
- catch ( IOException e )
- {
- logger.warn( "Failed to write tracking file " + file, e );
- }
- finally
- {
- release( lock, file );
- close( raf, file );
- }
- }
-
- return props;
- }
-
- private void release( FileLock lock, File file )
- {
- if ( lock != null )
- {
- try
- {
- lock.release();
- }
- catch ( IOException e )
- {
- logger.warn( "Error releasing lock for tracking file " + file, e );
- }
- }
- }
-
- private void close( Closeable closeable, File file )
- {
- if ( closeable != null )
- {
- try
- {
- closeable.close();
- }
- catch ( IOException e )
- {
- logger.warn( "Error closing tracking file " + file, e );
- }
- }
- }
-
- private Object getLock( File file )
- {
- /*
- * NOTE: Locks held by one JVM must not overlap and using the canonical path is our best bet, still another
- * piece of code might have locked the same file (unlikely though) or the canonical path fails to capture file
- * identity sufficiently as is the case with Java 1.6 and symlinks on Windows.
- */
- try
- {
- return file.getCanonicalPath().intern();
- }
- catch ( IOException e )
- {
- logger.warn( "Failed to canonicalize path " + file + ": " + e.getMessage() );
- return file.getAbsolutePath().intern();
- }
- }
-
- private FileLock lock( FileChannel channel, long size, boolean shared )
- throws IOException
- {
- FileLock lock = null;
-
- for ( int attempts = 8; attempts >= 0; attempts-- )
- {
- try
- {
- lock = channel.lock( 0, size, shared );
- break;
- }
- catch ( OverlappingFileLockException e )
- {
- if ( attempts <= 0 )
- {
- throw (IOException) new IOException().initCause( e );
- }
- try
- {
- Thread.sleep( 50 );
- }
- catch ( InterruptedException e1 )
- {
- Thread.currentThread().interrupt();
- }
- }
- }
-
- if ( lock == null )
- {
- throw new IOException( "Could not lock file" );
- }
-
- return lock;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/Utils.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/Utils.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/Utils.java
deleted file mode 100644
index deb830d..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/Utils.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.List;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.impl.MetadataGenerator;
-import org.eclipse.aether.impl.MetadataGeneratorFactory;
-import org.eclipse.aether.impl.OfflineController;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ResolutionErrorPolicy;
-import org.eclipse.aether.resolution.ResolutionErrorPolicyRequest;
-import org.eclipse.aether.transfer.RepositoryOfflineException;
-
-/**
- * Internal utility methods.
- */
-final class Utils
-{
-
- public static PrioritizedComponents<MetadataGeneratorFactory> sortMetadataGeneratorFactories( RepositorySystemSession session,
- Collection<? extends MetadataGeneratorFactory> factories )
- {
- PrioritizedComponents<MetadataGeneratorFactory> result =
- new PrioritizedComponents<MetadataGeneratorFactory>( session );
- for ( MetadataGeneratorFactory factory : factories )
- {
- result.add( factory, factory.getPriority() );
- }
- return result;
- }
-
- public static List<Metadata> prepareMetadata( List<? extends MetadataGenerator> generators,
- List<? extends Artifact> artifacts )
- {
- List<Metadata> metadatas = new ArrayList<Metadata>();
-
- for ( MetadataGenerator generator : generators )
- {
- metadatas.addAll( generator.prepare( artifacts ) );
- }
-
- return metadatas;
- }
-
- public static List<Metadata> finishMetadata( List<? extends MetadataGenerator> generators,
- List<? extends Artifact> artifacts )
- {
- List<Metadata> metadatas = new ArrayList<Metadata>();
-
- for ( MetadataGenerator generator : generators )
- {
- metadatas.addAll( generator.finish( artifacts ) );
- }
-
- return metadatas;
- }
-
- public static <T> List<T> combine( Collection<? extends T> first, Collection<? extends T> second )
- {
- List<T> result = new ArrayList<T>( first.size() + second.size() );
- result.addAll( first );
- result.addAll( second );
- return result;
- }
-
- public static int getPolicy( RepositorySystemSession session, Artifact artifact, RemoteRepository repository )
- {
- ResolutionErrorPolicy rep = session.getResolutionErrorPolicy();
- if ( rep == null )
- {
- return ResolutionErrorPolicy.CACHE_DISABLED;
- }
- return rep.getArtifactPolicy( session, new ResolutionErrorPolicyRequest<Artifact>( artifact, repository ) );
- }
-
- public static int getPolicy( RepositorySystemSession session, Metadata metadata, RemoteRepository repository )
- {
- ResolutionErrorPolicy rep = session.getResolutionErrorPolicy();
- if ( rep == null )
- {
- return ResolutionErrorPolicy.CACHE_DISABLED;
- }
- return rep.getMetadataPolicy( session, new ResolutionErrorPolicyRequest<Metadata>( metadata, repository ) );
- }
-
- public static void appendClassLoader( StringBuilder buffer, Object component )
- {
- ClassLoader loader = component.getClass().getClassLoader();
- if ( loader != null && !loader.equals( Utils.class.getClassLoader() ) )
- {
- buffer.append( " from " ).append( loader );
- }
- }
-
- public static void checkOffline( RepositorySystemSession session, OfflineController offlineController,
- RemoteRepository repository )
- throws RepositoryOfflineException
- {
- if ( session.isOffline() )
- {
- offlineController.checkOffline( session, repository );
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-impl/src/main/java/org/eclipse/aether/internal/impl/WarnChecksumPolicy.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/WarnChecksumPolicy.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/WarnChecksumPolicy.java
deleted file mode 100644
index b5e72ec..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/WarnChecksumPolicy.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.eclipse.aether.internal.impl;
-
-/*
- * 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.spi.log.LoggerFactory;
-import org.eclipse.aether.transfer.ChecksumFailureException;
-import org.eclipse.aether.transfer.TransferResource;
-
-/**
- * Implements {@link org.eclipse.aether.repository.RepositoryPolicy#CHECKSUM_POLICY_WARN}.
- */
-final class WarnChecksumPolicy
- extends AbstractChecksumPolicy
-{
-
- public WarnChecksumPolicy( LoggerFactory loggerFactory, TransferResource resource )
- {
- super( loggerFactory, resource );
- }
-
- public boolean onTransferChecksumFailure( ChecksumFailureException exception )
- {
- String msg =
- "Could not validate integrity of download from " + resource.getRepositoryUrl() + resource.getResourceName();
- if ( logger.isDebugEnabled() )
- {
- logger.warn( msg, exception );
- }
- else
- {
- logger.warn( msg + ": " + exception.getMessage() );
- }
- return true;
- }
-
-}
[09/51] [partial] maven-aether git commit: [MNG-6007] rename Aether
to Maven Artifact Resolver
Posted by hb...@apache.org.
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/filter/DependencyFilterUtilsTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/filter/DependencyFilterUtilsTest.java b/aether-util/src/test/java/org/eclipse/aether/util/filter/DependencyFilterUtilsTest.java
deleted file mode 100644
index 28bde57..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/filter/DependencyFilterUtilsTest.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.NodeBuilder;
-import org.eclipse.aether.util.filter.DependencyFilterUtils;
-import org.junit.Test;
-
-/**
- */
-public class DependencyFilterUtilsTest
-{
-
- private static List<DependencyNode> PARENTS = Collections.emptyList();
-
- @Test
- public void testClasspathFilterCompile()
- {
- NodeBuilder builder = new NodeBuilder().artifactId( "aid" );
- DependencyFilter filter = DependencyFilterUtils.classpathFilter( "compile" );
-
- assertTrue( filter.accept( builder.scope( "compile" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "system" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "provided" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "runtime" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "test" ).build(), PARENTS ) );
- }
-
- @Test
- public void testClasspathFilterRuntime()
- {
- NodeBuilder builder = new NodeBuilder().artifactId( "aid" );
- DependencyFilter filter = DependencyFilterUtils.classpathFilter( "runtime" );
-
- assertTrue( filter.accept( builder.scope( "compile" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "system" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "provided" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "runtime" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "test" ).build(), PARENTS ) );
- }
-
- @Test
- public void testClasspathFilterTest()
- {
- NodeBuilder builder = new NodeBuilder().artifactId( "aid" );
- DependencyFilter filter = DependencyFilterUtils.classpathFilter( "test" );
-
- assertTrue( filter.accept( builder.scope( "compile" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "system" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "provided" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "runtime" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "test" ).build(), PARENTS ) );
- }
-
- @Test
- public void testClasspathFilterCompileRuntime()
- {
- NodeBuilder builder = new NodeBuilder().artifactId( "aid" );
- DependencyFilter filter = DependencyFilterUtils.classpathFilter( "compile", "runtime" );
-
- assertTrue( filter.accept( builder.scope( "compile" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "system" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "provided" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "runtime" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "test" ).build(), PARENTS ) );
- }
-
- @Test
- public void testClasspathFilterCompilePlusRuntime()
- {
- NodeBuilder builder = new NodeBuilder().artifactId( "aid" );
- DependencyFilter filter = DependencyFilterUtils.classpathFilter( "compile+runtime" );
-
- assertTrue( filter.accept( builder.scope( "compile" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "system" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "provided" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "runtime" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "test" ).build(), PARENTS ) );
- }
-
- @Test
- public void testClasspathFilterRuntimeCommaSystem()
- {
- NodeBuilder builder = new NodeBuilder().artifactId( "aid" );
- DependencyFilter filter = DependencyFilterUtils.classpathFilter( "runtime,system" );
-
- assertTrue( filter.accept( builder.scope( "compile" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "system" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "provided" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "runtime" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "test" ).build(), PARENTS ) );
- }
-
- @Test
- public void testClasspathFilterNull()
- {
- NodeBuilder builder = new NodeBuilder().artifactId( "aid" );
- DependencyFilter filter = DependencyFilterUtils.classpathFilter( (String[]) null );
-
- assertFalse( filter.accept( builder.scope( "compile" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "system" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "provided" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "runtime" ).build(), PARENTS ) );
- assertFalse( filter.accept( builder.scope( "test" ).build(), PARENTS ) );
- }
-
- @Test
- public void testClasspathFilterUnknownScope()
- {
- NodeBuilder builder = new NodeBuilder().artifactId( "aid" );
- DependencyFilter filter = DependencyFilterUtils.classpathFilter( "compile" );
-
- assertTrue( filter.accept( builder.scope( "" ).build(), PARENTS ) );
- assertTrue( filter.accept( builder.scope( "unknown" ).build(), PARENTS ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/filter/ExclusionDependencyFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/filter/ExclusionDependencyFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/filter/ExclusionDependencyFilterTest.java
deleted file mode 100644
index a0be592..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/filter/ExclusionDependencyFilterTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.NodeBuilder;
-import org.eclipse.aether.util.filter.ExclusionsDependencyFilter;
-import org.junit.Test;
-
-public class ExclusionDependencyFilterTest
-{
-
- @Test
- public void acceptTest()
- {
-
- NodeBuilder builder = new NodeBuilder();
- builder.groupId( "com.example.test" ).artifactId( "testArtifact" );
- List<DependencyNode> parents = new LinkedList<DependencyNode>();
- String[] excludes;
-
- excludes = new String[] { "com.example.test:testArtifact" };
- assertFalse( new ExclusionsDependencyFilter( Arrays.asList( excludes ) ).accept( builder.build(), parents ) );
-
- excludes = new String[] { "com.example.test:testArtifact", "com.foo:otherArtifact" };
- assertFalse( new ExclusionsDependencyFilter( Arrays.asList( excludes ) ).accept( builder.build(), parents ) );
-
- excludes = new String[] { "testArtifact" };
- assertFalse( new ExclusionsDependencyFilter( Arrays.asList( excludes ) ).accept( builder.build(), parents ) );
-
- excludes = new String[] { "otherArtifact" };
- assertTrue( new ExclusionsDependencyFilter( Arrays.asList( excludes ) ).accept( builder.build(), parents ) );
-
- assertTrue( new ExclusionsDependencyFilter( (Collection<String>) null ).accept( builder.build(), parents ) );
- }
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/filter/OrDependencyFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/filter/OrDependencyFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/filter/OrDependencyFilterTest.java
deleted file mode 100644
index 03b80ea..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/filter/OrDependencyFilterTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.aether.graph.DependencyFilter;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.NodeBuilder;
-import org.eclipse.aether.util.filter.AndDependencyFilter;
-import org.eclipse.aether.util.filter.OrDependencyFilter;
-import org.junit.Test;
-
-public class OrDependencyFilterTest
- extends AbstractDependencyFilterTest
-{
-
- @Test
- public void acceptTest()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.artifactId( "test" );
- List<DependencyNode> parents = new LinkedList<DependencyNode>();
- // Empty OR
- assertFalse( new OrDependencyFilter().accept( builder.build(), parents ) );
-
- // Basic Boolean Input
- assertTrue( new OrDependencyFilter( getAcceptFilter() ).accept( builder.build(), parents ) );
- assertFalse( new OrDependencyFilter( getDenyFilter() ).accept( builder.build(), parents ) );
-
- assertFalse( new OrDependencyFilter( getDenyFilter(), getDenyFilter() ).accept( builder.build(), parents ) );
- assertTrue( new OrDependencyFilter( getDenyFilter(), getAcceptFilter() ).accept( builder.build(), parents ) );
- assertTrue( new OrDependencyFilter( getAcceptFilter(), getDenyFilter() ).accept( builder.build(), parents ) );
- assertTrue( new OrDependencyFilter( getAcceptFilter(), getAcceptFilter() ).accept( builder.build(), parents ) );
-
- assertFalse( new OrDependencyFilter( getDenyFilter(), getDenyFilter(), getDenyFilter() ).accept( builder.build(),
- parents ) );
- assertTrue( new OrDependencyFilter( getAcceptFilter(), getDenyFilter(), getDenyFilter() ).accept( builder.build(),
- parents ) );
- assertTrue( new OrDependencyFilter( getAcceptFilter(), getAcceptFilter(), getDenyFilter() ).accept( builder.build(),
- parents ) );
- assertTrue( new OrDependencyFilter( getAcceptFilter(), getAcceptFilter(), getAcceptFilter() ).accept( builder.build(),
- parents ) );
-
- // User another constructor
- Collection<DependencyFilter> filters = new LinkedList<DependencyFilter>();
- filters.add( getDenyFilter() );
- filters.add( getAcceptFilter() );
- assertTrue( new OrDependencyFilter( filters ).accept( builder.build(), parents ) );
-
- filters = new LinkedList<DependencyFilter>();
- filters.add( getDenyFilter() );
- filters.add( getDenyFilter() );
- assertFalse( new OrDependencyFilter( filters ).accept( builder.build(), parents ) );
-
- // newInstance
- assertTrue( AndDependencyFilter.newInstance( getAcceptFilter(), getAcceptFilter() ).accept( builder.build(),
- parents ) );
- assertFalse( AndDependencyFilter.newInstance( getAcceptFilter(), getDenyFilter() ).accept( builder.build(),
- parents ) );
- assertTrue( AndDependencyFilter.newInstance( getAcceptFilter(), null ).accept( builder.build(), parents ) );
- assertFalse( AndDependencyFilter.newInstance( getDenyFilter(), null ).accept( builder.build(), parents ) );
- assertNull( AndDependencyFilter.newInstance( null, null ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/filter/PatternExclusionsDependencyFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/filter/PatternExclusionsDependencyFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/filter/PatternExclusionsDependencyFilterTest.java
deleted file mode 100644
index b5b307e..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/filter/PatternExclusionsDependencyFilterTest.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.NodeBuilder;
-import org.eclipse.aether.util.filter.PatternExclusionsDependencyFilter;
-import org.eclipse.aether.util.version.GenericVersionScheme;
-import org.eclipse.aether.version.VersionScheme;
-import org.junit.Test;
-
-public class PatternExclusionsDependencyFilterTest
-{
-
- @Test
- public void acceptTestCornerCases()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.artifactId( "testArtifact" );
- DependencyNode node = builder.build();
- List<DependencyNode> parents = new LinkedList<DependencyNode>();
-
- // Empty String, Empty List
- assertTrue( dontAccept( node, "" ) );
- assertTrue( new PatternExclusionsDependencyFilter( new LinkedList<String>() ).accept( node, parents ) );
- assertTrue( new PatternExclusionsDependencyFilter( (String[]) null ).accept( node, parents ) );
- assertTrue( new PatternExclusionsDependencyFilter( (VersionScheme) null, "[1,10]" ).accept( node, parents ) );
- }
-
- @Test
- public void acceptTestMatches()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.groupId( "com.example.test" ).artifactId( "testArtifact" ).ext( "jar" ).version( "1.0.3" );
- DependencyNode node = builder.build();
-
- // full match
- assertEquals( "com.example.test:testArtifact:jar:1.0.3", true,
- dontAccept( node, "com.example.test:testArtifact:jar:1.0.3" ) );
-
- // single wildcard
- assertEquals( "*:testArtifact:jar:1.0.3", true, dontAccept( node, "*:testArtifact:jar:1.0.3" ) );
- assertEquals( "com.example.test:*:jar:1.0.3", true, dontAccept( node, "com.example.test:*:jar:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:*:1.0.3", true,
- dontAccept( node, "com.example.test:testArtifact:*:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:*:1.0.3", true,
- dontAccept( node, "com.example.test:testArtifact:*:1.0.3" ) );
-
- // implicit wildcard
- assertEquals( ":testArtifact:jar:1.0.3", true, dontAccept( node, ":testArtifact:jar:1.0.3" ) );
- assertEquals( "com.example.test::jar:1.0.3", true, dontAccept( node, "com.example.test::jar:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact::1.0.3", true,
- dontAccept( node, "com.example.test:testArtifact::1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:jar:", true,
- dontAccept( node, "com.example.test:testArtifact:jar:" ) );
-
- // multi wildcards
- assertEquals( "*:*:jar:1.0.3", true, dontAccept( node, "*:*:jar:1.0.3" ) );
- assertEquals( "com.example.test:*:*:1.0.3", true, dontAccept( node, "com.example.test:*:*:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:*:*", true, dontAccept( node, "com.example.test:testArtifact:*:*" ) );
- assertEquals( "*:testArtifact:jar:*", true, dontAccept( node, "*:testArtifact:jar:*" ) );
- assertEquals( "*:*:jar:*", true, dontAccept( node, "*:*:jar:*" ) );
- assertEquals( ":*:jar:", true, dontAccept( node, ":*:jar:" ) );
-
- // partial wildcards
- assertEquals( "*.example.test:testArtifact:jar:1.0.3", true,
- dontAccept( node, "*.example.test:testArtifact:jar:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:*ar:1.0.*", true,
- dontAccept( node, "com.example.test:testArtifact:*ar:1.0.*" ) );
- assertEquals( "com.example.test:testArtifact:jar:1.0.*", true,
- dontAccept( node, "com.example.test:testArtifact:jar:1.0.*" ) );
- assertEquals( "*.example.*:testArtifact:jar:1.0.3", true,
- dontAccept( node, "*.example.*:testArtifact:jar:1.0.3" ) );
-
- // wildcard as empty string
- assertEquals( "com.example.test*:testArtifact:jar:1.0.3", true,
- dontAccept( node, "com.example.test*:testArtifact:jar:1.0.3" ) );
- }
-
- @Test
- public void acceptTestLessToken()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.groupId( "com.example.test" ).artifactId( "testArtifact" ).ext( "jar" ).version( "1.0.3" );
- DependencyNode node = builder.build();
-
- assertEquals( "com.example.test:testArtifact:jar", true, dontAccept( node, "com.example.test:testArtifact:jar" ) );
- assertEquals( "com.example.test:testArtifact", true, dontAccept( node, "com.example.test:testArtifact" ) );
- assertEquals( "com.example.test", true, dontAccept( node, "com.example.test" ) );
-
- assertEquals( "com.example.foo", false, dontAccept( node, "com.example.foo" ) );
- }
-
- @Test
- public void acceptTestMissmatch()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.groupId( "com.example.test" ).artifactId( "testArtifact" ).ext( "jar" ).version( "1.0.3" );
- DependencyNode node = builder.build();
-
- assertEquals( "OTHER.GROUP.ID:testArtifact:jar:1.0.3", false,
- dontAccept( node, "OTHER.GROUP.ID:testArtifact:jar:1.0.3" ) );
- assertEquals( "com.example.test:OTHER_ARTIFACT:jar:1.0.3", false,
- dontAccept( node, "com.example.test:OTHER_ARTIFACT:jar:1.0.3" ) );
- assertEquals( "com.example.test:OTHER_ARTIFACT:jar:1.0.3", false,
- dontAccept( node, "com.example.test:OTHER_ARTIFACT:jar:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:WAR:1.0.3", false,
- dontAccept( node, "com.example.test:testArtifact:WAR:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:jar:SNAPSHOT", false,
- dontAccept( node, "com.example.test:testArtifact:jar:SNAPSHOT" ) );
-
- assertEquals( "*:*:war:*", false, dontAccept( node, "*:*:war:*" ) );
- assertEquals( "OTHER.GROUP.ID", false, dontAccept( node, "OTHER.GROUP.ID" ) );
- }
-
- @Test
- public void acceptTestMoreToken()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.groupId( "com.example.test" ).artifactId( "testArtifact" ).ext( "jar" ).version( "1.0.3" );
-
- DependencyNode node = builder.build();
- assertEquals( "com.example.test:testArtifact:jar:1.0.3:foo", false,
- dontAccept( node, "com.example.test:testArtifact:jar:1.0.3:foo" ) );
- }
-
- @Test
- public void acceptTestRange()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.groupId( "com.example.test" ).artifactId( "testArtifact" ).ext( "jar" ).version( "1.0.3" );
- DependencyNode node = builder.build();
-
- String prefix = "com.example.test:testArtifact:jar:";
-
- assertTrue( prefix + "[1.0.3,1.0.4)", dontAcceptVersionRange( node, prefix + "[1.0.3,1.0.4)" ) );
- assertTrue( prefix + "[1.0.3,)", dontAcceptVersionRange( node, prefix + "[1.0.3,)" ) );
- assertTrue( prefix + "[1.0.3,]", dontAcceptVersionRange( node, prefix + "[1.0.3,]" ) );
- assertTrue( prefix + "(,1.0.3]", dontAcceptVersionRange( node, prefix + "(,1.0.3]" ) );
- assertTrue( prefix + "[1.0,]", dontAcceptVersionRange( node, prefix + "[1.0,]" ) );
- assertTrue( prefix + "[1,4]", dontAcceptVersionRange( node, prefix + "[1,4]" ) );
- assertTrue( prefix + "(1,4)", dontAcceptVersionRange( node, prefix + "(1,4)" ) );
-
- assertTrue( prefix + "(1.0.2,1.0.3]",
- dontAcceptVersionRange( node, prefix + "(1.0.2,1.0.3]", prefix + "(1.1,)" ) );
-
- assertFalse( prefix + "(1.0.3,2.0]", dontAcceptVersionRange( node, prefix + "(1.0.3,2.0]" ) );
- assertFalse( prefix + "(1,1.0.2]", dontAcceptVersionRange( node, prefix + "(1,1.0.2]" ) );
-
- assertFalse( prefix + "(1.0.2,1.0.3)",
- dontAcceptVersionRange( node, prefix + "(1.0.2,1.0.3)", prefix + "(1.0.3,)" ) );
- }
-
- private boolean dontAccept( DependencyNode node, String expression )
- {
- return !new PatternExclusionsDependencyFilter( expression ).accept( node, new LinkedList<DependencyNode>() );
- }
-
- private boolean dontAcceptVersionRange( DependencyNode node, String... expression )
- {
- return !new PatternExclusionsDependencyFilter( new GenericVersionScheme(), expression ).accept( node,
- new LinkedList<DependencyNode>() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/filter/PatternInclusionsDependencyFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/filter/PatternInclusionsDependencyFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/filter/PatternInclusionsDependencyFilterTest.java
deleted file mode 100644
index cb85431..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/filter/PatternInclusionsDependencyFilterTest.java
+++ /dev/null
@@ -1,184 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.NodeBuilder;
-import org.eclipse.aether.util.filter.PatternInclusionsDependencyFilter;
-import org.eclipse.aether.util.version.GenericVersionScheme;
-import org.eclipse.aether.version.VersionScheme;
-import org.junit.Test;
-
-public class PatternInclusionsDependencyFilterTest
- extends AbstractDependencyFilterTest
-{
-
- @Test
- public void acceptTestCornerCases()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.artifactId( "testArtifact" );
- DependencyNode node = builder.build();
- List<DependencyNode> parents = new LinkedList<DependencyNode>();
-
- // Empty String, Empty List
- assertTrue( accept( node, "" ) );
- assertFalse( new PatternInclusionsDependencyFilter( new LinkedList<String>() ).accept( node, parents ) );
- assertFalse( new PatternInclusionsDependencyFilter( (String[]) null ).accept( node, parents ) );
- assertFalse( new PatternInclusionsDependencyFilter( (VersionScheme) null, "[1,10]" ).accept( node, parents ) );
- }
-
- @Test
- public void acceptTestMatches()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.groupId( "com.example.test" ).artifactId( "testArtifact" ).ext( "jar" ).version( "1.0.3" );
- DependencyNode node = builder.build();
-
- // full match
- assertEquals( "com.example.test:testArtifact:jar:1.0.3", true,
- accept( node, "com.example.test:testArtifact:jar:1.0.3" ) );
-
- // single wildcard
- assertEquals( "*:testArtifact:jar:1.0.3", true, accept( node, "*:testArtifact:jar:1.0.3" ) );
- assertEquals( "com.example.test:*:jar:1.0.3", true, accept( node, "com.example.test:*:jar:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:*:1.0.3", true,
- accept( node, "com.example.test:testArtifact:*:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:*:1.0.3", true,
- accept( node, "com.example.test:testArtifact:*:1.0.3" ) );
-
- // implicit wildcard
- assertEquals( ":testArtifact:jar:1.0.3", true, accept( node, ":testArtifact:jar:1.0.3" ) );
- assertEquals( "com.example.test::jar:1.0.3", true, accept( node, "com.example.test::jar:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact::1.0.3", true,
- accept( node, "com.example.test:testArtifact::1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:jar:", true, accept( node, "com.example.test:testArtifact:jar:" ) );
-
- // multi wildcards
- assertEquals( "*:*:jar:1.0.3", true, accept( node, "*:*:jar:1.0.3" ) );
- assertEquals( "com.example.test:*:*:1.0.3", true, accept( node, "com.example.test:*:*:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:*:*", true, accept( node, "com.example.test:testArtifact:*:*" ) );
- assertEquals( "*:testArtifact:jar:*", true, accept( node, "*:testArtifact:jar:*" ) );
- assertEquals( "*:*:jar:*", true, accept( node, "*:*:jar:*" ) );
- assertEquals( ":*:jar:", true, accept( node, ":*:jar:" ) );
-
- // partial wildcards
- assertEquals( "*.example.test:testArtifact:jar:1.0.3", true,
- accept( node, "*.example.test:testArtifact:jar:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:*ar:1.0.*", true,
- accept( node, "com.example.test:testArtifact:*ar:1.0.*" ) );
- assertEquals( "com.example.test:testArtifact:jar:1.0.*", true,
- accept( node, "com.example.test:testArtifact:jar:1.0.*" ) );
- assertEquals( "*.example.*:testArtifact:jar:1.0.3", true, accept( node, "*.example.*:testArtifact:jar:1.0.3" ) );
-
- // wildcard as empty string
- assertEquals( "com.example.test*:testArtifact:jar:1.0.3", true,
- accept( node, "com.example.test*:testArtifact:jar:1.0.3" ) );
- }
-
- @Test
- public void acceptTestLessToken()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.groupId( "com.example.test" ).artifactId( "testArtifact" ).ext( "jar" ).version( "1.0.3" );
- DependencyNode node = builder.build();
-
- assertEquals( "com.example.test:testArtifact:jar", true, accept( node, "com.example.test:testArtifact:jar" ) );
- assertEquals( "com.example.test:testArtifact", true, accept( node, "com.example.test:testArtifact" ) );
- assertEquals( "com.example.test", true, accept( node, "com.example.test" ) );
-
- assertEquals( "com.example.foo", false, accept( node, "com.example.foo" ) );
- }
-
- @Test
- public void acceptTestMissmatch()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.groupId( "com.example.test" ).artifactId( "testArtifact" ).ext( "jar" ).version( "1.0.3" );
- DependencyNode node = builder.build();
-
- assertEquals( "OTHER.GROUP.ID:testArtifact:jar:1.0.3", false,
- accept( node, "OTHER.GROUP.ID:testArtifact:jar:1.0.3" ) );
- assertEquals( "com.example.test:OTHER_ARTIFACT:jar:1.0.3", false,
- accept( node, "com.example.test:OTHER_ARTIFACT:jar:1.0.3" ) );
- assertEquals( "com.example.test:OTHER_ARTIFACT:jar:1.0.3", false,
- accept( node, "com.example.test:OTHER_ARTIFACT:jar:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:WAR:1.0.3", false,
- accept( node, "com.example.test:testArtifact:WAR:1.0.3" ) );
- assertEquals( "com.example.test:testArtifact:jar:SNAPSHOT", false,
- accept( node, "com.example.test:testArtifact:jar:SNAPSHOT" ) );
-
- assertEquals( "*:*:war:*", false, accept( node, "*:*:war:*" ) );
- assertEquals( "OTHER.GROUP.ID", false, accept( node, "OTHER.GROUP.ID" ) );
- }
-
- @Test
- public void acceptTestMoreToken()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.groupId( "com.example.test" ).artifactId( "testArtifact" ).ext( "jar" ).version( "1.0.3" );
-
- DependencyNode node = builder.build();
- assertEquals( "com.example.test:testArtifact:jar:1.0.3:foo", false,
- accept( node, "com.example.test:testArtifact:jar:1.0.3:foo" ) );
- }
-
- @Test
- public void acceptTestRange()
- {
- NodeBuilder builder = new NodeBuilder();
- builder.groupId( "com.example.test" ).artifactId( "testArtifact" ).ext( "jar" ).version( "1.0.3" );
- DependencyNode node = builder.build();
-
- String prefix = "com.example.test:testArtifact:jar:";
-
- assertTrue( prefix + "[1.0.3,1.0.4)", acceptVersionRange( node, prefix + "[1.0.3,1.0.4)" ) );
- assertTrue( prefix + "[1.0.3,)", acceptVersionRange( node, prefix + "[1.0.3,)" ) );
- assertTrue( prefix + "[1.0.3,]", acceptVersionRange( node, prefix + "[1.0.3,]" ) );
- assertTrue( prefix + "(,1.0.3]", acceptVersionRange( node, prefix + "(,1.0.3]" ) );
- assertTrue( prefix + "[1.0,]", acceptVersionRange( node, prefix + "[1.0,]" ) );
- assertTrue( prefix + "[1,4]", acceptVersionRange( node, prefix + "[1,4]" ) );
- assertTrue( prefix + "(1,4)", acceptVersionRange( node, prefix + "(1,4)" ) );
-
- assertTrue( prefix + "(1.0.2,1.0.3]", acceptVersionRange( node, prefix + "(1.0.2,1.0.3]", prefix + "(1.1,)" ) );
-
- assertFalse( prefix + "(1.0.3,2.0]", acceptVersionRange( node, prefix + "(1.0.3,2.0]" ) );
- assertFalse( prefix + "(1,1.0.2]", acceptVersionRange( node, prefix + "(1,1.0.2]" ) );
-
- assertFalse( prefix + "(1.0.2,1.0.3)", acceptVersionRange( node, prefix + "(1.0.2,1.0.3)", prefix + "(1.0.3,)" ) );
- }
-
- public boolean accept( DependencyNode node, String expression )
- {
- return new PatternInclusionsDependencyFilter( expression ).accept( node, new LinkedList<DependencyNode>() );
- }
-
- public boolean acceptVersionRange( DependencyNode node, String... expression )
- {
- return new PatternInclusionsDependencyFilter( new GenericVersionScheme(), expression ).accept( node,
- new LinkedList<DependencyNode>() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/filter/ScopeDependencyFilterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/filter/ScopeDependencyFilterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/filter/ScopeDependencyFilterTest.java
deleted file mode 100644
index e943df9..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/filter/ScopeDependencyFilterTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.aether.util.filter;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.NodeBuilder;
-import org.eclipse.aether.util.filter.ScopeDependencyFilter;
-import org.junit.Test;
-
-public class ScopeDependencyFilterTest
- extends AbstractDependencyFilterTest
-{
-
- @Test
- public void acceptTest()
- {
-
- NodeBuilder builder = new NodeBuilder();
- builder.scope( "compile" ).artifactId( "test" );
- List<DependencyNode> parents = new LinkedList<DependencyNode>();
-
- // null or empty
- assertTrue( new ScopeDependencyFilter( null, null ).accept( builder.build(), parents ) );
- assertTrue( new ScopeDependencyFilter( new LinkedList<String>(), new LinkedList<String>() ).accept( builder.build(),
- parents ) );
- assertTrue( new ScopeDependencyFilter( (String[]) null ).accept( builder.build(), parents ) );
-
- // only excludes
- assertTrue( new ScopeDependencyFilter( "test" ).accept( builder.build(), parents ) );
- assertFalse( new ScopeDependencyFilter( "compile" ).accept( builder.build(), parents ) );
- assertFalse( new ScopeDependencyFilter( "compile", "test" ).accept( builder.build(), parents ) );
-
- // Both
- String[] excludes1 = { "provided" };
- String[] includes1 = { "compile", "test" };
- assertTrue( new ScopeDependencyFilter( Arrays.asList( includes1 ), Arrays.asList( excludes1 ) ).accept( builder.build(),
- parents ) );
- assertTrue( new ScopeDependencyFilter( Arrays.asList( includes1 ), null ).accept( builder.build(), parents ) );
-
- // exclude wins
- String[] excludes2 = { "compile" };
- String[] includes2 = { "compile" };
- assertFalse( new ScopeDependencyFilter( Arrays.asList( includes2 ), Arrays.asList( excludes2 ) ).accept( builder.build(),
- parents ) );
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManagerTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManagerTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManagerTest.java
deleted file mode 100644
index 2593585..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManagerTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.eclipse.aether.util.graph.manager;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Arrays;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencyManagement;
-import org.eclipse.aether.collection.DependencyManager;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.junit.Before;
-import org.junit.Test;
-
-public class ClassicDependencyManagerTest
-{
-
- private final Artifact A = new DefaultArtifact( "test", "a", "", "" );
-
- private final Artifact A1 = new DefaultArtifact( "test", "a", "", "1" );
-
- private final Artifact B = new DefaultArtifact( "test", "b", "", "" );
-
- private final Artifact B1 = new DefaultArtifact( "test", "b", "", "1" );
-
- private RepositorySystemSession session;
-
- private DependencyCollectionContext newContext( Dependency... managedDependencies )
- {
- return TestUtils.newCollectionContext( session, null, Arrays.asList( managedDependencies ) );
- }
-
- @Before
- public void setUp()
- {
- session = TestUtils.newSession();
- }
-
- @Test
- public void testManageOptional()
- {
- DependencyManager manager = new ClassicDependencyManager();
-
- manager =
- manager.deriveChildManager( newContext( new Dependency( A, null, null ), new Dependency( B, null, true ) ) );
- DependencyManagement mngt;
- mngt = manager.manageDependency( new Dependency( A1, null ) );
- assertNull( mngt );
- mngt = manager.manageDependency( new Dependency( B1, null ) );
- assertNull( mngt );
-
- manager = manager.deriveChildManager( newContext() );
- mngt = manager.manageDependency( new Dependency( A1, null ) );
- assertNull( mngt );
- mngt = manager.manageDependency( new Dependency( B1, null ) );
- assertNotNull( mngt );
- assertEquals( Boolean.TRUE, mngt.getOptional() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/selector/AndDependencySelectorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/selector/AndDependencySelectorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/selector/AndDependencySelectorTest.java
deleted file mode 100644
index b0f2b09..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/selector/AndDependencySelectorTest.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package org.eclipse.aether.util.graph.selector;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.collection.DependencyCollectionContext;
-import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.graph.Dependency;
-import org.junit.Test;
-
-public class AndDependencySelectorTest
-{
-
- static class DummyDependencySelector
- implements DependencySelector
- {
-
- private final boolean select;
-
- private final DependencySelector child;
-
- public DummyDependencySelector()
- {
- this( true );
- }
-
- public DummyDependencySelector( boolean select )
- {
- this.select = select;
- this.child = this;
- }
-
- public DummyDependencySelector( boolean select, DependencySelector child )
- {
- this.select = select;
- this.child = child;
- }
-
- public boolean selectDependency( Dependency dependency )
- {
- return select;
- }
-
- public DependencySelector deriveChildSelector( DependencyCollectionContext context )
- {
- return child;
- }
-
- }
-
- @Test
- public void testNewInstance()
- {
- assertNull( AndDependencySelector.newInstance( null, null ) );
- DependencySelector selector = new DummyDependencySelector();
- assertSame( selector, AndDependencySelector.newInstance( selector, null ) );
- assertSame( selector, AndDependencySelector.newInstance( null, selector ) );
- assertSame( selector, AndDependencySelector.newInstance( selector, selector ) );
- assertNotNull( AndDependencySelector.newInstance( selector, new DummyDependencySelector() ) );
- }
-
- @Test
- public void testTraverseDependency()
- {
- Dependency dependency = new Dependency( new DefaultArtifact( "g:a:v:1" ), "runtime" );
-
- DependencySelector selector = new AndDependencySelector();
- assertTrue( selector.selectDependency( dependency ) );
-
- selector =
- new AndDependencySelector( new DummyDependencySelector( false ), new DummyDependencySelector( false ) );
- assertFalse( selector.selectDependency( dependency ) );
-
- selector =
- new AndDependencySelector( new DummyDependencySelector( true ), new DummyDependencySelector( false ) );
- assertFalse( selector.selectDependency( dependency ) );
-
- selector = new AndDependencySelector( new DummyDependencySelector( true ), new DummyDependencySelector( true ) );
- assertTrue( selector.selectDependency( dependency ) );
- }
-
- @Test
- public void testDeriveChildSelector_Unchanged()
- {
- DependencySelector other1 = new DummyDependencySelector( true );
- DependencySelector other2 = new DummyDependencySelector( false );
- DependencySelector selector = new AndDependencySelector( other1, other2 );
- assertSame( selector, selector.deriveChildSelector( null ) );
- }
-
- @Test
- public void testDeriveChildSelector_OneRemaining()
- {
- DependencySelector other1 = new DummyDependencySelector( true );
- DependencySelector other2 = new DummyDependencySelector( false, null );
- DependencySelector selector = new AndDependencySelector( other1, other2 );
- assertSame( other1, selector.deriveChildSelector( null ) );
- }
-
- @Test
- public void testDeriveChildSelector_ZeroRemaining()
- {
- DependencySelector other1 = new DummyDependencySelector( true, null );
- DependencySelector other2 = new DummyDependencySelector( false, null );
- DependencySelector selector = new AndDependencySelector( other1, other2 );
- assertNull( selector.deriveChildSelector( null ) );
- }
-
- @Test
- public void testEquals()
- {
- DependencySelector other1 = new DummyDependencySelector( true );
- DependencySelector other2 = new DummyDependencySelector( false );
- DependencySelector selector1 = new AndDependencySelector( other1, other2 );
- DependencySelector selector2 = new AndDependencySelector( other2, other1 );
- DependencySelector selector3 = new AndDependencySelector( other1 );
- assertEquals( selector1, selector1 );
- assertEquals( selector1, selector2 );
- assertNotEquals( selector1, selector3 );
- assertNotEquals( selector1, this );
- assertNotEquals( selector1, null );
- }
-
- @Test
- public void testHashCode()
- {
- DependencySelector other1 = new DummyDependencySelector( true );
- DependencySelector other2 = new DummyDependencySelector( false );
- DependencySelector selector1 = new AndDependencySelector( other1, other2 );
- DependencySelector selector2 = new AndDependencySelector( other2, other1 );
- assertEquals( selector1.hashCode(), selector2.hashCode() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/AbstractDependencyGraphTransformerTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/AbstractDependencyGraphTransformerTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/AbstractDependencyGraphTransformerTest.java
deleted file mode 100644
index b5947ed..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/AbstractDependencyGraphTransformerTest.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.collection.DependencyGraphTransformationContext;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.eclipse.aether.internal.test.util.TestUtils;
-import org.junit.After;
-import org.junit.Before;
-
-/**
- */
-public abstract class AbstractDependencyGraphTransformerTest
-{
-
- protected DependencyGraphTransformer transformer;
-
- protected DependencyGraphParser parser;
-
- protected DefaultRepositorySystemSession session;
-
- protected DependencyGraphTransformationContext context;
-
- protected abstract DependencyGraphTransformer newTransformer();
-
- protected abstract DependencyGraphParser newParser();
-
- protected DependencyNode transform( DependencyNode root )
- throws Exception
- {
- context = TestUtils.newTransformationContext( session );
- root = transformer.transformGraph( root, context );
- assertNotNull( root );
- return root;
- }
-
- protected DependencyNode parseResource( String resource, String... substitutions )
- throws Exception
- {
- parser.setSubstitutions( substitutions );
- return parser.parseResource( resource );
- }
-
- protected DependencyNode parseLiteral( String literal, String... substitutions )
- throws Exception
- {
- parser.setSubstitutions( substitutions );
- return parser.parseLiteral( literal );
- }
-
- protected List<DependencyNode> find( DependencyNode node, String id )
- {
- LinkedList<DependencyNode> trail = new LinkedList<DependencyNode>();
- find( trail, node, id );
- return trail;
- }
-
- private boolean find( LinkedList<DependencyNode> trail, DependencyNode node, String id )
- {
- trail.addFirst( node );
-
- if ( isMatch( node, id ) )
- {
- return true;
- }
-
- for ( DependencyNode child : node.getChildren() )
- {
- if ( find( trail, child, id ) )
- {
- return true;
- }
- }
-
- trail.removeFirst();
-
- return false;
- }
-
- private boolean isMatch( DependencyNode node, String id )
- {
- if ( node.getDependency() == null )
- {
- return false;
- }
- return id.equals( node.getDependency().getArtifact().getArtifactId() );
- }
-
- @Before
- public void setUp()
- {
- transformer = newTransformer();
- parser = newParser();
- session = new DefaultRepositorySystemSession();
- }
-
- @After
- public void tearDown()
- {
- transformer = null;
- parser = null;
- session = null;
- context = null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/ConflictIdSorterTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/ConflictIdSorterTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/ConflictIdSorterTest.java
deleted file mode 100644
index b24a920..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/ConflictIdSorterTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Queue;
-
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.eclipse.aether.util.graph.transformer.ConflictIdSorter;
-import org.eclipse.aether.util.graph.transformer.TransformationContextKeys;
-import org.junit.Test;
-
-/**
- */
-public class ConflictIdSorterTest
- extends AbstractDependencyGraphTransformerTest
-{
-
- @Override
- protected DependencyGraphTransformer newTransformer()
- {
- return new ChainedDependencyGraphTransformer( new SimpleConflictMarker(), new ConflictIdSorter() );
- }
-
- @Override
- protected DependencyGraphParser newParser()
- {
- return new DependencyGraphParser( "transformer/conflict-id-sorter/" );
- }
-
- private void expectOrder( List<String> sorted, String... ids )
- {
- Queue<String> queue = new LinkedList<String>( sorted );
-
- for ( String id : ids )
- {
- String item = queue.poll();
- assertNotNull( String.format( "not enough conflict groups (no match for '%s'", id ), item );
-
- if ( !"*".equals( id ) )
- {
- assertEquals( id, item );
- }
- }
-
- assertTrue( String.format( "leftover conflict groups (remaining: '%s')", queue ), queue.isEmpty() );
- }
-
- private void expectOrder( String... id )
- {
- @SuppressWarnings( "unchecked" )
- List<String> sorted = (List<String>) context.get( TransformationContextKeys.SORTED_CONFLICT_IDS );
- expectOrder( sorted, id );
- }
-
- private void expectCycle( boolean cycle )
- {
- Collection<?> cycles = (Collection<?>) context.get( TransformationContextKeys.CYCLIC_CONFLICT_IDS );
- assertEquals( cycle, !cycles.isEmpty() );
- }
-
- @Test
- public void testSimple()
- throws Exception
- {
- DependencyNode node = parseResource( "simple.txt" );
- assertSame( node, transform( node ) );
-
- expectOrder( "gid2:aid::jar", "gid:aid::jar", "gid:aid2::jar" );
- expectCycle( false );
- }
-
- @Test
- public void testCycle()
- throws Exception
- {
- DependencyNode node = parseResource( "cycle.txt" );
- assertSame( node, transform( node ) );
-
- expectOrder( "gid:aid::jar", "gid2:aid::jar" );
- expectCycle( true );
- }
-
- @Test
- public void testCycles()
- throws Exception
- {
- DependencyNode node = parseResource( "cycles.txt" );
- assertSame( node, transform( node ) );
-
- expectOrder( "*", "*", "*", "gid:aid::jar" );
- expectCycle( true );
- }
-
- @Test
- public void testNoConflicts()
- throws Exception
- {
- DependencyNode node = parseResource( "no-conflicts.txt" );
- assertSame( node, transform( node ) );
-
- expectOrder( "gid:aid::jar", "gid3:aid::jar", "gid2:aid::jar", "gid4:aid::jar" );
- expectCycle( false );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/ConflictMarkerTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/ConflictMarkerTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/ConflictMarkerTest.java
deleted file mode 100644
index 550a0c6..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/ConflictMarkerTest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Map;
-
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.eclipse.aether.util.graph.transformer.ConflictMarker;
-import org.eclipse.aether.util.graph.transformer.TransformationContextKeys;
-import org.junit.Test;
-
-/**
- */
-public class ConflictMarkerTest
- extends AbstractDependencyGraphTransformerTest
-{
-
- @Override
- protected DependencyGraphTransformer newTransformer()
- {
- return new ConflictMarker();
- }
-
- @Override
- protected DependencyGraphParser newParser()
- {
- return new DependencyGraphParser( "transformer/conflict-marker/" );
- }
-
- @Test
- public void testSimple()
- throws Exception
- {
- DependencyNode root = parseResource( "simple.txt" );
-
- assertSame( root, transform( root ) );
-
- Map<?, ?> ids = (Map<?, ?>) context.get( TransformationContextKeys.CONFLICT_IDS );
- assertNotNull( ids );
-
- assertNull( ids.get( root ) );
- assertNotNull( ids.get( root.getChildren().get( 0 ) ) );
- assertNotNull( ids.get( root.getChildren().get( 1 ) ) );
- assertNotSame( ids.get( root.getChildren().get( 0 ) ), ids.get( root.getChildren().get( 1 ) ) );
- assertFalse( ids.get( root.getChildren().get( 0 ) ).equals( ids.get( root.getChildren().get( 1 ) ) ) );
- }
-
- @Test
- public void testRelocation1()
- throws Exception
- {
- DependencyNode root = parseResource( "relocation1.txt" );
-
- assertSame( root, transform( root ) );
-
- Map<?, ?> ids = (Map<?, ?>) context.get( TransformationContextKeys.CONFLICT_IDS );
- assertNotNull( ids );
-
- assertNull( ids.get( root ) );
- assertNotNull( ids.get( root.getChildren().get( 0 ) ) );
- assertNotNull( ids.get( root.getChildren().get( 1 ) ) );
- assertSame( ids.get( root.getChildren().get( 0 ) ), ids.get( root.getChildren().get( 1 ) ) );
- }
-
- @Test
- public void testRelocation2()
- throws Exception
- {
- DependencyNode root = parseResource( "relocation2.txt" );
-
- assertSame( root, transform( root ) );
-
- Map<?, ?> ids = (Map<?, ?>) context.get( TransformationContextKeys.CONFLICT_IDS );
- assertNotNull( ids );
-
- assertNull( ids.get( root ) );
- assertNotNull( ids.get( root.getChildren().get( 0 ) ) );
- assertNotNull( ids.get( root.getChildren().get( 1 ) ) );
- assertSame( ids.get( root.getChildren().get( 0 ) ), ids.get( root.getChildren().get( 1 ) ) );
- }
-
- @Test
- public void testRelocation3()
- throws Exception
- {
- DependencyNode root = parseResource( "relocation3.txt" );
-
- assertSame( root, transform( root ) );
-
- Map<?, ?> ids = (Map<?, ?>) context.get( TransformationContextKeys.CONFLICT_IDS );
- assertNotNull( ids );
-
- assertNull( ids.get( root ) );
- assertNotNull( ids.get( root.getChildren().get( 0 ) ) );
- assertNotNull( ids.get( root.getChildren().get( 1 ) ) );
- assertNotNull( ids.get( root.getChildren().get( 2 ) ) );
- assertSame( ids.get( root.getChildren().get( 0 ) ), ids.get( root.getChildren().get( 1 ) ) );
- assertSame( ids.get( root.getChildren().get( 1 ) ), ids.get( root.getChildren().get( 2 ) ) );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/JavaDependencyContextRefinerTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/JavaDependencyContextRefinerTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/JavaDependencyContextRefinerTest.java
deleted file mode 100644
index bb0d65a..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/JavaDependencyContextRefinerTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.eclipse.aether.util.graph.transformer.JavaDependencyContextRefiner;
-import org.junit.Test;
-
-/**
- */
-public class JavaDependencyContextRefinerTest
- extends AbstractDependencyGraphTransformerTest
-{
-
- @Override
- protected DependencyGraphTransformer newTransformer()
- {
- return new JavaDependencyContextRefiner();
- }
-
- @Override
- protected DependencyGraphParser newParser()
- {
- return new DependencyGraphParser( "transformer/context-refiner/" );
- }
-
- @Test
- public void testDoNotRefineOtherContext()
- throws Exception
- {
- DependencyNode node = parseLiteral( "gid:aid:cls:ver" );
- node.setRequestContext( "otherContext" );
-
- DependencyNode refinedNode = transform( node );
- assertEquals( node, refinedNode );
- }
-
- @Test
- public void testRefineToCompile()
- throws Exception
- {
- String expected = "project/compile";
-
- DependencyNode node = parseLiteral( "gid:aid:ver compile" );
- node.setRequestContext( "project" );
- DependencyNode refinedNode = transform( node );
- assertEquals( expected, refinedNode.getRequestContext() );
-
- node = parseLiteral( "gid:aid:ver system" );
- node.setRequestContext( "project" );
- refinedNode = transform( node );
- assertEquals( expected, refinedNode.getRequestContext() );
-
- node = parseLiteral( "gid:aid:ver provided" );
- node.setRequestContext( "project" );
- refinedNode = transform( node );
- assertEquals( expected, refinedNode.getRequestContext() );
- }
-
- @Test
- public void testRefineToTest()
- throws Exception
- {
- String expected = "project/test";
-
- DependencyNode node = parseLiteral( "gid:aid:ver test" );
- node.setRequestContext( "project" );
- DependencyNode refinedNode = transform( node );
- assertEquals( expected, refinedNode.getRequestContext() );
- }
-
- @Test
- public void testRefineToRuntime()
- throws Exception
- {
- String expected = "project/runtime";
-
- DependencyNode node = parseLiteral( "gid:aid:ver runtime" );
- node.setRequestContext( "project" );
- DependencyNode refinedNode = transform( node );
- assertEquals( expected, refinedNode.getRequestContext() );
- }
-
- @Test
- public void testDoNotRefineUnknownScopes()
- throws Exception
- {
- String expected = "project";
-
- DependencyNode node = parseLiteral( "gid:aid:ver unknownScope" );
- node.setRequestContext( "project" );
- DependencyNode refinedNode = transform( node );
- assertEquals( expected, refinedNode.getRequestContext() );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/JavaScopeSelectorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/JavaScopeSelectorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/JavaScopeSelectorTest.java
deleted file mode 100644
index 2737803..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/JavaScopeSelectorTest.java
+++ /dev/null
@@ -1,261 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.Locale;
-
-import org.eclipse.aether.collection.DependencyGraphTransformer;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.junit.Test;
-
-public class JavaScopeSelectorTest
- extends AbstractDependencyGraphTransformerTest
-{
-
- private enum Scope
- {
- TEST, PROVIDED, RUNTIME, COMPILE;
-
- @Override
- public String toString()
- {
- return super.name().toLowerCase( Locale.ENGLISH );
- }
- }
-
- @Override
- protected DependencyGraphTransformer newTransformer()
- {
- return new ConflictResolver( new NearestVersionSelector(), new JavaScopeSelector(),
- new SimpleOptionalitySelector(), new JavaScopeDeriver() );
- }
-
- @Override
- protected DependencyGraphParser newParser()
- {
- return new DependencyGraphParser( "transformer/scope-calculator/" );
- }
-
- private void expectScope( String expected, DependencyNode root, int... coords )
- {
- expectScope( null, expected, root, coords );
- }
-
- private void expectScope( String msg, String expected, DependencyNode root, int... coords )
- {
- if ( msg == null )
- {
- msg = "";
- }
- try
- {
- DependencyNode node = root;
- node = path( node, coords );
-
- assertEquals( msg + "\nculprit: " + node.toString() + "\n", expected, node.getDependency().getScope() );
- }
- catch ( IndexOutOfBoundsException e )
- {
- throw new IllegalArgumentException( "Illegal coordinates for child", e );
- }
- catch ( NullPointerException e )
- {
- throw new IllegalArgumentException( "Illegal coordinates for child", e );
- }
- }
-
- private DependencyNode path( DependencyNode node, int... coords )
- {
- for ( int coord : coords )
- {
- node = node.getChildren().get( coord );
- }
- return node;
- }
-
- @Test
- public void testScopeInheritanceProvided()
- throws Exception
- {
- String resource = "inheritance.txt";
-
- String expected = "test";
- DependencyNode root = transform( parseResource( resource, "provided", "test" ) );
- expectScope( parser.dump( root ), expected, root, 0, 0 );
- }
-
- @Test
- public void testConflictWinningScopeGetsUsedForInheritance()
- throws Exception
- {
- DependencyNode root = parseResource( "conflict-and-inheritance.txt" );
- assertSame( root, transform( root ) );
-
- expectScope( "compile", root, 0, 0 );
- expectScope( "compile", root, 0, 0, 0 );
- }
-
- @Test
- public void testScopeOfDirectDependencyWinsConflictAndGetsUsedForInheritanceToChildrenEverywhereInGraph()
- throws Exception
- {
- DependencyNode root = parseResource( "direct-with-conflict-and-inheritance.txt" );
- assertSame( root, transform( root ) );
-
- expectScope( "test", root, 0, 0 );
- }
-
- @Test
- public void testCycleA()
- throws Exception
- {
- DependencyNode root = parseResource( "cycle-a.txt" );
- assertSame( root, transform( root ) );
-
- expectScope( "compile", root, 0 );
- expectScope( "runtime", root, 1 );
- }
-
- @Test
- public void testCycleB()
- throws Exception
- {
- DependencyNode root = parseResource( "cycle-b.txt" );
- assertSame( root, transform( root ) );
-
- expectScope( "runtime", root, 0 );
- expectScope( "compile", root, 1 );
- }
-
- @Test
- public void testCycleC()
- throws Exception
- {
- DependencyNode root = parseResource( "cycle-c.txt" );
- assertSame( root, transform( root ) );
-
- expectScope( "runtime", root, 0 );
- expectScope( "runtime", root, 0, 0 );
- expectScope( "runtime", root, 1 );
- expectScope( "runtime", root, 1, 0 );
- }
-
- @Test
- public void testCycleD()
- throws Exception
- {
- DependencyNode root = parseResource( "cycle-d.txt" );
- assertSame( root, transform( root ) );
-
- expectScope( "compile", root, 0 );
- expectScope( "compile", root, 0, 0 );
- }
-
- @Test
- public void testDirectNodesAlwaysWin()
- throws Exception
- {
-
- for ( Scope directScope : Scope.values() )
- {
- String direct = directScope.toString();
-
- DependencyNode root = parseResource( "direct-nodes-winning.txt", direct );
-
- String msg =
- String.format( "direct node should be setting scope ('%s') for all nodes.\n" + parser.dump( root ),
- direct );
- assertSame( root, transform( root ) );
- msg += "\ntransformed:\n" + parser.dump( root );
-
- expectScope( msg, direct, root, 0 );
- }
- }
-
- @Test
- public void testNonDirectMultipleInheritance()
- throws Exception
- {
- for ( Scope scope1 : Scope.values() )
- {
- for ( Scope scope2 : Scope.values() )
- {
- DependencyNode root = parseResource( "multiple-inheritance.txt", scope1.toString(), scope2.toString() );
-
- String expected = scope1.compareTo( scope2 ) >= 0 ? scope1.toString() : scope2.toString();
- String msg = String.format( "expected '%s' to win\n" + parser.dump( root ), expected );
-
- assertSame( root, transform( root ) );
- msg += "\ntransformed:\n" + parser.dump( root );
-
- expectScope( msg, expected, root, 0, 0 );
- }
- }
- }
-
- @Test
- public void testConflictScopeOrdering()
- throws Exception
- {
- for ( Scope scope1 : Scope.values() )
- {
- for ( Scope scope2 : Scope.values() )
- {
- DependencyNode root = parseResource( "dueling-scopes.txt", scope1.toString(), scope2.toString() );
-
- String expected = scope1.compareTo( scope2 ) >= 0 ? scope1.toString() : scope2.toString();
- String msg = String.format( "expected '%s' to win\n" + parser.dump( root ), expected );
-
- assertSame( root, transform( root ) );
- msg += "\ntransformed:\n" + parser.dump( root );
-
- expectScope( msg, expected, root, 0, 0 );
- }
- }
- }
-
- /**
- * obscure case (illegal maven POM).
- */
- @Test
- public void testConflictingDirectNodes()
- throws Exception
- {
- for ( Scope scope1 : Scope.values() )
- {
- for ( Scope scope2 : Scope.values() )
- {
- DependencyNode root = parseResource( "conflicting-direct-nodes.txt", scope1.toString(), scope2.toString() );
-
- String expected = scope1.toString();
- String msg = String.format( "expected '%s' to win\n" + parser.dump( root ), expected );
-
- assertSame( root, transform( root ) );
- msg += "\ntransformed:\n" + parser.dump( root );
-
- expectScope( msg, expected, root, 0 );
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/27f8bd73/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/NearestVersionSelectorTest.java
----------------------------------------------------------------------
diff --git a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/NearestVersionSelectorTest.java b/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/NearestVersionSelectorTest.java
deleted file mode 100644
index b71adab..0000000
--- a/aether-util/src/test/java/org/eclipse/aether/util/graph/transformer/NearestVersionSelectorTest.java
+++ /dev/null
@@ -1,244 +0,0 @@
-package org.eclipse.aether.util.graph.transformer;
-
-/*
- * 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 static org.junit.Assert.*;
-
-import java.util.List;
-
-import org.eclipse.aether.collection.UnsolvableVersionConflictException;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.junit.Test;
-
-/**
- */
-public class NearestVersionSelectorTest
- extends AbstractDependencyGraphTransformerTest
-{
-
- @Override
- protected ConflictResolver newTransformer()
- {
- return new ConflictResolver( new NearestVersionSelector(), new JavaScopeSelector(),
- new SimpleOptionalitySelector(), new JavaScopeDeriver() );
- }
-
- @Override
- protected DependencyGraphParser newParser()
- {
- return new DependencyGraphParser( "transformer/version-resolver/" );
- }
-
- @Test
- public void testSelectHighestVersionFromMultipleVersionsAtSameLevel()
- throws Exception
- {
- DependencyNode root = parseResource( "sibling-versions.txt" );
- assertSame( root, transform( root ) );
-
- assertEquals( 1, root.getChildren().size() );
- assertEquals( "3", root.getChildren().get( 0 ).getArtifact().getVersion() );
- }
-
- @Test
- public void testSelectedVersionAtDeeperLevelThanOriginallySeen()
- throws Exception
- {
- DependencyNode root = parseResource( "nearest-underneath-loser-a.txt" );
-
- assertSame( root, transform( root ) );
-
- List<DependencyNode> trail = find( root, "j" );
- assertEquals( 5, trail.size() );
- }
-
- @Test
- public void testNearestDirtyVersionUnderneathRemovedNode()
- throws Exception
- {
- DependencyNode root = parseResource( "nearest-underneath-loser-b.txt" );
-
- assertSame( root, transform( root ) );
-
- List<DependencyNode> trail = find( root, "j" );
- assertEquals( 5, trail.size() );
- }
-
- @Test
- public void testViolationOfHardConstraintFallsBackToNearestSeenNotFirstSeen()
- throws Exception
- {
- DependencyNode root = parseResource( "range-backtracking.txt" );
-
- assertSame( root, transform( root ) );
-
- List<DependencyNode> trail = find( root, "x" );
- assertEquals( 3, trail.size() );
- assertEquals( "2", trail.get( 0 ).getArtifact().getVersion() );
- }
-
- @Test
- public void testCyclicConflictIdGraph()
- throws Exception
- {
- DependencyNode root = parseResource( "conflict-id-cycle.txt" );
-
- assertSame( root, transform( root ) );
-
- assertEquals( 2, root.getChildren().size() );
- assertEquals( "a", root.getChildren().get( 0 ).getArtifact().getArtifactId() );
- assertEquals( "b", root.getChildren().get( 1 ).getArtifact().getArtifactId() );
- assertTrue( root.getChildren().get( 0 ).getChildren().isEmpty() );
- assertTrue( root.getChildren().get( 1 ).getChildren().isEmpty() );
- }
-
- @Test( expected = UnsolvableVersionConflictException.class )
- public void testUnsolvableRangeConflictBetweenHardConstraints()
- throws Exception
- {
- DependencyNode root = parseResource( "unsolvable.txt" );
-
- assertSame( root, transform( root ) );
- }
-
- @Test( expected = UnsolvableVersionConflictException.class )
- public void testUnsolvableRangeConflictWithUnrelatedCycle()
- throws Exception
- {
- DependencyNode root = parseResource( "unsolvable-with-cycle.txt" );
-
- transform( root );
- }
-
- @Test
- public void testSolvableConflictBetweenHardConstraints()
- throws Exception
- {
- DependencyNode root = parseResource( "ranges.txt" );
-
- assertSame( root, transform( root ) );
- }
-
- @Test
- public void testConflictGroupCompletelyDroppedFromResolvedTree()
- throws Exception
- {
- DependencyNode root = parseResource( "dead-conflict-group.txt" );
-
- assertSame( root, transform( root ) );
-
- assertEquals( 2, root.getChildren().size() );
- assertEquals( "a", root.getChildren().get( 0 ).getArtifact().getArtifactId() );
- assertEquals( "b", root.getChildren().get( 1 ).getArtifact().getArtifactId() );
- assertTrue( root.getChildren().get( 0 ).getChildren().isEmpty() );
- assertTrue( root.getChildren().get( 1 ).getChildren().isEmpty() );
- }
-
- @Test
- public void testNearestSoftVersionPrunedByFartherRange()
- throws Exception
- {
- DependencyNode root = parseResource( "soft-vs-range.txt" );
-
- assertSame( root, transform( root ) );
-
- assertEquals( 2, root.getChildren().size() );
- assertEquals( "a", root.getChildren().get( 0 ).getArtifact().getArtifactId() );
- assertEquals( 0, root.getChildren().get( 0 ).getChildren().size() );
- assertEquals( "b", root.getChildren().get( 1 ).getArtifact().getArtifactId() );
- assertEquals( 1, root.getChildren().get( 1 ).getChildren().size() );
- }
-
- @Test
- public void testCyclicGraph()
- throws Exception
- {
- DependencyNode root = parseResource( "cycle.txt" );
-
- assertSame( root, transform( root ) );
-
- assertEquals( 2, root.getChildren().size() );
- assertEquals( 1, root.getChildren().get( 0 ).getChildren().size() );
- assertEquals( 0, root.getChildren().get( 0 ).getChildren().get( 0 ).getChildren().size() );
- assertEquals( 0, root.getChildren().get( 1 ).getChildren().size() );
- }
-
- @Test
- public void testLoop()
- throws Exception
- {
- DependencyNode root = parseResource( "loop.txt" );
-
- assertSame( root, transform( root ) );
-
- assertEquals( 0, root.getChildren().size() );
- }
-
- @Test
- public void testOverlappingCycles()
- throws Exception
- {
- DependencyNode root = parseResource( "overlapping-cycles.txt" );
-
- assertSame( root, transform( root ) );
-
- assertEquals( 2, root.getChildren().size() );
- }
-
- @Test
- public void testScopeDerivationAndConflictResolutionCantHappenForAllNodesBeforeVersionSelection()
- throws Exception
- {
- DependencyNode root = parseResource( "scope-vs-version.txt" );
-
- assertSame( root, transform( root ) );
-
- DependencyNode[] nodes = find( root, "y" ).toArray( new DependencyNode[0] );
- assertEquals( 3, nodes.length );
- assertEquals( "test", nodes[1].getDependency().getScope() );
- assertEquals( "test", nodes[0].getDependency().getScope() );
- }
-
- @Test
- public void testVerboseMode()
- throws Exception
- {
- DependencyNode root = parseResource( "verbose.txt" );
-
- session.setConfigProperty( ConflictResolver.CONFIG_PROP_VERBOSE, Boolean.TRUE );
- assertSame( root, transform( root ) );
-
- assertEquals( 2, root.getChildren().size() );
- assertEquals( 1, root.getChildren().get( 0 ).getChildren().size() );
- DependencyNode winner = root.getChildren().get( 0 ).getChildren().get( 0 );
- assertEquals( "test", winner.getDependency().getScope() );
- assertEquals( "compile", winner.getData().get( ConflictResolver.NODE_DATA_ORIGINAL_SCOPE ) );
- assertEquals( false, winner.getData().get( ConflictResolver.NODE_DATA_ORIGINAL_OPTIONALITY) );
- assertEquals( 1, root.getChildren().get( 1 ).getChildren().size() );
- DependencyNode loser = root.getChildren().get( 1 ).getChildren().get( 0 );
- assertEquals( "test", loser.getDependency().getScope() );
- assertEquals( 0, loser.getChildren().size() );
- assertSame( winner, loser.getData().get( ConflictResolver.NODE_DATA_WINNER ) );
- assertEquals( "compile", loser.getData().get( ConflictResolver.NODE_DATA_ORIGINAL_SCOPE ) );
- assertEquals( false, loser.getData().get( ConflictResolver.NODE_DATA_ORIGINAL_OPTIONALITY ) );
- }
-
-}