This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
The following commit(s) were added to refs/heads/master by this push:
new df324110 [MRESOLVER-459] Rework session to be usable in tests (#400)
df324110 is described below
commit df324110b97f6b78a23c5a21fce4d26a3126bce6
Author: Tamas Cservenak <[email protected]>
AuthorDate: Tue Dec 19 10:11:11 2023 +0100
[MRESOLVER-459] Rework session to be usable in tests (#400)
Without touching deprecated code. Also, remove the
redundancy by duplicating this class in test utils.
---
https://issues.apache.org/jira/browse/MRESOLVER-459
---
.../aether/DefaultRepositorySystemSession.java | 16 +-
.../aether/DefaultRepositorySystemSessionTest.java | 2 +-
.../test/util/http/HttpTransporterTest.java | 11 +-
.../test/util/TestRepositorySystemSession.java | 818 ---------------------
.../aether/internal/test/util/TestUtils.java | 2 +-
5 files changed, 24 insertions(+), 825 deletions(-)
diff --git
a/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
b/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
index 773c6d3d..3161f825 100644
---
a/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
+++
b/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
@@ -137,6 +137,20 @@ public final class DefaultRepositorySystemSession
implements RepositorySystemSes
*/
@Deprecated
public DefaultRepositorySystemSession() {
+ this(h -> false);
+ }
+
+ /**
+ * Creates an uninitialized session. <em>Note:</em> The new session is not
ready to use, as a bare minimum,
+ * {@link #setLocalRepositoryManager(LocalRepositoryManager)} needs to be
called but usually other settings also
+ * need to be customized to achieve meaningful behavior.
+ * <p>
+ * Note: preferred way to create sessions is {@link
RepositorySystem#createSessionBuilder()}, as then client code
+ * does not have to fiddle with session close callbacks. This constructor
is meant more for testing purposes.
+ *
+ * @since 2.0.0
+ */
+ public DefaultRepositorySystemSession(Function<Runnable, Boolean>
onSessionEndedRegistrar) {
systemProperties = new HashMap<>();
systemPropertiesView = Collections.unmodifiableMap(systemProperties);
userProperties = new HashMap<>();
@@ -148,7 +162,7 @@ public final class DefaultRepositorySystemSession
implements RepositorySystemSes
authenticationSelector = NullAuthenticationSelector.INSTANCE;
artifactTypeRegistry = NullArtifactTypeRegistry.INSTANCE;
data = new DefaultSessionData();
- onSessionEndedRegistrar = h -> false;
+ this.onSessionEndedRegistrar = requireNonNull(onSessionEndedRegistrar,
"onSessionEndedRegistrar");
}
/**
diff --git
a/maven-resolver-api/src/test/java/org/eclipse/aether/DefaultRepositorySystemSessionTest.java
b/maven-resolver-api/src/test/java/org/eclipse/aether/DefaultRepositorySystemSessionTest.java
index 0ddc962b..85bbf57b 100644
---
a/maven-resolver-api/src/test/java/org/eclipse/aether/DefaultRepositorySystemSessionTest.java
+++
b/maven-resolver-api/src/test/java/org/eclipse/aether/DefaultRepositorySystemSessionTest.java
@@ -36,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.*;
public class DefaultRepositorySystemSessionTest {
private DefaultRepositorySystemSession newSession() {
- return new DefaultRepositorySystemSession();
+ return new DefaultRepositorySystemSession(h -> false);
}
@Test
diff --git
a/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java
b/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java
index 31b4e44c..4cfe7017 100644
---
a/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java
+++
b/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java
@@ -34,10 +34,10 @@ import java.util.function.Supplier;
import org.eclipse.aether.ConfigurationProperties;
import org.eclipse.aether.DefaultRepositoryCache;
+import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.DefaultSessionData;
import org.eclipse.aether.internal.test.util.TestFileUtils;
import org.eclipse.aether.internal.test.util.TestLocalRepositoryManager;
-import org.eclipse.aether.internal.test.util.TestRepositorySystemSession;
import org.eclipse.aether.repository.Authentication;
import org.eclipse.aether.repository.Proxy;
import org.eclipse.aether.repository.RemoteRepository;
@@ -84,7 +84,7 @@ public class HttpTransporterTest {
private final Supplier<HttpTransporterFactory> transporterFactorySupplier;
- protected TestRepositorySystemSession session;
+ protected DefaultRepositorySystemSession session;
protected HttpTransporterFactory factory;
@@ -140,7 +140,7 @@ public class HttpTransporterTest {
closer.run();
closer = null;
}
- session = new TestRepositorySystemSession(session);
+ session = new DefaultRepositorySystemSession(session);
session.setData(new DefaultSessionData());
transporter = factory.newInstance(session, newRepo(url));
}
@@ -150,7 +150,10 @@ public class HttpTransporterTest {
@BeforeEach
protected void setUp(TestInfo testInfo) throws Exception {
System.out.println("=== " + testInfo.getDisplayName() + " ===");
- session = new TestRepositorySystemSession(h -> this.closer = h);
+ session = new DefaultRepositorySystemSession(h -> {
+ this.closer = h;
+ return true;
+ });
session.setLocalRepositoryManager(new TestLocalRepositoryManager());
factory = transporterFactorySupplier.get();
repoDir = TestFileUtils.createTempDir();
diff --git
a/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestRepositorySystemSession.java
b/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestRepositorySystemSession.java
deleted file mode 100644
index 3c9e52c5..00000000
---
a/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestRepositorySystemSession.java
+++ /dev/null
@@ -1,818 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eclipse.aether.internal.test.util;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.function.Consumer;
-import java.util.function.Function;
-
-import org.eclipse.aether.*;
-import org.eclipse.aether.artifact.ArtifactType;
-import org.eclipse.aether.artifact.ArtifactTypeRegistry;
-import org.eclipse.aether.collection.*;
-import org.eclipse.aether.repository.*;
-import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
-import org.eclipse.aether.resolution.ResolutionErrorPolicy;
-import org.eclipse.aether.transfer.TransferListener;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * Test utility to create root sessions.
- */
-public final class TestRepositorySystemSession implements
RepositorySystemSession {
- private boolean readOnly;
-
- private boolean offline;
-
- private boolean ignoreArtifactDescriptorRepositories;
-
- private ResolutionErrorPolicy resolutionErrorPolicy;
-
- private ArtifactDescriptorPolicy artifactDescriptorPolicy;
-
- private String checksumPolicy;
-
- private String artifactUpdatePolicy;
-
- private String metadataUpdatePolicy;
-
- private LocalRepositoryManager localRepositoryManager;
-
- private WorkspaceReader workspaceReader;
-
- private RepositoryListener repositoryListener;
-
- private TransferListener transferListener;
-
- private Map<String, String> systemProperties;
-
- private Map<String, String> systemPropertiesView;
-
- private Map<String, String> userProperties;
-
- private Map<String, String> userPropertiesView;
-
- private Map<String, Object> configProperties;
-
- private Map<String, Object> configPropertiesView;
-
- private MirrorSelector mirrorSelector;
-
- private ProxySelector proxySelector;
-
- private AuthenticationSelector authenticationSelector;
-
- private ArtifactTypeRegistry artifactTypeRegistry;
-
- private DependencyTraverser dependencyTraverser;
-
- private DependencyManager dependencyManager;
-
- private DependencySelector dependencySelector;
-
- private VersionFilter versionFilter;
-
- private DependencyGraphTransformer dependencyGraphTransformer;
-
- private SessionData data;
-
- private RepositoryCache cache;
-
- private final Function<Runnable, Boolean> onSessionEndedRegistrar;
-
- public TestRepositorySystemSession(Consumer<Runnable>
onSessionCloseConsumer) {
- systemProperties = new HashMap<>();
- systemPropertiesView = Collections.unmodifiableMap(systemProperties);
- userProperties = new HashMap<>();
- userPropertiesView = Collections.unmodifiableMap(userProperties);
- configProperties = new HashMap<>();
- configPropertiesView = Collections.unmodifiableMap(configProperties);
- mirrorSelector = NullMirrorSelector.INSTANCE;
- proxySelector = NullProxySelector.INSTANCE;
- authenticationSelector = NullAuthenticationSelector.INSTANCE;
- artifactTypeRegistry = NullArtifactTypeRegistry.INSTANCE;
- data = new DefaultSessionData();
- onSessionEndedRegistrar = h -> {
- if (onSessionCloseConsumer != null) {
- onSessionCloseConsumer.accept(h);
- return true;
- } else {
- return false;
- }
- };
- }
-
- public TestRepositorySystemSession(RepositorySystemSession session) {
- requireNonNull(session, "repository system session cannot be null");
-
- setOffline(session.isOffline());
-
setIgnoreArtifactDescriptorRepositories(session.isIgnoreArtifactDescriptorRepositories());
- setResolutionErrorPolicy(session.getResolutionErrorPolicy());
- setArtifactDescriptorPolicy(session.getArtifactDescriptorPolicy());
- setChecksumPolicy(session.getChecksumPolicy());
- setUpdatePolicy(session.getUpdatePolicy());
- setMetadataUpdatePolicy(session.getMetadataUpdatePolicy());
- setLocalRepositoryManager(session.getLocalRepositoryManager());
- setWorkspaceReader(session.getWorkspaceReader());
- setRepositoryListener(session.getRepositoryListener());
- setTransferListener(session.getTransferListener());
- setSystemProperties(session.getSystemProperties());
- setUserProperties(session.getUserProperties());
- setConfigProperties(session.getConfigProperties());
- setMirrorSelector(session.getMirrorSelector());
- setProxySelector(session.getProxySelector());
- setAuthenticationSelector(session.getAuthenticationSelector());
- setArtifactTypeRegistry(session.getArtifactTypeRegistry());
- setDependencyTraverser(session.getDependencyTraverser());
- setDependencyManager(session.getDependencyManager());
- setDependencySelector(session.getDependencySelector());
- setVersionFilter(session.getVersionFilter());
- setDependencyGraphTransformer(session.getDependencyGraphTransformer());
- setData(session.getData());
- setCache(session.getCache());
- this.onSessionEndedRegistrar = session::addOnSessionEndedHandler;
- }
-
- @Override
- public boolean isOffline() {
- return offline;
- }
-
- /**
- * Controls whether the repository system operates in offline mode and
avoids/refuses any access to remote
- * repositories.
- *
- * @param offline {@code true} if the repository system is in offline
mode, {@code false} otherwise.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setOffline(boolean offline) {
- verifyStateForMutation();
- this.offline = offline;
- return this;
- }
-
- @Override
- public boolean isIgnoreArtifactDescriptorRepositories() {
- return ignoreArtifactDescriptorRepositories;
- }
-
- /**
- * Controls whether repositories declared in artifact descriptors should
be ignored during transitive dependency
- * collection. If enabled, only the repositories originally provided with
the collect request will be considered.
- *
- * @param ignoreArtifactDescriptorRepositories {@code true} to ignore
additional repositories from artifact
- * descriptors, {@code false}
to merge those with the originally
- * specified repositories.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setIgnoreArtifactDescriptorRepositories(
- boolean ignoreArtifactDescriptorRepositories) {
- verifyStateForMutation();
- this.ignoreArtifactDescriptorRepositories =
ignoreArtifactDescriptorRepositories;
- return this;
- }
-
- @Override
- public ResolutionErrorPolicy getResolutionErrorPolicy() {
- return resolutionErrorPolicy;
- }
-
- /**
- * Sets the policy which controls whether resolutions errors from remote
repositories should be cached.
- *
- * @param resolutionErrorPolicy The resolution error policy for this
session, may be {@code null} if resolution
- * errors should generally not be cached.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession
setResolutionErrorPolicy(ResolutionErrorPolicy resolutionErrorPolicy) {
- verifyStateForMutation();
- this.resolutionErrorPolicy = resolutionErrorPolicy;
- return this;
- }
-
- @Override
- public ArtifactDescriptorPolicy getArtifactDescriptorPolicy() {
- return artifactDescriptorPolicy;
- }
-
- /**
- * Sets the policy which controls how errors related to reading artifact
descriptors should be handled.
- *
- * @param artifactDescriptorPolicy The descriptor error policy for this
session, may be {@code null} if descriptor
- * errors should generally not be
tolerated.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession
setArtifactDescriptorPolicy(ArtifactDescriptorPolicy artifactDescriptorPolicy) {
- verifyStateForMutation();
- this.artifactDescriptorPolicy = artifactDescriptorPolicy;
- return this;
- }
-
- @Override
- public String getChecksumPolicy() {
- return checksumPolicy;
- }
-
- /**
- * Sets the global checksum policy. If set, the global checksum policy
overrides the checksum policies of the remote
- * repositories being used for resolution.
- *
- * @param checksumPolicy The global checksum policy, may be {@code
null}/empty to apply the per-repository policies.
- * @return This session for chaining, never {@code null}.
- * @see RepositoryPolicy#CHECKSUM_POLICY_FAIL
- * @see RepositoryPolicy#CHECKSUM_POLICY_IGNORE
- * @see RepositoryPolicy#CHECKSUM_POLICY_WARN
- */
- public TestRepositorySystemSession setChecksumPolicy(String
checksumPolicy) {
- verifyStateForMutation();
- this.checksumPolicy = checksumPolicy;
- return this;
- }
-
- @Override
- public String getUpdatePolicy() {
- return getArtifactUpdatePolicy();
- }
-
- /**
- * Sets the global update policy. If set, the global update policy
overrides the update policies of the remote
- * repositories being used for resolution.
- * <p>
- * This method is meant for code that does not want to distinguish between
artifact and metadata policies.
- * Note: applications should either use get/set updatePolicy (this method
and
- * {@link RepositorySystemSession#getUpdatePolicy()}) or also distinguish
between artifact and
- * metadata update policies (and use other methods), but <em>should not
mix the two!</em>
- *
- * @param updatePolicy The global update policy, may be {@code null}/empty
to apply the per-repository policies.
- * @return This session for chaining, never {@code null}.
- * @see RepositoryPolicy#UPDATE_POLICY_ALWAYS
- * @see RepositoryPolicy#UPDATE_POLICY_DAILY
- * @see RepositoryPolicy#UPDATE_POLICY_NEVER
- * @see #setArtifactUpdatePolicy(String)
- * @see #setMetadataUpdatePolicy(String)
- */
- public TestRepositorySystemSession setUpdatePolicy(String updatePolicy) {
- verifyStateForMutation();
- setArtifactUpdatePolicy(updatePolicy);
- setMetadataUpdatePolicy(updatePolicy);
- return this;
- }
-
- @Override
- public String getArtifactUpdatePolicy() {
- return artifactUpdatePolicy;
- }
-
- /**
- * Sets the global artifact update policy. If set, the global update
policy overrides the artifact update policies
- * of the remote repositories being used for resolution.
- *
- * @param artifactUpdatePolicy The global update policy, may be {@code
null}/empty to apply the per-repository policies.
- * @return This session for chaining, never {@code null}.
- * @see RepositoryPolicy#UPDATE_POLICY_ALWAYS
- * @see RepositoryPolicy#UPDATE_POLICY_DAILY
- * @see RepositoryPolicy#UPDATE_POLICY_NEVER
- * @since 2.0.0
- */
- public TestRepositorySystemSession setArtifactUpdatePolicy(String
artifactUpdatePolicy) {
- verifyStateForMutation();
- this.artifactUpdatePolicy = artifactUpdatePolicy;
- return this;
- }
-
- @Override
- public String getMetadataUpdatePolicy() {
- return metadataUpdatePolicy;
- }
-
- /**
- * Sets the global metadata update policy. If set, the global update
policy overrides the metadata update policies
- * of the remote repositories being used for resolution.
- *
- * @param metadataUpdatePolicy The global update policy, may be {@code
null}/empty to apply the per-repository policies.
- * @return This session for chaining, never {@code null}.
- * @see RepositoryPolicy#UPDATE_POLICY_ALWAYS
- * @see RepositoryPolicy#UPDATE_POLICY_DAILY
- * @see RepositoryPolicy#UPDATE_POLICY_NEVER
- * @since 2.0.0
- */
- public TestRepositorySystemSession setMetadataUpdatePolicy(String
metadataUpdatePolicy) {
- verifyStateForMutation();
- this.metadataUpdatePolicy = metadataUpdatePolicy;
- return this;
- }
-
- @Override
- public LocalRepository getLocalRepository() {
- LocalRepositoryManager lrm = getLocalRepositoryManager();
- return (lrm != null) ? lrm.getRepository() : null;
- }
-
- @Override
- public LocalRepositoryManager getLocalRepositoryManager() {
- return localRepositoryManager;
- }
-
- /**
- * Sets the local repository manager used during this session.
<em>Note:</em> Eventually, a valid session must have
- * a local repository manager set.
- *
- * @param localRepositoryManager The local repository manager used during
this session, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession
setLocalRepositoryManager(LocalRepositoryManager localRepositoryManager) {
- verifyStateForMutation();
- this.localRepositoryManager = localRepositoryManager;
- return this;
- }
-
- @Override
- public WorkspaceReader getWorkspaceReader() {
- return workspaceReader;
- }
-
- /**
- * Sets the workspace reader used during this session. If set, the
workspace reader will usually be consulted first
- * to resolve artifacts.
- *
- * @param workspaceReader The workspace reader for this session, may be
{@code null} if none.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setWorkspaceReader(WorkspaceReader
workspaceReader) {
- verifyStateForMutation();
- this.workspaceReader = workspaceReader;
- return this;
- }
-
- @Override
- public RepositoryListener getRepositoryListener() {
- return repositoryListener;
- }
-
- /**
- * Sets the listener being notified of actions in the repository system.
- *
- * @param repositoryListener The repository listener, may be {@code null}
if none.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession
setRepositoryListener(RepositoryListener repositoryListener) {
- verifyStateForMutation();
- this.repositoryListener = repositoryListener;
- return this;
- }
-
- @Override
- public TransferListener getTransferListener() {
- return transferListener;
- }
-
- /**
- * Sets the listener being notified of uploads/downloads by the repository
system.
- *
- * @param transferListener The transfer listener, may be {@code null} if
none.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setTransferListener(TransferListener
transferListener) {
- verifyStateForMutation();
- this.transferListener = transferListener;
- return this;
- }
-
- @SuppressWarnings("checkstyle:magicnumber")
- private <T> Map<String, T> copySafe(Map<?, ?> table, Class<T> valueType) {
- Map<String, T> map;
- if (table == null || table.isEmpty()) {
- map = new HashMap<>();
- } else {
- map = new HashMap<>((int) (table.size() / 0.75f) + 1);
- for (Map.Entry<?, ?> entry : table.entrySet()) {
- Object key = entry.getKey();
- if (key instanceof String) {
- Object value = entry.getValue();
- if (valueType.isInstance(value)) {
- map.put(key.toString(), valueType.cast(value));
- }
- }
- }
- }
- return map;
- }
-
- @Override
- public Map<String, String> getSystemProperties() {
- return systemPropertiesView;
- }
-
- /**
- * Sets the system properties to use, e.g. for processing of artifact
descriptors. System properties are usually
- * collected from the runtime environment like {@link
System#getProperties()} and environment variables.
- * <p>
- * <em>Note:</em> System properties are of type {@code Map<String,
String>} and any key-value pair in the input map
- * that doesn't match this type will be silently ignored.
- *
- * @param systemProperties The system properties, may be {@code null} or
empty if none.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setSystemProperties(Map<?, ?>
systemProperties) {
- verifyStateForMutation();
- this.systemProperties = copySafe(systemProperties, String.class);
- systemPropertiesView =
Collections.unmodifiableMap(this.systemProperties);
- return this;
- }
-
- /**
- * Sets the specified system property.
- *
- * @param key The property key, must not be {@code null}.
- * @param value The property value, may be {@code null} to remove/unset
the property.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setSystemProperty(String key, String
value) {
- verifyStateForMutation();
- if (value != null) {
- systemProperties.put(key, value);
- } else {
- systemProperties.remove(key);
- }
- return this;
- }
-
- @Override
- public Map<String, String> getUserProperties() {
- return userPropertiesView;
- }
-
- /**
- * Sets the user properties to use, e.g. for processing of artifact
descriptors. User properties are similar to
- * system properties but are set on the discretion of the user and hence
are considered of higher priority than
- * system properties in case of conflicts.
- * <p>
- * <em>Note:</em> User properties are of type {@code Map<String, String>}
and any key-value pair in the input map
- * that doesn't match this type will be silently ignored.
- *
- * @param userProperties The user properties, may be {@code null} or empty
if none.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setUserProperties(Map<?, ?>
userProperties) {
- verifyStateForMutation();
- this.userProperties = copySafe(userProperties, String.class);
- userPropertiesView = Collections.unmodifiableMap(this.userProperties);
- return this;
- }
-
- /**
- * Sets the specified user property.
- *
- * @param key The property key, must not be {@code null}.
- * @param value The property value, may be {@code null} to remove/unset
the property.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setUserProperty(String key, String
value) {
- verifyStateForMutation();
- if (value != null) {
- userProperties.put(key, value);
- } else {
- userProperties.remove(key);
- }
- return this;
- }
-
- @Override
- public Map<String, Object> getConfigProperties() {
- return configPropertiesView;
- }
-
- /**
- * Sets the configuration properties used to tweak internal aspects of the
repository system (e.g. thread pooling,
- * connector-specific behavior, etc.).
- * <p>
- * <em>Note:</em> Configuration properties are of type {@code Map<String,
Object>} and any key-value pair in the
- * input map that doesn't match this type will be silently ignored.
- *
- * @param configProperties The configuration properties, may be {@code
null} or empty if none.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setConfigProperties(Map<?, ?>
configProperties) {
- verifyStateForMutation();
- this.configProperties = copySafe(configProperties, Object.class);
- configPropertiesView =
Collections.unmodifiableMap(this.configProperties);
- return this;
- }
-
- /**
- * Sets the specified configuration property.
- *
- * @param key The property key, must not be {@code null}.
- * @param value The property value, may be {@code null} to remove/unset
the property.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setConfigProperty(String key, Object
value) {
- verifyStateForMutation();
- if (value != null) {
- configProperties.put(key, value);
- } else {
- configProperties.remove(key);
- }
- return this;
- }
-
- @Override
- public MirrorSelector getMirrorSelector() {
- return mirrorSelector;
- }
-
- /**
- * Sets the mirror selector to use for repositories discovered in artifact
descriptors. Note that this selector is
- * not used for remote repositories which are passed as request parameters
to the repository system, those
- * repositories are supposed to denote the effective repositories.
- *
- * @param mirrorSelector The mirror selector to use, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setMirrorSelector(MirrorSelector
mirrorSelector) {
- verifyStateForMutation();
- this.mirrorSelector = mirrorSelector;
- if (this.mirrorSelector == null) {
- this.mirrorSelector = NullMirrorSelector.INSTANCE;
- }
- return this;
- }
-
- @Override
- public ProxySelector getProxySelector() {
- return proxySelector;
- }
-
- /**
- * Sets the proxy selector to use for repositories discovered in artifact
descriptors. Note that this selector is
- * not used for remote repositories which are passed as request parameters
to the repository system, those
- * repositories are supposed to have their proxy (if any) already set.
- *
- * @param proxySelector The proxy selector to use, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- * @see RemoteRepository#getProxy()
- */
- public TestRepositorySystemSession setProxySelector(ProxySelector
proxySelector) {
- verifyStateForMutation();
- this.proxySelector = proxySelector;
- if (this.proxySelector == null) {
- this.proxySelector = NullProxySelector.INSTANCE;
- }
- return this;
- }
-
- @Override
- public AuthenticationSelector getAuthenticationSelector() {
- return authenticationSelector;
- }
-
- /**
- * Sets the authentication selector to use for repositories discovered in
artifact descriptors. Note that this
- * selector is not used for remote repositories which are passed as
request parameters to the repository system,
- * those repositories are supposed to have their authentication (if any)
already set.
- *
- * @param authenticationSelector The authentication selector to use, may
be {@code null}.
- * @return This session for chaining, never {@code null}.
- * @see RemoteRepository#getAuthentication()
- */
- public TestRepositorySystemSession
setAuthenticationSelector(AuthenticationSelector authenticationSelector) {
- verifyStateForMutation();
- this.authenticationSelector = authenticationSelector;
- if (this.authenticationSelector == null) {
- this.authenticationSelector = NullAuthenticationSelector.INSTANCE;
- }
- return this;
- }
-
- @Override
- public ArtifactTypeRegistry getArtifactTypeRegistry() {
- return artifactTypeRegistry;
- }
-
- /**
- * Sets the registry of artifact types recognized by this session.
- *
- * @param artifactTypeRegistry The artifact type registry, may be {@code
null}.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession
setArtifactTypeRegistry(ArtifactTypeRegistry artifactTypeRegistry) {
- verifyStateForMutation();
- this.artifactTypeRegistry = artifactTypeRegistry;
- if (this.artifactTypeRegistry == null) {
- this.artifactTypeRegistry = NullArtifactTypeRegistry.INSTANCE;
- }
- return this;
- }
-
- @Override
- public DependencyTraverser getDependencyTraverser() {
- return dependencyTraverser;
- }
-
- /**
- * Sets the dependency traverser to use for building dependency graphs.
- *
- * @param dependencyTraverser The dependency traverser to use for building
dependency graphs, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession
setDependencyTraverser(DependencyTraverser dependencyTraverser) {
- verifyStateForMutation();
- this.dependencyTraverser = dependencyTraverser;
- return this;
- }
-
- @Override
- public DependencyManager getDependencyManager() {
- return dependencyManager;
- }
-
- /**
- * Sets the dependency manager to use for building dependency graphs.
- *
- * @param dependencyManager The dependency manager to use for building
dependency graphs, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setDependencyManager(DependencyManager
dependencyManager) {
- verifyStateForMutation();
- this.dependencyManager = dependencyManager;
- return this;
- }
-
- @Override
- public DependencySelector getDependencySelector() {
- return dependencySelector;
- }
-
- /**
- * Sets the dependency selector to use for building dependency graphs.
- *
- * @param dependencySelector The dependency selector to use for building
dependency graphs, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession
setDependencySelector(DependencySelector dependencySelector) {
- verifyStateForMutation();
- this.dependencySelector = dependencySelector;
- return this;
- }
-
- @Override
- public VersionFilter getVersionFilter() {
- return versionFilter;
- }
-
- /**
- * Sets the version filter to use for building dependency graphs.
- *
- * @param versionFilter The version filter to use for building dependency
graphs, may be {@code null} to not filter
- * versions.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setVersionFilter(VersionFilter
versionFilter) {
- verifyStateForMutation();
- this.versionFilter = versionFilter;
- return this;
- }
-
- @Override
- public DependencyGraphTransformer getDependencyGraphTransformer() {
- return dependencyGraphTransformer;
- }
-
- /**
- * Sets the dependency graph transformer to use for building dependency
graphs.
- *
- * @param dependencyGraphTransformer The dependency graph transformer to
use for building dependency graphs, may be
- * {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setDependencyGraphTransformer(
- DependencyGraphTransformer dependencyGraphTransformer) {
- verifyStateForMutation();
- this.dependencyGraphTransformer = dependencyGraphTransformer;
- return this;
- }
-
- @Override
- public SessionData getData() {
- return data;
- }
-
- /**
- * Sets the custom data associated with this session.
- *
- * @param data The session data, may be {@code null}.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setData(SessionData data) {
- verifyStateForMutation();
- this.data = data;
- if (this.data == null) {
- this.data = new DefaultSessionData();
- }
- return this;
- }
-
- @Override
- public RepositoryCache getCache() {
- return cache;
- }
-
- /**
- * Sets the cache the repository system may use to save data for future
reuse during the session.
- *
- * @param cache The repository cache, may be {@code null} if none.
- * @return This session for chaining, never {@code null}.
- */
- public TestRepositorySystemSession setCache(RepositoryCache cache) {
- verifyStateForMutation();
- this.cache = cache;
- return this;
- }
-
- /**
- * Registers onSessionEnded handler, if able to.
- *
- * @param handler The handler to register
- * @return Return {@code true} if registration was possible, otherwise
{@code false}.
- */
- @Override
- public boolean addOnSessionEndedHandler(Runnable handler) {
- return onSessionEndedRegistrar.apply(handler);
- }
-
- /**
- * Marks this session as read-only such that any future attempts to call
its mutators will fail with an exception.
- * Marking an already read-only session as read-only has no effect. The
session's data and cache remain writable
- * though.
- */
- public void setReadOnly() {
- readOnly = true;
- }
-
- /**
- * Verifies this instance state for mutation operations: mutated instance
must not be read-only or closed.
- */
- private void verifyStateForMutation() {
- if (readOnly) {
- throw new IllegalStateException("repository system session is
read-only");
- }
- }
-
- static class NullProxySelector implements ProxySelector {
-
- public static final ProxySelector INSTANCE = new NullProxySelector();
-
- public Proxy getProxy(RemoteRepository repository) {
- requireNonNull(repository, "repository cannot be null");
- return repository.getProxy();
- }
- }
-
- static class NullMirrorSelector implements MirrorSelector {
-
- public static final MirrorSelector INSTANCE = new NullMirrorSelector();
-
- public RemoteRepository getMirror(RemoteRepository repository) {
- requireNonNull(repository, "repository cannot be null");
- return null;
- }
- }
-
- static class NullAuthenticationSelector implements AuthenticationSelector {
-
- public static final AuthenticationSelector INSTANCE = new
NullAuthenticationSelector();
-
- public Authentication getAuthentication(RemoteRepository repository) {
- requireNonNull(repository, "repository cannot be null");
- return repository.getAuthentication();
- }
- }
-
- static final class NullArtifactTypeRegistry implements
ArtifactTypeRegistry {
-
- public static final ArtifactTypeRegistry INSTANCE = new
NullArtifactTypeRegistry();
-
- public ArtifactType get(String typeId) {
- return null;
- }
- }
-}
diff --git
a/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestUtils.java
b/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestUtils.java
index 41c9b373..7cd6b9b0 100644
---
a/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestUtils.java
+++
b/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestUtils.java
@@ -43,7 +43,7 @@ public class TestUtils {
* {@link TestLocalRepositoryManager}.
*/
public static DefaultRepositorySystemSession newSession() {
- DefaultRepositorySystemSession session = new
DefaultRepositorySystemSession();
+ DefaultRepositorySystemSession session = new
DefaultRepositorySystemSession(h -> false);
session.setLocalRepositoryManager(new TestLocalRepositoryManager());
return session;
}