Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-6190

maven-resolver-provider's DefaultArtifactDescriptorReader has mismatched constructor and initService methods

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.5.0-alpha-1, 3.5.0-beta-1
    • 3.5.0
    • Dependencies
    • None

    Description

      In DefaultArtifactDescriptorReader.java, the constructor annotated with @Inject differs in the parameters it takes from its initService() method.

      This discrepancy means among other things that its versionRangeResolver field is never initialized when a DI container is doing injection.

      Here is the relevant code, starting at line 112, with a comment where the problem is:

          @Inject
          DefaultArtifactDescriptorReader( RemoteRepositoryManager remoteRepositoryManager, VersionResolver versionResolver,
                                           ArtifactResolver artifactResolver, ModelBuilder modelBuilder,
                                           RepositoryEventDispatcher repositoryEventDispatcher, LoggerFactory loggerFactory )
          {
              setRemoteRepositoryManager( remoteRepositoryManager );
              setVersionResolver( versionResolver );
              // XXX <-- Note: no versionRangeResolver
              setArtifactResolver( artifactResolver );
              setModelBuilder( modelBuilder );
              setLoggerFactory( loggerFactory );
              setRepositoryEventDispatcher( repositoryEventDispatcher );
          }
      
          public void initService( ServiceLocator locator )
          {
              setLoggerFactory( locator.getService( LoggerFactory.class ) );
              setRemoteRepositoryManager( locator.getService( RemoteRepositoryManager.class ) );
              setVersionResolver( locator.getService( VersionResolver.class ) );
              setVersionRangeResolver( locator.getService( VersionRangeResolver.class ) );
              setArtifactResolver( locator.getService( ArtifactResolver.class ) );
              setRepositoryEventDispatcher( locator.getService( RepositoryEventDispatcher.class ) );
              modelBuilder = locator.getService( ModelBuilder.class );
              if ( modelBuilder == null )
              {
                  setModelBuilder( new DefaultModelBuilderFactory().newInstance() );
              }
          }
      

      Attachments

        Activity

          People

            schulte77 Christian Schulte
            ljnelson Laird Nelson
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: