[MNG-8233] Client should handle modelIds as "opaque" (#1701)

Javadoc states wrong things (about format of modelId, they are
paths in reality), but also these all are "implementation details".
Crafting modelIds to "walk" lineage is wrong, there is a dedicated
method that provide "opaque" key Strings in defined order to
do that. And client should not care (nor assume) anything
about format of the key String.

---

https://issues.apache.org/jira/browse/MNG-8233
This commit is contained in:
Tamas Cservenak 2024-09-19 19:38:41 +02:00 committed by GitHub
parent e1e23d9e26
commit 368ddec0e4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 23 additions and 21 deletions

View File

@ -36,9 +36,9 @@ public interface ModelBuilderResult {
/**
* Gets the sequence of model identifiers that denote the lineage of models from which the effective model was
* constructed. Model identifiers have the form {@code <groupId>:<artifactId>:<version>}. The first identifier from
* the list denotes the model on which the model builder was originally invoked. The last identifier will always be
* an empty string that by definition denotes the super POM.
* constructed. Model identifiers should be handled as "opaque strings" and this method should be used as source
* if navigating the linage. The first identifier from the list denotes the model on which the model builder
* was originally invoked. The last identifier will always be the super POM.
*
* @return The model identifiers from the lineage of models, never {@code null}.
*/
@ -80,9 +80,9 @@ public interface ModelBuilderResult {
/**
* Gets the specified raw model as it was read from a model source. Apart from basic validation, a raw model has not
* undergone any updates by the model builder, e.g. reflects neither inheritance nor interpolation. The model
* identifier should be from the collection obtained by {@link #getModelIds()}. As a special case, an empty string
* can be used as the identifier for the super POM.
* identifier should be from the collection obtained by {@link #getModelIds()}.
*
* @see #getModelIds()
* @param modelId The identifier of the desired raw model, must not be {@code null}.
* @return The raw model or {@code null} if the specified model id does not refer to a known model.
*/
@ -91,9 +91,9 @@ public interface ModelBuilderResult {
/**
* Gets the profiles from the specified model that were active during model building. The model identifier should be
* from the collection obtained by {@link #getModelIds()}. As a special case, an empty string can be used as the
* identifier for the super POM.
* from the collection obtained by {@link #getModelIds()}.
*
* @see #getModelIds()
* @param modelId The identifier of the model whose active profiles should be retrieved, must not be {@code null}.
* @return The active profiles of the model or an empty list if the specified model id does
* not refer to a known model or has no active profiles.

View File

@ -40,11 +40,11 @@ enum Version {
}
/**
* Gets the identifier of the model from which the problem originated. While the general form of this identifier is
* <code>groupId:artifactId:version</code> the returned identifier need not be complete. The identifier is derived
* from the information that is available at the point the problem occurs and as such merely serves as a best effort
* Gets the identifier of the model from which the problem originated. The identifier is derived from the
* information that is available at the point the problem occurs and as such merely serves as best effort
* to provide information to the user to track the problem back to its origin.
*
* @see ModelBuilderResult#getModelIds()
* @return The identifier of the model from which the problem originated or an empty string if unknown, never
* {@code null}.
*/

View File

@ -31,9 +31,9 @@ public interface ModelBuildingResult {
/**
* Gets the sequence of model identifiers that denote the lineage of models from which the effective model was
* constructed. Model identifiers have the form {@code <groupId>:<artifactId>:<version>}. The first identifier from
* the list denotes the model on which the model builder was originally invoked. The last identifier will always be
* an empty string that by definition denotes the super POM.
* constructed. Model identifiers should be handled as "opaque strings" and this method should be used as source
* if navigating the linage. The first identifier from the list denotes the model on which the model builder
* was originally invoked. The last identifier will always be the super POM.
*
* @return The model identifiers from the lineage of models, never {@code null}.
*/
@ -64,9 +64,9 @@ public interface ModelBuildingResult {
/**
* Gets the specified raw model as it was read from a model source. Apart from basic validation, a raw model has not
* undergone any updates by the model builder, e.g. reflects neither inheritance nor interpolation. The model
* identifier should be from the collection obtained by {@link #getModelIds()}. As a special case, an empty string
* can be used as the identifier for the super POM.
* identifier should be from the collection obtained by {@link #getModelIds()}.
*
* @see #getModelIds()
* @param modelId The identifier of the desired raw model, must not be {@code null}.
* @return The raw model or {@code null} if the specified model id does not refer to a known model.
*/
@ -74,9 +74,9 @@ public interface ModelBuildingResult {
/**
* Gets the profiles from the specified model that were active during model building. The model identifier should be
* from the collection obtained by {@link #getModelIds()}. As a special case, an empty string can be used as the
* identifier for the super POM.
* from the collection obtained by {@link #getModelIds()}.
*
* @see #getModelIds()
* @param modelId The identifier of the model whose active profiles should be retrieved, must not be {@code null}.
* @return The active profiles of the model or an empty list if none or {@code null} if the specified model id does
* not refer to a known model.

View File

@ -18,6 +18,8 @@
*/
package org.apache.maven.model.building;
import org.apache.maven.api.services.ModelBuilderResult;
/**
* Describes a problem that was encountered during model building. A problem can either be an exception that was thrown
* or a simple string message. In addition, a problem carries a hint about its source, e.g. the POM file that exhibits
@ -49,11 +51,11 @@ enum Version {
}
/**
* Gets the hint about the source of the problem. While the syntax of this hint is unspecified and depends on the
* creator of the problem, the general expectation is that the hint provides sufficient information to the user to
* track the problem back to its origin. A concrete example for such a source hint can be the file path or URL from
* which a POM was read.
* Gets the identifier of the model from which the problem originated. The identifier is derived from the
* information that is available at the point the problem occurs and as such merely serves as best effort
* to provide information to the user to track the problem back to its origin.
*
* @see ModelBuilderResult#getModelIds()
* @return The hint about the source of the problem or an empty string if unknown, never {@code null}.
*/
String getSource();