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 2017/01/15 19:24:12 UTC

[38/53] [abbrv] [partial] maven-resolver git commit: [MNG-6007] renamed Aether to Maven Artifact Resolver

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/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-resolver/blob/3a1b8ae0/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-resolver/blob/3a1b8ae0/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-resolver/blob/3a1b8ae0/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 90fc208..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
+++ /dev/null
@@ -1,872 +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.currentTimeMillis();
-
-        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.currentTimeMillis();
-
-        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.currentTimeMillis();
-            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 )
-    {
-
-        if ( depSelector != null && !depSelector.selectDependency( dependency ) )
-        {
-            return;
-        }
-
-        PremanagedDependency preManaged =
-            PremanagedDependency.create( depManager, dependency, disableVersionManagement, args.premanagedState );
-        dependency = preManaged.managedDependency;
-
-        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( 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.setArtifact( args.pool.intern( d.getArtifact() ) ) );
-
-                    List<RemoteRepository> repos =
-                        getRemoteRepositories( rangeResult.getRepository( version ), repositories );
-
-                    DefaultDependencyNode child =
-                        createDependencyNode( 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( 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( List<Artifact> relocations,
-                                                               PremanagedDependency preManaged,
-                                                               VersionRangeResult rangeResult, Version version,
-                                                               Dependency d, Collection<Artifact> aliases,
-                                                               List<RemoteRepository> repos, String requestContext )
-    {
-        DefaultDependencyNode child = new DefaultDependencyNode( 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( List<Artifact> relocations,
-                                                               PremanagedDependency preManaged,
-                                                               VersionRangeResult rangeResult, Version version,
-                                                               Dependency d, ArtifactDescriptorResult descriptorResult,
-                                                               DependencyNode cycleNode )
-    {
-        DefaultDependencyNode child =
-            createDependencyNode( 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-resolver/blob/3a1b8ae0/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-resolver/blob/3a1b8ae0/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 );
-    }
-
-}