blob: 3710a69129687bf540e4a222ed8df902f4b75cf3 [file] [log] [blame]
package org.eclipse.aether.internal.impl;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import static org.junit.Assert.*;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositoryEvent;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.RepositoryEvent.EventType;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.ArtifactProperties;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.impl.UpdateCheckManager;
import org.eclipse.aether.impl.VersionResolver;
import org.eclipse.aether.internal.impl.DefaultArtifactResolver;
import org.eclipse.aether.internal.impl.DefaultUpdateCheckManager;
import org.eclipse.aether.internal.test.util.TestFileProcessor;
import org.eclipse.aether.internal.test.util.TestFileUtils;
import org.eclipse.aether.internal.test.util.TestLocalRepositoryManager;
import org.eclipse.aether.internal.test.util.TestUtils;
import org.eclipse.aether.metadata.Metadata;
import org.eclipse.aether.repository.LocalArtifactRegistration;
import org.eclipse.aether.repository.LocalArtifactRequest;
import org.eclipse.aether.repository.LocalArtifactResult;
import org.eclipse.aether.repository.LocalMetadataRegistration;
import org.eclipse.aether.repository.LocalMetadataRequest;
import org.eclipse.aether.repository.LocalMetadataResult;
import org.eclipse.aether.repository.LocalRepository;
import org.eclipse.aether.repository.LocalRepositoryManager;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.repository.RepositoryPolicy;
import org.eclipse.aether.repository.WorkspaceReader;
import org.eclipse.aether.repository.WorkspaceRepository;
import org.eclipse.aether.resolution.ArtifactRequest;
import org.eclipse.aether.resolution.ArtifactResolutionException;
import org.eclipse.aether.resolution.ArtifactResult;
import org.eclipse.aether.resolution.VersionRequest;
import org.eclipse.aether.resolution.VersionResolutionException;
import org.eclipse.aether.resolution.VersionResult;
import org.eclipse.aether.spi.connector.ArtifactDownload;
import org.eclipse.aether.spi.connector.MetadataDownload;
import org.eclipse.aether.transfer.ArtifactNotFoundException;
import org.eclipse.aether.transfer.ArtifactTransferException;
import org.eclipse.aether.util.repository.SimpleResolutionErrorPolicy;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
*/
public class DefaultArtifactResolverTest
{
private DefaultArtifactResolver resolver;
private DefaultRepositorySystemSession session;
private TestLocalRepositoryManager lrm;
private StubRepositoryConnectorProvider repositoryConnectorProvider;
private Artifact artifact;
private RecordingRepositoryConnector connector;
@Before
public void setup()
{
UpdateCheckManager updateCheckManager = new StaticUpdateCheckManager( true );
repositoryConnectorProvider = new StubRepositoryConnectorProvider();
VersionResolver versionResolver = new StubVersionResolver();
session = TestUtils.newSession();
lrm = (TestLocalRepositoryManager) session.getLocalRepositoryManager();
resolver = new DefaultArtifactResolver();
resolver.setFileProcessor( new TestFileProcessor() );
resolver.setRepositoryEventDispatcher( new StubRepositoryEventDispatcher() );
resolver.setVersionResolver( versionResolver );
resolver.setUpdateCheckManager( updateCheckManager );
resolver.setRepositoryConnectorProvider( repositoryConnectorProvider );
resolver.setRemoteRepositoryManager( new StubRemoteRepositoryManager() );
resolver.setSyncContextFactory( new StubSyncContextFactory() );
resolver.setOfflineController( new DefaultOfflineController() );
artifact = new DefaultArtifact( "gid", "aid", "", "ext", "ver" );
connector = new RecordingRepositoryConnector();
repositoryConnectorProvider.setConnector( connector );
}
@After
public void teardown()
throws Exception
{
if ( session.getLocalRepository() != null )
{
TestFileUtils.deleteFile( session.getLocalRepository().getBasedir() );
}
}
@Test
public void testResolveLocalArtifactSuccessful()
throws IOException, ArtifactResolutionException
{
File tmpFile = TestFileUtils.createTempFile( "tmp" );
Map<String, String> properties = new HashMap<>();
properties.put( ArtifactProperties.LOCAL_PATH, tmpFile.getAbsolutePath() );
artifact = artifact.setProperties( properties );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
ArtifactResult result = resolver.resolveArtifact( session, request );
assertTrue( result.getExceptions().isEmpty() );
Artifact resolved = result.getArtifact();
assertNotNull( resolved.getFile() );
resolved = resolved.setFile( null );
assertEquals( artifact, resolved );
}
@Test
public void testResolveLocalArtifactUnsuccessful()
throws IOException
{
File tmpFile = TestFileUtils.createTempFile( "tmp" );
Map<String, String> properties = new HashMap<>();
properties.put( ArtifactProperties.LOCAL_PATH, tmpFile.getAbsolutePath() );
artifact = artifact.setProperties( properties );
tmpFile.delete();
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
try
{
resolver.resolveArtifact( session, request );
fail( "expected exception" );
}
catch ( ArtifactResolutionException e )
{
assertNotNull( e.getResults() );
assertEquals( 1, e.getResults().size() );
ArtifactResult result = e.getResults().get( 0 );
assertSame( request, result.getRequest() );
assertFalse( result.getExceptions().isEmpty() );
assertTrue( result.getExceptions().get( 0 ) instanceof ArtifactNotFoundException );
Artifact resolved = result.getArtifact();
assertNull( resolved );
}
}
@Test
public void testResolveRemoteArtifact()
throws ArtifactResolutionException
{
connector.setExpectGet( artifact );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
ArtifactResult result = resolver.resolveArtifact( session, request );
assertTrue( result.getExceptions().isEmpty() );
Artifact resolved = result.getArtifact();
assertNotNull( resolved.getFile() );
resolved = resolved.setFile( null );
assertEquals( artifact, resolved );
connector.assertSeenExpected();
}
@Test
public void testResolveRemoteArtifactUnsuccessful()
{
RecordingRepositoryConnector connector = new RecordingRepositoryConnector()
{
@Override
public void get( Collection<? extends ArtifactDownload> artifactDownloads,
Collection<? extends MetadataDownload> metadataDownloads )
{
super.get( artifactDownloads, metadataDownloads );
ArtifactDownload download = artifactDownloads.iterator().next();
ArtifactTransferException exception =
new ArtifactNotFoundException( download.getArtifact(), null, "not found" );
download.setException( exception );
}
};
connector.setExpectGet( artifact );
repositoryConnectorProvider.setConnector( connector );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
try
{
resolver.resolveArtifact( session, request );
fail( "expected exception" );
}
catch ( ArtifactResolutionException e )
{
connector.assertSeenExpected();
assertNotNull( e.getResults() );
assertEquals( 1, e.getResults().size() );
ArtifactResult result = e.getResults().get( 0 );
assertSame( request, result.getRequest() );
assertFalse( result.getExceptions().isEmpty() );
assertTrue( result.getExceptions().get( 0 ) instanceof ArtifactNotFoundException );
Artifact resolved = result.getArtifact();
assertNull( resolved );
}
}
@Test
public void testArtifactNotFoundCache()
throws Exception
{
RecordingRepositoryConnector connector = new RecordingRepositoryConnector()
{
@Override
public void get( Collection<? extends ArtifactDownload> artifactDownloads,
Collection<? extends MetadataDownload> metadataDownloads )
{
super.get( artifactDownloads, metadataDownloads );
for ( ArtifactDownload download : artifactDownloads )
{
download.getFile().delete();
ArtifactTransferException exception =
new ArtifactNotFoundException( download.getArtifact(), null, "not found" );
download.setException( exception );
}
}
};
repositoryConnectorProvider.setConnector( connector );
resolver.setUpdateCheckManager( new DefaultUpdateCheckManager().setUpdatePolicyAnalyzer( new DefaultUpdatePolicyAnalyzer() ) );
session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) );
session.setUpdatePolicy( RepositoryPolicy.UPDATE_POLICY_NEVER );
RemoteRepository remoteRepo = new RemoteRepository.Builder( "id", "default", "file:///" ).build();
Artifact artifact1 = artifact;
Artifact artifact2 = artifact.setVersion( "ver2" );
ArtifactRequest request1 = new ArtifactRequest( artifact1, Arrays.asList( remoteRepo ), "" );
ArtifactRequest request2 = new ArtifactRequest( artifact2, Arrays.asList( remoteRepo ), "" );
connector.setExpectGet( artifact1, artifact2 );
try
{
resolver.resolveArtifacts( session, Arrays.asList( request1, request2 ) );
fail( "expected exception" );
}
catch ( ArtifactResolutionException e )
{
connector.assertSeenExpected();
}
TestFileUtils.writeString( new File( lrm.getRepository().getBasedir(), lrm.getPathForLocalArtifact( artifact2 ) ),
"artifact" );
lrm.setArtifactAvailability( artifact2, false );
DefaultUpdateCheckManagerTest.resetSessionData( session );
connector.resetActual();
connector.setExpectGet( new Artifact[0] );
try
{
resolver.resolveArtifacts( session, Arrays.asList( request1, request2 ) );
fail( "expected exception" );
}
catch ( ArtifactResolutionException e )
{
connector.assertSeenExpected();
for ( ArtifactResult result : e.getResults() )
{
Throwable t = result.getExceptions().get( 0 );
assertEquals( t.toString(), true, t instanceof ArtifactNotFoundException );
assertEquals( t.toString(), true, t.getMessage().contains( "cached" ) );
}
}
}
@Test
public void testResolveFromWorkspace()
throws IOException, ArtifactResolutionException
{
WorkspaceReader workspace = new WorkspaceReader()
{
public WorkspaceRepository getRepository()
{
return new WorkspaceRepository( "default" );
}
public List<String> findVersions( Artifact artifact )
{
return Arrays.asList( artifact.getVersion() );
}
public File findArtifact( Artifact artifact )
{
try
{
return TestFileUtils.createTempFile( artifact.toString() );
}
catch ( IOException e )
{
throw new RuntimeException( e.getMessage(), e );
}
}
};
session.setWorkspaceReader( workspace );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
ArtifactResult result = resolver.resolveArtifact( session, request );
assertTrue( result.getExceptions().isEmpty() );
Artifact resolved = result.getArtifact();
assertNotNull( resolved.getFile() );
assertEquals( resolved.toString(), TestFileUtils.readString( resolved.getFile() ) );
resolved = resolved.setFile( null );
assertEquals( artifact, resolved );
connector.assertSeenExpected();
}
@Test
public void testResolveFromWorkspaceFallbackToRepository()
throws ArtifactResolutionException
{
WorkspaceReader workspace = new WorkspaceReader()
{
public WorkspaceRepository getRepository()
{
return new WorkspaceRepository( "default" );
}
public List<String> findVersions( Artifact artifact )
{
return Arrays.asList( artifact.getVersion() );
}
public File findArtifact( Artifact artifact )
{
return null;
}
};
session.setWorkspaceReader( workspace );
connector.setExpectGet( artifact );
repositoryConnectorProvider.setConnector( connector );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
ArtifactResult result = resolver.resolveArtifact( session, request );
assertTrue( "exception on resolveArtifact", result.getExceptions().isEmpty() );
Artifact resolved = result.getArtifact();
assertNotNull( resolved.getFile() );
resolved = resolved.setFile( null );
assertEquals( artifact, resolved );
connector.assertSeenExpected();
}
@Test
public void testRepositoryEventsSuccessfulLocal()
throws ArtifactResolutionException, IOException
{
RecordingRepositoryListener listener = new RecordingRepositoryListener();
session.setRepositoryListener( listener );
File tmpFile = TestFileUtils.createTempFile( "tmp" );
Map<String, String> properties = new HashMap<>();
properties.put( ArtifactProperties.LOCAL_PATH, tmpFile.getAbsolutePath() );
artifact = artifact.setProperties( properties );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
resolver.resolveArtifact( session, request );
List<RepositoryEvent> events = listener.getEvents();
assertEquals( 2, events.size() );
RepositoryEvent event = events.get( 0 );
assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() );
assertNull( event.getException() );
assertEquals( artifact, event.getArtifact() );
event = events.get( 1 );
assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() );
assertNull( event.getException() );
assertEquals( artifact, event.getArtifact().setFile( null ) );
}
@Test
public void testRepositoryEventsUnsuccessfulLocal()
{
RecordingRepositoryListener listener = new RecordingRepositoryListener();
session.setRepositoryListener( listener );
Map<String, String> properties = new HashMap<>();
properties.put( ArtifactProperties.LOCAL_PATH, "doesnotexist" );
artifact = artifact.setProperties( properties );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
try
{
resolver.resolveArtifact( session, request );
fail( "expected exception" );
}
catch ( ArtifactResolutionException ignored )
{
}
List<RepositoryEvent> events = listener.getEvents();
assertEquals( 2, events.size() );
RepositoryEvent event = events.get( 0 );
assertEquals( artifact, event.getArtifact() );
assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() );
event = events.get( 1 );
assertEquals( artifact, event.getArtifact() );
assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() );
assertNotNull( event.getException() );
assertEquals( 1, event.getExceptions().size() );
}
@Test
public void testRepositoryEventsSuccessfulRemote()
throws ArtifactResolutionException
{
RecordingRepositoryListener listener = new RecordingRepositoryListener();
session.setRepositoryListener( listener );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
resolver.resolveArtifact( session, request );
List<RepositoryEvent> events = listener.getEvents();
assertEquals( events.toString(), 4, events.size() );
RepositoryEvent event = events.get( 0 );
assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() );
assertNull( event.getException() );
assertEquals( artifact, event.getArtifact() );
event = events.get( 1 );
assertEquals( EventType.ARTIFACT_DOWNLOADING, event.getType() );
assertNull( event.getException() );
assertEquals( artifact, event.getArtifact().setFile( null ) );
event = events.get( 2 );
assertEquals( EventType.ARTIFACT_DOWNLOADED, event.getType() );
assertNull( event.getException() );
assertEquals( artifact, event.getArtifact().setFile( null ) );
event = events.get( 3 );
assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() );
assertNull( event.getException() );
assertEquals( artifact, event.getArtifact().setFile( null ) );
}
@Test
public void testRepositoryEventsUnsuccessfulRemote()
{
RecordingRepositoryConnector connector = new RecordingRepositoryConnector()
{
@Override
public void get( Collection<? extends ArtifactDownload> artifactDownloads,
Collection<? extends MetadataDownload> metadataDownloads )
{
super.get( artifactDownloads, metadataDownloads );
ArtifactDownload download = artifactDownloads.iterator().next();
ArtifactTransferException exception =
new ArtifactNotFoundException( download.getArtifact(), null, "not found" );
download.setException( exception );
}
};
repositoryConnectorProvider.setConnector( connector );
RecordingRepositoryListener listener = new RecordingRepositoryListener();
session.setRepositoryListener( listener );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
try
{
resolver.resolveArtifact( session, request );
fail( "expected exception" );
}
catch ( ArtifactResolutionException ignored )
{
}
List<RepositoryEvent> events = listener.getEvents();
assertEquals( events.toString(), 4, events.size() );
RepositoryEvent event = events.get( 0 );
assertEquals( artifact, event.getArtifact() );
assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() );
event = events.get( 1 );
assertEquals( artifact, event.getArtifact() );
assertEquals( EventType.ARTIFACT_DOWNLOADING, event.getType() );
event = events.get( 2 );
assertEquals( artifact, event.getArtifact() );
assertEquals( EventType.ARTIFACT_DOWNLOADED, event.getType() );
assertNotNull( event.getException() );
assertEquals( 1, event.getExceptions().size() );
event = events.get( 3 );
assertEquals( artifact, event.getArtifact() );
assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() );
assertNotNull( event.getException() );
assertEquals( 1, event.getExceptions().size() );
}
@Test
public void testVersionResolverFails()
{
resolver.setVersionResolver( new VersionResolver()
{
public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
throws VersionResolutionException
{
throw new VersionResolutionException( new VersionResult( request ) );
}
} );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
try
{
resolver.resolveArtifact( session, request );
fail( "expected exception" );
}
catch ( ArtifactResolutionException e )
{
connector.assertSeenExpected();
assertNotNull( e.getResults() );
assertEquals( 1, e.getResults().size() );
ArtifactResult result = e.getResults().get( 0 );
assertSame( request, result.getRequest() );
assertFalse( result.getExceptions().isEmpty() );
assertTrue( result.getExceptions().get( 0 ) instanceof VersionResolutionException );
Artifact resolved = result.getArtifact();
assertNull( resolved );
}
}
@Test
public void testRepositoryEventsOnVersionResolverFail()
{
resolver.setVersionResolver( new VersionResolver()
{
public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
throws VersionResolutionException
{
throw new VersionResolutionException( new VersionResult( request ) );
}
} );
RecordingRepositoryListener listener = new RecordingRepositoryListener();
session.setRepositoryListener( listener );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
try
{
resolver.resolveArtifact( session, request );
fail( "expected exception" );
}
catch ( ArtifactResolutionException ignored )
{
}
List<RepositoryEvent> events = listener.getEvents();
assertEquals( 2, events.size() );
RepositoryEvent event = events.get( 0 );
assertEquals( artifact, event.getArtifact() );
assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() );
event = events.get( 1 );
assertEquals( artifact, event.getArtifact() );
assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() );
assertNotNull( event.getException() );
assertEquals( 1, event.getExceptions().size() );
}
@Test
public void testLocalArtifactAvailable()
throws ArtifactResolutionException
{
session.setLocalRepositoryManager( new LocalRepositoryManager()
{
public LocalRepository getRepository()
{
return null;
}
public String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context )
{
return null;
}
public String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context )
{
return null;
}
public String getPathForLocalMetadata( Metadata metadata )
{
return null;
}
public String getPathForLocalArtifact( Artifact artifact )
{
return null;
}
public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request )
{
LocalArtifactResult result = new LocalArtifactResult( request );
result.setAvailable( true );
try
{
result.setFile( TestFileUtils.createTempFile( "" ) );
}
catch ( IOException e )
{
e.printStackTrace();
}
return result;
}
public void add( RepositorySystemSession session, LocalArtifactRegistration request )
{
}
public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )
{
LocalMetadataResult result = new LocalMetadataResult( request );
try
{
result.setFile( TestFileUtils.createTempFile( "" ) );
}
catch ( IOException e )
{
e.printStackTrace();
}
return result;
}
public void add( RepositorySystemSession session, LocalMetadataRegistration request )
{
}
} );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
ArtifactResult result = resolver.resolveArtifact( session, request );
assertTrue( result.getExceptions().isEmpty() );
Artifact resolved = result.getArtifact();
assertNotNull( resolved.getFile() );
resolved = resolved.setFile( null );
assertEquals( artifact, resolved );
}
@Test
public void testFindInLocalRepositoryWhenVersionWasFoundInLocalRepository()
throws ArtifactResolutionException
{
session.setLocalRepositoryManager( new LocalRepositoryManager()
{
public LocalRepository getRepository()
{
return null;
}
public String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context )
{
return null;
}
public String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context )
{
return null;
}
public String getPathForLocalMetadata( Metadata metadata )
{
return null;
}
public String getPathForLocalArtifact( Artifact artifact )
{
return null;
}
public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request )
{
LocalArtifactResult result = new LocalArtifactResult( request );
result.setAvailable( false );
try
{
result.setFile( TestFileUtils.createTempFile( "" ) );
}
catch ( IOException e )
{
e.printStackTrace();
}
return result;
}
public void add( RepositorySystemSession session, LocalArtifactRegistration request )
{
}
public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )
{
return new LocalMetadataResult( request );
}
public void add( RepositorySystemSession session, LocalMetadataRegistration request )
{
}
} );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() );
resolver.setVersionResolver( new VersionResolver()
{
public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
{
return new VersionResult( request ).setRepository( new LocalRepository( "id" ) ).setVersion( request.getArtifact().getVersion() );
}
} );
ArtifactResult result = resolver.resolveArtifact( session, request );
assertTrue( result.getExceptions().isEmpty() );
Artifact resolved = result.getArtifact();
assertNotNull( resolved.getFile() );
resolved = resolved.setFile( null );
assertEquals( artifact, resolved );
}
@Test
public void testFindInLocalRepositoryWhenVersionRangeWasResolvedFromLocalRepository()
throws ArtifactResolutionException
{
session.setLocalRepositoryManager( new LocalRepositoryManager()
{
public LocalRepository getRepository()
{
return null;
}
public String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context )
{
return null;
}
public String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context )
{
return null;
}
public String getPathForLocalMetadata( Metadata metadata )
{
return null;
}
public String getPathForLocalArtifact( Artifact artifact )
{
return null;
}
public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request )
{
LocalArtifactResult result = new LocalArtifactResult( request );
result.setAvailable( false );
try
{
result.setFile( TestFileUtils.createTempFile( "" ) );
}
catch ( IOException e )
{
e.printStackTrace();
}
return result;
}
public void add( RepositorySystemSession session, LocalArtifactRegistration request )
{
}
public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )
{
return new LocalMetadataResult( request );
}
public void add( RepositorySystemSession session, LocalMetadataRegistration request )
{
}
} );
ArtifactRequest request = new ArtifactRequest( artifact, null, "" );
resolver.setVersionResolver( new VersionResolver()
{
public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
{
return new VersionResult( request ).setVersion( request.getArtifact().getVersion() );
}
} );
ArtifactResult result = resolver.resolveArtifact( session, request );
assertTrue( result.getExceptions().isEmpty() );
Artifact resolved = result.getArtifact();
assertNotNull( resolved.getFile() );
resolved = resolved.setFile( null );
assertEquals( artifact, resolved );
}
}