[COLLECTIONS-380] Fixed infinte recursion when creating an unmodifiable bounded collection, added unit test, fixed additional javadoc, thanks to Dave Brosius for reporting.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/trunk@1311366 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0b83241a1a
commit
970921c219
|
@ -52,10 +52,10 @@ public final class UnmodifiableBoundedCollection<E> extends AbstractCollectionDe
|
|||
*
|
||||
* @param coll the <code>BoundedCollection</code> to decorate, must not be null
|
||||
* @return a new unmodifiable bounded collection
|
||||
* @throws IllegalArgumentException if bag is null
|
||||
* @throws IllegalArgumentException if {@code coll} is {@code null}
|
||||
*/
|
||||
public static <E> BoundedCollection<E> unmodifiableBoundedCollection(BoundedCollection<E> coll) {
|
||||
return unmodifiableBoundedCollection(coll);
|
||||
return new UnmodifiableBoundedCollection<E>(coll);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -66,7 +66,7 @@ public final class UnmodifiableBoundedCollection<E> extends AbstractCollectionDe
|
|||
*
|
||||
* @param coll the <code>BoundedCollection</code> to decorate, must not be null
|
||||
* @return a new unmodifiable bounded collection
|
||||
* @throws IllegalArgumentException if bag is null
|
||||
* @throws IllegalArgumentException if {@code coll} is {@code null}
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <E> BoundedCollection<E> unmodifiableBoundedCollection(Collection<? extends E> coll) {
|
||||
|
@ -139,10 +139,16 @@ public final class UnmodifiableBoundedCollection<E> extends AbstractCollectionDe
|
|||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean isFull() {
|
||||
return decorated().isFull();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public int maxSize() {
|
||||
return decorated().maxSize();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
* 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.apache.commons.collections.collection;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.collections.ArrayStack;
|
||||
import org.apache.commons.collections.Buffer;
|
||||
import org.apache.commons.collections.BufferUtils;
|
||||
import org.apache.commons.collections.buffer.BoundedBuffer;
|
||||
|
||||
/**
|
||||
* Extension of {@link AbstractTestCollection} for exercising the
|
||||
* {@link UnmodifiableBoundedCollection} implementation.
|
||||
*/
|
||||
public class TestUnmodifiableBoundedCollection<E> extends AbstractTestCollection<E> {
|
||||
|
||||
public TestUnmodifiableBoundedCollection(String testName) {
|
||||
super(testName);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
@Override
|
||||
public Collection<E> makeObject() {
|
||||
BoundedBuffer<E> buffer = BoundedBuffer.<E>boundedBuffer(new ArrayStack<E>(), 10);
|
||||
return UnmodifiableBoundedCollection.unmodifiableBoundedCollection(buffer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<E> makeFullCollection() {
|
||||
E[] allElements = getFullElements();
|
||||
Buffer<E> buffer = BufferUtils.boundedBuffer(new ArrayStack<E>(), allElements.length);
|
||||
buffer.addAll(Arrays.asList(allElements));
|
||||
return UnmodifiableBoundedCollection.unmodifiableBoundedCollection(buffer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<E> makeConfirmedCollection() {
|
||||
return new ArrayList<E>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<E> makeConfirmedFullCollection() {
|
||||
ArrayList<E> list = new ArrayList<E>();
|
||||
list.addAll(Arrays.asList(getFullElements()));
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAddSupported() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRemoveSupported() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean skipSerializedCanonicalTests() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCompatibilityVersion() {
|
||||
return "3.1";
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue