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.eclipse.aether.internal.impl.resolution;
20  
21  import java.util.List;
22  
23  import org.eclipse.aether.RepositorySystemSession;
24  import org.eclipse.aether.resolution.ArtifactResult;
25  import org.eclipse.aether.spi.resolution.ArtifactResolverPostProcessor;
26  import org.eclipse.aether.util.ConfigUtils;
27  
28  import static java.util.Objects.requireNonNull;
29  
30  /**
31   * Support class to implement {@link ArtifactResolverPostProcessor}.
32   *
33   * @since 1.9.0
34   */
35  public abstract class ArtifactResolverPostProcessorSupport implements ArtifactResolverPostProcessor {
36      private static final String CONFIG_PROP_PREFIX = "aether.artifactResolver.postProcessor.";
37  
38      private final String name;
39  
40      protected ArtifactResolverPostProcessorSupport(String name) {
41          this.name = requireNonNull(name);
42      }
43  
44      /**
45       * This implementation will call into underlying code only if enabled.
46       */
47      @Override
48      public void postProcess(RepositorySystemSession session, List<ArtifactResult> artifactResults) {
49          if (isEnabled(session)) {
50              doPostProcess(session, artifactResults);
51          }
52      }
53  
54      protected abstract void doPostProcess(RepositorySystemSession session, List<ArtifactResult> artifactResults);
55  
56      /**
57       * To be used by underlying implementations to form configuration property keys properly scoped.
58       */
59      protected String configPropKey(String name) {
60          requireNonNull(name);
61          return CONFIG_PROP_PREFIX + this.name + "." + name;
62      }
63  
64      /**
65       * Returns {@code true} if session configuration marks this instance as enabled.
66       * <p>
67       * Default value is {@code false}.
68       */
69      protected boolean isEnabled(RepositorySystemSession session) {
70          return ConfigUtils.getBoolean(session, false, CONFIG_PROP_PREFIX + this.name);
71      }
72  }