205 Commits

Author SHA1 Message Date
Michael Smith
4d9246c82a Updated my email address.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130558 13f79535-47bb-0310-9956-ffa450edef68
2002-02-22 04:58:17 +00:00
Michael Smith
91e030ff08 Fixed the following Bag related problems:
- In Bag.java, the statement "If the bag contains less than i occurences,
the item item will be removed from the unique set" implies that if the bag
contains 5 occurences and i is 5, (5 is not less than 5) then the item will
not be removed from the unique set, even though there should be no more
occurances in the bag.

 - In AbstractBag.java, the documentation does not specify exactly what a
subcless needs to do to extend AbstractBag to make a concrete subclass.

 - AbstractBag.add(Object,int) has two calls to getCount(o), when only one
is necessary.  This wastes a few cycles to perform method invocations, a
map lookup, a cast, and a few comparisons.

 - The AbstractBag.equals(Object) method will incorrectly throw a
NullPointerException if a null value is passed.  The Object.equals(Object)
API specifies "For any non-null reference value x, x.equals(null) should
return false".

 - The AbstractBag.equals(Object) method will only work if the object
passed in extends AbstractMap or implements Map.  Neither of these facts
is documented, and neither is correct.  The contract for
Object.equals(Object) states: "for any reference values x and y,
x.equals(y) should return true if and only if y.equals(x) returns true. ".
Returning true when the argument is a Map is incorrect since he reverse
(the map checking to see if its equal to the bag) will most certainly be
false.  The same can be said for AbstractMap.  A subclass of AbstractMap
may add extra data to be stored within the Bag that must also be compared
for them to be equal.  The reverse comparison (specialized subclass equals
basic abstract bap) will fail.  You can read more about this in a three-
year old, but still valid java world article:
http://www.javaworld.com/javaworld/jw-01-1999/jw-01-object.html

 - if AbstractBag.remove(Object,int) is called passing in 0 as the number
to remove and specifying an object that exists in the bag, true will be
returned from the method. Per the Bag API specification, true should only
return when an object is actually removed.  Since no objects are removed,
false should be returned instead. Additionally, if a negative number is
specified, not only is the object not removed, but object(s) are *added*
(well, in the sense that it is equivalent of calling add(o, -i))

 - the uniqueSet() method returns the set of unique objects, however the
set is modifiable.  If the underlying map implementation has the set
backed by the map (as per the map contract -- so it should), then elements
can be removed from the unique set and have them removed from the
underlying map as well.  This causes consistency problems with the Bag
since _total will then be incorrect.

 - in extractList(), getCount(current) is called each time through the
inner loop, adding lots of extra overhead.  Reversing the loop (starting
at the count and going down to 0) eliminates the excess overhead.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130557 13f79535-47bb-0310-9956-ffa450edef68
2002-02-22 04:39:53 +00:00
Michael Smith
5bf5481408 Added documentation, and updating formatting of some documentation
(i.e. put "code" within <code>...</code>)

