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

[40/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-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java b/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java
deleted file mode 100644
index 6d67768..0000000
--- a/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java
+++ /dev/null
@@ -1,465 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.internal.test.util.TestFileProcessor;
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayout;
-import org.eclipse.aether.transfer.ChecksumFailureException;
-import org.junit.Before;
-import org.junit.Test;
-
-public class ChecksumValidatorTest
-{
-
-    private static class StubChecksumPolicy
-        implements ChecksumPolicy
-    {
-
-        boolean inspectAll;
-
-        boolean tolerateFailure;
-
-        private List<String> callbacks = new ArrayList<String>();
-
-        private Object conclusion;
-
-        public boolean onChecksumMatch( String algorithm, int kind )
-        {
-            callbacks.add( String.format( "match(%s, %04x)", algorithm, kind ) );
-            if ( inspectAll )
-            {
-                if ( conclusion == null )
-                {
-                    conclusion = true;
-                }
-                return false;
-            }
-            return true;
-        }
-
-        public void onChecksumMismatch( String algorithm, int kind, ChecksumFailureException exception )
-            throws ChecksumFailureException
-        {
-            callbacks.add( String.format( "mismatch(%s, %04x)", algorithm, kind ) );
-            if ( inspectAll )
-            {
-                conclusion = exception;
-                return;
-            }
-            throw exception;
-        }
-
-        public void onChecksumError( String algorithm, int kind, ChecksumFailureException exception )
-            throws ChecksumFailureException
-        {
-            callbacks.add( String.format( "error(%s, %04x, %s)", algorithm, kind, exception.getCause().getMessage() ) );
-        }
-
-        public void onNoMoreChecksums()
-            throws ChecksumFailureException
-        {
-            callbacks.add( String.format( "noMore()" ) );
-            if ( conclusion instanceof ChecksumFailureException )
-            {
-                throw (ChecksumFailureException) conclusion;
-            }
-            else if ( !Boolean.TRUE.equals( conclusion ) )
-            {
-                throw new ChecksumFailureException( "no checksums" );
-            }
-        }
-
-        public void onTransferRetry()
-        {
-            callbacks.add( String.format( "retry()" ) );
-        }
-
-        public boolean onTransferChecksumFailure( ChecksumFailureException exception )
-        {
-            callbacks.add( String.format( "fail(%s)", exception.getMessage() ) );
-            return tolerateFailure;
-        }
-
-        void assertCallbacks( String... callbacks )
-        {
-            assertEquals( Arrays.asList( callbacks ), this.callbacks );
-        }
-
-    }
-
-    private static class StubChecksumFetcher
-        implements ChecksumValidator.ChecksumFetcher
-    {
-
-        Map<URI, Object> checksums = new HashMap<URI, Object>();
-
-        List<File> checksumFiles = new ArrayList<File>();
-
-        private List<URI> fetchedFiles = new ArrayList<URI>();
-
-        public boolean fetchChecksum( URI remote, File local )
-            throws Exception
-        {
-            fetchedFiles.add( remote );
-            Object checksum = checksums.get( remote );
-            if ( checksum == null )
-            {
-                return false;
-            }
-            if ( checksum instanceof Exception )
-            {
-                throw (Exception) checksum;
-            }
-            TestFileUtils.writeString( local, checksum.toString() );
-            checksumFiles.add( local );
-            return true;
-        }
-
-        void mock( String algo, Object value )
-        {
-            checksums.put( toUri( algo ), value );
-        }
-
-        void assertFetchedFiles( String... algos )
-        {
-            List<URI> expected = new ArrayList<URI>();
-            for ( String algo : algos )
-            {
-                expected.add( toUri( algo ) );
-            }
-            assertEquals( expected, fetchedFiles );
-        }
-
-        private static URI toUri( String algo )
-        {
-            return newChecksum( algo ).getLocation();
-        }
-
-    }
-
-    private static final String SHA1 = "SHA-1";
-
-    private static final String MD5 = "MD5";
-
-    private StubChecksumPolicy policy;
-
-    private StubChecksumFetcher fetcher;
-
-    private File dataFile;
-
-    private static RepositoryLayout.Checksum newChecksum( String algo )
-    {
-        return RepositoryLayout.Checksum.forLocation( URI.create( "file" ), algo );
-    }
-
-    private List<RepositoryLayout.Checksum> newChecksums( String... algos )
-    {
-        List<RepositoryLayout.Checksum> checksums = new ArrayList<RepositoryLayout.Checksum>();
-        for ( String algo : algos )
-        {
-            checksums.add( newChecksum( algo ) );
-        }
-        return checksums;
-    }
-
-    private ChecksumValidator newValidator( String... algos )
-    {
-        return new ChecksumValidator( new TestLoggerFactory().getLogger( "" ), dataFile, new TestFileProcessor(),
-                                      fetcher, policy, newChecksums( algos ) );
-    }
-
-    private Map<String, ?> checksums( String... algoDigestPairs )
-    {
-        Map<String, Object> checksums = new LinkedHashMap<String, Object>();
-        for ( int i = 0; i < algoDigestPairs.length; i += 2 )
-        {
-            String algo = algoDigestPairs[i];
-            String digest = algoDigestPairs[i + 1];
-            if ( digest == null )
-            {
-                checksums.put( algo, new IOException( "error" ) );
-            }
-            else
-            {
-                checksums.put( algo, digest );
-            }
-        }
-        return checksums;
-    }
-
-    @Before
-    public void init()
-        throws Exception
-    {
-        dataFile = TestFileUtils.createTempFile( "" );
-        dataFile.delete();
-        policy = new StubChecksumPolicy();
-        fetcher = new StubChecksumFetcher();
-    }
-
-    @Test
-    public void testValidate_NullPolicy()
-        throws Exception
-    {
-        policy = null;
-        ChecksumValidator validator = newValidator( SHA1 );
-        validator.validate( checksums( SHA1, "ignored" ), null );
-        fetcher.assertFetchedFiles();
-    }
-
-    @Test
-    public void testValidate_AcceptOnFirstMatch()
-        throws Exception
-    {
-        ChecksumValidator validator = newValidator( SHA1 );
-        fetcher.mock( SHA1, "foo" );
-        validator.validate( checksums( SHA1, "foo" ), null );
-        fetcher.assertFetchedFiles( SHA1 );
-        policy.assertCallbacks( "match(SHA-1, 0000)" );
-    }
-
-    @Test
-    public void testValidate_FailOnFirstMismatch()
-        throws Exception
-    {
-        ChecksumValidator validator = newValidator( SHA1 );
-        fetcher.mock( SHA1, "foo" );
-        try
-        {
-            validator.validate( checksums( SHA1, "not-foo" ), null );
-            fail( "expected exception" );
-        }
-        catch ( ChecksumFailureException e )
-        {
-            assertEquals( "foo", e.getExpected() );
-            assertEquals( "not-foo", e.getActual() );
-            assertTrue( e.isRetryWorthy() );
-        }
-        fetcher.assertFetchedFiles( SHA1 );
-        policy.assertCallbacks( "mismatch(SHA-1, 0000)" );
-    }
-
-    @Test
-    public void testValidate_AcceptOnEnd()
-        throws Exception
-    {
-        policy.inspectAll = true;
-        ChecksumValidator validator = newValidator( SHA1, MD5 );
-        fetcher.mock( SHA1, "foo" );
-        fetcher.mock( MD5, "bar" );
-        validator.validate( checksums( SHA1, "foo", MD5, "bar" ), null );
-        fetcher.assertFetchedFiles( SHA1, MD5 );
-        policy.assertCallbacks( "match(SHA-1, 0000)", "match(MD5, 0000)", "noMore()" );
-    }
-
-    @Test
-    public void testValidate_FailOnEnd()
-        throws Exception
-    {
-        policy.inspectAll = true;
-        ChecksumValidator validator = newValidator( SHA1, MD5 );
-        fetcher.mock( SHA1, "foo" );
-        fetcher.mock( MD5, "bar" );
-        try
-        {
-            validator.validate( checksums( SHA1, "not-foo", MD5, "bar" ), null );
-            fail( "expected exception" );
-        }
-        catch ( ChecksumFailureException e )
-        {
-            assertEquals( "foo", e.getExpected() );
-            assertEquals( "not-foo", e.getActual() );
-            assertTrue( e.isRetryWorthy() );
-        }
-        fetcher.assertFetchedFiles( SHA1, MD5 );
-        policy.assertCallbacks( "mismatch(SHA-1, 0000)", "match(MD5, 0000)", "noMore()" );
-    }
-
-    @Test
-    public void testValidate_InlinedBeforeExternal()
-        throws Exception
-    {
-        policy.inspectAll = true;
-        ChecksumValidator validator = newValidator( SHA1, MD5 );
-        fetcher.mock( SHA1, "foo" );
-        fetcher.mock( MD5, "bar" );
-        validator.validate( checksums( SHA1, "foo", MD5, "bar" ), checksums( SHA1, "foo", MD5, "bar" ) );
-        fetcher.assertFetchedFiles( SHA1, MD5 );
-        policy.assertCallbacks( "match(SHA-1, 0001)", "match(MD5, 0001)", "match(SHA-1, 0000)", "match(MD5, 0000)",
-                                "noMore()" );
-    }
-
-    @Test
-    public void testValidate_CaseInsensitive()
-        throws Exception
-    {
-        policy.inspectAll = true;
-        ChecksumValidator validator = newValidator( SHA1 );
-        fetcher.mock( SHA1, "FOO" );
-        validator.validate( checksums( SHA1, "foo" ), checksums( SHA1, "foo" ) );
-        policy.assertCallbacks( "match(SHA-1, 0001)", "match(SHA-1, 0000)", "noMore()" );
-    }
-
-    @Test
-    public void testValidate_MissingRemoteChecksum()
-        throws Exception
-    {
-        ChecksumValidator validator = newValidator( SHA1, MD5 );
-        fetcher.mock( MD5, "bar" );
-        validator.validate( checksums( MD5, "bar" ), null );
-        fetcher.assertFetchedFiles( SHA1, MD5 );
-        policy.assertCallbacks( "match(MD5, 0000)" );
-    }
-
-    @Test
-    public void testValidate_InaccessibleRemoteChecksum()
-        throws Exception
-    {
-        ChecksumValidator validator = newValidator( SHA1, MD5 );
-        fetcher.mock( SHA1, new IOException( "inaccessible" ) );
-        fetcher.mock( MD5, "bar" );
-        validator.validate( checksums( MD5, "bar" ), null );
-        fetcher.assertFetchedFiles( SHA1, MD5 );
-        policy.assertCallbacks( "error(SHA-1, 0000, inaccessible)", "match(MD5, 0000)" );
-    }
-
-    @Test
-    public void testValidate_InaccessibleLocalChecksum()
-        throws Exception
-    {
-        ChecksumValidator validator = newValidator( SHA1, MD5 );
-        fetcher.mock( SHA1, "foo" );
-        fetcher.mock( MD5, "bar" );
-        validator.validate( checksums( SHA1, null, MD5, "bar" ), null );
-        fetcher.assertFetchedFiles( MD5 );
-        policy.assertCallbacks( "error(SHA-1, 0000, error)", "match(MD5, 0000)" );
-    }
-
-    @Test
-    public void testHandle_Accept()
-        throws Exception
-    {
-        policy.tolerateFailure = true;
-        ChecksumValidator validator = newValidator( SHA1 );
-        assertEquals( true, validator.handle( new ChecksumFailureException( "accept" ) ) );
-        policy.assertCallbacks( "fail(accept)" );
-    }
-
-    @Test
-    public void testHandle_Reject()
-        throws Exception
-    {
-        policy.tolerateFailure = false;
-        ChecksumValidator validator = newValidator( SHA1 );
-        assertEquals( false, validator.handle( new ChecksumFailureException( "reject" ) ) );
-        policy.assertCallbacks( "fail(reject)" );
-    }
-
-    @Test
-    public void testRetry_ResetPolicy()
-        throws Exception
-    {
-        ChecksumValidator validator = newValidator( SHA1 );
-        validator.retry();
-        policy.assertCallbacks( "retry()" );
-    }
-
-    @Test
-    public void testRetry_RemoveTempFiles()
-        throws Exception
-    {
-        ChecksumValidator validator = newValidator( SHA1 );
-        fetcher.mock( SHA1, "foo" );
-        validator.validate( checksums( SHA1, "foo" ), null );
-        fetcher.assertFetchedFiles( SHA1 );
-        assertEquals( 1, fetcher.checksumFiles.size() );
-        for ( File file : fetcher.checksumFiles )
-        {
-            assertTrue( file.getAbsolutePath(), file.isFile() );
-        }
-        validator.retry();
-        for ( File file : fetcher.checksumFiles )
-        {
-            assertFalse( file.getAbsolutePath(), file.exists() );
-        }
-    }
-
-    @Test
-    public void testCommit_SaveChecksumFiles()
-        throws Exception
-    {
-        policy.inspectAll = true;
-        ChecksumValidator validator = newValidator( SHA1, MD5 );
-        fetcher.mock( MD5, "bar" );
-        validator.validate( checksums( SHA1, "foo", MD5, "bar" ), checksums( SHA1, "foo" ) );
-        assertEquals( 1, fetcher.checksumFiles.size() );
-        for ( File file : fetcher.checksumFiles )
-        {
-            assertTrue( file.getAbsolutePath(), file.isFile() );
-        }
-        validator.commit();
-        File checksumFile = new File( dataFile.getPath() + ".sha1" );
-        assertTrue( checksumFile.getAbsolutePath(), checksumFile.isFile() );
-        assertEquals( "foo", TestFileUtils.readString( checksumFile ) );
-        checksumFile = new File( dataFile.getPath() + ".md5" );
-        assertTrue( checksumFile.getAbsolutePath(), checksumFile.isFile() );
-        assertEquals( "bar", TestFileUtils.readString( checksumFile ) );
-        for ( File file : fetcher.checksumFiles )
-        {
-            assertFalse( file.getAbsolutePath(), file.exists() );
-        }
-    }
-
-    @Test
-    public void testClose_RemoveTempFiles()
-        throws Exception
-    {
-        ChecksumValidator validator = newValidator( SHA1 );
-        fetcher.mock( SHA1, "foo" );
-        validator.validate( checksums( SHA1, "foo" ), null );
-        fetcher.assertFetchedFiles( SHA1 );
-        assertEquals( 1, fetcher.checksumFiles.size() );
-        for ( File file : fetcher.checksumFiles )
-        {
-            assertTrue( file.getAbsolutePath(), file.isFile() );
-        }
-        validator.close();
-        for ( File file : fetcher.checksumFiles )
-        {
-            assertFalse( file.getAbsolutePath(), file.exists() );
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java
----------------------------------------------------------------------
diff --git a/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java b/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java
deleted file mode 100644
index edfeee9..0000000
--- a/aether-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java
+++ /dev/null
@@ -1,327 +0,0 @@
-package org.eclipse.aether.connector.basic;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import static org.junit.Assert.*;
-import static org.junit.Assume.*;
-
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.nio.channels.FileLock;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.concurrent.CountDownLatch;
-
-import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class PartialFileTest
-{
-
-    private static class StubRemoteAccessChecker
-        implements PartialFile.RemoteAccessChecker
-    {
-
-        Exception exception;
-
-        int invocations;
-
-        public void checkRemoteAccess()
-            throws Exception
-        {
-            invocations++;
-            if ( exception != null )
-            {
-                throw exception;
-            }
-        }
-
-    }
-
-    private static class ConcurrentWriter
-        extends Thread
-    {
-
-        private final File dstFile;
-
-        private final File partFile;
-
-        private final File lockFile;
-
-        private final CountDownLatch locked;
-
-        private final int sleep;
-
-        volatile int length;
-
-        Exception error;
-
-        public ConcurrentWriter( File dstFile, int sleep, int length )
-            throws InterruptedException
-        {
-            super( "ConcurrentWriter-" + dstFile.getAbsolutePath() );
-            this.dstFile = dstFile;
-            partFile = new File( dstFile.getPath() + PartialFile.EXT_PART );
-            lockFile = new File( partFile.getPath() + PartialFile.EXT_LOCK );
-            this.sleep = sleep;
-            this.length = length;
-            locked = new CountDownLatch( 1 );
-            start();
-            locked.await();
-        }
-
-        @Override
-        public void run()
-        {
-            try
-            {
-                RandomAccessFile raf = new RandomAccessFile( lockFile, "rw" );
-                try
-                {
-                    FileLock lock = raf.getChannel().lock( 0, 1, false );
-                    locked.countDown();
-                    FileOutputStream fos = new FileOutputStream( partFile );
-                    try
-                    {
-                        for ( int i = 0, n = Math.abs( length ); i < n; i++ )
-                        {
-                            for ( long start = System.currentTimeMillis(); System.currentTimeMillis() - start < sleep; )
-                            {
-                                Thread.sleep( 10 );
-                            }
-                            fos.write( 65 );
-                            fos.flush();
-                            System.out.println( "  " + System.currentTimeMillis() + " Wrote byte " + ( i + 1 ) + "/"
-                                + n );
-                        }
-                        if ( length >= 0 && !dstFile.setLastModified( System.currentTimeMillis() ) )
-                        {
-                            throw new IOException( "Could not update destination file" );
-                        }
-                    }
-                    finally
-                    {
-                        fos.close();
-                    }
-                    lock.release();
-                }
-                finally
-                {
-                    raf.close();
-                    lockFile.delete();
-                }
-            }
-            catch ( Exception e )
-            {
-                error = e;
-            }
-        }
-
-    }
-
-    private static final boolean PROPER_LOCK_SUPPORT;
-
-    static
-    {
-        String javaVersion = System.getProperty( "java.version" ).trim();
-        boolean notJava5 = !javaVersion.startsWith( "1.5." );
-        String osName = System.getProperty( "os.name" ).toLowerCase( Locale.ENGLISH );
-        boolean windows = osName.contains( "windows" );
-        PROPER_LOCK_SUPPORT = notJava5 || windows;
-    }
-
-    private StubRemoteAccessChecker remoteAccessChecker;
-
-    private File dstFile;
-
-    private File partFile;
-
-    private File lockFile;
-
-    private List<Closeable> closeables;
-
-    private PartialFile newPartialFile( long resumeThreshold, int requestTimeout )
-        throws Exception
-    {
-        PartialFile.Factory factory =
-            new PartialFile.Factory( resumeThreshold >= 0, resumeThreshold, requestTimeout,
-                                     new TestLoggerFactory().getLogger( "" ) );
-        PartialFile partFile = factory.newInstance( dstFile, remoteAccessChecker );
-        if ( partFile != null )
-        {
-            closeables.add( partFile );
-        }
-        return partFile;
-    }
-
-    @Before
-    public void init()
-        throws Exception
-    {
-        closeables = new ArrayList<Closeable>();
-        remoteAccessChecker = new StubRemoteAccessChecker();
-        dstFile = TestFileUtils.createTempFile( "Hello World!" );
-        partFile = new File( dstFile.getPath() + PartialFile.EXT_PART );
-        lockFile = new File( partFile.getPath() + PartialFile.EXT_LOCK );
-    }
-
-    @After
-    public void exit()
-    {
-        for ( Closeable closeable : closeables )
-        {
-            try
-            {
-                closeable.close();
-            }
-            catch ( Exception e )
-            {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    @Test
-    public void testCloseNonResumableFile()
-        throws Exception
-    {
-        PartialFile partialFile = newPartialFile( -1, 100 );
-        assertNotNull( partialFile );
-        assertNotNull( partialFile.getFile() );
-        assertTrue( partialFile.getFile().getAbsolutePath(), partialFile.getFile().isFile() );
-        partialFile.close();
-        assertFalse( partialFile.getFile().getAbsolutePath(), partialFile.getFile().exists() );
-    }
-
-    @Test
-    public void testCloseResumableFile()
-        throws Exception
-    {
-        PartialFile partialFile = newPartialFile( 0, 100 );
-        assertNotNull( partialFile );
-        assertNotNull( partialFile.getFile() );
-        assertTrue( partialFile.getFile().getAbsolutePath(), partialFile.getFile().isFile() );
-        assertEquals( partFile, partialFile.getFile() );
-        assertTrue( lockFile.getAbsolutePath(), lockFile.isFile() );
-        partialFile.close();
-        assertTrue( partialFile.getFile().getAbsolutePath(), partialFile.getFile().isFile() );
-        assertFalse( lockFile.getAbsolutePath(), lockFile.exists() );
-    }
-
-    @Test
-    public void testResumableFileCreationError()
-        throws Exception
-    {
-        assertTrue( partFile.getAbsolutePath(), partFile.mkdirs() );
-        PartialFile partialFile = newPartialFile( 0, 100 );
-        assertNotNull( partialFile );
-        assertFalse( partialFile.isResume() );
-        assertFalse( lockFile.getAbsolutePath(), lockFile.exists() );
-    }
-
-    @Test
-    public void testResumeThreshold()
-        throws Exception
-    {
-        PartialFile partialFile = newPartialFile( 0, 100 );
-        assertNotNull( partialFile );
-        assertTrue( partialFile.isResume() );
-        partialFile.close();
-        partialFile = newPartialFile( 1, 100 );
-        assertNotNull( partialFile );
-        assertFalse( partialFile.isResume() );
-        partialFile.close();
-    }
-
-    @Test( timeout = 10000 )
-    public void testResumeConcurrently_RequestTimeout()
-        throws Exception
-    {
-        assumeTrue( PROPER_LOCK_SUPPORT );
-        ConcurrentWriter writer = new ConcurrentWriter( dstFile, 5 * 1000, 1 );
-        try
-        {
-            newPartialFile( 0, 1000 );
-            fail( "expected exception" );
-        }
-        catch ( Exception e )
-        {
-            assertTrue( e.getMessage().contains( "Timeout" ) );
-        }
-        writer.interrupt();
-        writer.join();
-    }
-
-    @Test( timeout = 10000 )
-    public void testResumeConcurrently_AwaitCompletion_ConcurrentWriterSucceeds()
-        throws Exception
-    {
-        assumeTrue( PROPER_LOCK_SUPPORT );
-        assertTrue( dstFile.setLastModified( System.currentTimeMillis() - 60 * 1000 ) );
-        ConcurrentWriter writer = new ConcurrentWriter( dstFile, 100, 10 );
-        assertNull( newPartialFile( 0, 500 ) );
-        writer.join();
-        assertNull( writer.error );
-        assertEquals( 1, remoteAccessChecker.invocations );
-    }
-
-    @Test( timeout = 10000 )
-    public void testResumeConcurrently_AwaitCompletion_ConcurrentWriterFails()
-        throws Exception
-    {
-        assumeTrue( PROPER_LOCK_SUPPORT );
-        assertTrue( dstFile.setLastModified( System.currentTimeMillis() - 60 * 1000 ) );
-        ConcurrentWriter writer = new ConcurrentWriter( dstFile, 100, -10 );
-        PartialFile partialFile = newPartialFile( 0, 500 );
-        assertNotNull( partialFile );
-        assertTrue( partialFile.isResume() );
-        writer.join();
-        assertNull( writer.error );
-        assertEquals( 1, remoteAccessChecker.invocations );
-    }
-
-    @Test( timeout = 10000 )
-    public void testResumeConcurrently_CheckRemoteAccess()
-        throws Exception
-    {
-        assumeTrue( PROPER_LOCK_SUPPORT );
-        remoteAccessChecker.exception = new IOException( "missing" );
-        ConcurrentWriter writer = new ConcurrentWriter( dstFile, 1000, 1 );
-        try
-        {
-            newPartialFile( 0, 1000 );
-            fail( "expected exception" );
-        }
-        catch ( Exception e )
-        {
-            assertSame( remoteAccessChecker.exception, e );
-        }
-        writer.interrupt();
-        writer.join();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/pom.xml
----------------------------------------------------------------------
diff --git a/aether-impl/pom.xml b/aether-impl/pom.xml
deleted file mode 100644
index b7f26b9..0000000
--- a/aether-impl/pom.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.maven.aether</groupId>
-    <artifactId>aether</artifactId>
-    <version>1.0.3-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>aether-impl</artifactId>
-
-  <name>Aether Implementation</name>
-  <description>
-    An implementation of the repository system.
-  </description>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.maven.aether</groupId>
-      <artifactId>aether-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.aether</groupId>
-      <artifactId>aether-spi</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.aether</groupId>
-      <artifactId>aether-util</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>javax.inject</groupId>
-      <artifactId>javax.inject</artifactId>
-      <scope>provided</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.sisu</groupId>
-      <artifactId>org.eclipse.sisu.inject</artifactId>
-      <scope>provided</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.sonatype.sisu</groupId>
-      <artifactId>sisu-guice</artifactId>
-      <classifier>no_aop</classifier>
-      <scope>provided</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-      <scope>provided</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.hamcrest</groupId>
-      <artifactId>hamcrest-library</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.aether</groupId>
-      <artifactId>aether-test-util</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.eclipse.sisu</groupId>
-        <artifactId>sisu-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-</project>

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/AetherModule.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/AetherModule.java b/aether-impl/src/main/java/org/eclipse/aether/impl/AetherModule.java
deleted file mode 100644
index 4e05ec2..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/AetherModule.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/**
- * A ready-made Guice module that sets up bindings for all components from this library. To acquire a complete
- * repository system, clients need to bind an artifact descriptor reader, a version resolver, a version range resolver,
- * zero or more metadata generator factories, some repository connector and transporter factories to access remote
- * repositories.
- * 
- * @deprecated Use {@link org.eclipse.aether.impl.guice.AetherModule} instead.
- */
-@Deprecated
-public final class AetherModule
-    extends org.eclipse.aether.impl.guice.AetherModule
-{
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactDescriptorReader.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactDescriptorReader.java b/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactDescriptorReader.java
deleted file mode 100644
index 66f3528..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactDescriptorReader.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.resolution.ArtifactDescriptorException;
-import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
-import org.eclipse.aether.resolution.ArtifactDescriptorResult;
-
-/**
- * Provides information about an artifact that is relevant to transitive dependency resolution. Each artifact is expected
- * to have an accompanying <em>artifact descriptor</em> that among others lists the direct dependencies of the artifact.
- * 
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface ArtifactDescriptorReader
-{
-
-    /**
-     * Gets information about an artifact like its direct dependencies and potential relocations. Implementations must
-     * respect the {@link RepositorySystemSession#getArtifactDescriptorPolicy() artifact descriptor policy} of the
-     * session when dealing with certain error cases.
-     * 
-     * @param session The repository session, must not be {@code null}.
-     * @param request The descriptor request, must not be {@code null}
-     * @return The descriptor result, never {@code null}.
-     * @throws ArtifactDescriptorException If the artifact descriptor could not be read.
-     * @see RepositorySystem#readArtifactDescriptor(RepositorySystemSession, ArtifactDescriptorRequest)
-     */
-    ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session, ArtifactDescriptorRequest request )
-        throws ArtifactDescriptorException;
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactResolver.java b/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactResolver.java
deleted file mode 100644
index 3b43592..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/ArtifactResolver.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResolutionException;
-import org.eclipse.aether.resolution.ArtifactResult;
-
-/**
- * Resolves artifacts, that is gets a local filesystem path to their binary contents.
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface ArtifactResolver
-{
-
-    /**
-     * Resolves the path for an artifact. The artifact will be downloaded to the local repository if necessary. An
-     * artifact that is already resolved will be skipped and is not re-resolved. Note that this method assumes that any
-     * relocations have already been processed and the artifact coordinates are used as-is.
-     * 
-     * @param session The repository session, must not be {@code null}.
-     * @param request The resolution request, must not be {@code null}.
-     * @return The resolution result, never {@code null}.
-     * @throws ArtifactResolutionException If the artifact could not be resolved.
-     * @see Artifact#getFile()
-     * @see RepositorySystem#resolveArtifact(RepositorySystemSession, ArtifactRequest)
-     */
-    ArtifactResult resolveArtifact( RepositorySystemSession session, ArtifactRequest request )
-        throws ArtifactResolutionException;
-
-    /**
-     * Resolves the paths for a collection of artifacts. Artifacts will be downloaded to the local repository if
-     * necessary. Artifacts that are already resolved will be skipped and are not re-resolved. Note that this method
-     * assumes that any relocations have already been processed and the artifact coordinates are used as-is.
-     * 
-     * @param session The repository session, must not be {@code null}.
-     * @param requests The resolution requests, must not be {@code null}.
-     * @return The resolution results (in request order), never {@code null}.
-     * @throws ArtifactResolutionException If any artifact could not be resolved.
-     * @see Artifact#getFile()
-     * @see RepositorySystem#resolveArtifacts(RepositorySystemSession, Collection)
-     */
-    List<ArtifactResult> resolveArtifacts( RepositorySystemSession session,
-                                           Collection<? extends ArtifactRequest> requests )
-        throws ArtifactResolutionException;
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java b/aether-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java
deleted file mode 100644
index 4d71b88..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java
+++ /dev/null
@@ -1,347 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.internal.impl.DefaultArtifactResolver;
-import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
-import org.eclipse.aether.internal.impl.DefaultDependencyCollector;
-import org.eclipse.aether.internal.impl.DefaultDeployer;
-import org.eclipse.aether.internal.impl.DefaultFileProcessor;
-import org.eclipse.aether.internal.impl.DefaultInstaller;
-import org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider;
-import org.eclipse.aether.internal.impl.DefaultMetadataResolver;
-import org.eclipse.aether.internal.impl.DefaultOfflineController;
-import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
-import org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider;
-import org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher;
-import org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider;
-import org.eclipse.aether.internal.impl.DefaultRepositorySystem;
-import org.eclipse.aether.internal.impl.DefaultSyncContextFactory;
-import org.eclipse.aether.internal.impl.DefaultTransporterProvider;
-import org.eclipse.aether.internal.impl.DefaultUpdateCheckManager;
-import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
-import org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory;
-import org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory;
-import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
-import org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory;
-import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayoutFactory;
-import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
-import org.eclipse.aether.spi.connector.transport.TransporterProvider;
-import org.eclipse.aether.spi.io.FileProcessor;
-import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.LoggerFactory;
-
-/**
- * A simple service locator that is already setup with all components from this library. To acquire a complete
- * repository system, clients need to add an artifact descriptor reader, a version resolver, a version range resolver
- * and optionally some repository connector and transporter factories to access remote repositories. Once the locator is
- * fully populated, the repository system can be created like this:
- * 
- * <pre>
- * RepositorySystem repoSystem = serviceLocator.getService( RepositorySystem.class );
- * </pre>
- * 
- * <em>Note:</em> This class is not thread-safe. Clients are expected to create the service locator and the repository
- * system on a single thread.
- */
-public final class DefaultServiceLocator
-    implements ServiceLocator
-{
-
-    private class Entry<T>
-    {
-
-        private final Class<T> type;
-
-        private final Collection<Object> providers;
-
-        private List<T> instances;
-
-        public Entry( Class<T> type )
-        {
-            if ( type == null )
-            {
-                throw new IllegalArgumentException( "service type not specified" );
-            }
-            this.type = type;
-            providers = new LinkedHashSet<Object>( 8 );
-        }
-
-        public synchronized void setServices( T... services )
-        {
-            providers.clear();
-            if ( services != null )
-            {
-                for ( T service : services )
-                {
-                    if ( service == null )
-                    {
-                        throw new IllegalArgumentException( "service instance not specified" );
-                    }
-                    providers.add( service );
-                }
-            }
-            instances = null;
-        }
-
-        public synchronized void setService( Class<? extends T> impl )
-        {
-            providers.clear();
-            addService( impl );
-        }
-
-        public synchronized void addService( Class<? extends T> impl )
-        {
-            if ( impl == null )
-            {
-                throw new IllegalArgumentException( "implementation class not specified" );
-            }
-            providers.add( impl );
-            instances = null;
-        }
-
-        public T getInstance()
-        {
-            List<T> instances = getInstances();
-            return instances.isEmpty() ? null : instances.get( 0 );
-        }
-
-        public synchronized List<T> getInstances()
-        {
-            if ( instances == null )
-            {
-                instances = new ArrayList<T>( providers.size() );
-                for ( Object provider : providers )
-                {
-                    T instance;
-                    if ( provider instanceof Class )
-                    {
-                        instance = newInstance( (Class<?>) provider );
-                    }
-                    else
-                    {
-                        instance = type.cast( provider );
-                    }
-                    if ( instance != null )
-                    {
-                        instances.add( instance );
-                    }
-                }
-                instances = Collections.unmodifiableList( instances );
-            }
-            return instances;
-        }
-
-        private T newInstance( Class<?> impl )
-        {
-            try
-            {
-                Constructor<?> constr = impl.getDeclaredConstructor();
-                if ( !Modifier.isPublic( constr.getModifiers() ) )
-                {
-                    constr.setAccessible( true );
-                }
-                Object obj = constr.newInstance();
-
-                T instance = type.cast( obj );
-                if ( instance instanceof Service )
-                {
-                    ( (Service) instance ).initService( DefaultServiceLocator.this );
-                }
-                return instance;
-            }
-            catch ( Exception e )
-            {
-                serviceCreationFailed( type, impl, e );
-            }
-            catch ( LinkageError e )
-            {
-                serviceCreationFailed( type, impl, e );
-            }
-            return null;
-        }
-
-    }
-
-    private final Map<Class<?>, Entry<?>> entries;
-
-    private ErrorHandler errorHandler;
-
-    /**
-     * Creates a new service locator that already knows about all service implementations included this library.
-     */
-    public DefaultServiceLocator()
-    {
-        entries = new HashMap<Class<?>, Entry<?>>();
-
-        addService( RepositorySystem.class, DefaultRepositorySystem.class );
-        addService( ArtifactResolver.class, DefaultArtifactResolver.class );
-        addService( DependencyCollector.class, DefaultDependencyCollector.class );
-        addService( Deployer.class, DefaultDeployer.class );
-        addService( Installer.class, DefaultInstaller.class );
-        addService( MetadataResolver.class, DefaultMetadataResolver.class );
-        addService( RepositoryLayoutProvider.class, DefaultRepositoryLayoutProvider.class );
-        addService( RepositoryLayoutFactory.class, Maven2RepositoryLayoutFactory.class );
-        addService( TransporterProvider.class, DefaultTransporterProvider.class );
-        addService( ChecksumPolicyProvider.class, DefaultChecksumPolicyProvider.class );
-        addService( RepositoryConnectorProvider.class, DefaultRepositoryConnectorProvider.class );
-        addService( RemoteRepositoryManager.class, DefaultRemoteRepositoryManager.class );
-        addService( UpdateCheckManager.class, DefaultUpdateCheckManager.class );
-        addService( UpdatePolicyAnalyzer.class, DefaultUpdatePolicyAnalyzer.class );
-        addService( FileProcessor.class, DefaultFileProcessor.class );
-        addService( SyncContextFactory.class, DefaultSyncContextFactory.class );
-        addService( RepositoryEventDispatcher.class, DefaultRepositoryEventDispatcher.class );
-        addService( OfflineController.class, DefaultOfflineController.class );
-        addService( LocalRepositoryProvider.class, DefaultLocalRepositoryProvider.class );
-        addService( LocalRepositoryManagerFactory.class, SimpleLocalRepositoryManagerFactory.class );
-        addService( LocalRepositoryManagerFactory.class, EnhancedLocalRepositoryManagerFactory.class );
-        if ( Slf4jLoggerFactory.isSlf4jAvailable() )
-        {
-            addService( LoggerFactory.class, Slf4jLoggerFactory.class );
-        }
-    }
-
-    private <T> Entry<T> getEntry( Class<T> type, boolean create )
-    {
-        if ( type == null )
-        {
-            throw new IllegalArgumentException( "service type not specified" );
-        }
-        @SuppressWarnings( "unchecked" )
-        Entry<T> entry = (Entry<T>) entries.get( type );
-        if ( entry == null && create )
-        {
-            entry = new Entry<T>( type );
-            entries.put( type, entry );
-        }
-        return entry;
-    }
-
-    /**
-     * Sets the implementation class for a service. The specified class must have a no-arg constructor (of any
-     * visibility). If the service implementation itself requires other services for its operation, it should implement
-     * {@link Service} to gain access to this service locator.
-     * 
-     * @param <T> The service type.
-     * @param type The interface describing the service, must not be {@code null}.
-     * @param impl The implementation class of the service, must not be {@code null}.
-     * @return This locator for chaining, never {@code null}.
-     */
-    public <T> DefaultServiceLocator setService( Class<T> type, Class<? extends T> impl )
-    {
-        getEntry( type, true ).setService( impl );
-        return this;
-    }
-
-    /**
-     * Adds an implementation class for a service. The specified class must have a no-arg constructor (of any
-     * visibility). If the service implementation itself requires other services for its operation, it should implement
-     * {@link Service} to gain access to this service locator.
-     * 
-     * @param <T> The service type.
-     * @param type The interface describing the service, must not be {@code null}.
-     * @param impl The implementation class of the service, must not be {@code null}.
-     * @return This locator for chaining, never {@code null}.
-     */
-    public <T> DefaultServiceLocator addService( Class<T> type, Class<? extends T> impl )
-    {
-        getEntry( type, true ).addService( impl );
-        return this;
-    }
-
-    /**
-     * Sets the instances for a service.
-     * 
-     * @param <T> The service type.
-     * @param type The interface describing the service, must not be {@code null}.
-     * @param services The instances of the service, may be {@code null} but must not contain {@code null} elements.
-     * @return This locator for chaining, never {@code null}.
-     */
-    public <T> DefaultServiceLocator setServices( Class<T> type, T... services )
-    {
-        getEntry( type, true ).setServices( services );
-        return this;
-    }
-
-    public <T> T getService( Class<T> type )
-    {
-        Entry<T> entry = getEntry( type, false );
-        return ( entry != null ) ? entry.getInstance() : null;
-    }
-
-    public <T> List<T> getServices( Class<T> type )
-    {
-        Entry<T> entry = getEntry( type, false );
-        return ( entry != null ) ? entry.getInstances() : null;
-    }
-
-    private void serviceCreationFailed( Class<?> type, Class<?> impl, Throwable exception )
-    {
-        if ( errorHandler != null )
-        {
-            errorHandler.serviceCreationFailed( type, impl, exception );
-        }
-    }
-
-    /**
-     * Sets the error handler to use.
-     * 
-     * @param errorHandler The error handler to use, may be {@code null} to ignore/swallow errors.
-     */
-    public void setErrorHandler( ErrorHandler errorHandler )
-    {
-        this.errorHandler = errorHandler;
-    }
-
-    /**
-     * A hook to customize the handling of errors encountered while locating a service implementation.
-     */
-    public abstract static class ErrorHandler
-    {
-
-        /**
-         * Handles errors during creation of a service. The default implemention does nothing.
-         * 
-         * @param type The interface describing the service, must not be {@code null}.
-         * @param impl The implementation class of the service, must not be {@code null}.
-         * @param exception The error that occurred while trying to instantiate the implementation class, must not be
-         *            {@code null}.
-         */
-        public void serviceCreationFailed( Class<?> type, Class<?> impl, Throwable exception )
-        {
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/DependencyCollector.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/DependencyCollector.java b/aether-impl/src/main/java/org/eclipse/aether/impl/DependencyCollector.java
deleted file mode 100644
index 9fa5817..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/DependencyCollector.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.collection.CollectRequest;
-import org.eclipse.aether.collection.CollectResult;
-import org.eclipse.aether.collection.DependencyCollectionException;
-
-/**
- * Given a collection of direct dependencies, recursively gathers their transitive dependencies and calculates the
- * dependency graph.
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface DependencyCollector
-{
-
-    /**
-     * Collects the transitive dependencies of some artifacts and builds a dependency graph. Note that this operation is
-     * only concerned about determining the coordinates of the transitive dependencies and does not actually resolve the
-     * artifact files. The supplied session carries various hooks to customize the dependency graph that must be invoked
-     * throughout the operation.
-     * 
-     * @param session The repository session, must not be {@code null}.
-     * @param request The collection request, must not be {@code null}.
-     * @return The collection result, never {@code null}.
-     * @throws DependencyCollectionException If the dependency tree could not be built.
-     * @see RepositorySystemSession#getDependencyTraverser()
-     * @see RepositorySystemSession#getDependencyManager()
-     * @see RepositorySystemSession#getDependencySelector()
-     * @see RepositorySystemSession#getVersionFilter()
-     * @see RepositorySystemSession#getDependencyGraphTransformer()
-     * @see RepositorySystem#collectDependencies(RepositorySystemSession, CollectRequest)
-     */
-    CollectResult collectDependencies( RepositorySystemSession session, CollectRequest request )
-        throws DependencyCollectionException;
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/Deployer.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/Deployer.java b/aether-impl/src/main/java/org/eclipse/aether/impl/Deployer.java
deleted file mode 100644
index 8f6b8fc..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/Deployer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.deployment.DeployRequest;
-import org.eclipse.aether.deployment.DeployResult;
-import org.eclipse.aether.deployment.DeploymentException;
-
-/**
- * Publishes artifacts to a remote repository.
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface Deployer
-{
-
-    /**
-     * Uploads a collection of artifacts and their accompanying metadata to a remote repository.
-     * 
-     * @param session The repository session, must not be {@code null}.
-     * @param request The deployment request, must not be {@code null}.
-     * @return The deployment result, never {@code null}.
-     * @throws DeploymentException If any artifact/metadata from the request could not be deployed.
-     * @see RepositorySystem#deploy(RepositorySystemSession, DeployRequest)
-     * @see MetadataGeneratorFactory#newInstance(RepositorySystemSession, DeployRequest)
-     */
-    DeployResult deploy( RepositorySystemSession session, DeployRequest request )
-        throws DeploymentException;
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/Installer.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/Installer.java b/aether-impl/src/main/java/org/eclipse/aether/impl/Installer.java
deleted file mode 100644
index a9ebed6..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/Installer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.installation.InstallRequest;
-import org.eclipse.aether.installation.InstallResult;
-import org.eclipse.aether.installation.InstallationException;
-
-/**
- * Publishes artifacts to the local repository.
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface Installer
-{
-
-    /**
-     * Installs a collection of artifacts and their accompanying metadata to the local repository.
-     * 
-     * @param session The repository session, must not be {@code null}.
-     * @param request The installation request, must not be {@code null}.
-     * @return The installation result, never {@code null}.
-     * @throws InstallationException If any artifact/metadata from the request could not be installed.
-     * @see RepositorySystem#install(RepositorySystemSession, InstallRequest)
-     * @see MetadataGeneratorFactory#newInstance(RepositorySystemSession, InstallRequest)
-     */
-    InstallResult install( RepositorySystemSession session, InstallRequest request )
-        throws InstallationException;
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/LocalRepositoryProvider.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/LocalRepositoryProvider.java b/aether-impl/src/main/java/org/eclipse/aether/impl/LocalRepositoryProvider.java
deleted file mode 100644
index d5f4be2..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/LocalRepositoryProvider.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
-
-/**
- * Retrieves a local repository manager from the installed local repository manager factories.
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface LocalRepositoryProvider
-{
-
-    /**
-     * Creates a new manager for the specified local repository. If the specified local repository has no type, the
-     * default local repository type of the system will be used. <em>Note:</em> It is expected that this method
-     * invocation is one of the last steps of setting up a new session, in particular any configuration properties
-     * should have been set already.
-     * 
-     * @param session The repository system session from which to configure the manager, must not be {@code null}.
-     * @param localRepository The local repository to create a manager for, must not be {@code null}.
-     * @return The local repository manager, never {@code null}.
-     * @throws NoLocalRepositoryManagerException If the specified repository type is not recognized or no base directory
-     *             is given.
-     * @see RepositorySystem#newLocalRepositoryManager(RepositorySystemSession, LocalRepository)
-     */
-    LocalRepositoryManager newLocalRepositoryManager( RepositorySystemSession session, LocalRepository localRepository )
-        throws NoLocalRepositoryManagerException;
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGenerator.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGenerator.java b/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGenerator.java
deleted file mode 100644
index b4356cc..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGenerator.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.Collection;
-
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.metadata.Metadata;
-
-/**
- * A metadata generator that participates in the installation/deployment of artifacts.
- * 
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface MetadataGenerator
-{
-
-    /**
-     * Prepares the generator to transform artifacts.
-     * 
-     * @param artifacts The artifacts to install/deploy, must not be {@code null}.
-     * @return The metadata to process (e.g. merge with existing metadata) before artifact transformations, never
-     *         {@code null}.
-     */
-    Collection<? extends Metadata> prepare( Collection<? extends Artifact> artifacts );
-
-    /**
-     * Enables the metadata generator to transform the specified artifact.
-     * 
-     * @param artifact The artifact to transform, must not be {@code null}.
-     * @return The transformed artifact (or just the input artifact), never {@code null}.
-     */
-    Artifact transformArtifact( Artifact artifact );
-
-    /**
-     * Allows for metadata generation based on the transformed artifacts.
-     * 
-     * @param artifacts The (transformed) artifacts to install/deploy, must not be {@code null}.
-     * @return The additional metadata to process after artifact transformations, never {@code null}.
-     */
-    Collection<? extends Metadata> finish( Collection<? extends Artifact> artifacts );
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGeneratorFactory.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGeneratorFactory.java b/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGeneratorFactory.java
deleted file mode 100644
index 5f2b740..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataGeneratorFactory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.deployment.DeployRequest;
-import org.eclipse.aether.installation.InstallRequest;
-
-/**
- * A factory to create metadata generators. Metadata generators can contribute additional metadata during the
- * installation/deployment of artifacts.
- * 
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface MetadataGeneratorFactory
-{
-
-    /**
-     * Creates a new metadata generator for the specified install request.
-     * 
-     * @param session The repository system session from which to configure the generator, must not be {@code null}.
-     * @param request The install request the metadata generator is used for, must not be {@code null}.
-     * @return The metadata generator for the request or {@code null} if none.
-     */
-    MetadataGenerator newInstance( RepositorySystemSession session, InstallRequest request );
-
-    /**
-     * Creates a new metadata generator for the specified deploy request.
-     * 
-     * @param session The repository system session from which to configure the generator, must not be {@code null}.
-     * @param request The deploy request the metadata generator is used for, must not be {@code null}.
-     * @return The metadata generator for the request or {@code null} if none.
-     */
-    MetadataGenerator newInstance( RepositorySystemSession session, DeployRequest request );
-
-    /**
-     * The priority of this factory. Factories with higher priority are invoked before those with lower priority.
-     * 
-     * @return The priority of this factory.
-     */
-    float getPriority();
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataResolver.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataResolver.java b/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataResolver.java
deleted file mode 100644
index 886e856..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/MetadataResolver.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.metadata.Metadata;
-import org.eclipse.aether.resolution.MetadataRequest;
-import org.eclipse.aether.resolution.MetadataResult;
-
-/**
- * Resolves metadata, that is gets a local filesystem path to their binary contents.
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface MetadataResolver
-{
-
-    /**
-     * Resolves the paths for a collection of metadata. Metadata will be downloaded to the local repository if
-     * necessary, e.g. because it hasn't been cached yet or the cache is deemed outdated.
-     * 
-     * @param session The repository session, must not be {@code null}.
-     * @param requests The resolution requests, must not be {@code null}.
-     * @return The resolution results (in request order), never {@code null}.
-     * @see Metadata#getFile()
-     * @see RepositorySystem#resolveMetadata(RepositorySystemSession, Collection)
-     */
-    List<MetadataResult> resolveMetadata( RepositorySystemSession session,
-                                          Collection<? extends MetadataRequest> requests );
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/OfflineController.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/OfflineController.java b/aether-impl/src/main/java/org/eclipse/aether/impl/OfflineController.java
deleted file mode 100644
index 22f5a4b..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/OfflineController.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.transfer.RepositoryOfflineException;
-
-/**
- * Determines whether a remote repository is accessible in offline mode.
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface OfflineController
-{
-
-    /**
-     * Determines whether the specified repository is accessible if the system was in offline mode. A simple
-     * implementation might unconditionally throw {@link RepositoryOfflineException} to block all remote repository
-     * access when in offline mode. More sophisticated implementations might inspect
-     * {@link RepositorySystemSession#getConfigProperties() configuration properties} of the session to check for some
-     * kind of whitelist that allows certain remote repositories even when offline. At any rate, the session's current
-     * {@link RepositorySystemSession#isOffline() offline state} is irrelevant to the outcome of the check.
-     * 
-     * @param session The repository session during which the check is made, must not be {@code null}.
-     * @param repository The remote repository to check for offline access, must not be {@code null}.
-     * @throws RepositoryOfflineException If the repository is not accessible in offline mode. If the method returns
-     *             normally, the repository is considered accessible even in offline mode.
-     * @see RepositorySystemSession#isOffline()
-     */
-    void checkOffline( RepositorySystemSession session, RemoteRepository repository )
-        throws RepositoryOfflineException;
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java b/aether-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java
deleted file mode 100644
index 23685e7..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.List;
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-
-/**
- * Helps dealing with remote repository definitions.
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface RemoteRepositoryManager
-{
-
-    /**
-     * Aggregates repository definitions by merging duplicate repositories and optionally applies mirror, proxy and
-     * authentication settings from the supplied session.
-     * 
-     * @param session The repository session during which the repositories will be accessed, must not be {@code null}.
-     * @param dominantRepositories The current list of remote repositories to merge the new definitions into, must not
-     *            be {@code null}.
-     * @param recessiveRepositories The remote repositories to merge into the existing list, must not be {@code null}.
-     * @param recessiveIsRaw {@code true} if the recessive repository definitions have not yet been subjected to mirror,
-     *            proxy and authentication settings, {@code false} otherwise.
-     * @return The aggregated list of remote repositories, never {@code null}.
-     * @see RepositorySystemSession#getMirrorSelector()
-     * @see RepositorySystemSession#getProxySelector()
-     * @see RepositorySystemSession#getAuthenticationSelector()
-     */
-    List<RemoteRepository> aggregateRepositories( RepositorySystemSession session,
-                                                  List<RemoteRepository> dominantRepositories,
-                                                  List<RemoteRepository> recessiveRepositories, boolean recessiveIsRaw );
-
-    /**
-     * Gets the effective repository policy for the specified remote repository by merging the applicable
-     * snapshot/release policy of the repository with global settings from the supplied session.
-     * 
-     * @param session The repository session during which the repository will be accessed, must not be {@code null}.
-     * @param repository The remote repository to determine the effective policy for, must not be {@code null}.
-     * @param releases {@code true} if the policy for release artifacts needs to be considered, {@code false} if not.
-     * @param snapshots {@code true} if the policy for snapshot artifacts needs to be considered, {@code false} if not.
-     * @return The effective repository policy, never {@code null}.
-     * @see RepositorySystemSession#getChecksumPolicy()
-     * @see RepositorySystemSession#getUpdatePolicy()
-     */
-    RepositoryPolicy getPolicy( RepositorySystemSession session, RemoteRepository repository, boolean releases,
-                                boolean snapshots );
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryConnectorProvider.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryConnectorProvider.java b/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryConnectorProvider.java
deleted file mode 100644
index 8d665c0..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryConnectorProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.RepositoryConnector;
-import org.eclipse.aether.transfer.NoRepositoryConnectorException;
-
-/**
- * Retrieves a repository connector from the installed repository connector factories.
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface RepositoryConnectorProvider
-{
-
-    /**
-     * Tries to create a repository connector for the specified remote repository.
-     * 
-     * @param session The repository system session from which to configure the connector, must not be {@code null}.
-     * @param repository The remote repository to create a connector for, must not be {@code null}.
-     * @return The connector for the given repository, never {@code null}.
-     * @throws NoRepositoryConnectorException If no available factory can create a connector for the specified remote
-     *             repository.
-     */
-    RepositoryConnector newRepositoryConnector( RepositorySystemSession session, RemoteRepository repository )
-        throws NoRepositoryConnectorException;
-
-}

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryEventDispatcher.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryEventDispatcher.java b/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryEventDispatcher.java
deleted file mode 100644
index 2d29eb7..0000000
--- a/aether-impl/src/main/java/org/eclipse/aether/impl/RepositoryEventDispatcher.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.eclipse.aether.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.eclipse.aether.RepositoryEvent;
-
-/**
- * Dispatches repository events to registered listeners.
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @provisional This type is provisional and can be changed, moved or removed without prior notice.
- */
-public interface RepositoryEventDispatcher
-{
-
-    /**
-     * Dispatches the specified repository event to all registered listeners.
-     * 
-     * @param event The event to dispatch, must not be {@code null}.
-     */
-    void dispatch( RepositoryEvent event );
-
-}