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.repository;
20  
21  import java.util.Collection;
22  import java.util.Collections;
23  
24  import org.eclipse.aether.artifact.Artifact;
25  
26  /**
27   * A request to register an artifact within the local repository. Certain local repository implementations can refuse to
28   * serve physically present artifacts if those haven't been previously registered to them.
29   *
30   * @see LocalRepositoryManager#add(org.eclipse.aether.RepositorySystemSession, LocalArtifactRegistration)
31   */
32  public final class LocalArtifactRegistration {
33  
34      private Artifact artifact;
35  
36      private RemoteRepository repository;
37  
38      private Collection<String> contexts = Collections.emptyList();
39  
40      /**
41       * Creates an uninitialized registration.
42       */
43      public LocalArtifactRegistration() {
44          // enables default constructor
45      }
46  
47      /**
48       * Creates a registration request for the specified (locally installed) artifact.
49       *
50       * @param artifact The artifact to register, may be {@code null}.
51       */
52      public LocalArtifactRegistration(Artifact artifact) {
53          setArtifact(artifact);
54      }
55  
56      /**
57       * Creates a registration request for the specified artifact.
58       *
59       * @param artifact The artifact to register, may be {@code null}.
60       * @param repository The remote repository from which the artifact was resolved or {@code null} if the artifact was
61       *            locally installed.
62       * @param contexts The resolution contexts, may be {@code null}.
63       */
64      public LocalArtifactRegistration(Artifact artifact, RemoteRepository repository, Collection<String> contexts) {
65          setArtifact(artifact);
66          setRepository(repository);
67          setContexts(contexts);
68      }
69  
70      /**
71       * Gets the artifact to register.
72       *
73       * @return The artifact or {@code null} if not set.
74       */
75      public Artifact getArtifact() {
76          return artifact;
77      }
78  
79      /**
80       * Sets the artifact to register.
81       *
82       * @param artifact The artifact, may be {@code null}.
83       * @return This request for chaining, never {@code null}.
84       */
85      public LocalArtifactRegistration setArtifact(Artifact artifact) {
86          this.artifact = artifact;
87          return this;
88      }
89  
90      /**
91       * Gets the remote repository from which the artifact was resolved.
92       *
93       * @return The remote repository or {@code null} if the artifact was locally installed.
94       */
95      public RemoteRepository getRepository() {
96          return repository;
97      }
98  
99      /**
100      * Sets the remote repository from which the artifact was resolved.
101      *
102      * @param repository The remote repository or {@code null} if the artifact was locally installed.
103      * @return This request for chaining, never {@code null}.
104      */
105     public LocalArtifactRegistration setRepository(RemoteRepository repository) {
106         this.repository = repository;
107         return this;
108     }
109 
110     /**
111      * Gets the resolution contexts in which the artifact is available.
112      *
113      * @return The resolution contexts in which the artifact is available, never {@code null}.
114      */
115     public Collection<String> getContexts() {
116         return contexts;
117     }
118 
119     /**
120      * Sets the resolution contexts in which the artifact is available.
121      *
122      * @param contexts The resolution contexts, may be {@code null}.
123      * @return This request for chaining, never {@code null}.
124      */
125     public LocalArtifactRegistration setContexts(Collection<String> contexts) {
126         if (contexts != null) {
127             this.contexts = contexts;
128         } else {
129             this.contexts = Collections.emptyList();
130         }
131         return this;
132     }
133 }