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.collection;
20
21 import java.util.Collection;
22 import java.util.Map;
23
24 import org.eclipse.aether.graph.Exclusion;
25
26 /**
27 * The management updates to apply to a dependency.
28 *
29 * @see DependencyManager#manageDependency(org.eclipse.aether.graph.Dependency)
30 */
31 public final class DependencyManagement {
32
33 private String version;
34
35 private String scope;
36
37 private Boolean optional;
38
39 private Collection<Exclusion> exclusions;
40
41 private Map<String, String> properties;
42
43 /**
44 * Creates an empty management update.
45 */
46 public DependencyManagement() {
47 // enables default constructor
48 }
49
50 /**
51 * Gets the new version to apply to the dependency.
52 *
53 * @return The new version or {@code null} if the version is not managed and the existing dependency version should
54 * remain unchanged.
55 */
56 public String getVersion() {
57 return version;
58 }
59
60 /**
61 * Sets the new version to apply to the dependency.
62 *
63 * @param version The new version, may be {@code null} if the version is not managed.
64 * @return This management update for chaining, never {@code null}.
65 */
66 public DependencyManagement setVersion(String version) {
67 this.version = version;
68 return this;
69 }
70
71 /**
72 * Gets the new scope to apply to the dependency.
73 *
74 * @return The new scope or {@code null} if the scope is not managed and the existing dependency scope should remain
75 * unchanged.
76 */
77 public String getScope() {
78 return scope;
79 }
80
81 /**
82 * Sets the new scope to apply to the dependency.
83 *
84 * @param scope The new scope, may be {@code null} if the scope is not managed.
85 * @return This management update for chaining, never {@code null}.
86 */
87 public DependencyManagement setScope(String scope) {
88 this.scope = scope;
89 return this;
90 }
91
92 /**
93 * Gets the new optional flag to apply to the dependency.
94 *
95 * @return The new optional flag or {@code null} if the flag is not managed and the existing optional flag of the
96 * dependency should remain unchanged.
97 */
98 public Boolean getOptional() {
99 return optional;
100 }
101
102 /**
103 * Sets the new optional flag to apply to the dependency.
104 *
105 * @param optional The optional flag, may be {@code null} if the flag is not managed.
106 * @return This management update for chaining, never {@code null}.
107 */
108 public DependencyManagement setOptional(Boolean optional) {
109 this.optional = optional;
110 return this;
111 }
112
113 /**
114 * Gets the new exclusions to apply to the dependency. Note that this collection denotes the complete set of
115 * exclusions for the dependency, i.e. the dependency manager controls whether any existing exclusions get merged
116 * with information from dependency management or overridden by it.
117 *
118 * @return The new exclusions or {@code null} if the exclusions are not managed and the existing dependency
119 * exclusions should remain unchanged.
120 */
121 public Collection<Exclusion> getExclusions() {
122 return exclusions;
123 }
124
125 /**
126 * Sets the new exclusions to apply to the dependency. Note that this collection denotes the complete set of
127 * exclusions for the dependency, i.e. the dependency manager controls whether any existing exclusions get merged
128 * with information from dependency management or overridden by it.
129 *
130 * @param exclusions The new exclusions, may be {@code null} if the exclusions are not managed.
131 * @return This management update for chaining, never {@code null}.
132 */
133 public DependencyManagement setExclusions(Collection<Exclusion> exclusions) {
134 this.exclusions = exclusions;
135 return this;
136 }
137
138 /**
139 * Gets the new properties to apply to the dependency. Note that this map denotes the complete set of properties,
140 * i.e. the dependency manager controls whether any existing properties get merged with the information from
141 * dependency management or overridden by it.
142 *
143 * @return The new artifact properties or {@code null} if the properties are not managed and the existing properties
144 * should remain unchanged.
145 */
146 public Map<String, String> getProperties() {
147 return properties;
148 }
149
150 /**
151 * Sets the new properties to apply to the dependency. Note that this map denotes the complete set of properties,
152 * i.e. the dependency manager controls whether any existing properties get merged with the information from
153 * dependency management or overridden by it.
154 *
155 * @param properties The new artifact properties, may be {@code null} if the properties are not managed.
156 * @return This management update for chaining, never {@code null}.
157 */
158 public DependencyManagement setProperties(Map<String, String> properties) {
159 this.properties = properties;
160 return this;
161 }
162 }