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.model.building;
20
21 import java.util.List;
22
23 import org.apache.maven.model.Model;
24 import org.apache.maven.model.Profile;
25
26 /**
27 * Holds a model along with some auxiliary information. This internal utility class assists the model builder during POM
28 * processing by providing a means to transport information that cannot be (easily) extracted from the model itself.
29 *
30 * @author Benjamin Bentmann
31 */
32 class ModelData {
33 private final ModelSource source;
34
35 private Model model;
36
37 private Model rawModel;
38
39 private List<Profile> activeProfiles;
40
41 private String groupId;
42
43 private String artifactId;
44
45 private String version;
46
47 /**
48 * Creates a new container for the specified model.
49 *
50 * @param model The model to wrap, may be {@code null}.
51 */
52 ModelData(ModelSource source, Model model) {
53 this.source = source;
54 this.model = model;
55 }
56
57 /**
58 * Creates a new container for the specified model.
59 *
60 * @param model The model to wrap, may be {@code null}.
61 * @param groupId The effective group identifier of the model, may be {@code null}.
62 * @param artifactId The effective artifact identifier of the model, may be {@code null}.
63 * @param version The effective version of the model, may be {@code null}.
64 */
65 ModelData(ModelSource source, Model model, String groupId, String artifactId, String version) {
66 this.source = source;
67 this.model = model;
68 setGroupId(groupId);
69 setArtifactId(artifactId);
70 setVersion(version);
71 }
72
73 public ModelSource getSource() {
74 return source;
75 }
76
77 /**
78 * Gets the model being wrapped.
79 *
80 * @return The model or {@code null} if not set.
81 */
82 public Model getModel() {
83 return model;
84 }
85
86 /**
87 * Sets the model being wrapped.
88 *
89 * @param model The model, may be {@code null}.
90 */
91 public void setModel(Model model) {
92 this.model = model;
93 }
94
95 /**
96 * Gets the raw model being wrapped.
97 *
98 * @return The raw model or {@code null} if not set.
99 */
100 public Model getRawModel() {
101 return rawModel;
102 }
103
104 /**
105 * Sets the raw model being wrapped.
106 *
107 * @param rawModel The raw model, may be {@code null}.
108 */
109 public void setRawModel(Model rawModel) {
110 this.rawModel = rawModel;
111 }
112
113 /**
114 * Gets the active profiles from the model.
115 *
116 * @return The active profiles or {@code null} if not set.
117 */
118 public List<Profile> getActiveProfiles() {
119 return activeProfiles;
120 }
121
122 /**
123 * Sets the active profiles from the model.
124 *
125 * @param activeProfiles The active profiles, may be {@code null}.
126 */
127 public void setActiveProfiles(List<Profile> activeProfiles) {
128 this.activeProfiles = activeProfiles;
129 }
130
131 /**
132 * Gets the effective group identifier of the model.
133 *
134 * @return The effective group identifier of the model or an empty string if unknown, never {@code null}.
135 */
136 public String getGroupId() {
137 return (groupId != null) ? groupId : "";
138 }
139
140 /**
141 * Sets the effective group identifier of the model.
142 *
143 * @param groupId The effective group identifier of the model, may be {@code null}.
144 */
145 public void setGroupId(String groupId) {
146 this.groupId = groupId;
147 }
148
149 /**
150 * Gets the effective artifact identifier of the model.
151 *
152 * @return The effective artifact identifier of the model or an empty string if unknown, never {@code null}.
153 */
154 public String getArtifactId() {
155 return (artifactId != null) ? artifactId : "";
156 }
157
158 /**
159 * Sets the effective artifact identifier of the model.
160 *
161 * @param artifactId The effective artifact identifier of the model, may be {@code null}.
162 */
163 public void setArtifactId(String artifactId) {
164 this.artifactId = artifactId;
165 }
166
167 /**
168 * Gets the effective version of the model.
169 *
170 * @return The effective version of the model or an empty string if unknown, never {@code null}.
171 */
172 public String getVersion() {
173 return (version != null) ? version : "";
174 }
175
176 /**
177 * Sets the effective version of the model.
178 *
179 * @param version The effective version of the model, may be {@code null}.
180 */
181 public void setVersion(String version) {
182 this.version = version;
183 }
184
185 /**
186 * Gets the effective identifier of the model in the form {@code <groupId>:<artifactId>:<version>}.
187 *
188 * @return The effective identifier of the model, never {@code null}.
189 */
190 public String getId() {
191 StringBuilder buffer = new StringBuilder(128);
192
193 buffer.append(getGroupId())
194 .append(':')
195 .append(getArtifactId())
196 .append(':')
197 .append(getVersion());
198
199 return buffer.toString();
200 }
201
202 @Override
203 public String toString() {
204 return String.valueOf(model);
205 }
206 }