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:59 UTC

[36/51] [partial] maven-aether git commit: [MNG-6007] rename Aether to Maven Artifact Resolver

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 );
-    }
-
-}