Added check for a valid capacity argument passed to constructor.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130556 13f79535-47bb-0310-9956-ffa450edef68
2002-02-22 04:16:19 +00:00
Michael Smith
6bb40f4086 Implement Externalizable in SequencedHashMap
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130555 13f79535-47bb-0310-9956-ffa450edef68
2002-02-22 03:17:40 +00:00
Michael Smith
2af7a322ef Odd how that compiled for me before my commit, but it doesn't
afterwards (for obvious reasons)


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130554 13f79535-47bb-0310-9956-ffa450edef68
2002-02-22 02:37:56 +00:00
Michael Smith
ef5aa20db3 There is no backwards compatibility issue since this class is new
since collections 1.0.  Therefore, since the entire Map interface
is implemented, there's no reason to inherit from HashMap.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130553 13f79535-47bb-0310-9956-ffa450edef68
2002-02-22 02:34:59 +00:00
Michael Smith
90646843f9 Fix a NullPointerException when an object passed to an entrySet method is not mapping found in the map. Exhibited with entrySet().remove(Object) and entrySet().contains(Object)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130546 13f79535-47bb-0310-9956-ffa450edef68
2002-02-21 13:46:25 +00:00
Morgan James Delagrange
cd6254ae22 fixed line feed problem over whole file
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130537 13f79535-47bb-0310-9956-ffa450edef68
2002-02-20 18:30:36 +00:00
Morgan James Delagrange
ca6c97a99a removed unnecessary else block and fixed indenting
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130536 13f79535-47bb-0310-9956-ffa450edef68
2002-02-20 18:05:07 +00:00
Morgan James Delagrange
89417ef747 LRUMap reimplemented, based on SequencedHashMap
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130535 13f79535-47bb-0310-9956-ffa450edef68
2002-02-20 18:01:34 +00:00
Morgan James Delagrange
3b9b229b36 complete re-implementation of SequencedHashMap submitted by
Michael Smith


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130532 13f79535-47bb-0310-9956-ffa450edef68
2002-02-18 20:34:57 +00:00
Morgan James Delagrange
c9cc92c63e LRUMap does not support concurrent access to any of its methods
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130523 13f79535-47bb-0310-9956-ffa450edef68
2002-02-14 21:24:32 +00:00
Morgan James Delagrange
f22d9bce8c added contract to LRUMap - subclasses can override removeLRU()
and remove(Object) to manipulate objects on their way out of the cache


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130522 13f79535-47bb-0310-9956-ffa450edef68
2002-02-14 20:58:48 +00:00
Morgan James Delagrange
b0a305ab05 added fully qualified package names for imports
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130520 13f79535-47bb-0310-9956-ffa450edef68
2002-02-14 20:21:49 +00:00
Morgan James Delagrange
02bc992242 fixed bubble sort, so that the number of elements in the bubble sort
will always equal the size of the LRUMap


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130518 13f79535-47bb-0310-9956-ffa450edef68
2002-02-13 23:07:31 +00:00
Morgan James Delagrange
c5c64c02d3 fixed IndexOutOfBoundsException
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130515 13f79535-47bb-0310-9956-ffa450edef68
2002-02-13 21:03:20 +00:00
James Strachan
328f30989e Patched the LRUMap so that remove() does indeed remove items from the bubble list
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130512 13f79535-47bb-0310-9956-ffa450edef68
2002-02-10 12:56:39 +00:00
James Strachan
25c1cb6b4a Updated all the licences to the full long form and ensured that the copyright notice extends to 2002. Also applied Michael Smith's patch for FilterIterator, Closure, DefaultMapEntry and LRUMap
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130511 13f79535-47bb-0310-9956-ffa450edef68
2002-02-10 08:07:42 +00:00
James Strachan
4b266ff8bc Applied patch submitted by Michael Smith that clarifies the description of the FilterIterator
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130510 13f79535-47bb-0310-9956-ffa450edef68
2002-02-01 16:27:40 +00:00
Craig R. McClanahan
6a5c4a72c6 Committed the DoubleOrderedMap class and associated unit tests (gotta love
it when the unit test source is 50% longer than the class being tested :-).
The only change I made was to use the long-form version of the Apache
license -- according to the Apache board, that is the only acceptable
approach at the moment.  Any remaining classes in commons-collections (or
elsewhere) using the short form license should be updated.

Submitted by:	Marc Johnson <marc_johnson27591@hotmail.com>


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130509 13f79535-47bb-0310-9956-ffa450edef68
2002-01-20 04:36:08 +00:00
Henri Yandell
3d6c8c5fab An empty iterator. It is immutable and always the same object instance.
Submitted by:	Christopher Elkins <chrise@scardini.com>


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130508 13f79535-47bb-0310-9956-ffa450edef68
2001-11-26 17:15:33 +00:00
James Strachan
51a5b46632 Applied patch submitted by Richard Wan that containsKey() took a String by mistake
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130507 13f79535-47bb-0310-9956-ffa450edef68
2001-11-02 14:44:35 +00:00
Henri Yandell
21500f60e7 Patch that stops next() continually returning null if hasNext is not
called in the standard way. ie)

(cf: "Juozas Baliuka" <baliuka@mwm.lt>)

while(true) {
    filterIterator.next();
}

This should eventually throw NoSuchElementException, but it returns null
forever.

Submitted by:  Jan Sorensen <jan.sorensen@aragost.com>


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130505 13f79535-47bb-0310-9956-ffa450edef68
2001-10-19 20:18:21 +00:00
Jason van Zyl
30a8d35e54 - adding ${variable} interpolation to the getString() methods. the
code was taken from the jetspeed codebase.
PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130503 13f79535-47bb-0310-9956-ffa450edef68
2001-09-21 03:14:40 +00:00
James Strachan
71a401b27b Added MultiMap and MultiHashMap implementation submitted by Chris Berry together with a JUnit test case
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130502 13f79535-47bb-0310-9956-ffa450edef68
2001-09-18 10:41:39 +00:00
James Strachan
40bdd8fe80 Added Daniel Rall's SequencedHashMap patch and ported the JUnit test case over to use assertTrue() rather than assert().
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130501 13f79535-47bb-0310-9956-ffa450edef68
2001-09-17 16:43:49 +00:00
James Strachan
f9f92677a9 Added Bay's helper methods to CollectionUtils
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130500 13f79535-47bb-0310-9956-ffa450edef68
2001-08-29 16:10:29 +00:00
James Strachan
a10c6b0142 Added Daniel Rall's patch to support remove() from the EnuemerationIterator
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130499 13f79535-47bb-0310-9956-ffa450edef68
2001-08-29 15:48:42 +00:00
James Strachan
d08fa6d71e Added Bag interface, implementations and JUnit test cases as submitted by Chuck Burdick
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130498 13f79535-47bb-0310-9956-ffa450edef68
2001-08-29 15:28:07 +00:00
James Strachan
66c451d618 Patched ArrayIterator to use java.lang.reflect.Array so that it can support arrays of primitive types such as int[]
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130497 13f79535-47bb-0310-9956-ffa450edef68
2001-08-23 12:04:40 +00:00
James Strachan
530049b41c Backed out ArrayIterator change to use reflection rather than use Object[]
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130496 13f79535-47bb-0310-9956-ffa450edef68
2001-08-23 10:50:01 +00:00
James Strachan
ea64efd6dc Patched ArrayIterator so that it can work with any type of array, not just Object[] instances
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130495 13f79535-47bb-0310-9956-ffa450edef68
2001-08-23 09:05:26 +00:00
James Strachan
8c44a71208 Added SingletonIterator for iterating over a single value together with a JUnit test case
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130493 13f79535-47bb-0310-9956-ffa450edef68
2001-08-22 07:43:53 +00:00
Rodney Waldhoff
54345a5c91 committing ungenerated parts of documentation patch from Chuck Burdick
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130492 13f79535-47bb-0310-9956-ffa450edef68
2001-08-17 23:00:26 +00:00
James Strachan
4a2e49fd8d Applied Mauricio's patches to the ArrayIterator and added his patches to TestArrayIterator also
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130487 13f79535-47bb-0310-9956-ffa450edef68
2001-06-05 07:20:10 +00:00
James Strachan
2ecede5902 Patched the select(inputCollection, predicate, outputCollection) method so that it does not return a variable, to avoid any confusion with the select(inputCollection, predicate) method which returns the outputCollection.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130486 13f79535-47bb-0310-9956-ffa450edef68
2001-05-22 15:53:06 +00:00
Craig R. McClanahan
a36442f0d0 Work around a problem reported by the VAJ Java compiler, caused by the
fact that the superclass already has a private class named Iterator.

