View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.resolver.internal.ant;
20  
21  import org.apache.maven.model.building.ModelBuilder;
22  import org.eclipse.aether.impl.RemoteRepositoryManager;
23  import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
24  import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
25  import org.eclipse.aether.supplier.RepositorySystemSupplier;
26  
27  /**
28   * The Ant modified supplier, that on repository system creation "remembers" (and exposes) other required components as well.
29   * <p>
30   * This supplier retains references to the {@link ModelBuilder} and {@link RemoteRepositoryManager}
31   * instances created during the initialization of the repository system. These components are used
32   * later by the Ant infrastructure (e.g., for resolving POMs or remote repositories).
33   * </p>
34   *
35   * @since 1.5.0
36   */
37  public class AntRepositorySystemSupplier extends RepositorySystemSupplier {
38  
39      /**
40       * The model builder used to construct Maven models from POM files.
41       * Initialized during {@link #getModelBuilder()}.
42       */
43      ModelBuilder modelBuilder;
44  
45      /**
46       * The remote repository manager used for managing mirrors, proxies, and authentication
47       * for remote repositories. Initialized during {@link #getRemoteRepositoryManager(UpdatePolicyAnalyzer, ChecksumPolicyProvider)}.
48       */
49      RemoteRepositoryManager remoteRepositoryManager;
50  
51      /**
52       * Creates a new instance of {@code AntRepositorySystemSupplier}.
53       */
54      public AntRepositorySystemSupplier() {
55          // Default constructor
56      }
57  
58      /**
59       * Returns the {@link ModelBuilder} and stores it in the {@link #modelBuilder} field for later access.
60       *
61       * @return the {@link ModelBuilder} used for building effective models from POMs
62       */
63      @Override
64      protected ModelBuilder getModelBuilder() {
65          modelBuilder = super.getModelBuilder();
66          return modelBuilder;
67      }
68  
69      /**
70       * Returns the {@link RemoteRepositoryManager} and stores it in the {@link #remoteRepositoryManager} field for later access.
71       *
72       * @param updatePolicyAnalyzer the analyzer for update policies
73       * @param checksumPolicyProvider the provider for checksum policies
74       * @return the {@link RemoteRepositoryManager} used for handling repository-specific configurations
75       */
76      @Override
77      protected RemoteRepositoryManager getRemoteRepositoryManager(
78              UpdatePolicyAnalyzer updatePolicyAnalyzer, ChecksumPolicyProvider checksumPolicyProvider) {
79          remoteRepositoryManager = super.getRemoteRepositoryManager(updatePolicyAnalyzer, checksumPolicyProvider);
80          return remoteRepositoryManager;
81      }
82  }