You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jc...@apache.org on 2008/04/12 20:36:23 UTC
svn commit: r647484 - in
/wicket/trunk/wicket/src/main/java/org/apache/wicket: ./ markup/html/form/
markup/repeater/data/ model/ util/collections/ util/tester/
Author: jcompagner
Date: Sat Apr 12 11:36:22 2008
New Revision: 647484
URL: http://svn.apache.org/viewvc?rev=647484&view=rev
Log:
more generics
including var args for behaviors/validators and child components
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/repeater/data/DataView.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/model/ResourceModel.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/IntHashMap.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/MicroMap.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/MiniMap.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=647484&r1=647483&r2=647484&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java Sat Apr 12 11:36:22 2008
@@ -926,27 +926,34 @@
* thread</a>.
* </p>
*
- * @param behavior
- * The behavior modifier to be added
+ * @param behaviors
+ * The behavior modifier(s) to be added
* @return this (to allow method call chaining)
*/
- public Component<T> add(final IBehavior behavior)
+ public Component<T> add(final IBehavior... behaviors)
{
- if (behavior == null)
+ if (behaviors == null)
{
throw new IllegalArgumentException("Argument may not be null");
}
- addBehavior(behavior);
-
- if (!behavior.isTemporary())
+ for (IBehavior behavior : behaviors)
{
- addStateChange(new AddedBehaviorChange(behavior));
- }
+ if (behavior == null)
+ {
+ throw new IllegalArgumentException("Argument may not be null");
+ }
- // Give handler the opportunity to bind this component
- behavior.bind(this);
+ addBehavior(behavior);
+ if (!behavior.isTemporary())
+ {
+ addStateChange(new AddedBehaviorChange(behavior));
+ }
+
+ // Give handler the opportunity to bind this component
+ behavior.bind(this);
+ }
return this;
}
@@ -1027,9 +1034,9 @@
setFlag(FLAG_BEFORE_RENDERING_SUPER_CALL_VERIFIED, false);
getApplication().notifyPreComponentOnBeforeRenderListeners(this);
- onBeforeRender();
- getApplication().notifyPostComponentOnBeforeRenderListeners(this);
-
+ onBeforeRender();
+ getApplication().notifyPostComponentOnBeforeRenderListeners(this);
+
if (!getFlag(FLAG_BEFORE_RENDERING_SUPER_CALL_VERIFIED))
{
throw new IllegalStateException(Component.class.getName() +
@@ -4018,11 +4025,13 @@
}
/**
+ * @param <V>
+ * The model type
* @param model
* The model to wrap if need be
* @return The wrapped model
*/
- protected final IModel wrap(final IModel< ? > model)
+ protected final <V> IModel<V> wrap(final IModel<V> model)
{
if (model instanceof IComponentAssignedModel)
{
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java?rev=647484&r1=647483&r2=647484&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java Sat Apr 12 11:36:22 2008
@@ -125,28 +125,32 @@
* Thrown if a child with the same id is replaced by the add operation.
* @return This
*/
- public final MarkupContainer<T> add(final Component< ? > child)
+ public final MarkupContainer<T> add(final Component< ? >... childs)
{
- checkHierarchyChange(child);
-
- if (child == null)
+ for (Component< ? > child : childs)
{
- throw new IllegalArgumentException("argument child may not be null");
- }
- if (log.isDebugEnabled())
- {
- log.debug("Add " + child.getId() + " to " + this);
- }
+ checkHierarchyChange(child);
- // Add to map
- addedComponent(child);
- if (put(child) != null)
- {
- throw new IllegalArgumentException(exceptionMessage("A child with id '" +
- child.getId() + "' already exists"));
- }
+ if (child == null)
+ {
+ throw new IllegalArgumentException("argument child may not be null");
+ }
+
+ if (log.isDebugEnabled())
+ {
+ log.debug("Add " + child.getId() + " to " + this);
+ }
+
+ // Add to map
+ addedComponent(child);
+ if (put(child) != null)
+ {
+ throw new IllegalArgumentException(exceptionMessage("A child with id '" +
+ child.getId() + "' already exists"));
+ }
+ }
return this;
}
@@ -154,26 +158,30 @@
* Replaces a child component of this container with another or just adds it in case no child
* with the same id existed yet.
*
- * @param child
- * The child
+ * @param childs
+ * The child(s) to be added or replaced
* @return This
*/
- public final MarkupContainer<T> addOrReplace(final Component< ? > child)
+ public final MarkupContainer<T> addOrReplace(final Component< ? >... childs)
{
- checkHierarchyChange(child);
-
- if (child == null)
+ for (Component< ? > child : childs)
{
- throw new IllegalArgumentException("argument child must be not null");
- }
- if (get(child.getId()) == null)
- {
- add(child);
- }
- else
- {
- replace(child);
+ checkHierarchyChange(child);
+
+ if (child == null)
+ {
+ throw new IllegalArgumentException("argument child must be not null");
+ }
+
+ if (get(child.getId()) == null)
+ {
+ add(child);
+ }
+ else
+ {
+ replace(child);
+ }
}
return this;
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java?rev=647484&r1=647483&r2=647484&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java Sat Apr 12 11:36:22 2008
@@ -64,7 +64,7 @@
*/
public AbstractChoice(final String id)
{
- this(id, new Model(new ArrayList()), new ChoiceRenderer());
+ this(id, new Model(new ArrayList<E>()), new ChoiceRenderer<E>());
}
/**
@@ -78,7 +78,7 @@
*/
public AbstractChoice(final String id, final List<E> choices)
{
- this(id, new Model((Serializable)choices), new ChoiceRenderer());
+ this(id, new Model((Serializable)choices), new ChoiceRenderer<E>());
}
/**
@@ -110,7 +110,7 @@
*/
public AbstractChoice(final String id, IModel<T> model, final List<E> choices)
{
- this(id, model, new Model((Serializable)choices), new ChoiceRenderer());
+ this(id, model, new Model((Serializable)choices), new ChoiceRenderer<E>());
}
/**
@@ -143,7 +143,7 @@
*/
public AbstractChoice(final String id, final IModel<List<E>> choices)
{
- this(id, choices, new ChoiceRenderer());
+ this(id, choices, new ChoiceRenderer<E>());
}
/**
@@ -178,7 +178,7 @@
*/
public AbstractChoice(final String id, IModel<T> model, final IModel<List<E>> choices)
{
- this(id, model, choices, new ChoiceRenderer());
+ this(id, model, choices, new ChoiceRenderer<E>());
}
/**
@@ -276,7 +276,7 @@
{
if (renderer == null)
{
- renderer = new ChoiceRenderer();
+ renderer = new ChoiceRenderer<E>();
}
this.renderer = renderer;
return this;
@@ -381,7 +381,7 @@
String selected)
{
Object objectValue = renderer.getDisplayValue(choice);
- Class objectClass = objectValue == null ? null : objectValue.getClass();
+ Class< ? extends Object> objectClass = objectValue == null ? null : objectValue.getClass();
String displayValue = "";
if (objectClass != null && objectClass != String.class)
{
@@ -459,7 +459,7 @@
{
private static final long serialVersionUID = 1L;
- private final IModel oldChoices;
+ private final IModel<List<E>> oldChoices;
/**
* Construct.
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java?rev=647484&r1=647483&r2=647484&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java Sat Apr 12 11:36:22 2008
@@ -472,28 +472,35 @@
/**
* Adds a validator to this form component.
*
- * @param validator
- * The validator
+ * @param validators
+ * The validator(s) to be added
* @return This
* @throws IllegalArgumentException
* if validator is null
* @see IValidator
* @see IValidatorAddListener
*/
- public final FormComponent<T> add(final IValidator validator)
+ public final FormComponent<T> add(final IValidator... validators)
{
- if (validator == null)
+ if (validators == null)
{
throw new IllegalArgumentException("validator argument cannot be null");
}
- // add the validator
- validators_add(validator);
-
- // see whether the validator listens for add events
- if (validator instanceof IValidatorAddListener)
+ for (IValidator validator : validators)
{
- ((IValidatorAddListener)validator).onAdded(this);
+ if (validator == null)
+ {
+ throw new IllegalArgumentException("validator argument cannot be null");
+ }
+ // add the validator
+ validators_add(validator);
+
+ // see whether the validator listens for add events
+ if (validator instanceof IValidatorAddListener)
+ {
+ ((IValidatorAddListener)validator).onAdded(this);
+ }
}
// return this for chaining
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/repeater/data/DataView.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/repeater/data/DataView.java?rev=647484&r1=647483&r2=647484&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/repeater/data/DataView.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/repeater/data/DataView.java Sat Apr 12 11:36:22 2008
@@ -59,6 +59,8 @@
*
* @author Igor Vaynberg (ivaynberg)
*
+ * @param <T>
+ * The Model type.
*/
public abstract class DataView<T> extends DataViewBase<T>
{
@@ -74,7 +76,7 @@
* @param dataProvider
* data provider
*/
- protected DataView(String id, IDataProvider<T> dataProvider)
+ protected DataView(String id, IDataProvider<T> dataProvider)
{
super(id, dataProvider);
}
@@ -87,7 +89,7 @@
* @param itemsPerPage
* items per page
*/
- protected DataView(String id, IDataProvider<T> dataProvider, int itemsPerPage)
+ protected DataView(String id, IDataProvider<T> dataProvider, int itemsPerPage)
{
super(id, dataProvider);
setItemsPerPage(itemsPerPage);
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/model/ResourceModel.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/model/ResourceModel.java?rev=647484&r1=647483&r2=647484&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/model/ResourceModel.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/model/ResourceModel.java Sat Apr 12 11:36:22 2008
@@ -30,7 +30,9 @@
* @author Igor Vaynberg (ivaynberg)
*
*/
-public class ResourceModel extends AbstractReadOnlyModel implements IComponentAssignedModel
+public class ResourceModel extends AbstractReadOnlyModel<String>
+ implements
+ IComponentAssignedModel<String>
{
private static final long serialVersionUID = 1L;
@@ -67,18 +69,19 @@
/**
* @see org.apache.wicket.model.AbstractReadOnlyModel#getObject()
*/
- public Object getObject()
+ @Override
+ public String getObject()
{
// this shouldn't be called always wrapped!
return Application.get().getResourceSettings().getLocalizer().getString(resourceKey,
- (Component)null, defaultValue);
+ (Component<String>)null, defaultValue);
}
/**
* @see org.apache.wicket.model.IComponentAssignedModel#wrapOnAssignment(org.apache.wicket.Component)
*/
- public IWrapModel wrapOnAssignment(final Component component)
+ public IWrapModel<String> wrapOnAssignment(final Component<String> component)
{
return new AssignmentWrapper(resourceKey, defaultValue, component);
}
@@ -86,11 +89,11 @@
/**
*
*/
- private class AssignmentWrapper extends ResourceModel implements IWrapModel
+ private class AssignmentWrapper extends ResourceModel implements IWrapModel<String>
{
private static final long serialVersionUID = 1L;
- private final Component component;
+ private final Component<String> component;
/**
* Construct.
@@ -99,7 +102,8 @@
* @param defaultValue
* @param component
*/
- public AssignmentWrapper(String resourceKey, String defaultValue, Component component)
+ public AssignmentWrapper(String resourceKey, String defaultValue,
+ Component<String> component)
{
super(resourceKey, defaultValue);
this.component = component;
@@ -108,7 +112,7 @@
/**
* @see org.apache.wicket.model.IWrapModel#getWrappedModel()
*/
- public IModel getWrappedModel()
+ public IModel<String> getWrappedModel()
{
return ResourceModel.this;
}
@@ -116,12 +120,14 @@
/**
* @see org.apache.wicket.model.AbstractReadOnlyModel#getObject()
*/
- public Object getObject()
+ @Override
+ public String getObject()
{
return Application.get().getResourceSettings().getLocalizer().getString(resourceKey,
component, defaultValue);
}
+ @Override
public void detach()
{
super.detach();
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/IntHashMap.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/IntHashMap.java?rev=647484&r1=647483&r2=647484&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/IntHashMap.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/IntHashMap.java Sat Apr 12 11:36:22 2008
@@ -32,12 +32,15 @@
* that the key is directly an integer. So no hash is calculated or key object is stored.
*
* @author jcompagner
+ *
+ * @param <V>
+ * The value in the map
*/
-public class IntHashMap implements Cloneable, Serializable
+public class IntHashMap<V> implements Cloneable, Serializable
{
- transient volatile Set keySet = null;
+ transient volatile Set<Integer> keySet = null;
- transient volatile Collection values = null;
+ transient volatile Collection<V> values = null;
/**
* The default initial capacity - MUST be a power of two.
@@ -58,7 +61,7 @@
/**
* The table, resized as necessary. Length MUST Always be a power of two.
*/
- transient Entry[] table;
+ transient Entry<V>[] table;
/**
* The number of key-value mappings contained in this identity hash map.
@@ -102,7 +105,7 @@
if (initialCapacity < 0)
{
throw new IllegalArgumentException("Illegal initial capacity: " + //$NON-NLS-1$
- initialCapacity);
+ initialCapacity);
}
if (initialCapacity > MAXIMUM_CAPACITY)
{
@@ -111,7 +114,7 @@
if (loadFactor <= 0 || Float.isNaN(loadFactor))
{
throw new IllegalArgumentException("Illegal load factor: " + //$NON-NLS-1$
- loadFactor);
+ loadFactor);
}
// Find a power of 2 >= initialCapacity
@@ -213,7 +216,7 @@
public Object get(int key)
{
int i = indexFor(key, table.length);
- Entry e = table[i];
+ Entry<V> e = table[i];
while (true)
{
if (e == null)
@@ -238,7 +241,7 @@
public boolean containsKey(int key)
{
int i = indexFor(key, table.length);
- Entry e = table[i];
+ Entry<V> e = table[i];
while (e != null)
{
if (key == e.key)
@@ -257,10 +260,10 @@
* @param key
* @return The Entry object for the given hash key
*/
- Entry getEntry(int key)
+ Entry<V> getEntry(int key)
{
int i = indexFor(key, table.length);
- Entry e = table[i];
+ Entry<V> e = table[i];
while (e != null && !(key == e.key))
{
e = e.next;
@@ -280,15 +283,15 @@
* mapping for key. A <tt>null</tt> return can also indicate that the HashMap
* previously associated <tt>null</tt> with the specified key.
*/
- public Object put(int key, Object value)
+ public Object put(int key, V value)
{
int i = indexFor(key, table.length);
- for (Entry e = table[i]; e != null; e = e.next)
+ for (Entry<V> e = table[i]; e != null; e = e.next)
{
if (key == e.key)
{
- Object oldValue = e.value;
+ V oldValue = e.value;
e.value = value;
return oldValue;
}
@@ -307,7 +310,7 @@
* @param key
* @param value
*/
- private void putForCreate(int key, Object value)
+ private void putForCreate(int key, V value)
{
int i = indexFor(key, table.length);
@@ -316,7 +319,7 @@
* will only happen for construction if the input Map is a sorted map whose ordering is
* inconsistent w/ equals.
*/
- for (Entry e = table[i]; e != null; e = e.next)
+ for (Entry<V> e = table[i]; e != null; e = e.next)
{
if (key == e.key)
{
@@ -328,11 +331,11 @@
createEntry(key, value, i);
}
- void putAllForCreate(IntHashMap m)
+ void putAllForCreate(IntHashMap<V> m)
{
- for (Iterator i = m.entrySet().iterator(); i.hasNext();)
+ for (Iterator<Entry<V>> i = m.entrySet().iterator(); i.hasNext();)
{
- Entry e = (Entry)i.next();
+ Entry<V> e = i.next();
putForCreate(e.getKey(), e.getValue());
}
}
@@ -350,7 +353,7 @@
*/
void resize(int newCapacity)
{
- Entry[] oldTable = table;
+ Entry<V>[] oldTable = table;
int oldCapacity = oldTable.length;
if (oldCapacity == MAXIMUM_CAPACITY)
{
@@ -358,7 +361,7 @@
return;
}
- Entry[] newTable = new Entry[newCapacity];
+ Entry<V>[] newTable = new Entry[newCapacity];
transfer(newTable);
table = newTable;
threshold = (int)(newCapacity * loadFactor);
@@ -369,19 +372,19 @@
*
* @param newTable
*/
- void transfer(Entry[] newTable)
+ void transfer(Entry<V>[] newTable)
{
- Entry[] src = table;
+ Entry<V>[] src = table;
int newCapacity = newTable.length;
for (int j = 0; j < src.length; j++)
{
- Entry e = src[j];
+ Entry<V> e = src[j];
if (e != null)
{
src[j] = null;
do
{
- Entry next = e.next;
+ Entry<V> next = e.next;
int i = indexFor(e.key, newCapacity);
e.next = newTable[i];
newTable[i] = e;
@@ -401,7 +404,7 @@
* @throws NullPointerException
* if the specified map is null.
*/
- public void putAll(IntHashMap m)
+ public void putAll(IntHashMap<V> m)
{
int numKeysToBeAdded = m.size();
if (numKeysToBeAdded == 0)
@@ -434,9 +437,9 @@
}
}
- for (Iterator i = m.entrySet().iterator(); i.hasNext();)
+ for (Iterator<Entry<V>> i = m.entrySet().iterator(); i.hasNext();)
{
- Entry e = (Entry)i.next();
+ Entry<V> e = i.next();
put(e.getKey(), e.getValue());
}
}
@@ -452,7 +455,7 @@
*/
public Object remove(int key)
{
- Entry e = removeEntryForKey(key);
+ Entry<V> e = removeEntryForKey(key);
return (e == null ? e : e.value);
}
@@ -463,15 +466,15 @@
* @param key
* @return The Entry object that was removed
*/
- Entry removeEntryForKey(int key)
+ Entry<V> removeEntryForKey(int key)
{
int i = indexFor(key, table.length);
- Entry prev = table[i];
- Entry e = prev;
+ Entry<V> prev = table[i];
+ Entry<V> e = prev;
while (e != null)
{
- Entry next = e.next;
+ Entry<V> next = e.next;
if (key == e.key)
{
modCount++;
@@ -499,22 +502,22 @@
* @param o
* @return The entry that was removed
*/
- Entry removeMapping(Object o)
+ Entry<V> removeMapping(Object o)
{
if (!(o instanceof Entry))
{
return null;
}
- Entry entry = (Entry)o;
+ Entry<V> entry = (Entry)o;
int key = entry.getKey();
int i = indexFor(key, table.length);
- Entry prev = table[i];
- Entry e = prev;
+ Entry<V> prev = table[i];
+ Entry<V> e = prev;
while (e != null)
{
- Entry next = e.next;
+ Entry<V> next = e.next;
if (e.key == key && e.equals(entry))
{
modCount++;
@@ -542,7 +545,7 @@
public void clear()
{
modCount++;
- Entry tab[] = table;
+ Entry<V> tab[] = table;
for (int i = 0; i < tab.length; i++)
{
tab[i] = null;
@@ -564,10 +567,10 @@
return containsNullValue();
}
- Entry tab[] = table;
+ Entry<V> tab[] = table;
for (int i = 0; i < tab.length; i++)
{
- for (Entry e = tab[i]; e != null; e = e.next)
+ for (Entry<V> e = tab[i]; e != null; e = e.next)
{
if (value.equals(e.value))
{
@@ -585,10 +588,10 @@
*/
private boolean containsNullValue()
{
- Entry tab[] = table;
+ Entry<V> tab[] = table;
for (int i = 0; i < tab.length; i++)
{
- for (Entry e = tab[i]; e != null; e = e.next)
+ for (Entry<V> e = tab[i]; e != null; e = e.next)
{
if (e.value == null)
{
@@ -605,9 +608,10 @@
*
* @return a shallow copy of this map.
*/
+ @Override
public Object clone() throws CloneNotSupportedException
{
- IntHashMap result = null;
+ IntHashMap<V> result = null;
try
{
result = (IntHashMap)super.clone();
@@ -628,11 +632,11 @@
/**
* @author jcompagner
*/
- public static class Entry
+ public static class Entry<V>
{
final int key;
- Object value;
- Entry next;
+ V value;
+ Entry<V> next;
/**
* Create new entry.
@@ -641,7 +645,7 @@
* @param v
* @param n
*/
- Entry(int k, Object v, Entry n)
+ Entry(int k, V v, Entry<V> n)
{
value = v;
next = n;
@@ -659,7 +663,7 @@
/**
* @return Gets the value object of this entry
*/
- public Object getValue()
+ public V getValue()
{
return value;
}
@@ -668,9 +672,9 @@
* @param newValue
* @return The previous value
*/
- public Object setValue(Object newValue)
+ public V setValue(V newValue)
{
- Object oldValue = value;
+ V oldValue = value;
value = newValue;
return oldValue;
}
@@ -678,13 +682,14 @@
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
+ @Override
public boolean equals(Object o)
{
if (!(o instanceof Entry))
{
return false;
}
- Entry e = (Entry)o;
+ Entry<V> e = (Entry<V>)o;
int k1 = getKey();
int k2 = e.getKey();
if (k1 == k2)
@@ -702,6 +707,7 @@
/**
* @see java.lang.Object#hashCode()
*/
+ @Override
public int hashCode()
{
return key ^ (value == null ? 0 : value.hashCode());
@@ -710,6 +716,7 @@
/**
* @see java.lang.Object#toString()
*/
+ @Override
public String toString()
{
return getKey() + "=" + getValue(); //$NON-NLS-1$
@@ -726,9 +733,9 @@
* @param value
* @param bucketIndex
*/
- void addEntry(int key, Object value, int bucketIndex)
+ void addEntry(int key, V value, int bucketIndex)
{
- table[bucketIndex] = new Entry(key, value, table[bucketIndex]);
+ table[bucketIndex] = new Entry<V>(key, value, table[bucketIndex]);
if (size++ >= threshold)
{
resize(2 * table.length);
@@ -746,25 +753,25 @@
* @param value
* @param bucketIndex
*/
- void createEntry(int key, Object value, int bucketIndex)
+ void createEntry(int key, V value, int bucketIndex)
{
- table[bucketIndex] = new Entry(key, value, table[bucketIndex]);
+ table[bucketIndex] = new Entry<V>(key, value, table[bucketIndex]);
size++;
}
- private abstract class HashIterator implements Iterator
+ private abstract class HashIterator<H> implements Iterator<H>
{
- Entry next; // next entry to return
+ Entry<V> next; // next entry to return
int expectedModCount; // For fast-fail
int index; // current slot
- Entry current; // current entry
+ Entry<V> current; // current entry
HashIterator()
{
expectedModCount = modCount;
- Entry[] t = table;
+ Entry<V>[] t = table;
int i = t.length;
- Entry n = null;
+ Entry<V> n = null;
if (size != 0)
{ // advance to first entry
while (i > 0 && (n = t[--i]) == null)
@@ -784,20 +791,20 @@
return next != null;
}
- Entry nextEntry()
+ Entry<V> nextEntry()
{
if (modCount != expectedModCount)
{
throw new ConcurrentModificationException();
}
- Entry e = next;
+ Entry<V> e = next;
if (e == null)
{
throw new NoSuchElementException();
}
- Entry n = e.next;
- Entry[] t = table;
+ Entry<V> n = e.next;
+ Entry<V>[] t = table;
int i = index;
while (n == null && i > 0)
{
@@ -829,58 +836,59 @@
}
- private class ValueIterator extends HashIterator
+ private class ValueIterator extends HashIterator<V>
{
/**
* @see java.util.Iterator#next()
*/
- public Object next()
+ public V next()
{
return nextEntry().value;
}
}
- private class KeyIterator extends HashIterator
+ private class KeyIterator extends HashIterator<Integer>
{
/**
* @see java.util.Iterator#next()
*/
- public Object next()
+ public Integer next()
{
return new Integer(nextEntry().getKey());
}
}
- private class EntryIterator extends HashIterator
+ private class EntryIterator extends HashIterator<Entry<V>>
{
/**
* @see java.util.Iterator#next()
*/
- public Object next()
+ public Entry<V> next()
{
- return nextEntry();
+ Entry<V> nextEntry = nextEntry();
+ return nextEntry;
}
}
// Subclass overrides these to alter behavior of views' iterator() method
- Iterator newKeyIterator()
+ Iterator<Integer> newKeyIterator()
{
return new KeyIterator();
}
- Iterator newValueIterator()
+ Iterator<V> newValueIterator()
{
return new ValueIterator();
}
- Iterator newEntryIterator()
+ Iterator<Entry<V>> newEntryIterator()
{
return new EntryIterator();
}
// Views
- private transient Set entrySet = null;
+ private transient Set<Entry<V>> entrySet = null;
/**
* Returns a set view of the keys contained in this map. The set is backed by the map, so
@@ -892,18 +900,19 @@
*
* @return a set view of the keys contained in this map.
*/
- public Set keySet()
+ public Set<Integer> keySet()
{
- Set ks = keySet;
+ Set<Integer> ks = keySet;
return (ks != null ? ks : (keySet = new KeySet()));
}
- private class KeySet extends AbstractSet
+ private class KeySet extends AbstractSet<Integer>
{
/**
* @see java.util.AbstractCollection#iterator()
*/
- public Iterator iterator()
+ @Override
+ public Iterator<Integer> iterator()
{
return newKeyIterator();
}
@@ -911,6 +920,7 @@
/**
* @see java.util.AbstractCollection#size()
*/
+ @Override
public int size()
{
return size;
@@ -919,6 +929,7 @@
/**
* @see java.util.AbstractCollection#contains(java.lang.Object)
*/
+ @Override
public boolean contains(Object o)
{
if (o instanceof Number)
@@ -931,6 +942,7 @@
/**
* @see java.util.AbstractCollection#remove(java.lang.Object)
*/
+ @Override
public boolean remove(Object o)
{
if (o instanceof Number)
@@ -943,6 +955,7 @@
/**
* @see java.util.AbstractCollection#clear()
*/
+ @Override
public void clear()
{
IntHashMap.this.clear();
@@ -959,18 +972,19 @@
*
* @return a collection view of the values contained in this map.
*/
- public Collection values()
+ public Collection<V> values()
{
- Collection vs = values;
+ Collection<V> vs = values;
return (vs != null ? vs : (values = new Values()));
}
- private class Values extends AbstractCollection
+ private class Values extends AbstractCollection<V>
{
/**
* @see java.util.AbstractCollection#iterator()
*/
- public Iterator iterator()
+ @Override
+ public Iterator<V> iterator()
{
return newValueIterator();
}
@@ -978,6 +992,7 @@
/**
* @see java.util.AbstractCollection#size()
*/
+ @Override
public int size()
{
return size;
@@ -986,6 +1001,7 @@
/**
* @see java.util.AbstractCollection#contains(java.lang.Object)
*/
+ @Override
public boolean contains(Object o)
{
return containsValue(o);
@@ -994,6 +1010,7 @@
/**
* @see java.util.AbstractCollection#clear()
*/
+ @Override
public void clear()
{
IntHashMap.this.clear();
@@ -1012,18 +1029,19 @@
* @return a collection view of the mappings contained in this map.
* @see Map.Entry
*/
- public Set entrySet()
+ public Set<Entry<V>> entrySet()
{
- Set es = entrySet;
+ Set<Entry<V>> es = entrySet;
return (es != null ? es : (entrySet = new EntrySet()));
}
- private class EntrySet extends AbstractSet
+ private class EntrySet extends AbstractSet<Entry<V>>
{
/**
* @see java.util.AbstractCollection#iterator()
*/
- public Iterator iterator()
+ @Override
+ public Iterator<Entry<V>> iterator()
{
return newEntryIterator();
}
@@ -1031,20 +1049,22 @@
/**
* @see java.util.AbstractCollection#contains(java.lang.Object)
*/
+ @Override
public boolean contains(Object o)
{
if (!(o instanceof Entry))
{
return false;
}
- Entry e = (Entry)o;
- Entry candidate = getEntry(e.getKey());
+ Entry<V> e = (Entry)o;
+ Entry<V> candidate = getEntry(e.getKey());
return candidate != null && candidate.equals(e);
}
/**
* @see java.util.AbstractCollection#remove(java.lang.Object)
*/
+ @Override
public boolean remove(Object o)
{
return removeMapping(o) != null;
@@ -1053,6 +1073,7 @@
/**
* @see java.util.AbstractCollection#size()
*/
+ @Override
public int size()
{
return size;
@@ -1061,6 +1082,7 @@
/**
* @see java.util.AbstractCollection#clear()
*/
+ @Override
public void clear()
{
IntHashMap.this.clear();
@@ -1093,9 +1115,9 @@
s.writeInt(size);
// Write out keys and values (alternating)
- for (Iterator i = entrySet().iterator(); i.hasNext();)
+ for (Iterator<Entry<V>> i = entrySet().iterator(); i.hasNext();)
{
- Entry e = (Entry)i.next();
+ Entry<V> e = i.next();
s.writeInt(e.getKey());
s.writeObject(e.getValue());
}
@@ -1128,7 +1150,7 @@
for (int i = 0; i < size; i++)
{
int key = s.readInt();
- Object value = s.readObject();
+ V value = (V)s.readObject();
putForCreate(key, value);
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/MicroMap.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/MicroMap.java?rev=647484&r1=647483&r2=647484&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/MicroMap.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/MicroMap.java Sat Apr 12 11:36:22 2008
@@ -31,8 +31,12 @@
* component.
*
* @author Jonathan Locke
+ * @param <K>
+ * Key type
+ * @param <V>
+ * Value type
*/
-public final class MicroMap implements Map, Serializable
+public final class MicroMap<K, V> implements Map<K, V>, Serializable
{
private static final long serialVersionUID = 1L;
@@ -40,10 +44,10 @@
public static final int MAX_ENTRIES = 1;
/** The one and only key in this tiny map */
- private Object key;
+ private K key;
/** The value for the only key in this tiny map */
- private Object value;
+ private V value;
/**
* Constructor
@@ -60,7 +64,7 @@
* @param value
* The value
*/
- public MicroMap(final Object key, final Object value)
+ public MicroMap(final K key, final V value)
{
put(key, value);
}
@@ -108,7 +112,7 @@
/**
* @see java.util.Map#get(java.lang.Object)
*/
- public Object get(final Object key)
+ public V get(final Object key)
{
if (key.equals(this.key))
{
@@ -121,12 +125,12 @@
/**
* @see java.util.Map#put(java.lang.Object, java.lang.Object)
*/
- public Object put(final Object key, final Object value)
+ public V put(final K key, final V value)
{
// Replace?
if (key.equals(this.key))
{
- final Object oldValue = this.value;
+ final V oldValue = this.value;
this.value = value;
@@ -153,14 +157,14 @@
/**
* @see java.util.Map#remove(java.lang.Object)
*/
- public Object remove(final Object key)
+ public V remove(final Object key)
{
if (key.equals(this.key))
{
- final Object oldValue = this.value;
+ final V oldValue = value;
this.key = null;
- this.value = null;
+ value = null;
return oldValue;
}
@@ -171,11 +175,11 @@
/**
* @see java.util.Map#putAll(java.util.Map)
*/
- public void putAll(final Map map)
+ public void putAll(final Map< ? extends K, ? extends V> map)
{
if (map.size() <= MAX_ENTRIES)
{
- final Map.Entry e = (Map.Entry)map.entrySet().iterator().next();
+ final Entry< ? extends K, ? extends V> e = map.entrySet().iterator().next();
put(e.getKey(), e.getValue());
}
@@ -197,20 +201,21 @@
/**
* @see java.util.Map#keySet()
*/
- public Set keySet()
+ public Set<K> keySet()
{
- return new AbstractSet()
+ return new AbstractSet<K>()
{
- public Iterator iterator()
+ @Override
+ public Iterator<K> iterator()
{
- return new Iterator()
+ return new Iterator<K>()
{
public boolean hasNext()
{
return index < MicroMap.this.size();
}
- public Object next()
+ public K next()
{
if (!hasNext())
{
@@ -230,6 +235,7 @@
};
}
+ @Override
public int size()
{
return MicroMap.this.size();
@@ -240,11 +246,12 @@
/**
* @see java.util.Map#values()
*/
- public Collection values()
+ public Collection<V> values()
{
- return new AbstractList()
+ return new AbstractList<V>()
{
- public Object get(final int index)
+ @Override
+ public V get(final int index)
{
if (index > size() - 1)
{
@@ -253,6 +260,7 @@
return value;
}
+ @Override
public int size()
{
return MicroMap.this.size();
@@ -263,20 +271,21 @@
/**
* @see java.util.Map#entrySet()
*/
- public Set entrySet()
+ public Set<Entry<K, V>> entrySet()
{
- return new AbstractSet()
+ return new AbstractSet<Entry<K, V>>()
{
- public Iterator iterator()
+ @Override
+ public Iterator<Entry<K, V>> iterator()
{
- return new Iterator()
+ return new Iterator<Entry<K, V>>()
{
public boolean hasNext()
{
return index < MicroMap.this.size();
}
- public Object next()
+ public Entry<K, V> next()
{
if (!hasNext())
{
@@ -284,21 +293,21 @@
}
index++;
- return new Map.Entry()
+ return new Map.Entry<K, V>()
{
- public Object getKey()
+ public K getKey()
{
return key;
}
- public Object getValue()
+ public V getValue()
{
return value;
}
- public Object setValue(final Object value)
+ public V setValue(final V value)
{
- final Object oldValue = MicroMap.this.value;
+ final V oldValue = MicroMap.this.value;
MicroMap.this.value = value;
@@ -316,6 +325,7 @@
};
}
+ @Override
public int size()
{
return MicroMap.this.size();
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/MiniMap.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/MiniMap.java?rev=647484&r1=647483&r2=647484&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/MiniMap.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/collections/MiniMap.java Sat Apr 12 11:36:22 2008
@@ -30,16 +30,20 @@
* index. Null key entries are available for use. This means that null is not a valid key.
*
* @author Jonathan Locke
+ * @param <K>
+ * Key type
+ * @param <V>
+ * Value type
*/
-public class MiniMap implements Map, Serializable
+public class MiniMap<K, V> implements Map<K, V>, Serializable
{
private static final long serialVersionUID = 1L;
/** The array of keys. Keys that are null are not used. */
- private final Object[] keys;
+ private final K[] keys;
/** The array of values which correspond by index with the keys array. */
- private final Object[] values;
+ private final V[] values;
/** The number of valid entries */
private int size;
@@ -55,8 +59,8 @@
*/
public MiniMap(final int maxEntries)
{
- keys = new Object[maxEntries];
- values = new Object[maxEntries];
+ keys = (K[])new Object[maxEntries];
+ values = (V[])new Object[maxEntries];
}
/**
@@ -67,7 +71,7 @@
* @param maxEntries
* The maximum number of entries this map can hold
*/
- public MiniMap(final Map map, final int maxEntries)
+ public MiniMap(final Map< ? extends K, ? extends V> map, final int maxEntries)
{
this(maxEntries);
putAll(map);
@@ -116,7 +120,7 @@
/**
* @see java.util.Map#get(java.lang.Object)
*/
- public Object get(final Object key)
+ public V get(final Object key)
{
// Search for key
final int index = findKey(key);
@@ -134,7 +138,7 @@
/**
* @see java.util.Map#put(java.lang.Object, java.lang.Object)
*/
- public Object put(final Object key, final Object value)
+ public V put(final K key, final V value)
{
// Search for key
final int index = findKey(key);
@@ -142,7 +146,7 @@
if (index != -1)
{
// Replace existing value
- final Object oldValue = values[index];
+ final V oldValue = values[index];
values[index] = value;
return oldValue;
}
@@ -169,7 +173,7 @@
/**
* @see java.util.Map#remove(java.lang.Object)
*/
- public Object remove(final Object key)
+ public V remove(final Object key)
{
// Search for key
final int index = findKey(key);
@@ -177,7 +181,7 @@
if (index != -1)
{
// Store value
- final Object oldValue = values[index];
+ final V oldValue = values[index];
keys[index] = null;
values[index] = null;
@@ -192,11 +196,12 @@
/**
* @see java.util.Map#putAll(java.util.Map)
*/
- public void putAll(final Map map)
+ public void putAll(Map< ? extends K, ? extends V> map)
{
- for (final Iterator iterator = map.entrySet().iterator(); iterator.hasNext();)
+ for (final Iterator< ? extends Entry< ? extends K, ? extends V>> iterator = map.entrySet()
+ .iterator(); iterator.hasNext();)
{
- final Map.Entry e = (Map.Entry)iterator.next();
+ final Map.Entry< ? extends K, ? extends V> e = iterator.next();
put(e.getKey(), e.getValue());
}
}
@@ -218,20 +223,21 @@
/**
* @see java.util.Map#keySet()
*/
- public Set keySet()
+ public Set<K> keySet()
{
- return new AbstractSet()
+ return new AbstractSet<K>()
{
- public Iterator iterator()
+ @Override
+ public Iterator<K> iterator()
{
- return new Iterator()
+ return new Iterator<K>()
{
public boolean hasNext()
{
return i < size - 1;
}
- public Object next()
+ public K next()
{
// Just in case... (WICKET-428)
if (!hasNext())
@@ -257,6 +263,7 @@
};
}
+ @Override
public int size()
{
return size;
@@ -267,11 +274,12 @@
/**
* @see java.util.Map#values()
*/
- public Collection values()
+ public Collection<V> values()
{
- return new AbstractList()
+ return new AbstractList<V>()
{
- public Object get(final int index)
+ @Override
+ public V get(final int index)
{
if (index > size - 1)
{
@@ -287,6 +295,7 @@
return values[keyIndex];
}
+ @Override
public int size()
{
return size;
@@ -297,20 +306,21 @@
/**
* @see java.util.Map#entrySet()
*/
- public Set entrySet()
+ public Set<Entry<K, V>> entrySet()
{
- return new AbstractSet()
+ return new AbstractSet<Entry<K, V>>()
{
- public Iterator iterator()
+ @Override
+ public Iterator<Entry<K, V>> iterator()
{
- return new Iterator()
+ return new Iterator<Entry<K, V>>()
{
public boolean hasNext()
{
return index < size;
}
- public Object next()
+ public Entry<K, V> next()
{
if (!hasNext())
{
@@ -321,21 +331,21 @@
index++;
- return new Map.Entry()
+ return new Map.Entry<K, V>()
{
- public Object getKey()
+ public K getKey()
{
return keys[keyIndex];
}
- public Object getValue()
+ public V getValue()
{
return values[keyIndex];
}
- public Object setValue(final Object value)
+ public V setValue(final V value)
{
- final Object oldValue = values[keyIndex];
+ final V oldValue = values[keyIndex];
values[keyIndex] = value;
@@ -356,6 +366,7 @@
};
}
+ @Override
public int size()
{
return size;
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=647484&r1=647483&r2=647484&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java Sat Apr 12 11:36:22 2008
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.util.tester;
+import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@@ -116,16 +117,19 @@
*/
public static class DummyWebApplication extends WebApplication
{
- public Class<? extends Page> getHomePage()
+ @Override
+ public Class< ? extends Page> getHomePage()
{
return DummyHomePage.class;
}
+ @Override
protected void outputDevelopmentModeWarning()
{
// Do nothing.
}
+ @Override
protected ISessionStore newSessionStore()
{
// Don't use a filestore, or we spawn lots of threads, which makes
@@ -156,16 +160,19 @@
/**
* @see org.apache.wicket.Application#getHomePage()
*/
- public Class<? extends Page> getHomePage()
+ @Override
+ public Class< ? extends Page> getHomePage()
{
return homePage;
}
+ @Override
protected void outputDevelopmentModeWarning()
{
// Do nothing.
}
+ @Override
protected ISessionStore newSessionStore()
{
// Don't use a filestore, or we spawn lots of threads, which
@@ -737,7 +744,7 @@
*/
else if (linkComponent instanceof SubmitLink)
{
- SubmitLink submitLink = (SubmitLink)linkComponent;
+ SubmitLink< ? > submitLink = (SubmitLink)linkComponent;
String pageRelativePath = submitLink.getInputName();
getParametersForNextRequest().put(pageRelativePath, "x");
@@ -746,7 +753,7 @@
// if the link is a normal link (or ResourceLink)
else if (linkComponent instanceof AbstractLink)
{
- AbstractLink link = (AbstractLink)linkComponent;
+ AbstractLink< ? > link = (AbstractLink)linkComponent;
/*
* If the link is a bookmarkable link, then we need to transfer the parameters to the
@@ -759,11 +766,11 @@
{
Field parametersField = BookmarkablePageLink.class.getDeclaredField("parameters");
Method getParametersMethod = BookmarkablePageLink.class.getDeclaredMethod(
- "getPageParameters", null);
+ "getPageParameters", (Class[])null);
getParametersMethod.setAccessible(true);
PageParameters parameters = (PageParameters)getParametersMethod.invoke(
- bookmarkablePageLink, null);
+ bookmarkablePageLink, (Class[])null);
setParametersForNextRequest(parameters);
}
catch (Exception e)
@@ -897,7 +904,7 @@
*/
public Result hasNoErrorMessage()
{
- List messages = getMessages(FeedbackMessage.ERROR);
+ List<Serializable> messages = getMessages(FeedbackMessage.ERROR);
return isTrue("expect no error message, but contains\n" +
WicketTesterHelper.asLined(messages), messages.isEmpty());
}
@@ -909,7 +916,7 @@
*/
public Result hasNoInfoMessage()
{
- List messages = getMessages(FeedbackMessage.INFO);
+ List<Serializable> messages = getMessages(FeedbackMessage.INFO);
return isTrue("expect no info message, but contains\n" +
WicketTesterHelper.asLined(messages), messages.isEmpty());
}
@@ -923,7 +930,7 @@
* @return <code>List</code> of messages (as <code>String</code>s)
* @see FeedbackMessage
*/
- public List getMessages(final int level)
+ public List<Serializable> getMessages(final int level)
{
FeedbackMessages feedbackMessages = Session.get().getFeedbackMessages();
List allMessages = feedbackMessages.messages(new IFeedbackMessageFilter()
@@ -935,7 +942,7 @@
return message.getLevel() == level;
}
});
- List actualMessages = new ArrayList();
+ List<Serializable> actualMessages = new ArrayList<Serializable>();
for (Iterator iter = allMessages.iterator(); iter.hasNext();)
{
actualMessages.add(((FeedbackMessage)iter.next()).getMessage());
@@ -1224,6 +1231,7 @@
form.visitFormComponents(new FormComponent.AbstractVisitor()
{
+ @Override
public void onFormComponent(FormComponent formComponent)
{
// !(formComponent instanceof Button) &&