Submitted by:	Costin Cozianu <Costin.Cozianu@cis.canon.com>


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130485 13f79535-47bb-0310-9956-ffa450edef68
2001-05-20 21:03:30 +00:00
Rodney Waldhoff
3761b55144 I pretty sure this fixes bug 1729 (http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1729) but I don't have an environment to test it. It certainly doesn't break anything.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130484 13f79535-47bb-0310-9956-ffa450edef68
2001-05-18 00:12:45 +00:00
Rodney Waldhoff
ffe28c43e0 Deprecating. I'd like to remove this class, if no one has any issues.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130482 13f79535-47bb-0310-9956-ffa450edef68
2001-05-16 22:19:23 +00:00
James Strachan
284b6f5477 Added Mauricio S. Moura's patch to ArrayIterator such that next() calls move the iterator along rather than calls to hasNext(). I've also added a JUnit test case to demonstrate it in action and validate that it works correctly.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130481 13f79535-47bb-0310-9956-ffa450edef68
2001-05-14 10:42:53 +00:00
Geir Magnusson Jr
8ab1fd1633 javadoc update. Thanks to Jon Stevens for pointing it out.
PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130480 13f79535-47bb-0310-9956-ffa450edef68
2001-05-13 21:46:22 +00:00
Geir Magnusson Jr
1688a5a244 Fixed the problem reported by Thomas Fahrmeyer <thomas.fahrmeyer@einsurance.de>
where ExtendedProperties would re-process data when making a subset.  Hope no one
was depending on that :)

Also adjusted the testcase to test this.
PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130474 13f79535-47bb-0310-9956-ffa450edef68
2001-05-10 00:40:09 +00:00
James Strachan
485615107d Added new Map implementations and Closure classes
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130471 13f79535-47bb-0310-9956-ffa450edef68
2001-05-06 11:04:25 +00:00
Rodney Waldhoff
2a069edb7e importing classes referenced in javadoc comments (javadoc won't find them otherwise)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130469 13f79535-47bb-0310-9956-ffa450edef68
2001-05-04 16:33:18 +00:00
Rodney Waldhoff
3f66e516a7 minor javadoc fixes
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130468 13f79535-47bb-0310-9956-ffa450edef68
2001-05-04 16:32:17 +00:00
Geir Magnusson Jr
2a49159056 A few minor changes :
1) replaced with the current version from velocity's CVS - this is a few
changes by dan

2) added the recent patch from Ilkka for dealing with encoded properties
PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130456 13f79535-47bb-0310-9956-ffa450edef68
2001-05-04 02:22:48 +00:00
Rodney Waldhoff
1e8a31f417 minor fixes to adhere more closely to the java.util.List contract
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130453 13f79535-47bb-0310-9956-ffa450edef68
2001-04-26 00:05:47 +00:00
Rodney Waldhoff
256420016e adding CollectionUtils and tests for it
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130450 13f79535-47bb-0310-9956-ffa450edef68
2001-04-24 18:48:38 +00:00
Rodney Waldhoff
b8ed8bbd5e committing several files from Peter Donald and Avalon
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130448 13f79535-47bb-0310-9956-ffa450edef68
2001-04-22 19:56:37 +00:00
Craig R. McClanahan
fff00791ed Change parentage of these classes so that they subclass ArrayList,
HashMap, and TreeMap respectively.  This improves the ability to
substitute "fast" versions for the use of the regular collection classes.

Implement clone(), equals(), and hashCode() methods in accordance with the
contracts specified in the Collections classes APIs.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130444 13f79535-47bb-0310-9956-ffa450edef68
2001-04-21 12:19:57 +00:00