This is an automated email from the ASF dual-hosted git repository.

garydgregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-collections.git


The following commit(s) were added to refs/heads/master by this push:
     new 39cfde6cf [COLLECTIONS-895] Deprecate the Bag family in favor of the 
MultiSet family (#709)
39cfde6cf is described below

commit 39cfde6cf1d4ca5be37261253c1552d7e604ac9e
Author: Paul King <[email protected]>
AuthorDate: Fri Jul 10 23:47:57 2026 +1000

    [COLLECTIONS-895] Deprecate the Bag family in favor of the MultiSet family 
(#709)
---
 src/main/java/org/apache/commons/collections4/Bag.java               | 2 ++
 src/main/java/org/apache/commons/collections4/BagUtils.java          | 2 ++
 src/main/java/org/apache/commons/collections4/IterableUtils.java     | 1 +
 src/main/java/org/apache/commons/collections4/MultiMapUtils.java     | 2 ++
 src/main/java/org/apache/commons/collections4/SortedBag.java         | 2 ++
 .../org/apache/commons/collections4/bag/AbstractBagDecorator.java    | 2 ++
 .../java/org/apache/commons/collections4/bag/AbstractMapBag.java     | 2 ++
 .../apache/commons/collections4/bag/AbstractSortedBagDecorator.java  | 2 ++
 src/main/java/org/apache/commons/collections4/bag/CollectionBag.java | 2 ++
 .../org/apache/commons/collections4/bag/CollectionSortedBag.java     | 2 ++
 src/main/java/org/apache/commons/collections4/bag/HashBag.java       | 2 ++
 src/main/java/org/apache/commons/collections4/bag/PredicatedBag.java | 2 ++
 .../org/apache/commons/collections4/bag/PredicatedSortedBag.java     | 2 ++
 .../java/org/apache/commons/collections4/bag/SynchronizedBag.java    | 2 ++
 .../org/apache/commons/collections4/bag/SynchronizedSortedBag.java   | 2 ++
 .../java/org/apache/commons/collections4/bag/TransformedBag.java     | 2 ++
 .../org/apache/commons/collections4/bag/TransformedSortedBag.java    | 2 ++
 src/main/java/org/apache/commons/collections4/bag/TreeBag.java       | 2 ++
 .../java/org/apache/commons/collections4/bag/UnmodifiableBag.java    | 2 ++
 .../org/apache/commons/collections4/bag/UnmodifiableSortedBag.java   | 2 ++
 src/main/java/org/apache/commons/collections4/bag/package-info.java  | 5 +++++
 .../apache/commons/collections4/collection/PredicatedCollection.java | 4 ++++
 22 files changed, 48 insertions(+)

diff --git a/src/main/java/org/apache/commons/collections4/Bag.java 
b/src/main/java/org/apache/commons/collections4/Bag.java
index ca95c993f..de8dde949 100644
--- a/src/main/java/org/apache/commons/collections4/Bag.java
+++ b/src/main/java/org/apache/commons/collections4/Bag.java
@@ -69,7 +69,9 @@ import java.util.Set;
  * @param <E> The type of elements in this bag
  * @see MultiSet
  * @since 2.0
+ * @deprecated Since 4.6.0, use {@link MultiSet} instead; see the migration 
notes above.
  */
+@Deprecated
 public interface Bag<E> extends Collection<E> {
 
     /**
diff --git a/src/main/java/org/apache/commons/collections4/BagUtils.java 
b/src/main/java/org/apache/commons/collections4/BagUtils.java
index 2d1233e03..12ff8b29d 100644
--- a/src/main/java/org/apache/commons/collections4/BagUtils.java
+++ b/src/main/java/org/apache/commons/collections4/BagUtils.java
@@ -32,7 +32,9 @@ import 
org.apache.commons.collections4.bag.UnmodifiableSortedBag;
  * Provides utility methods and decorators for {@link Bag} and {@link 
SortedBag} instances.
  *
  * @since 2.1
+ * @deprecated Since 4.6.0, use {@link MultiSetUtils} instead.
  */
+@Deprecated
 public class BagUtils {
 
     /**
diff --git a/src/main/java/org/apache/commons/collections4/IterableUtils.java 
b/src/main/java/org/apache/commons/collections4/IterableUtils.java
index b7eed16d4..5bd916ff4 100644
--- a/src/main/java/org/apache/commons/collections4/IterableUtils.java
+++ b/src/main/java/org/apache/commons/collections4/IterableUtils.java
@@ -536,6 +536,7 @@ public class IterableUtils {
      * @param obj  the object to find the cardinality of
      * @return the number of occurrences of obj in iterable
      */
+    @SuppressWarnings("deprecation") // Bag is supported until removed
     public static <E, T extends E> int frequency(final Iterable<E> iterable, 
final T obj) {
         if (iterable instanceof Set<?>) {
             return ((Set<E>) iterable).contains(obj) ? 1 : 0;
diff --git a/src/main/java/org/apache/commons/collections4/MultiMapUtils.java 
b/src/main/java/org/apache/commons/collections4/MultiMapUtils.java
index a1021dbe2..3cc74cb8b 100644
--- a/src/main/java/org/apache/commons/collections4/MultiMapUtils.java
+++ b/src/main/java/org/apache/commons/collections4/MultiMapUtils.java
@@ -97,7 +97,9 @@ public class MultiMapUtils {
      * @param map the {@link MultiValuedMap} to use.
      * @param key the key to look up.
      * @return a new Bag containing the values from the {@link 
MultiValuedMap}, or null if input map is null.
+     * @deprecated Since 4.6.0, use {@link 
#getValuesAsMultiSet(MultiValuedMap, Object)} instead.
      */
+    @Deprecated
     public static <K, V> Bag<V> getValuesAsBag(final MultiValuedMap<K, V> map, 
final K key) {
         return map != null ? new HashBag<>(map.get(key)) : null;
     }
diff --git a/src/main/java/org/apache/commons/collections4/SortedBag.java 
b/src/main/java/org/apache/commons/collections4/SortedBag.java
index 99238a156..47151ff38 100644
--- a/src/main/java/org/apache/commons/collections4/SortedBag.java
+++ b/src/main/java/org/apache/commons/collections4/SortedBag.java
@@ -31,7 +31,9 @@ import java.util.Comparator;
  * @param <E> The type of elements in this bag
  * @see SortedMultiSet
  * @since 2.0
+ * @deprecated Since 4.6.0, use {@link SortedMultiSet} instead; see the {@link 
Bag} Javadoc for migration notes.
  */
+@Deprecated
 public interface SortedBag<E> extends Bag<E> {
 
     /**
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/AbstractBagDecorator.java 
b/src/main/java/org/apache/commons/collections4/bag/AbstractBagDecorator.java
index dd59e6ff8..8e3fe1213 100644
--- 
a/src/main/java/org/apache/commons/collections4/bag/AbstractBagDecorator.java
+++ 
b/src/main/java/org/apache/commons/collections4/bag/AbstractBagDecorator.java
@@ -29,7 +29,9 @@ import 
org.apache.commons.collections4.collection.AbstractCollectionDecorator;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.AbstractMultiSetDecorator} instead.
  */
+@Deprecated
 public abstract class AbstractBagDecorator<E>
         extends AbstractCollectionDecorator<E> implements Bag<E> {
 
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/AbstractMapBag.java 
b/src/main/java/org/apache/commons/collections4/bag/AbstractMapBag.java
index 6a424b6c5..aa9c5f65c 100644
--- a/src/main/java/org/apache/commons/collections4/bag/AbstractMapBag.java
+++ b/src/main/java/org/apache/commons/collections4/bag/AbstractMapBag.java
@@ -44,7 +44,9 @@ import org.apache.commons.collections4.set.UnmodifiableSet;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0 (previously DefaultMapBag v2.0)
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.AbstractMapMultiSet} instead.
  */
+@Deprecated
 public abstract class AbstractMapBag<E> implements Bag<E> {
 
     /**
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/AbstractSortedBagDecorator.java
 
b/src/main/java/org/apache/commons/collections4/bag/AbstractSortedBagDecorator.java
index 7fea16baf..f76933cfe 100644
--- 
a/src/main/java/org/apache/commons/collections4/bag/AbstractSortedBagDecorator.java
+++ 
b/src/main/java/org/apache/commons/collections4/bag/AbstractSortedBagDecorator.java
@@ -28,7 +28,9 @@ import org.apache.commons.collections4.SortedBag;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.AbstractSortedMultiSetDecorator} 
instead.
  */
+@Deprecated
 public abstract class AbstractSortedBagDecorator<E>
         extends AbstractBagDecorator<E> implements SortedBag<E> {
 
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/CollectionBag.java 
b/src/main/java/org/apache/commons/collections4/bag/CollectionBag.java
index 99c3e1a9a..6c7d757ce 100644
--- a/src/main/java/org/apache/commons/collections4/bag/CollectionBag.java
+++ b/src/main/java/org/apache/commons/collections4/bag/CollectionBag.java
@@ -38,7 +38,9 @@ import org.apache.commons.collections4.Bag;
  * @see Bag
  * @param <E> The type of elements in this bag
  * @since 4.0
+ * @deprecated Since 4.6.0, no longer needed; a {@link 
org.apache.commons.collections4.MultiSet} already complies with the {@link 
Collection} contract.
  */
+@Deprecated
 public final class CollectionBag<E> extends AbstractBagDecorator<E> {
 
     /** Serialization version */
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/CollectionSortedBag.java 
b/src/main/java/org/apache/commons/collections4/bag/CollectionSortedBag.java
index 40c39fb7e..4b23c4849 100644
--- a/src/main/java/org/apache/commons/collections4/bag/CollectionSortedBag.java
+++ b/src/main/java/org/apache/commons/collections4/bag/CollectionSortedBag.java
@@ -29,7 +29,9 @@ import org.apache.commons.collections4.SortedBag;
  *
  * @param <E> The type of elements in this bag
  * @since 4.0
+ * @deprecated Since 4.6.0, no longer needed; a {@link 
org.apache.commons.collections4.SortedMultiSet} already complies with the 
{@link java.util.Collection} contract.
  */
+@Deprecated
 public final class CollectionSortedBag<E> extends 
AbstractSortedBagDecorator<E> {
 
     /** Serialization version */
diff --git a/src/main/java/org/apache/commons/collections4/bag/HashBag.java 
b/src/main/java/org/apache/commons/collections4/bag/HashBag.java
index d968c3613..6efc306a6 100644
--- a/src/main/java/org/apache/commons/collections4/bag/HashBag.java
+++ b/src/main/java/org/apache/commons/collections4/bag/HashBag.java
@@ -46,7 +46,9 @@ import java.util.HashMap;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0 (previously in main package v2.0)
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.HashMultiSet} instead.
  */
+@Deprecated
 public class HashBag<E> extends AbstractMapBag<E> implements Serializable {
 
     /** Serial version lock */
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/PredicatedBag.java 
b/src/main/java/org/apache/commons/collections4/bag/PredicatedBag.java
index 5d1ae2eba..241303552 100644
--- a/src/main/java/org/apache/commons/collections4/bag/PredicatedBag.java
+++ b/src/main/java/org/apache/commons/collections4/bag/PredicatedBag.java
@@ -42,7 +42,9 @@ import 
org.apache.commons.collections4.collection.PredicatedCollection;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.PredicatedMultiSet} instead.
  */
+@Deprecated
 public class PredicatedBag<E> extends PredicatedCollection<E> implements 
Bag<E> {
 
     /** Serialization version */
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/PredicatedSortedBag.java 
b/src/main/java/org/apache/commons/collections4/bag/PredicatedSortedBag.java
index 46a5beff8..f6b824c7b 100644
--- a/src/main/java/org/apache/commons/collections4/bag/PredicatedSortedBag.java
+++ b/src/main/java/org/apache/commons/collections4/bag/PredicatedSortedBag.java
@@ -40,7 +40,9 @@ import org.apache.commons.collections4.SortedBag;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.PredicatedSortedMultiSet} instead.
  */
+@Deprecated
 public class PredicatedSortedBag<E> extends PredicatedBag<E> implements 
SortedBag<E> {
 
     /** Serialization version */
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/SynchronizedBag.java 
b/src/main/java/org/apache/commons/collections4/bag/SynchronizedBag.java
index 803c9ef56..56c6505f6 100644
--- a/src/main/java/org/apache/commons/collections4/bag/SynchronizedBag.java
+++ b/src/main/java/org/apache/commons/collections4/bag/SynchronizedBag.java
@@ -34,7 +34,9 @@ import 
org.apache.commons.collections4.collection.SynchronizedCollection;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.SynchronizedMultiSet} instead.
  */
+@Deprecated
 public class SynchronizedBag<E> extends SynchronizedCollection<E> implements 
Bag<E> {
 
     /**
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/SynchronizedSortedBag.java 
b/src/main/java/org/apache/commons/collections4/bag/SynchronizedSortedBag.java
index 4ad7353e5..f460159c9 100644
--- 
a/src/main/java/org/apache/commons/collections4/bag/SynchronizedSortedBag.java
+++ 
b/src/main/java/org/apache/commons/collections4/bag/SynchronizedSortedBag.java
@@ -34,7 +34,9 @@ import org.apache.commons.collections4.SortedBag;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.SynchronizedSortedMultiSet} instead.
  */
+@Deprecated
 public class SynchronizedSortedBag<E> extends SynchronizedBag<E> implements 
SortedBag<E> {
 
     /** Serialization version */
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/TransformedBag.java 
b/src/main/java/org/apache/commons/collections4/bag/TransformedBag.java
index 22773dbdb..f7d1253ba 100644
--- a/src/main/java/org/apache/commons/collections4/bag/TransformedBag.java
+++ b/src/main/java/org/apache/commons/collections4/bag/TransformedBag.java
@@ -37,7 +37,9 @@ import org.apache.commons.collections4.set.TransformedSet;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.TransformedMultiSet} instead.
  */
+@Deprecated
 public class TransformedBag<E> extends TransformedCollection<E> implements 
Bag<E> {
 
     /** Serialization version */
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/TransformedSortedBag.java 
b/src/main/java/org/apache/commons/collections4/bag/TransformedSortedBag.java
index b7c9ca60d..563b64be3 100644
--- 
a/src/main/java/org/apache/commons/collections4/bag/TransformedSortedBag.java
+++ 
b/src/main/java/org/apache/commons/collections4/bag/TransformedSortedBag.java
@@ -35,7 +35,9 @@ import org.apache.commons.collections4.Transformer;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.TransformedSortedMultiSet} instead.
  */
+@Deprecated
 public class TransformedSortedBag<E> extends TransformedBag<E> implements 
SortedBag<E> {
 
     /** Serialization version */
diff --git a/src/main/java/org/apache/commons/collections4/bag/TreeBag.java 
b/src/main/java/org/apache/commons/collections4/bag/TreeBag.java
index e1b60df63..f2ec44668 100644
--- a/src/main/java/org/apache/commons/collections4/bag/TreeBag.java
+++ b/src/main/java/org/apache/commons/collections4/bag/TreeBag.java
@@ -52,7 +52,9 @@ import org.apache.commons.collections4.SortedBag;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0 (previously in main package v2.0)
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.TreeMultiSet} instead.
  */
+@Deprecated
 public class TreeBag<E> extends AbstractMapBag<E> implements SortedBag<E>, 
Serializable {
 
     /** Serial version lock */
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/UnmodifiableBag.java 
b/src/main/java/org/apache/commons/collections4/bag/UnmodifiableBag.java
index db4831d55..8d619bf2c 100644
--- a/src/main/java/org/apache/commons/collections4/bag/UnmodifiableBag.java
+++ b/src/main/java/org/apache/commons/collections4/bag/UnmodifiableBag.java
@@ -40,7 +40,9 @@ import org.apache.commons.collections4.set.UnmodifiableSet;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.UnmodifiableMultiSet} instead.
  */
+@Deprecated
 public final class UnmodifiableBag<E>
         extends AbstractBagDecorator<E> implements Unmodifiable {
 
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/UnmodifiableSortedBag.java 
b/src/main/java/org/apache/commons/collections4/bag/UnmodifiableSortedBag.java
index 225d64aad..59e5037ff 100644
--- 
a/src/main/java/org/apache/commons/collections4/bag/UnmodifiableSortedBag.java
+++ 
b/src/main/java/org/apache/commons/collections4/bag/UnmodifiableSortedBag.java
@@ -40,7 +40,9 @@ import org.apache.commons.collections4.set.UnmodifiableSet;
  *
  * @param <E> The type of elements in this bag
  * @since 3.0
+ * @deprecated Since 4.6.0, use {@link 
org.apache.commons.collections4.multiset.UnmodifiableSortedMultiSet} instead.
  */
+@Deprecated
 public final class UnmodifiableSortedBag<E>
         extends AbstractSortedBagDecorator<E> implements Unmodifiable {
 
diff --git 
a/src/main/java/org/apache/commons/collections4/bag/package-info.java 
b/src/main/java/org/apache/commons/collections4/bag/package-info.java
index cb8284af7..fa9dbd5bf 100644
--- a/src/main/java/org/apache/commons/collections4/bag/package-info.java
+++ b/src/main/java/org/apache/commons/collections4/bag/package-info.java
@@ -36,5 +36,10 @@
  *   <li>Transformed - transforms each element added to the bag</li>
  *   <li>Collection - ensures compliance with the java.util.Collection 
contract</li>
  * </ul>
+ * <p>
+ * This package is deprecated since 4.6.0; use the
+ * {@link org.apache.commons.collections4.multiset} package instead. See the
+ * {@link org.apache.commons.collections4.Bag Bag} Javadoc for migration notes.
+ * </p>
  */
 package org.apache.commons.collections4.bag;
diff --git 
a/src/main/java/org/apache/commons/collections4/collection/PredicatedCollection.java
 
b/src/main/java/org/apache/commons/collections4/collection/PredicatedCollection.java
index cc44b06fb..cd0ffbe7e 100644
--- 
a/src/main/java/org/apache/commons/collections4/collection/PredicatedCollection.java
+++ 
b/src/main/java/org/apache/commons/collections4/collection/PredicatedCollection.java
@@ -155,7 +155,9 @@ public class PredicatedCollection<E> extends 
AbstractCollectionDecorator<E> {
          * </p>
          *
          * @return a new predicated bag.
+         * @deprecated Since 4.6.0, use {@link #createPredicatedMultiSet()} 
instead.
          */
+        @Deprecated
         public Bag<E> createPredicatedBag() {
             return createPredicatedBag(new HashBag<>());
         }
@@ -172,7 +174,9 @@ public class PredicatedCollection<E> extends 
AbstractCollectionDecorator<E> {
          * @return the decorated bag.
          * @throws NullPointerException if bag is null.
          * @throws IllegalArgumentException if bag contains invalid elements.
+         * @deprecated Since 4.6.0, use {@link 
#createPredicatedMultiSet(MultiSet)} instead.
          */
+        @Deprecated
         public Bag<E> createPredicatedBag(final Bag<E> bag) {
             Objects.requireNonNull(bag, "bag");
             final PredicatedBag<E> predicatedBag = 
PredicatedBag.predicatedBag(bag, predicate);

Reply via email to