001package org.eclipse.aether.internal.impl; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import static org.junit.Assert.*; 023 024import java.io.File; 025import java.io.IOException; 026import java.util.Arrays; 027import java.util.Collection; 028import java.util.HashMap; 029import java.util.List; 030import java.util.Map; 031 032import org.eclipse.aether.DefaultRepositorySystemSession; 033import org.eclipse.aether.RepositoryEvent; 034import org.eclipse.aether.RepositorySystemSession; 035import org.eclipse.aether.RepositoryEvent.EventType; 036import org.eclipse.aether.artifact.Artifact; 037import org.eclipse.aether.artifact.ArtifactProperties; 038import org.eclipse.aether.artifact.DefaultArtifact; 039import org.eclipse.aether.impl.UpdateCheckManager; 040import org.eclipse.aether.impl.VersionResolver; 041import org.eclipse.aether.internal.impl.DefaultArtifactResolver; 042import org.eclipse.aether.internal.impl.DefaultUpdateCheckManager; 043import org.eclipse.aether.internal.test.util.TestFileProcessor; 044import org.eclipse.aether.internal.test.util.TestFileUtils; 045import org.eclipse.aether.internal.test.util.TestLocalRepositoryManager; 046import org.eclipse.aether.internal.test.util.TestUtils; 047import org.eclipse.aether.metadata.Metadata; 048import org.eclipse.aether.repository.LocalArtifactRegistration; 049import org.eclipse.aether.repository.LocalArtifactRequest; 050import org.eclipse.aether.repository.LocalArtifactResult; 051import org.eclipse.aether.repository.LocalMetadataRegistration; 052import org.eclipse.aether.repository.LocalMetadataRequest; 053import org.eclipse.aether.repository.LocalMetadataResult; 054import org.eclipse.aether.repository.LocalRepository; 055import org.eclipse.aether.repository.LocalRepositoryManager; 056import org.eclipse.aether.repository.RemoteRepository; 057import org.eclipse.aether.repository.RepositoryPolicy; 058import org.eclipse.aether.repository.WorkspaceReader; 059import org.eclipse.aether.repository.WorkspaceRepository; 060import org.eclipse.aether.resolution.ArtifactRequest; 061import org.eclipse.aether.resolution.ArtifactResolutionException; 062import org.eclipse.aether.resolution.ArtifactResult; 063import org.eclipse.aether.resolution.VersionRequest; 064import org.eclipse.aether.resolution.VersionResolutionException; 065import org.eclipse.aether.resolution.VersionResult; 066import org.eclipse.aether.spi.connector.ArtifactDownload; 067import org.eclipse.aether.spi.connector.MetadataDownload; 068import org.eclipse.aether.transfer.ArtifactNotFoundException; 069import org.eclipse.aether.transfer.ArtifactTransferException; 070import org.eclipse.aether.util.repository.SimpleResolutionErrorPolicy; 071import org.junit.After; 072import org.junit.Before; 073import org.junit.Test; 074 075/** 076 */ 077public class DefaultArtifactResolverTest 078{ 079 private DefaultArtifactResolver resolver; 080 081 private DefaultRepositorySystemSession session; 082 083 private TestLocalRepositoryManager lrm; 084 085 private StubRepositoryConnectorProvider repositoryConnectorProvider; 086 087 private Artifact artifact; 088 089 private RecordingRepositoryConnector connector; 090 091 @Before 092 public void setup() 093 throws IOException 094 { 095 UpdateCheckManager updateCheckManager = new StaticUpdateCheckManager( true ); 096 repositoryConnectorProvider = new StubRepositoryConnectorProvider(); 097 VersionResolver versionResolver = new StubVersionResolver(); 098 session = TestUtils.newSession(); 099 lrm = (TestLocalRepositoryManager) session.getLocalRepositoryManager(); 100 resolver = new DefaultArtifactResolver(); 101 resolver.setFileProcessor( new TestFileProcessor() ); 102 resolver.setRepositoryEventDispatcher( new StubRepositoryEventDispatcher() ); 103 resolver.setVersionResolver( versionResolver ); 104 resolver.setUpdateCheckManager( updateCheckManager ); 105 resolver.setRepositoryConnectorProvider( repositoryConnectorProvider ); 106 resolver.setRemoteRepositoryManager( new StubRemoteRepositoryManager() ); 107 resolver.setSyncContextFactory( new StubSyncContextFactory() ); 108 resolver.setOfflineController( new DefaultOfflineController() ); 109 110 artifact = new DefaultArtifact( "gid", "aid", "", "ext", "ver" ); 111 112 connector = new RecordingRepositoryConnector(); 113 repositoryConnectorProvider.setConnector( connector ); 114 } 115 116 @After 117 public void teardown() 118 throws Exception 119 { 120 if ( session.getLocalRepository() != null ) 121 { 122 TestFileUtils.deleteFile( session.getLocalRepository().getBasedir() ); 123 } 124 } 125 126 @Test 127 public void testResolveLocalArtifactSuccessful() 128 throws IOException, ArtifactResolutionException 129 { 130 File tmpFile = TestFileUtils.createTempFile( "tmp" ); 131 Map<String, String> properties = new HashMap<String, String>(); 132 properties.put( ArtifactProperties.LOCAL_PATH, tmpFile.getAbsolutePath() ); 133 artifact = artifact.setProperties( properties ); 134 135 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 136 ArtifactResult result = resolver.resolveArtifact( session, request ); 137 138 assertTrue( result.getExceptions().isEmpty() ); 139 140 Artifact resolved = result.getArtifact(); 141 assertNotNull( resolved.getFile() ); 142 resolved = resolved.setFile( null ); 143 144 assertEquals( artifact, resolved ); 145 } 146 147 @Test 148 public void testResolveLocalArtifactUnsuccessful() 149 throws IOException, ArtifactResolutionException 150 { 151 File tmpFile = TestFileUtils.createTempFile( "tmp" ); 152 Map<String, String> properties = new HashMap<String, String>(); 153 properties.put( ArtifactProperties.LOCAL_PATH, tmpFile.getAbsolutePath() ); 154 artifact = artifact.setProperties( properties ); 155 156 tmpFile.delete(); 157 158 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 159 160 try 161 { 162 resolver.resolveArtifact( session, request ); 163 fail( "expected exception" ); 164 } 165 catch ( ArtifactResolutionException e ) 166 { 167 assertNotNull( e.getResults() ); 168 assertEquals( 1, e.getResults().size() ); 169 170 ArtifactResult result = e.getResults().get( 0 ); 171 172 assertSame( request, result.getRequest() ); 173 174 assertFalse( result.getExceptions().isEmpty() ); 175 assertTrue( result.getExceptions().get( 0 ) instanceof ArtifactNotFoundException ); 176 177 Artifact resolved = result.getArtifact(); 178 assertNull( resolved ); 179 } 180 181 } 182 183 @Test 184 public void testResolveRemoteArtifact() 185 throws IOException, ArtifactResolutionException 186 { 187 connector.setExpectGet( artifact ); 188 189 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 190 request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() ); 191 192 ArtifactResult result = resolver.resolveArtifact( session, request ); 193 194 assertTrue( result.getExceptions().isEmpty() ); 195 196 Artifact resolved = result.getArtifact(); 197 assertNotNull( resolved.getFile() ); 198 199 resolved = resolved.setFile( null ); 200 assertEquals( artifact, resolved ); 201 202 connector.assertSeenExpected(); 203 } 204 205 @Test 206 public void testResolveRemoteArtifactUnsuccessful() 207 throws IOException, ArtifactResolutionException 208 { 209 RecordingRepositoryConnector connector = new RecordingRepositoryConnector() 210 { 211 212 @Override 213 public void get( Collection<? extends ArtifactDownload> artifactDownloads, 214 Collection<? extends MetadataDownload> metadataDownloads ) 215 { 216 super.get( artifactDownloads, metadataDownloads ); 217 ArtifactDownload download = artifactDownloads.iterator().next(); 218 ArtifactTransferException exception = 219 new ArtifactNotFoundException( download.getArtifact(), null, "not found" ); 220 download.setException( exception ); 221 } 222 223 }; 224 225 connector.setExpectGet( artifact ); 226 repositoryConnectorProvider.setConnector( connector ); 227 228 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 229 request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() ); 230 231 try 232 { 233 resolver.resolveArtifact( session, request ); 234 fail( "expected exception" ); 235 } 236 catch ( ArtifactResolutionException e ) 237 { 238 connector.assertSeenExpected(); 239 assertNotNull( e.getResults() ); 240 assertEquals( 1, e.getResults().size() ); 241 242 ArtifactResult result = e.getResults().get( 0 ); 243 244 assertSame( request, result.getRequest() ); 245 246 assertFalse( result.getExceptions().isEmpty() ); 247 assertTrue( result.getExceptions().get( 0 ) instanceof ArtifactNotFoundException ); 248 249 Artifact resolved = result.getArtifact(); 250 assertNull( resolved ); 251 } 252 253 } 254 255 @Test 256 public void testArtifactNotFoundCache() 257 throws Exception 258 { 259 RecordingRepositoryConnector connector = new RecordingRepositoryConnector() 260 { 261 @Override 262 public void get( Collection<? extends ArtifactDownload> artifactDownloads, 263 Collection<? extends MetadataDownload> metadataDownloads ) 264 { 265 super.get( artifactDownloads, metadataDownloads ); 266 for ( ArtifactDownload download : artifactDownloads ) 267 { 268 download.getFile().delete(); 269 ArtifactTransferException exception = 270 new ArtifactNotFoundException( download.getArtifact(), null, "not found" ); 271 download.setException( exception ); 272 } 273 } 274 }; 275 276 repositoryConnectorProvider.setConnector( connector ); 277 resolver.setUpdateCheckManager( new DefaultUpdateCheckManager().setUpdatePolicyAnalyzer( new DefaultUpdatePolicyAnalyzer() ) ); 278 279 session.setResolutionErrorPolicy( new SimpleResolutionErrorPolicy( true, false ) ); 280 session.setUpdatePolicy( RepositoryPolicy.UPDATE_POLICY_NEVER ); 281 282 RemoteRepository remoteRepo = new RemoteRepository.Builder( "id", "default", "file:///" ).build(); 283 284 Artifact artifact1 = artifact; 285 Artifact artifact2 = artifact.setVersion( "ver2" ); 286 287 ArtifactRequest request1 = new ArtifactRequest( artifact1, Arrays.asList( remoteRepo ), "" ); 288 ArtifactRequest request2 = new ArtifactRequest( artifact2, Arrays.asList( remoteRepo ), "" ); 289 290 connector.setExpectGet( new Artifact[] { artifact1, artifact2 } ); 291 try 292 { 293 resolver.resolveArtifacts( session, Arrays.asList( request1, request2 ) ); 294 fail( "expected exception" ); 295 } 296 catch ( ArtifactResolutionException e ) 297 { 298 connector.assertSeenExpected(); 299 } 300 301 TestFileUtils.writeString( new File( lrm.getRepository().getBasedir(), lrm.getPathForLocalArtifact( artifact2 ) ), 302 "artifact" ); 303 lrm.setArtifactAvailability( artifact2, false ); 304 305 DefaultUpdateCheckManagerTest.resetSessionData( session ); 306 connector.resetActual(); 307 connector.setExpectGet( new Artifact[0] ); 308 try 309 { 310 resolver.resolveArtifacts( session, Arrays.asList( request1, request2 ) ); 311 fail( "expected exception" ); 312 } 313 catch ( ArtifactResolutionException e ) 314 { 315 connector.assertSeenExpected(); 316 for ( ArtifactResult result : e.getResults() ) 317 { 318 Throwable t = result.getExceptions().get( 0 ); 319 assertEquals( t.toString(), true, t instanceof ArtifactNotFoundException ); 320 assertEquals( t.toString(), true, t.getMessage().contains( "cached" ) ); 321 } 322 } 323 } 324 325 @Test 326 public void testResolveFromWorkspace() 327 throws IOException, ArtifactResolutionException 328 { 329 WorkspaceReader workspace = new WorkspaceReader() 330 { 331 332 public WorkspaceRepository getRepository() 333 { 334 return new WorkspaceRepository( "default" ); 335 } 336 337 public List<String> findVersions( Artifact artifact ) 338 { 339 return Arrays.asList( artifact.getVersion() ); 340 } 341 342 public File findArtifact( Artifact artifact ) 343 { 344 try 345 { 346 return TestFileUtils.createTempFile( artifact.toString() ); 347 } 348 catch ( IOException e ) 349 { 350 throw new RuntimeException( e.getMessage(), e ); 351 } 352 } 353 }; 354 session.setWorkspaceReader( workspace ); 355 356 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 357 request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() ); 358 359 ArtifactResult result = resolver.resolveArtifact( session, request ); 360 361 assertTrue( result.getExceptions().isEmpty() ); 362 363 Artifact resolved = result.getArtifact(); 364 assertNotNull( resolved.getFile() ); 365 366 assertEquals( resolved.toString(), TestFileUtils.readString( resolved.getFile() ) ); 367 368 resolved = resolved.setFile( null ); 369 assertEquals( artifact, resolved ); 370 371 connector.assertSeenExpected(); 372 } 373 374 @Test 375 public void testResolveFromWorkspaceFallbackToRepository() 376 throws IOException, ArtifactResolutionException 377 { 378 WorkspaceReader workspace = new WorkspaceReader() 379 { 380 381 public WorkspaceRepository getRepository() 382 { 383 return new WorkspaceRepository( "default" ); 384 } 385 386 public List<String> findVersions( Artifact artifact ) 387 { 388 return Arrays.asList( artifact.getVersion() ); 389 } 390 391 public File findArtifact( Artifact artifact ) 392 { 393 return null; 394 } 395 }; 396 session.setWorkspaceReader( workspace ); 397 398 connector.setExpectGet( artifact ); 399 repositoryConnectorProvider.setConnector( connector ); 400 401 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 402 request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() ); 403 404 ArtifactResult result = resolver.resolveArtifact( session, request ); 405 406 assertTrue( "exception on resolveArtifact", result.getExceptions().isEmpty() ); 407 408 Artifact resolved = result.getArtifact(); 409 assertNotNull( resolved.getFile() ); 410 411 resolved = resolved.setFile( null ); 412 assertEquals( artifact, resolved ); 413 414 connector.assertSeenExpected(); 415 } 416 417 @Test 418 public void testRepositoryEventsSuccessfulLocal() 419 throws ArtifactResolutionException, IOException 420 { 421 RecordingRepositoryListener listener = new RecordingRepositoryListener(); 422 session.setRepositoryListener( listener ); 423 424 File tmpFile = TestFileUtils.createTempFile( "tmp" ); 425 Map<String, String> properties = new HashMap<String, String>(); 426 properties.put( ArtifactProperties.LOCAL_PATH, tmpFile.getAbsolutePath() ); 427 artifact = artifact.setProperties( properties ); 428 429 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 430 resolver.resolveArtifact( session, request ); 431 432 List<RepositoryEvent> events = listener.getEvents(); 433 assertEquals( 2, events.size() ); 434 RepositoryEvent event = events.get( 0 ); 435 assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() ); 436 assertNull( event.getException() ); 437 assertEquals( artifact, event.getArtifact() ); 438 439 event = events.get( 1 ); 440 assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() ); 441 assertNull( event.getException() ); 442 assertEquals( artifact, event.getArtifact().setFile( null ) ); 443 } 444 445 @Test 446 public void testRepositoryEventsUnsuccessfulLocal() 447 throws IOException 448 { 449 RecordingRepositoryListener listener = new RecordingRepositoryListener(); 450 session.setRepositoryListener( listener ); 451 452 Map<String, String> properties = new HashMap<String, String>(); 453 properties.put( ArtifactProperties.LOCAL_PATH, "doesnotexist" ); 454 artifact = artifact.setProperties( properties ); 455 456 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 457 try 458 { 459 resolver.resolveArtifact( session, request ); 460 fail( "expected exception" ); 461 } 462 catch ( ArtifactResolutionException e ) 463 { 464 } 465 466 List<RepositoryEvent> events = listener.getEvents(); 467 assertEquals( 2, events.size() ); 468 469 RepositoryEvent event = events.get( 0 ); 470 assertEquals( artifact, event.getArtifact() ); 471 assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() ); 472 473 event = events.get( 1 ); 474 assertEquals( artifact, event.getArtifact() ); 475 assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() ); 476 assertNotNull( event.getException() ); 477 assertEquals( 1, event.getExceptions().size() ); 478 479 } 480 481 @Test 482 public void testRepositoryEventsSuccessfulRemote() 483 throws ArtifactResolutionException 484 { 485 RecordingRepositoryListener listener = new RecordingRepositoryListener(); 486 session.setRepositoryListener( listener ); 487 488 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 489 request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() ); 490 491 resolver.resolveArtifact( session, request ); 492 493 List<RepositoryEvent> events = listener.getEvents(); 494 assertEquals( events.toString(), 4, events.size() ); 495 RepositoryEvent event = events.get( 0 ); 496 assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() ); 497 assertNull( event.getException() ); 498 assertEquals( artifact, event.getArtifact() ); 499 500 event = events.get( 1 ); 501 assertEquals( EventType.ARTIFACT_DOWNLOADING, event.getType() ); 502 assertNull( event.getException() ); 503 assertEquals( artifact, event.getArtifact().setFile( null ) ); 504 505 event = events.get( 2 ); 506 assertEquals( EventType.ARTIFACT_DOWNLOADED, event.getType() ); 507 assertNull( event.getException() ); 508 assertEquals( artifact, event.getArtifact().setFile( null ) ); 509 510 event = events.get( 3 ); 511 assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() ); 512 assertNull( event.getException() ); 513 assertEquals( artifact, event.getArtifact().setFile( null ) ); 514 } 515 516 @Test 517 public void testRepositoryEventsUnsuccessfulRemote() 518 throws IOException, ArtifactResolutionException 519 { 520 RecordingRepositoryConnector connector = new RecordingRepositoryConnector() 521 { 522 523 @Override 524 public void get( Collection<? extends ArtifactDownload> artifactDownloads, 525 Collection<? extends MetadataDownload> metadataDownloads ) 526 { 527 super.get( artifactDownloads, metadataDownloads ); 528 ArtifactDownload download = artifactDownloads.iterator().next(); 529 ArtifactTransferException exception = 530 new ArtifactNotFoundException( download.getArtifact(), null, "not found" ); 531 download.setException( exception ); 532 } 533 534 }; 535 repositoryConnectorProvider.setConnector( connector ); 536 537 RecordingRepositoryListener listener = new RecordingRepositoryListener(); 538 session.setRepositoryListener( listener ); 539 540 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 541 request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() ); 542 543 try 544 { 545 resolver.resolveArtifact( session, request ); 546 fail( "expected exception" ); 547 } 548 catch ( ArtifactResolutionException e ) 549 { 550 } 551 552 List<RepositoryEvent> events = listener.getEvents(); 553 assertEquals( events.toString(), 4, events.size() ); 554 555 RepositoryEvent event = events.get( 0 ); 556 assertEquals( artifact, event.getArtifact() ); 557 assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() ); 558 559 event = events.get( 1 ); 560 assertEquals( artifact, event.getArtifact() ); 561 assertEquals( EventType.ARTIFACT_DOWNLOADING, event.getType() ); 562 563 event = events.get( 2 ); 564 assertEquals( artifact, event.getArtifact() ); 565 assertEquals( EventType.ARTIFACT_DOWNLOADED, event.getType() ); 566 assertNotNull( event.getException() ); 567 assertEquals( 1, event.getExceptions().size() ); 568 569 event = events.get( 3 ); 570 assertEquals( artifact, event.getArtifact() ); 571 assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() ); 572 assertNotNull( event.getException() ); 573 assertEquals( 1, event.getExceptions().size() ); 574 } 575 576 @Test 577 public void testVersionResolverFails() 578 { 579 resolver.setVersionResolver( new VersionResolver() 580 { 581 582 public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) 583 throws VersionResolutionException 584 { 585 throw new VersionResolutionException( new VersionResult( request ) ); 586 } 587 } ); 588 589 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 590 try 591 { 592 resolver.resolveArtifact( session, request ); 593 fail( "expected exception" ); 594 } 595 catch ( ArtifactResolutionException e ) 596 { 597 connector.assertSeenExpected(); 598 assertNotNull( e.getResults() ); 599 assertEquals( 1, e.getResults().size() ); 600 601 ArtifactResult result = e.getResults().get( 0 ); 602 603 assertSame( request, result.getRequest() ); 604 605 assertFalse( result.getExceptions().isEmpty() ); 606 assertTrue( result.getExceptions().get( 0 ) instanceof VersionResolutionException ); 607 608 Artifact resolved = result.getArtifact(); 609 assertNull( resolved ); 610 } 611 } 612 613 @Test 614 public void testRepositoryEventsOnVersionResolverFail() 615 { 616 resolver.setVersionResolver( new VersionResolver() 617 { 618 619 public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) 620 throws VersionResolutionException 621 { 622 throw new VersionResolutionException( new VersionResult( request ) ); 623 } 624 } ); 625 626 RecordingRepositoryListener listener = new RecordingRepositoryListener(); 627 session.setRepositoryListener( listener ); 628 629 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 630 try 631 { 632 resolver.resolveArtifact( session, request ); 633 fail( "expected exception" ); 634 } 635 catch ( ArtifactResolutionException e ) 636 { 637 } 638 639 List<RepositoryEvent> events = listener.getEvents(); 640 assertEquals( 2, events.size() ); 641 642 RepositoryEvent event = events.get( 0 ); 643 assertEquals( artifact, event.getArtifact() ); 644 assertEquals( EventType.ARTIFACT_RESOLVING, event.getType() ); 645 646 event = events.get( 1 ); 647 assertEquals( artifact, event.getArtifact() ); 648 assertEquals( EventType.ARTIFACT_RESOLVED, event.getType() ); 649 assertNotNull( event.getException() ); 650 assertEquals( 1, event.getExceptions().size() ); 651 } 652 653 @Test 654 public void testLocalArtifactAvailable() 655 throws ArtifactResolutionException 656 { 657 session.setLocalRepositoryManager( new LocalRepositoryManager() 658 { 659 660 public LocalRepository getRepository() 661 { 662 return null; 663 } 664 665 public String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context ) 666 { 667 return null; 668 } 669 670 public String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context ) 671 { 672 return null; 673 } 674 675 public String getPathForLocalMetadata( Metadata metadata ) 676 { 677 return null; 678 } 679 680 public String getPathForLocalArtifact( Artifact artifact ) 681 { 682 return null; 683 } 684 685 public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request ) 686 { 687 688 LocalArtifactResult result = new LocalArtifactResult( request ); 689 result.setAvailable( true ); 690 try 691 { 692 result.setFile( TestFileUtils.createTempFile( "" ) ); 693 } 694 catch ( IOException e ) 695 { 696 e.printStackTrace(); 697 } 698 return result; 699 } 700 701 public void add( RepositorySystemSession session, LocalArtifactRegistration request ) 702 { 703 } 704 705 public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request ) 706 { 707 LocalMetadataResult result = new LocalMetadataResult( request ); 708 try 709 { 710 result.setFile( TestFileUtils.createTempFile( "" ) ); 711 } 712 catch ( IOException e ) 713 { 714 e.printStackTrace(); 715 } 716 return result; 717 } 718 719 public void add( RepositorySystemSession session, LocalMetadataRegistration request ) 720 { 721 } 722 } ); 723 724 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 725 request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() ); 726 727 ArtifactResult result = resolver.resolveArtifact( session, request ); 728 729 assertTrue( result.getExceptions().isEmpty() ); 730 731 Artifact resolved = result.getArtifact(); 732 assertNotNull( resolved.getFile() ); 733 734 resolved = resolved.setFile( null ); 735 assertEquals( artifact, resolved ); 736 737 } 738 739 @Test 740 public void testFindInLocalRepositoryWhenVersionWasFoundInLocalRepository() 741 throws ArtifactResolutionException 742 { 743 session.setLocalRepositoryManager( new LocalRepositoryManager() 744 { 745 746 public LocalRepository getRepository() 747 { 748 return null; 749 } 750 751 public String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context ) 752 { 753 return null; 754 } 755 756 public String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context ) 757 { 758 return null; 759 } 760 761 public String getPathForLocalMetadata( Metadata metadata ) 762 { 763 return null; 764 } 765 766 public String getPathForLocalArtifact( Artifact artifact ) 767 { 768 return null; 769 } 770 771 public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request ) 772 { 773 774 LocalArtifactResult result = new LocalArtifactResult( request ); 775 result.setAvailable( false ); 776 try 777 { 778 result.setFile( TestFileUtils.createTempFile( "" ) ); 779 } 780 catch ( IOException e ) 781 { 782 e.printStackTrace(); 783 } 784 return result; 785 } 786 787 public void add( RepositorySystemSession session, LocalArtifactRegistration request ) 788 { 789 } 790 791 public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request ) 792 { 793 LocalMetadataResult result = new LocalMetadataResult( request ); 794 return result; 795 } 796 797 public void add( RepositorySystemSession session, LocalMetadataRegistration request ) 798 { 799 } 800 } ); 801 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 802 request.addRepository( new RemoteRepository.Builder( "id", "default", "file:///" ).build() ); 803 804 resolver.setVersionResolver( new VersionResolver() 805 { 806 807 public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) 808 throws VersionResolutionException 809 { 810 return new VersionResult( request ).setRepository( new LocalRepository( "id" ) ).setVersion( request.getArtifact().getVersion() ); 811 } 812 } ); 813 ArtifactResult result = resolver.resolveArtifact( session, request ); 814 815 assertTrue( result.getExceptions().isEmpty() ); 816 817 Artifact resolved = result.getArtifact(); 818 assertNotNull( resolved.getFile() ); 819 820 resolved = resolved.setFile( null ); 821 assertEquals( artifact, resolved ); 822 } 823 824 @Test 825 public void testFindInLocalRepositoryWhenVersionRangeWasResolvedFromLocalRepository() 826 throws ArtifactResolutionException 827 { 828 session.setLocalRepositoryManager( new LocalRepositoryManager() 829 { 830 831 public LocalRepository getRepository() 832 { 833 return null; 834 } 835 836 public String getPathForRemoteMetadata( Metadata metadata, RemoteRepository repository, String context ) 837 { 838 return null; 839 } 840 841 public String getPathForRemoteArtifact( Artifact artifact, RemoteRepository repository, String context ) 842 { 843 return null; 844 } 845 846 public String getPathForLocalMetadata( Metadata metadata ) 847 { 848 return null; 849 } 850 851 public String getPathForLocalArtifact( Artifact artifact ) 852 { 853 return null; 854 } 855 856 public LocalArtifactResult find( RepositorySystemSession session, LocalArtifactRequest request ) 857 { 858 859 LocalArtifactResult result = new LocalArtifactResult( request ); 860 result.setAvailable( false ); 861 try 862 { 863 result.setFile( TestFileUtils.createTempFile( "" ) ); 864 } 865 catch ( IOException e ) 866 { 867 e.printStackTrace(); 868 } 869 return result; 870 } 871 872 public void add( RepositorySystemSession session, LocalArtifactRegistration request ) 873 { 874 } 875 876 public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request ) 877 { 878 LocalMetadataResult result = new LocalMetadataResult( request ); 879 return result; 880 } 881 882 public void add( RepositorySystemSession session, LocalMetadataRegistration request ) 883 { 884 } 885 886 } ); 887 ArtifactRequest request = new ArtifactRequest( artifact, null, "" ); 888 889 resolver.setVersionResolver( new VersionResolver() 890 { 891 892 public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) 893 throws VersionResolutionException 894 { 895 return new VersionResult( request ).setVersion( request.getArtifact().getVersion() ); 896 } 897 } ); 898 ArtifactResult result = resolver.resolveArtifact( session, request ); 899 900 assertTrue( result.getExceptions().isEmpty() ); 901 902 Artifact resolved = result.getArtifact(); 903 assertNotNull( resolved.getFile() ); 904 905 resolved = resolved.setFile( null ); 906 assertEquals( artifact, resolved ); 907 } 908 909}