Skip to content

Commit 490e16c

Browse files
authored
Ability to augment metadata nature for version range request (#1518)
The idea is to let caller be able to augment the nature of metadata to resolve version range from. Resolver already handles this, and is more elegant, than to have caller fiddle with filtering the remote repositories or alike. Also, this way client code (ie. Maven) can expose more fine grained configuration for this.
1 parent 136f887 commit 490e16c

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

maven-resolver-api/src/main/java/org/eclipse/aether/resolution/VersionRangeRequest.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import org.eclipse.aether.RequestTrace;
2626
import org.eclipse.aether.artifact.Artifact;
27+
import org.eclipse.aether.metadata.Metadata;
2728
import org.eclipse.aether.repository.RemoteRepository;
2829

2930
/**
@@ -38,6 +39,8 @@ public final class VersionRangeRequest {
3839

3940
private List<RemoteRepository> repositories = Collections.emptyList();
4041

42+
private Metadata.Nature nature = Metadata.Nature.RELEASE_OR_SNAPSHOT;
43+
4144
private String context = "";
4245

4346
private RequestTrace trace;
@@ -62,6 +65,22 @@ public VersionRangeRequest(Artifact artifact, List<RemoteRepository> repositorie
6265
setRequestContext(context);
6366
}
6467

68+
/**
69+
* Creates a request with the specified properties.
70+
*
71+
* @param artifact The artifact whose version range should be resolved, may be {@code null}.
72+
* @param repositories The repositories to resolve the version from, may be {@code null}.
73+
* @param nature The nature of metadata to use for resolving the version from, may be {@code null}.
74+
* @param context The context in which this request is made, may be {@code null}.
75+
*/
76+
public VersionRangeRequest(
77+
Artifact artifact, List<RemoteRepository> repositories, Metadata.Nature nature, String context) {
78+
setArtifact(artifact);
79+
setRepositories(repositories);
80+
setNature(nature);
81+
setRequestContext(context);
82+
}
83+
6584
/**
6685
* Gets the artifact whose version range shall be resolved.
6786
*
@@ -122,6 +141,32 @@ public VersionRangeRequest addRepository(RemoteRepository repository) {
122141
return this;
123142
}
124143

144+
/**
145+
* The nature of metadata to use for resolving the version from, never {@code null}.
146+
*
147+
* @return The nature, never {@code null}.
148+
* @since 1.9.25
149+
*/
150+
public Metadata.Nature getNature() {
151+
return nature;
152+
}
153+
154+
/**
155+
* Sets the nature of metadata to use for resolving the version from
156+
*
157+
* @param nature The nature, may be {@code null}.
158+
* @return This request for chaining, never {@code null}.
159+
* @since 1.9.25
160+
*/
161+
public VersionRangeRequest setNature(Metadata.Nature nature) {
162+
if (nature == null) {
163+
this.nature = Metadata.Nature.RELEASE_OR_SNAPSHOT;
164+
} else {
165+
this.nature = nature;
166+
}
167+
return this;
168+
}
169+
125170
/**
126171
* Gets the context in which this request is made.
127172
*

0 commit comments

Comments
 (0)