Polished/extended API docs
Project: http://git-wip-us.apache.org/repos/asf/maven-resolver/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-resolver/commit/65b3b0d5 Tree: http://git-wip-us.apache.org/repos/asf/maven-resolver/tree/65b3b0d5 Diff: http://git-wip-us.apache.org/repos/asf/maven-resolver/diff/65b3b0d5 Branch: refs/heads/master Commit: 65b3b0d520617cfac99381c93620c4b236a8c93a Parents: 8f0a04d Author: Benjamin Bentmann <bentm...@sonatype.com> Authored: Tue Nov 11 15:15:08 2014 +0100 Committer: Benjamin Bentmann <bentm...@sonatype.com> Committed: Tue Nov 11 15:15:08 2014 +0100 ---------------------------------------------------------------------- .../aether/DefaultRepositorySystemSession.java | 30 +++++++++++++------- .../org/eclipse/aether/RepositoryCache.java | 17 ++++++----- .../java/org/eclipse/aether/SessionData.java | 16 ++++++----- .../collection/DependencyGraphTransformer.java | 11 +++++-- .../aether/collection/DependencyManager.java | 11 ++++--- .../aether/collection/DependencySelector.java | 11 ++++--- .../aether/collection/DependencyTraverser.java | 11 ++++--- .../aether/collection/VersionFilter.java | 13 +++++---- .../aether/version/VersionConstraint.java | 8 +++--- .../spi/connector/layout/RepositoryLayout.java | 7 +++-- .../graph/transformer/ConflictResolver.java | 26 +++++++++++------ 11 files changed, 100 insertions(+), 61 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65b3b0d5/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java b/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java index 194a661..363ede6 100644 --- a/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java +++ b/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2013 Sonatype, Inc. + * Copyright (c) 2010, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -36,10 +36,12 @@ import org.eclipse.aether.resolution.ResolutionErrorPolicy; import org.eclipse.aether.transfer.TransferListener; /** - * A simple repository system session. <em>Note:</em> This class is not thread-safe. It is assumed that the mutators get - * only called during an initialization phase and that the session itself is not changed when being used by the - * repository system. It is recommended to call {@link #setReadOnly()} once the session has been fully initialized to - * prevent accidental manipulation of it afterwards. + * A simple repository system session. + * <p> + * <strong>Note:</strong> This class is not thread-safe. It is assumed that the mutators get only called during an + * initialization phase and that the session itself is not changed once initialized and being used by the repository + * system. It is recommended to call {@link #setReadOnly()} once the session has been fully initialized to prevent + * accidental manipulation of it afterwards. */ public final class DefaultRepositorySystemSession implements RepositorySystemSession @@ -123,7 +125,9 @@ public final class DefaultRepositorySystemSession /** * Creates a shallow copy of the specified session. Actually, the copy is not completely shallow, all maps holding - * properties are copied as well. In other words, mutating the new session has no effect on the original session. + * system/user/config properties are copied as well. In other words, invoking any mutator on the new session itself + * has no effect on the original session. Other mutable objects like the session data and cache (if any) are not + * copied and will be shared with the original session unless reconfigured. * * @param session The session to copy, must not be {@code null}. */ @@ -395,6 +399,7 @@ public final class DefaultRepositorySystemSession /** * 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. * @@ -438,8 +443,10 @@ public final class DefaultRepositorySystemSession /** * 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. <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. + * 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}. @@ -480,9 +487,10 @@ public final class DefaultRepositorySystemSession /** * Sets the configuration properties used to tweak internal aspects of the repository system (e.g. thread pooling, - * connector-specific behavior, etc.) <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. + * 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}. http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65b3b0d5/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java b/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java index 95dbdfe..7363844 100644 --- a/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java +++ b/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2012 Sonatype, Inc. + * Copyright (c) 2010, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -23,9 +23,10 @@ public interface RepositoryCache /** * Puts the specified data into the cache. It is entirely up to the cache implementation how long this data will be * kept before being purged, i.e. callers must not make any assumptions about the lifetime of cached data. - * <strong>Warning:</strong> The cache will directly save the provided reference. If the cached data is mutable, - * i.e. could be modified after being put into the cache, the caller is responsible for creating a copy of the - * original data and store the copy in the cache. + * <p> + * <em>Warning:</em> The cache will directly save the provided reference. If the cached data is mutable, i.e. could + * be modified after being put into the cache, the caller is responsible for creating a copy of the original data + * and store the copy in the cache. * * @param session The repository session during which the cache is accessed, must not be {@code null}. * @param key The key to use for lookup of the data, must not be {@code null}. @@ -34,9 +35,11 @@ public interface RepositoryCache void put( RepositorySystemSession session, Object key, Object data ); /** - * Gets the specified data from the cache. <strong>Warning:</strong> The cache will directly return the saved - * reference. If the cached data is to be modified after its retrieval, the caller is responsible to create a copy - * of the returned data and use this instead of the cache record. + * Gets the specified data from the cache. + * <p> + * <em>Warning:</em> The cache will directly return the saved reference. If the cached data is to be modified after + * its retrieval, the caller is responsible to create a copy of the returned data and use this instead of the cache + * record. * * @param session The repository session during which the cache is accessed, must not be {@code null}. * @param key The key to use for lookup of the data, must not be {@code null}. http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65b3b0d5/aether-api/src/main/java/org/eclipse/aether/SessionData.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/SessionData.java b/aether-api/src/main/java/org/eclipse/aether/SessionData.java index a594d41..92930e7 100644 --- a/aether-api/src/main/java/org/eclipse/aether/SessionData.java +++ b/aether-api/src/main/java/org/eclipse/aether/SessionData.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2012 Sonatype, Inc. + * Copyright (c) 2010, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,10 +12,12 @@ package org.eclipse.aether; /** * A container for data that is specific to a repository system session. Both components within the repository system - * and clients of the system may use this storage to associate arbitrary data with a session. Unlike a cache, this - * session data is not subject to purging. For this same reason, session data should also not be abused as a cache (i.e. - * for storing values that can be re-calculated) to avoid memory exhaustion. <strong>Note:</strong> Actual - * implementations must be thread-safe. + * and clients of the system may use this storage to associate arbitrary data with a session. + * <p> + * Unlike a cache, this session data is not subject to purging. For this same reason, session data should also not be + * abused as a cache (i.e. for storing values that can be re-calculated) to avoid memory exhaustion. + * <p> + * <strong>Note:</strong> Actual implementations must be thread-safe. * * @see RepositorySystemSession#getData() * @noimplement This interface is not intended to be implemented by clients. @@ -39,8 +41,8 @@ public interface SessionData * @param key The key under which to store the session data, must not be {@code null}. * @param oldValue The expected data currently associated with the key, may be {@code null}. * @param newValue The data to associate with the key, may be {@code null} to remove the mapping. - * @return {@code true} if the key mapping was updated to the specified value, {@code false} if the current key - * mapping didn't match the expected value and was not updated. + * @return {@code true} if the key mapping was successfully updated from the old value to the new value, + * {@code false} if the current key mapping didn't match the expected value and was not updated. */ boolean set( Object key, Object oldValue, Object newValue ); http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65b3b0d5/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java index 22f9498..b3deebe 100644 --- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java +++ b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyGraphTransformer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2012 Sonatype, Inc. + * Copyright (c) 2010, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -14,8 +14,13 @@ import org.eclipse.aether.RepositoryException; import org.eclipse.aether.graph.DependencyNode; /** - * Transforms a given dependency graph. <em>Note:</em> Dependency graphs may contain cycles, as such a graph transformer - * needs to gracefully handle cyclic graphs, e.g. guard against infinite recursion. Implementations must be stateless. + * Transforms a given dependency graph. + * <p> + * <strong>Note:</strong> Implementations must be stateless. + * <p> + * <em>Warning:</em> Dependency graphs may generally contain cycles. As such a graph transformer that cannot assume for + * sure that cycles have already been eliminated must gracefully handle cyclic graphs, e.g. guard against infinite + * recursion. * * @see org.eclipse.aether.RepositorySystemSession#getDependencyGraphTransformer() */ http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65b3b0d5/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java index 3ee6b0e..e214f66 100644 --- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java +++ b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyManager.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2013 Sonatype, Inc. + * Copyright (c) 2010, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,9 +13,12 @@ package org.eclipse.aether.collection; import org.eclipse.aether.graph.Dependency; /** - * Applies dependency management to the dependencies of a dependency node. Implementations must be stateless. - * <em>Note:</em> This hook is called from a hot spot and therefore implementations should pay attention to performance. - * Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method. + * Applies dependency management to the dependencies of a dependency node. + * <p> + * <strong>Note:</strong> Implementations must be stateless. + * <p> + * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to + * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method. * * @see org.eclipse.aether.RepositorySystemSession#getDependencyManager() * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession, http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65b3b0d5/aether-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java index a555c2f..de503be 100644 --- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java +++ b/aether-api/src/main/java/org/eclipse/aether/collection/DependencySelector.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2013 Sonatype, Inc. + * Copyright (c) 2010, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,9 +13,12 @@ package org.eclipse.aether.collection; import org.eclipse.aether.graph.Dependency; /** - * Decides what dependencies to include in the dependency graph. Implementations must be stateless. <em>Note:</em> This - * hook is called from a hot spot and therefore implementations should pay attention to performance. Among others, - * implementations should provide a semantic {@link Object#equals(Object) equals()} method. + * Decides what dependencies to include in the dependency graph. + * <p> + * <strong>Note:</strong> Implementations must be stateless. + * <p> + * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to + * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method. * * @see org.eclipse.aether.RepositorySystemSession#getDependencySelector() * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession, http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65b3b0d5/aether-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java index b237213..8140395 100644 --- a/aether-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java +++ b/aether-api/src/main/java/org/eclipse/aether/collection/DependencyTraverser.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2013 Sonatype, Inc. + * Copyright (c) 2010, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,9 +13,12 @@ package org.eclipse.aether.collection; import org.eclipse.aether.graph.Dependency; /** - * Decides whether the dependencies of a dependency node should be traversed as well. Implementations must be stateless. - * <em>Note:</em> This hook is called from a hot spot and therefore implementations should pay attention to performance. - * Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method. + * Decides whether the dependencies of a dependency node should be traversed as well. + * <p> + * <strong>Note:</strong> Implementations must be stateless. + * <p> + * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to + * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method. * * @see org.eclipse.aether.RepositorySystemSession#getDependencyTraverser() * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession, http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65b3b0d5/aether-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java b/aether-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java index 7d8b7c8..02e7ab3 100644 --- a/aether-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java +++ b/aether-api/src/main/java/org/eclipse/aether/collection/VersionFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2013 Sonatype, Inc. + * Copyright (c) 2013, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -22,10 +22,13 @@ import org.eclipse.aether.version.Version; import org.eclipse.aether.version.VersionConstraint; /** - * Decides which versions matching a version range should actually be considered for the dependency graph. - * Implementations must be stateless. <em>Note:</em> This hook is called from a hot spot and therefore implementations - * should pay attention to performance. Among others, implementations should provide a semantic - * {@link Object#equals(Object) equals()} method. + * Decides which versions matching a version range should actually be considered for the dependency graph. The version + * filter is not invoked for dependencies that do not declare a version range but a single version. + * <p> + * <strong>Note:</strong> Implementations must be stateless. + * <p> + * <em>Warning:</em> This hook is called from a hot spot and therefore implementations should pay attention to + * performance. Among others, implementations should provide a semantic {@link Object#equals(Object) equals()} method. * * @see org.eclipse.aether.RepositorySystemSession#getVersionFilter() * @see org.eclipse.aether.RepositorySystem#collectDependencies(org.eclipse.aether.RepositorySystemSession, http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65b3b0d5/aether-api/src/main/java/org/eclipse/aether/version/VersionConstraint.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/version/VersionConstraint.java b/aether-api/src/main/java/org/eclipse/aether/version/VersionConstraint.java index d4f6b52..dcb3b68 100644 --- a/aether-api/src/main/java/org/eclipse/aether/version/VersionConstraint.java +++ b/aether-api/src/main/java/org/eclipse/aether/version/VersionConstraint.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2011 Sonatype, Inc. + * Copyright (c) 2010, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -11,9 +11,9 @@ package org.eclipse.aether.version; /** - * A constraint on versions for a dependency. A constraint can either consist of a version range or a single version. In - * the first case, the constraint expresses a hard requirement on a version matching the range. In the second case, the - * constraint expresses a soft requirement on a specific version (i.e. a recommendation). + * A constraint on versions for a dependency. A constraint can either consist of a version range (e.g. "[1, ]") or a + * single version (e.g. "1.1"). In the first case, the constraint expresses a hard requirement on a version matching the + * range. In the second case, the constraint expresses a soft requirement on a specific version (i.e. a recommendation). */ public interface VersionConstraint { http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65b3b0d5/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayout.java ---------------------------------------------------------------------- diff --git a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayout.java b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayout.java index 1594e10..f200714 100644 --- a/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayout.java +++ b/aether-spi/src/main/java/org/eclipse/aether/spi/connector/layout/RepositoryLayout.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2013 Sonatype, Inc. + * Copyright (c) 2013, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -18,8 +18,9 @@ import org.eclipse.aether.artifact.Artifact; import org.eclipse.aether.metadata.Metadata; /** - * The layout for a remote repository whose artifacts/metadata can be addressed via URIs. Implementations must be - * stateless. + * The layout for a remote repository whose artifacts/metadata can be addressed via URIs. + * <p> + * <strong>Note:</strong> Implementations must be stateless. */ public interface RepositoryLayout { http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65b3b0d5/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictResolver.java ---------------------------------------------------------------------- diff --git a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictResolver.java b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictResolver.java index 7ce9685..2caebb5 100644 --- a/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictResolver.java +++ b/aether-util/src/main/java/org/eclipse/aether/util/graph/transformer/ConflictResolver.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012, 2013 Sonatype, Inc. + * Copyright (c) 2012, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -1144,7 +1144,9 @@ public final class ConflictResolver * An extension point of {@link ConflictResolver} that determines the winner among conflicting dependencies. The * winning node (and its children) will be retained in the dependency graph, the other nodes will get removed. The * version selector does not need to deal with potential scope conflicts, these will be addressed afterwards by the - * {@link ScopeSelector}. Implementations must be stateless. + * {@link ScopeSelector}. + * <p> + * <strong>Note:</strong> Implementations must be stateless. */ public static abstract class VersionSelector { @@ -1154,7 +1156,7 @@ public final class ConflictResolver * this method once per * {@link ConflictResolver#transformGraph(DependencyNode, DependencyGraphTransformationContext)} invocation to * allow implementations to prepare any auxiliary data that is needed for their operation. Given that - * implementations need to be stateless, a new instance needs to be returned to hold such auxiliary data. The + * implementations must be stateless, a new instance needs to be returned to hold such auxiliary data. The * default implementation simply returns the current instance which is appropriate for implementations which do * not require auxiliary data. * @@ -1186,7 +1188,9 @@ public final class ConflictResolver /** * An extension point of {@link ConflictResolver} that determines the effective scope of a dependency from a * potentially conflicting set of {@link ScopeDeriver derived scopes}. The scope selector gets invoked after the - * {@link VersionSelector} has picked the winning node. Implementations must be stateless. + * {@link VersionSelector} has picked the winning node. + * <p> + * <strong>Note:</strong> Implementations must be stateless. */ public static abstract class ScopeSelector { @@ -1196,7 +1200,7 @@ public final class ConflictResolver * this method once per * {@link ConflictResolver#transformGraph(DependencyNode, DependencyGraphTransformationContext)} invocation to * allow implementations to prepare any auxiliary data that is needed for their operation. Given that - * implementations need to be stateless, a new instance needs to be returned to hold such auxiliary data. The + * implementations must be stateless, a new instance needs to be returned to hold such auxiliary data. The * default implementation simply returns the current instance which is appropriate for implementations which do * not require auxiliary data. * @@ -1227,7 +1231,9 @@ public final class ConflictResolver /** * An extension point of {@link ConflictResolver} that determines the scope of a dependency in relation to the scope - * of its parent. Implementations must be stateless. + * of its parent. + * <p> + * <strong>Note:</strong> Implementations must be stateless. */ public static abstract class ScopeDeriver { @@ -1237,7 +1243,7 @@ public final class ConflictResolver * this method once per * {@link ConflictResolver#transformGraph(DependencyNode, DependencyGraphTransformationContext)} invocation to * allow implementations to prepare any auxiliary data that is needed for their operation. Given that - * implementations need to be stateless, a new instance needs to be returned to hold such auxiliary data. The + * implementations must be stateless, a new instance needs to be returned to hold such auxiliary data. The * default implementation simply returns the current instance which is appropriate for implementations which do * not require auxiliary data. * @@ -1268,7 +1274,9 @@ public final class ConflictResolver /** * An extension point of {@link ConflictResolver} that determines the effective optional flag of a dependency from a * potentially conflicting set of derived optionalities. The optionality selector gets invoked after the - * {@link VersionSelector} has picked the winning node. Implementations must be stateless. + * {@link VersionSelector} has picked the winning node. + * <p> + * <strong>Note:</strong> Implementations must be stateless. */ public static abstract class OptionalitySelector { @@ -1278,7 +1286,7 @@ public final class ConflictResolver * calls this method once per * {@link ConflictResolver#transformGraph(DependencyNode, DependencyGraphTransformationContext)} invocation to * allow implementations to prepare any auxiliary data that is needed for their operation. Given that - * implementations need to be stateless, a new instance needs to be returned to hold such auxiliary data. The + * implementations must be stateless, a new instance needs to be returned to hold such auxiliary data. The * default implementation simply returns the current instance which is appropriate for implementations which do * not require auxiliary data. *