See my inline comments

> On 30.04.2015, at 04:29, Maxim Solodovnik <solomax...@gmail.com> wrote:
> 
> 
> The changes I have made were (most probably) merged from original Igor's
> code (https://github.com/ivaynberg/wicket-select2)

I can’t find the "List<T> choices“ property of AbstractSelect2Choice anywhere 
in Igor’s original code, so I don’t know where it should have been merged from.

What should be the purpose of having to provide a ChoiceProvider *and* a list 
of choices?! Currently you have to provide both to avoid an exception upon 
construction, which is … weird ;) and breaks existing implementations.


> 1) I believe this is since AbstractSelect2Choice is parent class for for
> Single and Multi choices.

That is so, but what does this explain? ;)


> 2) the code was refactored a bit, so line numbers were changed. This
> constructor:
> https://github.com/wicketstuff/core/blob/wicket-6.x/jdk-1.6-parent/select2-parent/select2/src/main/java/org/wicketstuff/select2/AbstractSelect2Choice.java#L109
> seems to not throwing any exceptions

Yeah, but another does. This pattern does not make any sense to me:

class Foo {

    public Foo(Object a) {
        this(a, null);
    }

    public Foo(Object a, Object b) {
        if (b == null)
            throw new IllegalArgumentException();
        this.a = a;
        this.b = b;
    }
}


> 3) you can call constructor mentioned in 2 to avoid exception.

…


> 4) I guess renderChoice method is designed to render single choice object,
> you can override it (for ex. to add your own properties to each choice)
> other 2 methods are private helpers

renderChoice is called from within renderChoices which is called from within 
renderHead. But only if !isAjax(), and:

public boolean isAjax()
{
   return provider != null;
}

…?

That means: if no ChoiceProvider is set, then use the static List<T> choices, 
but if you don’t provide a ChoiceProvider in the constructor you’ll get an 
IllegalArgumentException.

This code is broken and doesn’t make any sense *to me*, or I didn’t get it yet 
;-)

My proposal is:

if nobody can tell which problem should be solved with the introduced List<T> 
choices I would revert it to get a working implementation again, as it is 
currently unusable.

Personally, I need to upgrade the select.js library in our project, therefor I 
was looking at wicketstuff-select2, as we still use the original wicket-select2 
implementation. The current state of it leaves mit three options, in order of 
priority:

a)
convince the wicketstuff-select2 maintainers to revert the code to a working 
state, which I am currently doing ;-)

b)
fork wicketstuff-select2 and provide own (working) implementation

c)
stick with Igor’s original code, which means: no upgrades to select2.js


Maybe someone else can shed some light on this?

Cheers,
   -Tom




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to