You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2003/09/21 18:00:29 UTC
cvs commit: jakarta-commons/collections/src/java/org/apache/commons/collections/observed/standard StandardModificationHandler.java StandardPreModificationEvent.java StandardPostModificationEvent.java package.html StandardModificationEvent.java
scolebourne 2003/09/21 09:00:29
Modified: collections/src/java/org/apache/commons/collections/observed
ModificationEvent.java package.html
ModificationHandler.java
ModificationHandlerFactory.java
collections/src/java/org/apache/commons/collections/observed/standard
StandardModificationHandler.java
StandardPreModificationEvent.java
StandardPostModificationEvent.java package.html
StandardModificationEvent.java
Added: collections/src/java/org/apache/commons/collections/observed
ObservableBuffer.java ObservableList.java
ObservableCollection.java ObservableSet.java
ObservableBag.java
Removed: collections/src/java/org/apache/commons/collections/observed
ObservedList.java ObservedBuffer.java
ObservedSet.java ObservedCollection.java
ObservedBag.java
Log:
Rename Observed to Observable
Revision Changes Path
1.3 +8 -8 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ModificationEvent.java
Index: ModificationEvent.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ModificationEvent.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ModificationEvent.java 7 Sep 2003 10:33:32 -0000 1.2
+++ ModificationEvent.java 21 Sep 2003 16:00:28 -0000 1.3
@@ -73,7 +73,7 @@
public class ModificationEvent extends EventObject {
/** The source collection */
- protected final ObservedCollection collection;
+ protected final ObservableCollection collection;
/** The handler */
protected final ModificationHandler handler;
/** The event code */
@@ -89,7 +89,7 @@
* @param type the event type
*/
public ModificationEvent(
- final ObservedCollection obsCollection,
+ final ObservableCollection obsCollection,
final ModificationHandler handler,
final int type) {
@@ -105,7 +105,7 @@
* Gets the collection the event is reporting on.
* <p>
* Using this collection will bypass any decorators that have been added
- * to the <code>ObservedCollection</code>. For example, if a synchronized
+ * to the <code>ObservableCollection</code>. For example, if a synchronized
* decorator was added it will not be called by changes to this collection.
* <p>
* For the synchronization case, you are normally OK however. If you
@@ -115,12 +115,12 @@
*
* @return the collection
*/
- public ObservedCollection getObservedCollection() {
+ public ObservableCollection getObservedCollection() {
return collection;
}
/**
- * Gets the base collection underlying the observed collection.
+ * Gets the base collection underlying the observable collection.
* <p>
* Using this collection will bypass the event sending mechanism.
* It will also bypass any other decorators, such as synchronization.
@@ -161,7 +161,7 @@
*/
public String toString() {
StringBuffer buf = new StringBuffer(64);
- buf.append("ObservedEvent[type=");
+ buf.append("ModificationEvent[type=");
buf.append(ModificationEventType.toString(type));
buf.append(']');
return buf.toString();
1.2 +3 -3 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/package.html
Index: package.html
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/package.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- package.html 3 Sep 2003 23:54:26 -0000 1.1
+++ package.html 21 Sep 2003 16:00:28 -0000 1.2
@@ -5,10 +5,10 @@
is supplied, but alternatives can be added, see ModificationHandler.
<p>
Each decorator can be constructed using a static <code>decorate()</code> method on
-the ObservedXxx class. They can also be constructed from the <code>XxxUtils</code>
+the ObservableXxx class. They can also be constructed from the <code>XxxUtils</code>
class (where Xxx is the collection type).
<p>
-<code>List observedList = ObservedList.decorate(new ArrayList(), listener);</code>
+<code>List observableList = ObservableList.decorate(new ArrayList(), listener);</code>
<br />OR<br />
-<code>List observedList = ListUtils.observedList(new ArrayList(), listener);</code>
+<code>List observableList = ListUtils.observableList(new ArrayList(), listener);</code>
</BODY>
1.6 +9 -9 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ModificationHandler.java
Index: ModificationHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ModificationHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ModificationHandler.java 7 Sep 2003 16:50:59 -0000 1.5
+++ ModificationHandler.java 21 Sep 2003 16:00:28 -0000 1.6
@@ -86,7 +86,7 @@
static final ModificationHandlerFactory FACTORY = new Factory();
/** The collection being observed */
- private ObservedCollection obsCollection = null;
+ private ObservableCollection obsCollection = null;
/** The underlying base collection being decorated */
private Collection baseCollection = null;
/** The root handler */
@@ -129,7 +129,7 @@
* @throws IllegalArgumentException if the collection is null
* @throws IllegalStateException if init has already been called
*/
- void init(final ObservedCollection coll, Collection baseColl) {
+ void init(final ObservableCollection coll, Collection baseColl) {
if (coll == null) {
throw new IllegalArgumentException("Collection must not be null");
}
@@ -150,7 +150,7 @@
*
* @return the observed collection
*/
- public ObservedCollection getObservedCollection() {
+ public ObservableCollection getObservedCollection() {
return obsCollection;
}
@@ -296,7 +296,7 @@
*/
protected boolean preEvent(
int type, int index, Object object, int repeat,
- Object previous, ObservedCollection range, int rangeOffset) {
+ Object previous, ObservableCollection range, int rangeOffset) {
return true;
}
@@ -316,7 +316,7 @@
*/
protected void postEvent(
boolean modified, int type, int index, Object object, int repeat,
- Object previous, ObservedCollection range, int rangeOffset) {
+ Object previous, ObservableCollection range, int rangeOffset) {
}
// Event handling
@@ -773,7 +773,7 @@
*/
protected boolean preEvent(
int type, int index, Object object, int repeat,
- Object previous, ObservedCollection ignoredRange, int ignoredOffset) {
+ Object previous, ObservableCollection ignoredRange, int ignoredOffset) {
return getRootHandler().preEvent(
type, index, object, repeat,
@@ -787,7 +787,7 @@
*/
protected void postEvent(
boolean modified, int type, int index, Object object, int repeat,
- Object previous, ObservedCollection ignoredRange, int ignoredOffset) {
+ Object previous, ObservableCollection ignoredRange, int ignoredOffset) {
getRootHandler().postEvent(
modified, type, index, object, repeat,
1.2 +3 -4 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ModificationHandlerFactory.java
Index: ModificationHandlerFactory.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ModificationHandlerFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ModificationHandlerFactory.java 3 Sep 2003 23:54:26 -0000 1.1
+++ ModificationHandlerFactory.java 21 Sep 2003 16:00:28 -0000 1.2
@@ -59,7 +59,6 @@
import java.util.Collection;
-
/**
* Defines a factory for creating ModificationHandler instances.
* <p>
@@ -68,7 +67,7 @@
* fully thread-safe. There are two steps:
* <ol>
* <li>A factory must be created that is an implementation of this class
- * <li>One of the <code>registerFactory</code> methods must be called on ObservedCollection
+ * <li>One of the <code>registerFactory</code> methods must be called on ObservableCollection
* </ol>
*
* @since Commons Collections 3.0
1.1 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ObservableBuffer.java
Index: ObservableBuffer.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ObservableBuffer.java,v 1.1 2003/09/21 16:00:28 scolebourne Exp $
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowledgement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgement may appear in the software itself,
* if and wherever such third-party acknowledgements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.collections.observed;
import org.apache.commons.collections.Buffer;
/**
* Decorates a <code>Buffer</code> implementation to observe modifications.
* <p>
* Each modifying method call made on this <code>Buffer</code> is forwarded to a
* {@link ModificationHandler}.
* The handler manages the event, notifying listeners and optionally vetoing changes.
* The default handler is {@link StandardModificationHandler}.
* See this class for details of configuration available.
*
* @since Commons Collections 3.0
* @version $Revision: 1.1 $ $Date: 2003/09/21 16:00:28 $
*
* @author Stephen Colebourne
*/
public class ObservableBuffer extends ObservableCollection implements Buffer {
// Factories
//-----------------------------------------------------------------------
/**
* Factory method to create an observable buffer.
* <p>
* A {@link StandardModificationHandler} will be created.
* This can be accessed by {@link #getHandler()} to add listeners.
*
* @param buffer the buffer to decorate, must not be null
* @return the observed Buffer
* @throws IllegalArgumentException if the buffer is null
*/
public static ObservableBuffer decorate(final Buffer buffer) {
return new ObservableBuffer(buffer, null);
}
/**
* Factory method to create an observable buffer using a listener or a handler.
* <p>
* A lot of functionality is available through this method.
* If you don't need the extra functionality, simply implement the
* {@link org.apache.commons.collections.observed.standard.StandardModificationListener}
* interface and pass it in as the second parameter.
* <p>
* Internally, an <code>ObservableBuffer</code> relies on a {@link ModificationHandler}.
* The handler receives all the events and processes them, typically by
* calling listeners. Different handler implementations can be plugged in
* to provide a flexible event system.
* <p>
* The handler implementation is determined by the listener parameter via
* the registered factories. The listener may be a manually configured
* <code>ModificationHandler</code> instance.
* <p>
* The listener is defined as an Object for maximum flexibility.
* It does not have to be a listener in the classic JavaBean sense.
* It is entirely up to the factory and handler as to how the parameter
* is interpretted. An IllegalArgumentException is thrown if no suitable
* handler can be found for this listener.
* <p>
* A <code>null</code> listener will create a {@link StandardModificationHandler}.
*
* @param buffer the buffer to decorate, must not be null
* @param listener buffer listener, may be null
* @return the observed buffer
* @throws IllegalArgumentException if the buffer is null
* @throws IllegalArgumentException if there is no valid handler for the listener
*/
public static ObservableBuffer decorate(
final Buffer buffer,
final Object listener) {
if (buffer == null) {
throw new IllegalArgumentException("Buffer must not be null");
}
return new ObservableBuffer(buffer, listener);
}
// Constructors
//-----------------------------------------------------------------------
/**
* Constructor that wraps (not copies).
* <p>
* The handler implementation is determined by the listener parameter via
* the registered factories. The listener may be a manually configured
* <code>ModificationHandler</code> instance.
*
* @param buffer the buffer to decorate, must not be null
* @param listener the listener, may be null
* @throws IllegalArgumentException if the buffer is null
*/
protected ObservableBuffer(
final Buffer buffer,
final Object listener) {
super(buffer, listener);
}
/**
* Typecast the collection to a Buffer.
*
* @return the wrapped collection as a Buffer
*/
private Buffer getBuffer() {
return (Buffer) getCollection();
}
// Buffer API
//-----------------------------------------------------------------------
public Object get() {
return getBuffer().get();
}
//-----------------------------------------------------------------------
public Object remove() {
Object result = null;
if (handler.preRemoveNext()) {
result = getBuffer().remove();
handler.postRemoveNext(result);
}
return result;
}
}
1.1 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ObservableList.java
Index: ObservableList.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ObservableList.java,v 1.1 2003/09/21 16:00:28 scolebourne Exp $
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowledgement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgement may appear in the software itself,
* if and wherever such third-party acknowledgements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.collections.observed;
import java.util.Collection;
import java.util.List;
import java.util.ListIterator;
import org.apache.commons.collections.decorators.AbstractListIteratorDecorator;
/**
* Decorates a <code>List</code> implementation to observe modifications.
* <p>
* Each modifying method call made on this <code>List</code> is forwarded to a
* {@link ModificationHandler}.
* The handler manages the event, notifying listeners and optionally vetoing changes.
* The default handler is {@link StandardModificationHandler}.
* See this class for details of configuration available.
* <p>
* All indices on events returned by <code>subList</code> are relative to the
* base <code>List</code>.
*
* @since Commons Collections 3.0
* @version $Revision: 1.1 $ $Date: 2003/09/21 16:00:28 $
*
* @author Stephen Colebourne
*/
public class ObservableList extends ObservableCollection implements List {
// Factories
//-----------------------------------------------------------------------
/**
* Factory method to create an observable list.
* <p>
* A {@link StandardModificationHandler} will be created.
* This can be accessed by {@link #getHandler()} to add listeners.
*
* @param list the list to decorate, must not be null
* @return the observed List
* @throws IllegalArgumentException if the list is null
*/
public static ObservableList decorate(final List list) {
return new ObservableList(list, null);
}
/**
* Factory method to create an observable list using a listener or a handler.
* <p>
* A lot of functionality is available through this method.
* If you don't need the extra functionality, simply implement the
* {@link org.apache.commons.collections.observed.standard.StandardModificationListener}
* interface and pass it in as the second parameter.
* <p>
* Internally, an <code>ObservableList</code> relies on a {@link ModificationHandler}.
* The handler receives all the events and processes them, typically by
* calling listeners. Different handler implementations can be plugged in
* to provide a flexible event system.
* <p>
* The handler implementation is determined by the listener parameter via
* the registered factories. The listener may be a manually configured
* <code>ModificationHandler</code> instance.
* <p>
* The listener is defined as an Object for maximum flexibility.
* It does not have to be a listener in the classic JavaBean sense.
* It is entirely up to the factory and handler as to how the parameter
* is interpretted. An IllegalArgumentException is thrown if no suitable
* handler can be found for this listener.
* <p>
* A <code>null</code> listener will create a {@link StandardModificationHandler}.
*
* @param list the list to decorate, must not be null
* @param listener list listener, may be null
* @return the observed list
* @throws IllegalArgumentException if the list is null
* @throws IllegalArgumentException if there is no valid handler for the listener
*/
public static ObservableList decorate(
final List list,
final Object listener) {
if (list == null) {
throw new IllegalArgumentException("List must not be null");
}
return new ObservableList(list, listener);
}
// Constructors
//-----------------------------------------------------------------------
/**
* Constructor that wraps (not copies) and takes a handler.
* <p>
* The handler implementation is determined by the listener parameter via
* the registered factories. The listener may be a manually configured
* <code>ModificationHandler</code> instance.
*
* @param list the list to decorate, must not be null
* @param listener the listener, may be null
* @throws IllegalArgumentException if the list is null
*/
protected ObservableList(
final List list,
final Object listener) {
super(list, listener);
}
/**
* Constructor used by subclass views, such as subList.
*
* @param handler the handler to use, must not be null
* @param list the subList to decorate, must not be null
* @throws IllegalArgumentException if the list is null
*/
protected ObservableList(
final ModificationHandler handler,
final List list) {
super(handler, list);
}
/**
* Typecast the collection to a List.
*
* @return the wrapped collection as a List
*/
private List getList() {
return (List) getCollection();
}
// List API
//-----------------------------------------------------------------------
public Object get(int index) {
return getList().get(index);
}
public int indexOf(Object object) {
return getList().indexOf(object);
}
public int lastIndexOf(Object object) {
return getList().lastIndexOf(object);
}
//-----------------------------------------------------------------------
public void add(int index, Object object) {
if (handler.preAddIndexed(index, object)) {
getList().add(index, object);
handler.postAddIndexed(index, object);
}
}
public boolean addAll(int index, Collection coll) {
boolean result = false;
if (handler.preAddAllIndexed(index, coll)) {
result = getList().addAll(index, coll);
handler.postAddAllIndexed(index, coll, result);
}
return result;
}
public Object remove(int index) {
Object result = null;
if (handler.preRemoveIndexed(index)) {
result = getList().remove(index);
handler.postRemoveIndexed(index, result);
}
return result;
}
public Object set(int index, Object object) {
Object result = null;
if (handler.preSetIndexed(index, object)) {
result = getList().set(index, object);
handler.postSetIndexed(index, object, result);
}
return result;
}
public ListIterator listIterator() {
return new ObservableListIterator(getList().listIterator());
}
public ListIterator listIterator(int index) {
return new ObservableListIterator(getList().listIterator(index));
}
/**
* Returns a subList view on the original base <code>List</code>.
* <p>
* Changes to the subList affect the underlying List. Change events will
* return change indices relative to the underlying List, not the subList.
*
* @param fromIndex inclusive start index of the range
* @param toIndex exclusive end index of the range
* @return the subList view
*/
public List subList(int fromIndex, int toIndex) {
List subList = getList().subList(fromIndex, toIndex);
return new ObservableList(subList, getHandler().createSubListHandler(fromIndex, toIndex));
}
// ListIterator
//-----------------------------------------------------------------------
/**
* Inner class ListIterator for the ObservableList.
*/
protected class ObservableListIterator extends AbstractListIteratorDecorator {
protected Object last;
protected ObservableListIterator(ListIterator iterator) {
super(iterator);
}
public Object next() {
last = super.next();
return last;
}
public Object previous() {
last = iterator.previous();
return last;
}
public void remove() {
int index = iterator.previousIndex();
if (handler.preRemoveIterated(index, last)) {
iterator.remove();
handler.postRemoveIterated(index, last);
}
}
public void add(Object object) {
int index = iterator.nextIndex();
if (handler.preAddIterated(index, object)) {
iterator.add(object);
handler.postAddIterated(index, object);
}
}
public void set(Object object) {
int index = iterator.previousIndex();
if (handler.preSetIterated(index, object, last)) {
iterator.set(object);
handler.postSetIterated(index, object, last);
}
}
}
}
1.1 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ObservableCollection.java
Index: ObservableCollection.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ObservableCollection.java,v 1.1 2003/09/21 16:00:28 scolebourne Exp $
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowledgement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgement may appear in the software itself,
* if and wherever such third-party acknowledgements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.collections.observed;
import java.util.Collection;
import java.util.Iterator;
import org.apache.commons.collections.decorators.AbstractCollectionDecorator;
import org.apache.commons.collections.decorators.AbstractIteratorDecorator;
import org.apache.commons.collections.observed.standard.StandardModificationHandler;
/**
* Decorates a <code>Collection</code> implementation to observe modifications.
* <p>
* Each modifying method call made on this <code>Collection</code> is forwarded to a
* {@link ModificationHandler}.
* The handler manages the event, notifying listeners and optionally vetoing changes.
* The default handler is {@link StandardModificationHandler}.
* See this class for details of configuration available.
*
* @since Commons Collections 3.0
* @version $Revision: 1.1 $ $Date: 2003/09/21 16:00:28 $
*
* @author Stephen Colebourne
*/
public class ObservableCollection extends AbstractCollectionDecorator {
/** The list of registered factories, checked in reverse order */
private static ModificationHandlerFactory[] factories = new ModificationHandlerFactory[] {
ModificationHandler.FACTORY,
StandardModificationHandler.FACTORY
};
/** The handler to delegate event handling to */
protected final ModificationHandler handler;
// ObservableCollection factories
//-----------------------------------------------------------------------
/**
* Factory method to create an observable collection.
* <p>
* A {@link StandardModificationHandler} will be created.
* This can be accessed by {@link #getHandler()} to add listeners.
*
* @param coll the collection to decorate, must not be null
* @return the observed collection
* @throws IllegalArgumentException if the collection is null
*/
public static ObservableCollection decorate(final Collection coll) {
return new ObservableCollection(coll, null);
}
/**
* Factory method to create an observable collection using a listener or a handler.
* <p>
* A lot of functionality is available through this method.
* If you don't need the extra functionality, simply implement the
* {@link org.apache.commons.collections.observed.standard.StandardModificationListener}
* interface and pass it in as the second parameter.
* <p>
* Internally, an <code>ObservableCollection</code> relies on a {@link ModificationHandler}.
* The handler receives all the events and processes them, typically by
* calling listeners. Different handler implementations can be plugged in
* to provide a flexible event system.
* <p>
* The handler implementation is determined by the listener parameter via
* the registered factories. The listener may be a manually configured
* <code>ModificationHandler</code> instance.
* <p>
* The listener is defined as an Object for maximum flexibility.
* It does not have to be a listener in the classic JavaBean sense.
* It is entirely up to the factory and handler as to how the parameter
* is interpretted. An IllegalArgumentException is thrown if no suitable
* handler can be found for this listener.
* <p>
* A <code>null</code> listener will create a {@link StandardModificationHandler}.
*
* @param coll the collection to decorate, must not be null
* @param listener collection listener, may be null
* @return the observed collection
* @throws IllegalArgumentException if the collection is null
* @throws IllegalArgumentException if there is no valid handler for the listener
*/
public static ObservableCollection decorate(
final Collection coll,
final Object listener) {
if (coll == null) {
throw new IllegalArgumentException("Collection must not be null");
}
return new ObservableCollection(coll, listener);
}
// Register for ModificationHandlerFactory
//-----------------------------------------------------------------------
/**
* Registers a handler factory to be used for looking up a listener to
* a handler.
* <p>
* This method is used to add your own event handler to the supplied ones.
* Registering the factory will enable the {@link #decorate(Collection, Object)}
* method to create your handler.
* <p>
* Each handler added becomes the first in the lookup chain. Thus it is
* possible to override the default setup.
* Obviously this should be done with care in a shared web environment!
* <p>
* This method is not guaranteed to be threadsafe.
* It should only be called during initialization.
* Problems will occur if two threads call this method at the same time.
*
* @param factory the factory to add, may be null
*/
public static void registerFactory(final ModificationHandlerFactory factory) {
if (factory != null) {
// add at end, as checked in reverse order
ModificationHandlerFactory[] array = new ModificationHandlerFactory[factories.length + 1];
System.arraycopy(factories, 0, array, 0, factories.length);
array[factories.length] = factory;
factories = array; // atomic operation
}
}
// Constructors
//-----------------------------------------------------------------------
/**
* Constructor that wraps (not copies) and takes a handler.
* <p>
* The handler implementation is determined by the listener parameter via
* the registered factories. The listener may be a manually configured
* <code>ModificationHandler</code> instance.
*
* @param coll the collection to decorate, must not be null
* @param handler the observing handler, may be null
* @throws IllegalArgumentException if the collection is null
*/
protected ObservableCollection(
final Collection coll,
final Object listener) {
super(coll);
this.handler = createHandler(coll, listener);
this.handler.init(this, coll);
}
/**
* Constructor used by subclass views, such as subList.
*
* @param handler the observing handler, may be null
* @param coll the collection to decorate, must not be null
* @throws IllegalArgumentException if the collection is null
*/
protected ObservableCollection(
final ModificationHandler handler,
final Collection coll) {
super(coll);
this.handler = handler;
}
/**
* Creates a handler subclass based on the specified listener.
* <p>
* The method is defined in terms of an Object to allow for unusual
* listeners, such as a Swing model object.
*
* @param listener a listener object to create a handler for
* @return an instantiated handler with the listener attached
* @throws IllegalArgumentException if no suitable handler
*/
protected ModificationHandler createHandler(final Collection coll, final Object listener) {
if (listener == null) {
return new StandardModificationHandler();
}
ModificationHandlerFactory[] array = factories; // atomic operation
for (int i = array.length - 1; i >= 0 ; i--) {
ModificationHandler handler = array[i].createHandler(coll, listener);
if (handler != null) {
return handler;
}
}
throw new IllegalArgumentException("Unrecognised listener type: " +
(listener == null ? "null" : listener.getClass().getName()));
}
// Handler access
//-----------------------------------------------------------------------
/**
* Gets the handler that is observing this collection.
*
* @return the observing handler, never null
*/
public ModificationHandler getHandler() {
return handler;
}
// Collection
//-----------------------------------------------------------------------
public boolean add(Object object) {
boolean result = false;
if (handler.preAdd(object)) {
result = collection.add(object);
handler.postAdd(object, result);
}
return result;
}
public boolean addAll(Collection coll) {
boolean result = false;
if (handler.preAddAll(coll)) {
result = collection.addAll(coll);
handler.postAddAll(coll, result);
}
return result;
}
public void clear() {
if (handler.preClear()) {
collection.clear();
handler.postClear();
}
}
public Iterator iterator() {
return new ObservableIterator(collection.iterator());
}
public boolean remove(Object object) {
boolean result = false;
if (handler.preRemove(object)) {
result = collection.remove(object);
handler.postRemove(object, result);
}
return result;
}
public boolean removeAll(Collection coll) {
boolean result = false;
if (handler.preRemoveAll(coll)) {
result = collection.removeAll(coll);
handler.postRemoveAll(coll, result);
}
return result;
}
public boolean retainAll(Collection coll) {
boolean result = false;
if (handler.preRetainAll(coll)) {
result = collection.retainAll(coll);
handler.postRetainAll(coll, result);
}
return result;
}
// Iterator
//-----------------------------------------------------------------------
/**
* Inner class Iterator for the ObservableCollection.
*/
protected class ObservableIterator extends AbstractIteratorDecorator {
protected int lastIndex = -1;
protected Object last;
protected ObservableIterator(Iterator iterator) {
super(iterator);
}
public Object next() {
last = super.next();
lastIndex++;
return last;
}
public void remove() {
if (handler.preRemoveIterated(lastIndex, last)) {
iterator.remove();
handler.postRemoveIterated(lastIndex, last);
lastIndex--;
}
}
}
}
1.1 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ObservableSet.java
Index: ObservableSet.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ObservableSet.java,v 1.1 2003/09/21 16:00:28 scolebourne Exp $
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowledgement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgement may appear in the software itself,
* if and wherever such third-party acknowledgements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.collections.observed;
import java.util.Set;
/**
* Decorates a <code>Set</code> implementation to observe modifications.
* <p>
* Each modifying method call made on this <code>Set</code> is forwarded to a
* {@link ModificationHandler}.
* The handler manages the event, notifying listeners and optionally vetoing changes.
* The default handler is {@link StandardModificationHandler}.
* See this class for details of configuration available.
*
* @since Commons Collections 3.0
* @version $Revision: 1.1 $ $Date: 2003/09/21 16:00:28 $
*
* @author Stephen Colebourne
*/
public class ObservableSet extends ObservableCollection implements Set {
// Factories
//-----------------------------------------------------------------------
/**
* Factory method to create an observable set.
* <p>
* A {@link StandardModificationHandler} will be created.
* This can be accessed by {@link #getHandler()} to add listeners.
*
* @param set the set to decorate, must not be null
* @return the observed Set
* @throws IllegalArgumentException if the collection is null
*/
public static ObservableSet decorate(final Set set) {
return new ObservableSet(set, null);
}
/**
* Factory method to create an observable set using a listener or a handler.
* <p>
* A lot of functionality is available through this method.
* If you don't need the extra functionality, simply implement the
* {@link org.apache.commons.collections.observed.standard.StandardModificationListener}
* interface and pass it in as the second parameter.
* <p>
* Internally, an <code>ObservableSet</code> relies on a {@link ModificationHandler}.
* The handler receives all the events and processes them, typically by
* calling listeners. Different handler implementations can be plugged in
* to provide a flexible event system.
* <p>
* The handler implementation is determined by the listener parameter via
* the registered factories. The listener may be a manually configured
* <code>ModificationHandler</code> instance.
* <p>
* The listener is defined as an Object for maximum flexibility.
* It does not have to be a listener in the classic JavaBean sense.
* It is entirely up to the factory and handler as to how the parameter
* is interpretted. An IllegalArgumentException is thrown if no suitable
* handler can be found for this listener.
* <p>
* A <code>null</code> listener will create a {@link StandardModificationHandler}.
*
* @param set the set to decorate, must not be null
* @param listener set listener, may be null
* @return the observed set
* @throws IllegalArgumentException if the set is null
* @throws IllegalArgumentException if there is no valid handler for the listener
*/
public static ObservableSet decorate(
final Set set,
final Object listener) {
if (set == null) {
throw new IllegalArgumentException("Set must not be null");
}
return new ObservableSet(set, listener);
}
// Constructors
//-----------------------------------------------------------------------
/**
* Constructor that wraps (not copies) and takes a handler.
* <p>
* The handler implementation is determined by the listener parameter via
* the registered factories. The listener may be a manually configured
* <code>ModificationHandler</code> instance.
*
* @param set the set to decorate, must not be null
* @param listener the listener, may be null
* @throws IllegalArgumentException if the set is null
*/
protected ObservableSet(
final Set set,
final Object listener) {
super(set, listener);
}
}
1.1 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ObservableBag.java
Index: ObservableBag.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/ObservableBag.java,v 1.1 2003/09/21 16:00:28 scolebourne Exp $
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowledgement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgement may appear in the software itself,
* if and wherever such third-party acknowledgements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.collections.observed;
import java.util.Set;
import org.apache.commons.collections.Bag;
/**
* Decorates a <code>Bag</code> implementation to observe modifications.
* <p>
* Each modifying method call made on this <code>Bag</code> is forwarded to a
* {@link ModificationHandler}.
* The handler manages the event, notifying listeners and optionally vetoing changes.
* The default handler is {@link StandardModificationHandler}.
* See this class for details of configuration available.
* <p>
* NOTE: The {@link #uniqueSet()} method returns a <code>Set</code> that is
* NOT observed. This is because the set should be unmodifiable.
*
* @since Commons Collections 3.0
* @version $Revision: 1.1 $ $Date: 2003/09/21 16:00:28 $
*
* @author Stephen Colebourne
*/
public class ObservableBag extends ObservableCollection implements Bag {
// Factories
//-----------------------------------------------------------------------
/**
* Factory method to create an observable bag.
* <p>
* A {@link StandardModificationHandler} will be created.
* This can be accessed by {@link #getHandler()} to add listeners.
*
* @param bag the bag to decorate, must not be null
* @return the observed Bag
* @throws IllegalArgumentException if the bag is null
*/
public static ObservableBag decorate(final Bag bag) {
return new ObservableBag(bag, null);
}
/**
* Factory method to create an observable bag using a listener or a handler.
* <p>
* A lot of functionality is available through this method.
* If you don't need the extra functionality, simply implement the
* {@link org.apache.commons.collections.observed.standard.StandardModificationListener}
* interface and pass it in as the second parameter.
* <p>
* Internally, an <code>ObservableBag</code> relies on a {@link ModificationHandler}.
* The handler receives all the events and processes them, typically by
* calling listeners. Different handler implementations can be plugged in
* to provide a flexible event system.
* <p>
* The handler implementation is determined by the listener parameter via
* the registered factories. The listener may be a manually configured
* <code>ModificationHandler</code> instance.
* <p>
* The listener is defined as an Object for maximum flexibility.
* It does not have to be a listener in the classic JavaBean sense.
* It is entirely up to the factory and handler as to how the parameter
* is interpretted. An IllegalArgumentException is thrown if no suitable
* handler can be found for this listener.
* <p>
* A <code>null</code> listener will create a {@link StandardModificationHandler}.
*
* @param bag the bag to decorate, must not be null
* @param listener bag listener, may be null
* @return the observed bag
* @throws IllegalArgumentException if the bag is null
* @throws IllegalArgumentException if there is no valid handler for the listener
*/
public static ObservableBag decorate(
final Bag bag,
final Object listener) {
if (bag == null) {
throw new IllegalArgumentException("Bag must not be null");
}
return new ObservableBag(bag, listener);
}
// Constructors
//-----------------------------------------------------------------------
/**
* Constructor that wraps (not copies).
* <p>
* The handler implementation is determined by the listener parameter via
* the registered factories. The listener may be a manually configured
* <code>ModificationHandler</code> instance.
*
* @param bag the bag to decorate, must not be null
* @param listener the listener, may be null
* @throws IllegalArgumentException if the bag is null
*/
protected ObservableBag(
final Bag bag,
final Object listener) {
super(bag, listener);
}
/**
* Typecast the collection to a Bag.
*
* @return the wrapped collection as a Bag
*/
private Bag getBag() {
return (Bag) getCollection();
}
// Bag API
//-----------------------------------------------------------------------
public int getCount(Object object) {
return getBag().getCount(object);
}
public Set uniqueSet() {
return getBag().uniqueSet();
}
//-----------------------------------------------------------------------
public boolean add(Object object) {
// override as Bag violates Collection contract
boolean result = false;
if (handler.preAdd(object)) {
result = collection.add(object);
handler.postAdd(object, true); // true, as result is misleading
}
return result;
}
public boolean add(Object object, int nCopies) {
boolean result = false;
if (handler.preAddNCopies(object, nCopies)) {
result = getBag().add(object, nCopies);
handler.postAddNCopies(object, nCopies, result);
}
return result;
}
public boolean remove(Object object, int nCopies) {
boolean result = false;
if (handler.preRemoveNCopies(object, nCopies)) {
result = getBag().remove(object, nCopies);
handler.postRemoveNCopies(object, nCopies, result);
}
return result;
}
}
1.5 +11 -11 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/standard/StandardModificationHandler.java
Index: StandardModificationHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/standard/StandardModificationHandler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- StandardModificationHandler.java 7 Sep 2003 10:33:33 -0000 1.4
+++ StandardModificationHandler.java 21 Sep 2003 16:00:28 -0000 1.5
@@ -62,7 +62,7 @@
import org.apache.commons.collections.observed.ModificationEventType;
import org.apache.commons.collections.observed.ModificationHandler;
import org.apache.commons.collections.observed.ModificationHandlerFactory;
-import org.apache.commons.collections.observed.ObservedCollection;
+import org.apache.commons.collections.observed.ObservableCollection;
/**
* The standard implementation of a <code>ModificationHandler</code> that
@@ -111,9 +111,9 @@
/**
* Constructor the creates the handler but leaves it invalid.
* <p>
- * The handler can only be used after {@link #init(ObservedCollection)} is
+ * The handler can only be used after {@link #init(ObservableCollection)} is
* called. This is normally done automatically by
- * {@link ObservedCollection#decorate(Collection, ModificationHandler)}.
+ * {@link ObservableCollection#decorate(Collection, ModificationHandler)}.
*/
public StandardModificationHandler() {
super();
@@ -122,9 +122,9 @@
/**
* Constructor the creates the handler but leaves it invalid.
* <p>
- * The handler can only be used after {@link #init(ObservedCollection)} is
+ * The handler can only be used after {@link #init(ObservableCollection)} is
* called. This is normally done automatically by
- * {@link ObservedCollection#decorate(Collection, ModificationHandler)}.
+ * {@link ObservableCollection#decorate(Collection, ModificationHandler)}.
*
* @param pre the pre listener
* @param preMask the mask for the pre listener
@@ -435,7 +435,7 @@
*/
protected boolean preEvent(
int type, int index, Object object,
- int repeat, Object previous, ObservedCollection range, int rangeOffset) {
+ int repeat, Object previous, ObservableCollection range, int rangeOffset) {
preSize = getObservedCollection().size();
return firePreEvent(type, index, object, repeat, previous, range, rangeOffset);
@@ -455,7 +455,7 @@
*/
protected boolean firePreEvent(
int type, int index, Object object, int repeat,
- Object previous, ObservedCollection range, int rangeOffset) {
+ Object previous, ObservableCollection range, int rangeOffset) {
if ((preMask & type) > 0) {
StandardPreModificationEvent event = null;
@@ -492,7 +492,7 @@
*/
protected void postEvent(
boolean modified, int type, int index, Object object,
- int repeat, Object previous, ObservedCollection range, int rangeOffset) {
+ int repeat, Object previous, ObservableCollection range, int rangeOffset) {
if (modified) {
firePostEvent(type, index, object, repeat, previous, range, rangeOffset);
@@ -512,7 +512,7 @@
*/
protected void firePostEvent(
int type, int index, Object object, int repeat,
- Object previous, ObservedCollection range, int rangeOffset) {
+ Object previous, ObservableCollection range, int rangeOffset) {
if ((postMask & type) > 0) {
StandardPostModificationEvent event = null;
1.4 +5 -5 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/standard/StandardPreModificationEvent.java
Index: StandardPreModificationEvent.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/standard/StandardPreModificationEvent.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- StandardPreModificationEvent.java 7 Sep 2003 10:33:33 -0000 1.3
+++ StandardPreModificationEvent.java 21 Sep 2003 16:00:28 -0000 1.4
@@ -58,7 +58,7 @@
package org.apache.commons.collections.observed.standard;
import org.apache.commons.collections.observed.ModificationHandler;
-import org.apache.commons.collections.observed.ObservedCollection;
+import org.apache.commons.collections.observed.ObservableCollection;
/**
* Event class that encapsulates all the event information for a
@@ -91,7 +91,7 @@
* @param previous the previous value being removed/replaced
*/
public StandardPreModificationEvent(
- final ObservedCollection obsCollection,
+ final ObservableCollection obsCollection,
final ModificationHandler handler,
final int type,
final int preSize,
@@ -99,7 +99,7 @@
final Object object,
final int repeat,
final Object previous,
- final ObservedCollection range,
+ final ObservableCollection range,
final int rangeOffset) {
super(obsCollection, handler, type, preSize, index,
1.4 +5 -5 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/standard/StandardPostModificationEvent.java
Index: StandardPostModificationEvent.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/standard/StandardPostModificationEvent.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- StandardPostModificationEvent.java 7 Sep 2003 10:33:33 -0000 1.3
+++ StandardPostModificationEvent.java 21 Sep 2003 16:00:28 -0000 1.4
@@ -58,7 +58,7 @@
package org.apache.commons.collections.observed.standard;
import org.apache.commons.collections.observed.ModificationHandler;
-import org.apache.commons.collections.observed.ObservedCollection;
+import org.apache.commons.collections.observed.ObservableCollection;
/**
* Event class that encapsulates all the event information for a
@@ -96,7 +96,7 @@
* @param rangeOffset the offset of the range, -1 if unknown
*/
public StandardPostModificationEvent(
- final ObservedCollection obsCollection,
+ final ObservableCollection obsCollection,
final ModificationHandler handler,
final int type,
final int preSize,
@@ -104,7 +104,7 @@
final Object object,
final int repeat,
final Object previous,
- final ObservedCollection range,
+ final ObservableCollection range,
final int rangeOffset) {
super(obsCollection, handler, type, preSize, index,
1.2 +1 -1 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/standard/package.html
Index: package.html
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/standard/package.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- package.html 3 Sep 2003 23:54:26 -0000 1.1
+++ package.html 21 Sep 2003 16:00:28 -0000 1.2
@@ -1,5 +1,5 @@
<BODY>
<p>
This package contains a standard implementation of the modification event classes
-that are used with ObservedCollection.
+that are used with ObservableCollection et al.
</BODY>
1.6 +8 -8 jakarta-commons/collections/src/java/org/apache/commons/collections/observed/standard/StandardModificationEvent.java
Index: StandardModificationEvent.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/observed/standard/StandardModificationEvent.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- StandardModificationEvent.java 7 Sep 2003 10:33:33 -0000 1.5
+++ StandardModificationEvent.java 21 Sep 2003 16:00:28 -0000 1.6
@@ -67,7 +67,7 @@
import org.apache.commons.collections.observed.ModificationEvent;
import org.apache.commons.collections.observed.ModificationEventType;
import org.apache.commons.collections.observed.ModificationHandler;
-import org.apache.commons.collections.observed.ObservedCollection;
+import org.apache.commons.collections.observed.ObservableCollection;
/**
* Event class that encapsulates the event information for a
@@ -97,7 +97,7 @@
/** The result of the method call */
protected final Object previous;
/** The range that the event came from, null if none */
- protected final ObservedCollection range;
+ protected final ObservableCollection range;
/** The offset of the range that the event came from, -1 if none */
protected final int rangeOffset;
@@ -118,7 +118,7 @@
* @param rangeOffset the offset of the range, -1 if unknown
*/
public StandardModificationEvent(
- final ObservedCollection obsCollection,
+ final ObservableCollection obsCollection,
final ModificationHandler handler,
final int type,
final int preSize,
@@ -126,7 +126,7 @@
final Object object,
final int repeat,
final Object previous,
- final ObservedCollection range,
+ final ObservableCollection range,
final int rangeOffset) {
super(obsCollection, handler, type);
@@ -230,7 +230,7 @@
*
* @return the range
*/
- public ObservedCollection getRange() {
+ public ObservableCollection getRange() {
return range;
}
@@ -311,7 +311,7 @@
*/
public String toString() {
StringBuffer buf = new StringBuffer(64);
- buf.append("ObservedEvent[type=");
+ buf.append("ModificationEvent[type=");
buf.append(ModificationEventType.toString(type));
if (index >= 0) {
buf.append(",index=");