Skip to content

Commit d075fe7

Browse files
committed
[MNG-8084] New model builder and resolver provider
1 parent 9be08cc commit d075fe7

File tree

205 files changed

+18914
-1295
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

205 files changed

+18914
-1295
lines changed

api/maven-api-core/src/main/java/org/apache/maven/api/Packaging.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.apache.maven.api;
2020

21+
import java.util.Map;
22+
2123
import org.apache.maven.api.annotations.Experimental;
2224
import org.apache.maven.api.annotations.Immutable;
2325
import org.apache.maven.api.annotations.Nonnull;
@@ -55,9 +57,9 @@ default Language language() {
5557
Type type();
5658

5759
/**
58-
* Returns the binding to use specifically for this packaging.
59-
* This will be merged to the default packaging definition.
60+
* Returns the binding to use specifically for this packaging keyed by lifecycle id.
61+
* This will be used instead of the default packaging definition.
6062
*/
6163
@Nonnull
62-
PluginContainer plugins();
64+
Map<String, PluginContainer> plugins();
6365
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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.api.services;
20+
21+
import java.util.List;
22+
23+
import org.apache.maven.api.Service;
24+
import org.apache.maven.api.model.Model;
25+
26+
public interface ModelBuilder extends Service {
27+
28+
List<String> VALID_MODEL_VERSIONS = List.of("4.0.0", "4.1.0");
29+
30+
ModelBuilderResult build(ModelBuilderRequest request) throws ModelBuilderException;
31+
32+
ModelTransformerContextBuilder newTransformerContextBuilder();
33+
34+
Model buildRawModel(ModelBuilderRequest request);
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
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.api.services;
20+
21+
import java.util.Collections;
22+
import java.util.List;
23+
24+
import org.apache.maven.api.annotations.Experimental;
25+
26+
/**
27+
* The Exception class throw by the {@link ProjectBuilder} service.
28+
*
29+
* @since 4.0.0
30+
*/
31+
@Experimental
32+
public class ModelBuilderException extends MavenException {
33+
34+
private final ModelBuilderResult result;
35+
36+
/**
37+
* Creates a new exception from the specified interim result and its associated problems.
38+
*
39+
* @param result The interim result, may be {@code null}.
40+
*/
41+
public ModelBuilderException(ModelBuilderResult result) {
42+
super(result.toString());
43+
this.result = result;
44+
}
45+
46+
/**
47+
* Gets the interim result of the model building up to the point where it failed.
48+
*
49+
* @return The interim model building result or {@code null} if not available.
50+
*/
51+
public ModelBuilderResult getResult() {
52+
return result;
53+
}
54+
55+
/**
56+
* Gets the identifier of the POM whose effective model could not be built. The general format of the identifier is
57+
* {@code <groupId>:<artifactId>:<version>} but some of these coordinates may still be unknown at the point the
58+
* exception is thrown so this information is merely meant to assist the user.
59+
*
60+
* @return The identifier of the POM or an empty string if not known, never {@code null}.
61+
*/
62+
public String getModelId() {
63+
if (result == null || result.getModelIds().isEmpty()) {
64+
return "";
65+
}
66+
return result.getModelIds().get(0);
67+
}
68+
69+
/**
70+
* Gets the problems that caused this exception.
71+
*
72+
* @return The problems that caused this exception, never {@code null}.
73+
*/
74+
public List<ModelProblem> getProblems() {
75+
if (result == null) {
76+
return Collections.emptyList();
77+
}
78+
return Collections.unmodifiableList(result.getProblems());
79+
}
80+
}

0 commit comments

Comments
 (0)