true, but until we added CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER
the scheme was just CONTINUE_TRAVERSAL is null, which is valid in any case.
STOP_TRAVERSAL was just a convenient value to return that had no meaning.
there's actually only one instance of it in wicket that i could find.
unfortunately,
i did not think about the generic problem of controlling the traversal
in the visitor
implementation. if i had, i might have done this differently. probably
more like:
public static interface ITraversal
{
public enum Mode { ALL, STOP, CHILDREN, SIBLINGS };
public void setTraversalMode(Mode mode);
}
public static interface IVisitor
{
/**
* Called at each component in a traversal.
*
* @param traversal
* The traversal
* @param component
* The component
* @return Return value to stop traversal
*/
public Object component(ITraversal traversal, Component component);
}
On 5/29/06, *Johan Compagner* <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
It would be nice that we could specifiy the return type..
But this is not possible because we already use the return type for
continue or not..
johan
On 5/28/06, * Eelco Hillenius* <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
Agreed.
Eelco
On 5/28/06, Matej Knopp <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
wrote:
> I never said it's not doable. It just doesn't feel right to me.
> I like IVisitor the way it works now.
>
> -Matej
>
> Eelco Hillenius wrote:
> > Well, like my patch shows, it *is* doable. Just very messy
and it
> > feels like misusing generics. I currently thing that what is
currently
> > in trunk (no parameterization) is good. Parameterizing
IVisitor only
> > makes things messier if we still require some class parameter in
> > either the visitor (btw, IVisitor is an interface, so
providing that
> > Form class parameter won't work) or visit method.
> >
> > Eelco
> >
> > On 5/28/06, Igor Vaynberg < [EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
> >> new Component.IVisitor<Form>(Form.class)
> >>
> >> thats the only way to do it right now i think
> >>
> >> -Igor
> >>
> >>
> >>
> >> On 5/28/06, Matej Knopp <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
> >> > You are right. It feels like misusing generics. I think
generics were
> >> > not meant to be used at runtime (type erasure is not
there for fun
> >> :) ).
> >> >
> >> > -Matej
> >> >
> >> > Eelco Hillenius wrote:
> >> > > Hi,
> >> > >
> >> > > I've got a start for a generified IVisitor
implementation. Basically,
> >> > > it would be used like this:
> >> > >
> >> > > // Visit all Forms contained in the page
> >> > > visitChildren(new Component.IVisitor <Form>()
> >> > > {
> >> > > // For each FormComponent found on the Page
(not Form)
> >> > > public Object component(final Form form)
> >> > > {
> >> > >
> >> form.loadPersistentFormComponentValues();
> >> > > return CONTINUE_TRAVERSAL;
> >> > > }
> >> > > });
> >> > >
> >> > >
> >> > > However, I'm kind of stuck at the dirty details of
introspecting
> >> > > parameterized types. It's probably doable, but pretty
messy and
> >> > > inefficient at times (to catch all cases, you'd have to
implement a
> >> > > recursive alg that searches for the proper type, with a
lot of
> >> 'ifs').
> >> > > I'm not sure it's worth it, also as it seems a bit like
misusing
> >> > > generics.
> >> > >
> >> > > Anyway, if anyone likes to take a look: here's a patch.
A couple of
> >> > > unit test fail, and that's where the real fun begins :)
> >> > >
> >> > > Eelco
> >> > >
> >> > >
> >> > >
> >> > > Index:
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/Component.java
> >>
> >> > >
> >> > >
> >>
===================================================================
> >> > > ---
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/Component.java
> >>
> >> > > (revision
> >> > > 5923)
> >> > > +++
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/Component.java
> >>
> >> > > (working
> >> > > copy)
> >> > > @@ -271,11 +271,9 @@
> >> > >
> >> > > /**
> >> > > * Generic component visitor interface for
component traversals.
> >> > > - *
> >> > > - * @param <T>
> >> > > - * The type of the component where a
visitor walks
> >> over.
> >> > > + * @param <E> The type of the component where a
visitor walks
> >> over.
> >> > > */
> >> > > - public static interface IVisitor
> >> > > + public static interface IVisitor<E>
> >> > > {
> >> > > /**
> >> > > * Value to return to continue a traversal.
> >> > > @@ -303,7 +301,7 @@
> >> > > * should stop. If no return value is
useful, the
> >> generic
> >> > > * non-null value STOP_TRAVERSAL can be
used.
> >> > > */
> >> > > - public Object component(Component component);
> >> > > + public Object component(E component);
> >> > > }
> >> > >
> >> > > /**
> >> > > @@ -1717,12 +1715,12 @@
> >> > > // to
> >> > > // collect their messages before
components like
> >> > > ListViews
> >> > > // remove any child components
> >> > >
- container.visitChildren(IFeedback.class, new
> >> > > IVisitor()
> >> > > + container.visitChildren(new
> >> IVisitor<IFeedback>()
> >> > > {
> >> > > - public Object
component(Component component)
> >> > > + public Object
component(IFeedback feedback)
> >> > > {
> >> > > -
> >> ((IFeedback)component).updateFeedback();
> >> > > - component.internalAttach ();
> >> > > + feedback.updateFeedback();
> >> > > +
> >> ((Component)feedback).internalAttach();
> >> > > return
IVisitor.CONTINUE_TRAVERSAL;
> >> > > }
> >> > > });
> >> > > Index:
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/MarkupContainer.java
> >>
> >> > >
> >> > >
> >>
===================================================================
> >> > > ---
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/MarkupContainer.java
> >>
> >> > > (revision
> >> > > 5923)
> >> > > +++
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/MarkupContainer.java
> >>
> >> > > (working
> >> > > copy)
> >> > > @@ -18,6 +18,8 @@
> >> > > */
> >> > > package wicket;
> >> > >
> >> > > +import java.lang.reflect.ParameterizedType;
> >> > > +import java.lang.reflect.Type;
> >> > > import java.util.ArrayList ;
> >> > > import java.util.Arrays;
> >> > > import java.util.Collections;
> >> > > @@ -644,9 +646,9 @@
> >> > > super.setModel(model);
> >> > > if (previous instanceof ICompoundModel)
> >> > > {
> >> > > - visitChildren(new IVisitor()
> >> > > + visitChildren(new IVisitor<Component<?>>()
> >> > > {
> >> > > - public Object component(Component
component)
> >> > > + public Object component(Component<?>
component)
> >> > > {
> >> > > IModel compModel =
component.getModel();
> >> > > if (compModel == previous)
> >> > > @@ -725,11 +727,9 @@
> >> > > }
> >> > >
> >> > > /**
> >> > > - * Traverses all child components of the given
class in this
> >> > > container,
> >> > > + * Traverses all child components of the visitor's
type in this
> >> > > container,
> >> > > * calling the visitor's visit method at each one.
> >> > > *
> >> > > - * @param clazz
> >> > > - * The class of child to visit, or null
to visit all
> >> > > children
> >> > > * @param visitor
> >> > > * The visitor to call back to
> >> > > * @return The return value from a visitor which
halted the
> >> > > traversal, or
> >> > > @@ -735,7 +735,8 @@
> >> > > * @return The return value from a visitor which
halted the
> >> > > traversal, or
> >> > > * null if the entire traversal occurred
> >> > > */
> >> > > - public final Object visitChildren(final Class
clazz, final
> >> IVisitor
> >> > > visitor)
> >> > > + @SuppressWarnings("unchecked")
> >> > > + public final Object visitChildren(final IVisitor
visitor)
> >> > > {
> >> > > if (visitor == null)
> >> > > {
> >> > > @@ -742,6 +743,25 @@
> >> > > throw new
> >> IllegalArgumentException("argument visitor may not
> >> > > be null");
> >> > > }
> >> > >
> >> > > + final Class c = visitor.getClass();
> >> > > +
> >> > > + final Type type = c.getGenericInterfaces()[0];
> >> > > + final Class clazz;
> >> > > + if (type instanceof ParameterizedType)
> >> > > + {
> >> > > + Type typeArg =
> >> > > ((ParameterizedType)type).getActualTypeArguments()[0];
> >> > > + if (!(typeArg instanceof Class))
> >> > > + {
> >> > > + clazz =
> >> (Class)((ParameterizedType)typeArg).getRawType();
> >> > > + }
> >> > > + else
> >> > > + {
> >> > > + clazz = (Class)typeArg;
> >> > > + }
> >> > > + } else {
> >> > > + clazz = Component.class;
> >> > > + }
> >> > > +
> >> > > // Iterate through children of this container
> >> > > for (int i = 0; i < children_size(); i++)
> >> > > {
> >> > > @@ -750,7 +770,7 @@
> >> > > Object value = null;
> >> > >
> >> > > // Is the child of the correct class (or
was no class
> >> > > specified)?
> >> > > - if (clazz == null || clazz.isInstance(child))
> >> > > + if (clazz.isInstance(child))
> >> > > {
> >> > > // Call visitor
> >> > > value = visitor.component(child);
> >> > > @@ -768,7 +788,7 @@
> >> > > && (value !=
> >> > > IVisitor.CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER ))
> >> > > {
> >> > > // visit the children in the container
> >> > > - value =
> >> > > ((MarkupContainer<?>)child).visitChildren(clazz,
> >> visitor);
> >> > > + value =
> >> > > ((MarkupContainer<?>)child).visitChildren(visitor);
> >> > >
> >> > > // If visitor returns a non-null value,
it halts the
> >> > > traversal
> >> > > if ((value != IVisitor.CONTINUE_TRAVERSAL)
> >> > > @@ -783,20 +803,6 @@
> >> > > }
> >> > >
> >> > > /**
> >> > > - * Traverses all child components in this
container, calling the
> >> > > visitor's
> >> > > - * visit method at each one.
> >> > > - *
> >> > > - * @param visitor
> >> > > - * The visitor to call back to
> >> > > - * @return The return value from a visitor which
halted the
> >> > > traversal, or
> >> > > - * null if the entire traversal occurred
> >> > > - */
> >> > > - public final Object visitChildren(final IVisitor
visitor)
> >> > > - {
> >> > > - return visitChildren(null, visitor);
> >> > > - }
> >> > > -
> >> > > - /**
> >> > > * Get the markup stream for this component.
> >> > > *
> >> > > * @return The markup stream for this component, or
if it doesn't
> >> > > have one,
> >> > > @@ -1295,7 +1301,7 @@
> >> > > // detach children models
> >> > > if (component instanceof MarkupContainer)
> >> > > {
> >> > > -
> >> ((MarkupContainer<?>)component).visitChildren(new
> >> IVisitor()
> >> > > +
> >> ((MarkupContainer<?>)component).visitChildren(new
> >> > > IVisitor<Component<?>>()
> >> > > {
> >> > > public Object component(Component
component)
> >> > > {
> >> > > Index:
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/Page.java
> >>
> >> > >
> >>
===================================================================
> >> > > ---
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/Page.java
> >>
> >> > > (revision
> >> > > 5923)
> >> > > +++
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/Page.java
> >>
> >> > > (working
> >> > > copy)
> >> > > @@ -1,6 +1,6 @@
> >> > > /*
> >> > > - * $Id$ $Revision$ $Date:
> >> > > - * 2006-05-26 00:32:40 +0200 (vr, 26 mei 2006) $
> >> > > + * $Id$
> >> > > + * $Revision$ $Date$
> >> > > *
> >> > > *
> >> > >
> >>
==============================================================================
> >>
> >> > >
> >> > > * Licensed under the Apache License, Version 2.0 (the
"License");
> >> you
> >> > > may not
> >> > > @@ -326,7 +326,7 @@
> >> > > public void detachModels()
> >> > > {
> >> > > // visit all this page's children to detach the
models
> >> > > - visitChildren(new IVisitor()
> >> > > + visitChildren(new IVisitor<Component>()
> >> > > {
> >> > > public Object component(Component component)
> >> > > {
> >> > > @@ -381,12 +381,12 @@
> >> > > // First, give priority to IFeedback instances,
as they
> >> have to
> >> > > // collect their messages before components
like ListViews
> >> > > // remove any child components
> >> > > - visitChildren(IFeedback.class, new IVisitor()
> >> > > + visitChildren(new IVisitor<IFeedback>()
> >> > > {
> >> > > - public Object component(Component component)
> >> > > + public Object component(IFeedback feedback)
> >> > > {
> >> > > -
> >> ((IFeedback)component).updateFeedback();
> >> > > - component.internalAttach();
> >> > > + feedback.updateFeedback ();
> >> > > +
> >> ((Component)feedback).internalAttach();
> >> > > return IVisitor.CONTINUE_TRAVERSAL;
> >> > > }
> >> > > });
> >> > > @@ -404,7 +404,7 @@
> >> > > // or negative as a temporary boolean in the
components, and
> >> when a
> >> > > // authorization exception is thrown it will
block the
> >> rendering
> >> > > of this
> >> > > // page
> >> > > - visitChildren(new IVisitor()
> >> > > + visitChildren(new IVisitor<Component>()
> >> > > {
> >> > > public Object component(final Component
component)
> >> > > {
> >> > > @@ -643,7 +643,7 @@
> >> > > {
> >> > > final StringBuffer buffer = new StringBuffer();
> >> > > buffer.append("Page " + getId() + " (version " +
> >> > > getCurrentVersionNumber() + ")");
> >> > > - visitChildren(new IVisitor()
> >> > > + visitChildren(new IVisitor<Component>()
> >> > > {
> >> > > public Object component(Component component)
> >> > > {
> >> > > @@ -705,16 +705,16 @@
> >> > > }
> >> > >
> >> > > // Visit all children which are an instance of
formClass
> >> > > - visitChildren(formClass, new IVisitor()
> >> > > + visitChildren(new IVisitor<Form>()
> >> > > {
> >> > > - public Object component(final Component
component)
> >> > > + public Object component(final Form form)
> >> > > {
> >> > > // They must be of type Form as well
> >> > > - if (component instanceof Form)
> >> > > + if (form.getClass().equals(formClass))
> >> > > {
> >> > > // Delete persistet FormComponent
data and
> >> disable
> >> > > // persistence
> >> > > -
> >> > >
> >>
((Form)component).removePersistentFormComponentValues(disablePersistence);
> >>
> >> > > +
> >> > >
> >> form.removePersistentFormComponentValues(disablePersistence);
> >> > > }
> >> > > return CONTINUE_TRAVERSAL;
> >> > > }
> >> > > @@ -841,7 +841,7 @@
> >> > > @Override
> >> > > protected final void internalOnModelChanged()
> >> > > {
> >> > > - visitChildren(new Component.IVisitor()
> >> > > + visitChildren(new Component.IVisitor<Component>()
> >> > > {
> >> > > public Object component(final Component
component)
> >> > > {
> >> > > @@ -991,7 +991,7 @@
> >> > > {
> >> > > if (stateless == null)
> >> > > {
> >> > > - Object returnValue = visitChildren(
Component.class, new
> >> > > IVisitor()
> >> > > + Object returnValue = visitChildren(new
> >> IVisitor<Component>()
> >> > > {
> >> > > public Object component(Component
component)
> >> > > {
> >> > > @@ -1026,12 +1026,12 @@
> >> > > final void setFormComponentValuesFromCookies()
> >> > > {
> >> > > // Visit all Forms contained in the page
> >> > > - visitChildren(Form.class, new Component.IVisitor()
> >> > > + visitChildren(new Component.IVisitor<Form>()
> >> > > {
> >> > > // For each FormComponent found on the Page
(not Form)
> >> > > - public Object component(final Component
component)
> >> > > + public Object component(final Form form)
> >> > > {
> >> > > -
> >> ((Form)component).loadPersistentFormComponentValues();
> >> > > +
> >> form.loadPersistentFormComponentValues();
> >> > > return CONTINUE_TRAVERSAL;
> >> > > }
> >> > > });
> >> > > @@ -1103,7 +1103,7 @@
> >> > > final Count unrenderedComponents = new Count();
> >> > > final List<Component>
unrenderedAutoComponents = new
> >> > > ArrayList<Component>();
> >> > > final StringBuffer buffer = new StringBuffer();
> >> > > - renderedContainer.visitChildren(new
IVisitor()
> >> > > + renderedContainer.visitChildren(new
> >> IVisitor<Component>()
> >> > > {
> >> > > public Object component(final Component
component)
> >> > > {
> >> > > Index:
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/ajax/form/AjaxFormValidatingBehavior.java
> >>
> >> > >
> >> > >
> >>
===================================================================
> >> > > ---
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/ajax/form/AjaxFormValidatingBehavior.java
> >>
> >> > > (revision
> >> > > 5922)
> >> > > +++
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/ajax/form/AjaxFormValidatingBehavior.java
> >>
> >> > > (working
> >> > > copy)
> >> > > @@ -56,11 +56,11 @@
> >> > > @Override
> >> > > protected void onSubmit(final AjaxRequestTarget
target)
> >> > > {
> >> > > -
> >> getComponent().getPage().visitChildren(IFeedback.class ,
> >> new
> >> > > IVisitor()
> >> > > + getComponent().getPage().visitChildren(new
> >> IVisitor<IFeedback>()
> >> > > {
> >> > > - public Object component(Component component)
> >> > > + public Object component(IFeedback feedback)
> >> > > {
> >> > > - target.addComponent(component);
> >> > > + target.addComponent((Component)feedback);
> >> > > return IVisitor.CONTINUE_TRAVERSAL;
> >> > > }
> >> > >
> >> > > @@ -88,9 +88,9 @@
> >> > > public static void addToAllFormComponents(final
Form form, final
> >> > > String event,
> >> > > final Duration throttleDelay)
> >> > > {
> >> > > - form.visitChildren(FormComponent.class, new
IVisitor()
> >> > > + form.visitChildren(new IVisitor<FormComponent>()
> >> > > {
> >> > > - public Object component(Component component)
> >> > > + public Object component(FormComponent
component)
> >> > > {
> >> > > AjaxFormValidatingBehavior behavior = new
> >> > > AjaxFormValidatingBehavior(form, event);
> >> > > if (throttleDelay != null)
> >> > > Index:
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/markup/html/debug/PageView.java
> >>
> >> > >
> >> > >
> >>
===================================================================
> >> > > ---
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/markup/html/debug/PageView.java
> >>
> >> > > (revision
> >> > > 5923)
> >> > > +++
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/markup/html/debug/PageView.java
> >>
> >> > > (working
> >> > > copy)
> >> > > @@ -123,7 +123,7 @@
> >> > > {
> >> > > final List<ComponentData> data = new
> >> ArrayList<ComponentData>();
> >> > >
> >> > > - page.visitChildren(new IVisitor()
> >> > > + page.visitChildren(new IVisitor<Component>()
> >> > > {
> >> > > public Object component(final Component
component)
> >> > > {
> >> > > Index:
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/markup/html/form/Form.java
> >>
> >> > >
> >> > >
> >>
===================================================================
> >> > > ---
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/markup/html/form/Form.java
> >>
> >> > > (revision
> >> > > 5918)
> >> > > +++
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/markup/html/form/Form.java
> >>
> >> > > (working
> >> > > copy)
> >> > > @@ -479,11 +479,11 @@
> >> > > */
> >> > > public final void visitFormComponents(final
> >> FormComponent.IVisitor
> >> > > visitor)
> >> > > {
> >> > > - visitChildren(FormComponent.class , new IVisitor()
> >> > > + visitChildren(new IVisitor<FormComponent>()
> >> > > {
> >> > > - public Object component(final Component
component)
> >> > > + public Object component(final
FormComponent component)
> >> > > {
> >> > >
- visitor.formComponent((FormComponent)component);
> >> > > + visitor.formComponent(component);
> >> > > return CONTINUE_TRAVERSAL;
> >> > > }
> >> > > });
> >> > > @@ -607,13 +607,10 @@
> >> > > */
> >> > > protected final Button findSubmittingButton()
> >> > > {
> >> > > - Button button =
(Button)visitChildren(Button.class, new
> >> IVisitor()
> >> > > + Button button = (Button)visitChildren(new
IVisitor<Button>()
> >> > > {
> >> > > - public Object component(final Component
component)
> >> > > + public Object component(final Button button)
> >> > > {
> >> > > - // Get button
> >> > > - final Button button = (Button)component;
> >> > > -
> >> > > // Check for button-name or
button-name.x request
> >> string
> >> > > if
> >> (getRequest().getParameter(button.getInputName()) !=
> >> > > null
> >> > > ||
> >> > > getRequest().getParameter(button.getInputName() + ".x")
!= null)
> >> > > @@ -630,13 +627,10 @@
> >> > >
> >> > > if (button == null)
> >> > > {
> >> > > - button = (Button)getPage().visitChildren(
> >> SubmitLink.class,
> >> > > new IVisitor()
> >> > > + button =
> >> (Button)getPage().visitChildren(new
> >> > > IVisitor<SubmitLink>()
> >> > > {
> >> > > - public Object component(final
Component component)
> >> > > + public Object component(final
SubmitLink button)
> >> > > {
> >> > > - // Get button
> >> > > - final SubmitLink button =
(SubmitLink)component;
> >> > > -
> >> > > // Check for button-name or
button-name.x request
> >> > > string
> >> > > if (button.getForm () == Form.this
> >> > > &&
> >> > > (getRequest().getParameter(button.getInputName()) != null
> >> > > || getRequest()
> >> > > @@ -1126,7 +1120,7 @@
> >> > > */
> >> > > private boolean anyFormComponentError()
> >> > > {
> >> > > - final Object value = visitChildren(new IVisitor()
> >> > > + final Object value = visitChildren(new
IVisitor<Component>()
> >> > > {
> >> > > public Object component(final Component
component)
> >> > > {
> >> > > Index:
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/markup/html/internal/HtmlHeaderContainer.java
> >>
> >> > >
> >> > >
> >>
===================================================================
> >> > > ---
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/markup/html/internal/HtmlHeaderContainer.java
> >>
> >> > > (revision
> >> > > 5918)
> >> > > +++
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/markup/html/internal/HtmlHeaderContainer.java
> >>
> >> > > (working
> >> > > copy)
> >> > > @@ -211,7 +211,7 @@
> >> > > {
> >> > > // Make sure all Components interested in
contributing to the
> >> > > header
> >> > > // and there attached behaviors are asked.
> >> > > - page.visitChildren(new IVisitor()
> >> > > + page.visitChildren (new IVisitor<Component>()
> >> > > {
> >> > > /**
> >> > > * @see
> >> wicket.Component.IVisitor#component(wicket.Component )
> >> > > Index:
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/protocol/http/ClientPageSavingSessionStore.java
> >>
> >> > >
> >> > >
> >>
===================================================================
> >> > > ---
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/protocol/http/ClientPageSavingSessionStore.java
> >>
> >> > > (revision
> >> > > 5922)
> >> > > +++
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/protocol/http/ClientPageSavingSessionStore.java
> >>
> >> > > (working
> >> > > copy)
> >> > > @@ -295,12 +295,11 @@
> >> > >
> >> > > final AppendingStringBuffer forms = new
> >> > > AppendingStringBuffer(64);
> >> > >
forms.append(JavascriptUtils.SCRIPT_OPEN_TAG);
> >> > > - page.visitChildren(Form.class, new
IVisitor()
> >> > > + page.visitChildren(new IVisitor<Form>()
> >> > > {
> >> > > - public Object component(Component
component)
> >> > > + public Object component(Form form)
> >> > > {
> >> > >
forms.append("document.getElementById ('");
> >> > > - Form form = (Form)component;
> >> > >
> >> > >
forms.append(form.getHiddenFieldId(Form.HIDDEN_FIELD_WICKET_STATE));
> >> > >
forms.append("').value=wicketState;\n");
> >> > > return null;
> >> > > Index:
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/protocol/http/MockHttpServletRequest.java
> >>
> >> > >
> >> > >
> >>
===================================================================
> >> > > ---
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/protocol/http/MockHttpServletRequest.java
> >>
> >> > > (revision
> >> > > 5918)
> >> > > +++
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/protocol/http/MockHttpServletRequest.java
> >>
> >> > > (working
> >> > > copy)
> >> > > @@ -1056,7 +1056,7 @@
> >> > > setRequestToComponent(form);
> >> > >
> >> > > final Map<String, Component> valuesApplied = new
> >> HashMap<String,
> >> > > Component>();
> >> > > - form.visitChildren (new Component.IVisitor()
> >> > > + form.visitChildren(new
Component.IVisitor<Component>()
> >> > > {
> >> > > public Object component(final Component
component)
> >> > > {
> >> > > Index:
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/util/tester/FormTester.java
> >>
> >> > >
> >> > >
> >>
===================================================================
> >> > > ---
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/util/tester/FormTester.java
> >>
> >> > > (revision
> >> > > 5923)
> >> > > +++
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/util/tester/FormTester.java
> >>
> >> > > (working
> >> > > copy)
> >> > > @@ -58,9 +58,9 @@
> >> > > protected abstract class ChoiceSelector
> >> > > {
> >> > > /**
> >> > > - * ???
> >> > > + * @param <E> Visitor type
> >> > > */
> >> > > - private final class SearchOptionByIndexVisitor
implements
> >> IVisitor
> >> > > + private final class
SearchOptionByIndexVisitor<E> implements
> >> > > IVisitor<E>
> >> > > {
> >> > > int count = 0;
> >> > >
> >> > > @@ -68,7 +68,6 @@
> >> > >
> >> > > private SearchOptionByIndexVisitor(int index)
> >> > > {
> >> > > - super();
> >> > > this.index = index;
> >> > > }
> >> > >
> >> > > @@ -75,7 +74,7 @@
> >> > > /**
> >> > > * @see
> >> wicket.Component.IVisitor#component(wicket.Component)
> >> > > */
> >> > > - public Object component(Component component)
> >> > > + public Object component(E component)
> >> > > {
> >> > > if (count == index)
> >> > > {
> >> > > @@ -117,8 +116,8 @@
> >> > > {
> >> > > if (formComponent instanceof RadioGroup)
> >> > > {
> >> > > - Radio foundRadio =
> >> > > (Radio)formComponent.visitChildren(Radio.class,
> >> > > - new
> >> SearchOptionByIndexVisitor(index));
> >> > > + Radio foundRadio =
> >> (Radio)formComponent.visitChildren(
> >> > > + new
> >> SearchOptionByIndexVisitor<Radio>(index));
> >> > > if (foundRadio == null)
> >> > > {
> >> > > Assert.fail("RadioGroup " +
> >> formComponent.getPath()
> >> > > + " does not
> >> > > has index:"
> >> > > @@ -131,8 +130,8 @@
> >> > > }
> >> > > else if (formComponent instanceof CheckGroup)
> >> > > {
> >> > > - Check foundCheck =
> >> > > (Check)formComponent.visitChildren(Check.class,
> >> > > - new
> >> SearchOptionByIndexVisitor(index));
> >> > > + Check foundCheck =
> >> (Check)formComponent.visitChildren(
> >> > > + new
> >> SearchOptionByIndexVisitor<Check>(index));
> >> > > if (foundCheck == null)
> >> > > {
> >> > > Assert.fail("CheckGroup " +
> >> formComponent.getPath()
> >> > > + " does not
> >> > > has index:"
> >> > > Index:
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/util/tester/WicketTesterHelper.java
> >>
> >> > >
> >> > >
> >>
===================================================================
> >> > > ---
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/util/tester/WicketTesterHelper.java
> >>
> >> > > (revision
> >> > > 5923)
> >> > > +++
> >> > >
> >>
/Users/eelcohillenius/Documents/workspace/wicket/src/java/wicket/util/tester/WicketTesterHelper.java
> >>
> >> > > (working
> >> > > copy)
> >> > > @@ -65,7 +65,7 @@
> >> > > {
> >> > > final List<ComponentData> data = new
> >> ArrayList<ComponentData>();
> >> > >
> >> > > - page.visitChildren(new IVisitor()
> >> > > + page.visitChildren(new IVisitor<Component>()
> >> > > {
> >> > > public Object component(final Component
component)
> >> > > {
> >> > > @@ -106,8 +106,7 @@
> >> > > * @param expects
> >> > > * @param actuals
> >> > > */
> >> > > - public static void assertEquals(final
Collection<?> expects,
> >> > > - final Collection<?> actuals)
> >> > > + public static void assertEquals(final
Collection<?> expects,
> >> final
> >> > > Collection<?> actuals)
> >> > > {
> >> > > if (!expects.containsAll(actuals) ||
> >> !actuals.containsAll(expects))
> >> > > {
> >> > >
> >> > >
> >> > > -------------------------------------------------------
> >> > > All the advantages of Linux Managed Hosting--Without
the Cost and
> >> Risk!
> >> > > Fully trained technicians. The highest number of Red Hat
> >> certifications
> >> in
> >> > > the hosting industry. Fanatical Support. Click to learn
more
> >> > >
> >>
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
<http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642>
> >> > > _______________________________________________
> >> > > Wicket-develop mailing list
> >> > > Wicket-develop@lists.sourceforge.net
<mailto:Wicket-develop@lists.sourceforge.net>
> >> > >
> >> https://lists.sourceforge.net/lists/listinfo/wicket-develop
> >> > >
> >> >
> >> >
> >> >
> >> > -------------------------------------------------------
> >> > All the advantages of Linux Managed Hosting--Without the
Cost and Risk!
> >> > Fully trained technicians. The highest number of Red Hat
> >> certifications in
> >> > the hosting industry. Fanatical Support. Click to learn more
> >> >
> >>
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
<http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642>
> >> > _______________________________________________
> >> > Wicket-develop mailing list
> >> > Wicket-develop@lists.sourceforge.net
<mailto:Wicket-develop@lists.sourceforge.net>
> >> >
> >> https://lists.sourceforge.net/lists/listinfo/wicket-develop
<https://lists.sourceforge.net/lists/listinfo/wicket-develop>
> >> >
> >>
> >>
> >
> >
> > -------------------------------------------------------
> > All the advantages of Linux Managed Hosting--Without the
Cost and Risk!
> > Fully trained technicians. The highest number of Red Hat
certifications in
> > the hosting industry. Fanatical Support. Click to learn more
> >
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
<http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642>
> > _______________________________________________
> > Wicket-develop mailing list
> > Wicket-develop@lists.sourceforge.net
<mailto:Wicket-develop@lists.sourceforge.net>
> > https://lists.sourceforge.net/lists/listinfo/wicket-develop
> >
>
>
>
> -------------------------------------------------------
> All the advantages of Linux Managed Hosting--Without the Cost
and Risk!
> Fully trained technicians. The highest number of Red Hat
certifications in
> the hosting industry. Fanatical Support. Click to learn more
>
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
<http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642>
> _______________________________________________
> Wicket-develop mailing list
> Wicket-develop@lists.sourceforge.net
<mailto:Wicket-develop@lists.sourceforge.net>
> https://lists.sourceforge.net/lists/listinfo/wicket-develop
<https://lists.sourceforge.net/lists/listinfo/wicket-develop>
>
-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost
and Risk!
Fully trained technicians. The highest number of Red Hat
certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
<http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642>
_______________________________________________
Wicket-develop mailing list
Wicket-develop@lists.sourceforge.net
<mailto:Wicket-develop@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/wicket-develop