You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2006/08/17 21:41:31 UTC
svn commit: r432361 - in
/incubator/harmony/enhanced/classlib/trunk/modules/luni/src:
main/java/java/util/AbstractQueue.java
test/java/tests/api/java/util/AbstractQueueTest.java
Author: tellison
Date: Thu Aug 17 12:41:30 2006
New Revision: 432361
URL: http://svn.apache.org/viewvc?rev=432361&view=rev
Log:
Fix for HARMONY-1178 (AbstractQueue.addAll return true even if collection was not changed as a result of a call)
Modified:
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/AbstractQueue.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/AbstractQueueTest.java
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/AbstractQueue.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/AbstractQueue.java?rev=432361&r1=432360&r2=432361&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/AbstractQueue.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/AbstractQueue.java Thu Aug 17 12:41:30 2006
@@ -1,132 +1,126 @@
-/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
- *
- * Licensed 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 java.util;
-
-/**
- *
- * An abstract class which gives out skeletal implementations for some methods
- * in Queue which include add, remove, and element that are based on offer,
- * poll, and peek except that they throw exception to indicate the occurrence of
- * some error instead of the return value of false or null.
- *
- * @param <E>
- * the type of the element in the collection.
- */
-public abstract class AbstractQueue<E> extends AbstractCollection<E> implements
- Queue<E> {
-
- /**
- * Constructor for the sub classes.
- *
- */
- protected AbstractQueue() {
- super();
- }
-
- /**
- * Adds an element to the queue.
- *
- * @param o the element added to the queue.
- * @return true if the operation succeeds.
- * @throws NullPointerException if the element is null.
- * @throws IllegalStateException if the element is not allowed to be added
- * to the queue.
- */
- @Override
- public boolean add(E o) {
- if (null == o) {
- throw new NullPointerException();
- }
- if (offer(o)) {
- return true;
- } else {
- throw new IllegalStateException();
- }
- }
-
- /**
- * Adds all the elements of a collection to the queue. If the collection is
- * the queue itself, then an IllegalArgumentException will be thrown out. If
- * during the process, some runtime exception is thrown out, then part of
- * the elements in the collection that have successfully added will remain
- * in the queue.
- *
- * The result of the method is undefined if the collection is modified
- * during the process of the method.
- *
- * @param c the collection to be added to the queue.
- * @return true if the operation succeeds.
- * @throws NullPointerException if the collection or any element of it is
- * null.
- * @throws IllegalArgumentException If the collection to be added to the
- * queue is the queue itself.
- */
- @Override
- public boolean addAll(Collection<? extends E> c) {
- if (null == c) {
- throw new NullPointerException();
- }
- if (this == c) {
- throw new IllegalArgumentException();
- }
- Iterator<? extends E> iter = c.iterator();
- while (iter.hasNext()) {
- E o = iter.next();
- add(o);
- }
- return true;
-
- }
-
- /**
- * Gets and removes the element in the head of the queue.
- *
- * @return the element in the head of the queue.
- * @throws NoSuchElementException if the queue is empty.
- */
- public E remove() {
- E o = poll();
- if (null == o) {
- throw new NoSuchElementException();
- }
- return o;
- }
-
- /**
- * Gets but not removes the element in the head of the queue.
- *
- * @return the element in the head of the queue.
- * @throws NoSuchElementException if the queue is empty.
- */
- public E element() {
- E o = peek();
- if (null == o) {
- throw new NoSuchElementException();
- }
- return o;
- }
-
- /**
- * Removes all elements of the queue.
- */
- @Override
- public void clear() {
- E o;
- do {
- o = poll();
- } while (null != o);
- }
-}
+/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed 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 java.util;
+
+/**
+ *
+ * An abstract class which gives out skeletal implementations for some methods
+ * in Queue which include add, remove, and element that are based on offer,
+ * poll, and peek except that they throw exception to indicate the occurrence of
+ * some error instead of the return value of false or null.
+ *
+ * @param <E>
+ * the type of the element in the collection.
+ */
+public abstract class AbstractQueue<E> extends AbstractCollection<E> implements
+ Queue<E> {
+
+ /**
+ * Constructor for the sub classes.
+ *
+ */
+ protected AbstractQueue() {
+ super();
+ }
+
+ /**
+ * Adds an element to the queue.
+ *
+ * @param o the element added to the queue.
+ * @return true if the operation succeeds.
+ * @throws NullPointerException if the element is null.
+ * @throws IllegalStateException if the element is not allowed to be added
+ * to the queue.
+ */
+ @Override
+ public boolean add(E o) {
+ if (null == o) {
+ throw new NullPointerException();
+ }
+ if (offer(o)) {
+ return true;
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ /**
+ * Adds all the elements of a collection to the queue. If the collection is
+ * the queue itself, then an IllegalArgumentException will be thrown out. If
+ * during the process, some runtime exception is thrown out, then part of
+ * the elements in the collection that have successfully added will remain
+ * in the queue.
+ *
+ * The result of the method is undefined if the collection is modified
+ * during the process of the method.
+ *
+ * @param c the collection to be added to the queue.
+ * @return true if the operation succeeds.
+ * @throws NullPointerException if the collection or any element of it is
+ * null.
+ * @throws IllegalArgumentException If the collection to be added to the
+ * queue is the queue itself.
+ */
+ @Override
+ public boolean addAll(Collection<? extends E> c) {
+ if (null == c) {
+ throw new NullPointerException();
+ }
+ if (this == c) {
+ throw new IllegalArgumentException();
+ }
+ return super.addAll(c);
+ }
+
+ /**
+ * Gets and removes the element in the head of the queue.
+ *
+ * @return the element in the head of the queue.
+ * @throws NoSuchElementException if the queue is empty.
+ */
+ public E remove() {
+ E o = poll();
+ if (null == o) {
+ throw new NoSuchElementException();
+ }
+ return o;
+ }
+
+ /**
+ * Gets but not removes the element in the head of the queue.
+ *
+ * @return the element in the head of the queue.
+ * @throws NoSuchElementException if the queue is empty.
+ */
+ public E element() {
+ E o = peek();
+ if (null == o) {
+ throw new NoSuchElementException();
+ }
+ return o;
+ }
+
+ /**
+ * Removes all elements of the queue.
+ */
+ @Override
+ public void clear() {
+ E o;
+ do {
+ o = poll();
+ } while (null != o);
+ }
+}
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/AbstractQueueTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/AbstractQueueTest.java?rev=432361&r1=432360&r2=432361&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/AbstractQueueTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/AbstractQueueTest.java Thu Aug 17 12:41:30 2006
@@ -15,6 +15,7 @@
package tests.api.java.util;
import java.util.AbstractQueue;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
@@ -186,6 +187,15 @@
} catch (IllegalStateException e) {
// expected
}
+ }
+
+ /**
+ * @tests java.util.AbstractQueue#addAll(E)
+ */
+ public void test_addAllLE_empty() {
+ // Regression test for HARMONY-1178
+ List list = new ArrayList<Object>(0);
+ assertFalse("Non modification to queue should return false", queue.addAll(list));
}
/**