001: /*
002: * Created on Nov 22, 2005
003: */
004: package uk.org.ponder.arrayutil;
005:
006: import java.util.ArrayList;
007: import java.util.Collection;
008: import java.util.Iterator;
009: import java.util.List;
010: import java.util.ListIterator;
011:
012: /** In the absence of any concrete generics, this class makes it a bit more
013: * pleasant to have a typesafe list. The primary value of this wrapper will
014: * be realised in dynamic environments like Hibernate, which will want directed
015: * to perform a "wrap-under" proxy of the contained List, while letting us
016: * retain our concrete exterior with type information.
017: * @author Antranig Basman (antranig@caret.cam.ac.uk)
018: *
019: */
020:
021: public abstract class TypedListWrapper implements List {
022: protected List wrapped = new ArrayList();
023:
024: /** Implementors will override this method, and in addition provide some
025: * typesafe add and get methods of their choosing *.
026: */
027: public abstract Class getWrappedType();
028:
029: public void setWrappedList(List wrapped) {
030: this .wrapped = wrapped;
031: }
032:
033: public int size() {
034: return wrapped.size();
035: }
036:
037: public void clear() {
038: wrapped.clear();
039: }
040:
041: public boolean isEmpty() {
042: return wrapped.isEmpty();
043: }
044:
045: public Object[] toArray() {
046: return wrapped.toArray();
047: }
048:
049: public Object get(int index) {
050: return wrapped.get(index);
051: }
052:
053: public Object remove(int index) {
054: return wrapped.remove(index);
055: }
056:
057: public void add(int index, Object element) {
058: wrapped.add(index, element);
059: }
060:
061: public int indexOf(Object o) {
062: return wrapped.indexOf(o);
063: }
064:
065: public int lastIndexOf(Object o) {
066: return wrapped.lastIndexOf(o);
067: }
068:
069: public boolean add(Object o) {
070: return wrapped.add(o);
071: }
072:
073: public boolean contains(Object o) {
074: return wrapped.contains(o);
075: }
076:
077: public boolean remove(Object o) {
078: return wrapped.remove(o);
079: }
080:
081: public boolean addAll(int index, Collection c) {
082: return wrapped.addAll(index, c);
083: }
084:
085: public boolean addAll(Collection c) {
086: return wrapped.addAll(c);
087: }
088:
089: public boolean containsAll(Collection c) {
090: return wrapped.containsAll(c);
091: }
092:
093: public boolean removeAll(Collection c) {
094: return wrapped.removeAll(c);
095: }
096:
097: public boolean retainAll(Collection c) {
098: return wrapped.retainAll(c);
099: }
100:
101: public Iterator iterator() {
102: return wrapped.iterator();
103: }
104:
105: public List subList(int fromIndex, int toIndex) {
106: return wrapped.subList(fromIndex, toIndex);
107: }
108:
109: public ListIterator listIterator() {
110: return wrapped.listIterator();
111: }
112:
113: public ListIterator listIterator(int index) {
114: return wrapped.listIterator(index);
115: }
116:
117: public Object set(int index, Object element) {
118: return wrapped.set(index, element);
119: }
120:
121: public Object[] toArray(Object[] a) {
122: return wrapped.toArray(a);
123: }
124: }
|