[ 
https://issues.apache.org/jira/browse/WICKET-7023?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17657073#comment-17657073
 ] 

leclerc cyril commented on WICKET-7023:
---------------------------------------

Hello, any comment on this ? real issue, bad using of NestedTree etc ?

Thanks you very much

> Problem when comparing model instead of object in NestedTree class 
> -------------------------------------------------------------------
>
>                 Key: WICKET-7023
>                 URL: https://issues.apache.org/jira/browse/WICKET-7023
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-extensions
>    Affects Versions: 9.12.0
>         Environment: Linux
>            Reporter: leclerc cyril
>            Priority: Major
>
> In NestedTree abstract class (and Maybe in other components or classes) we 
> use the model comparaison instead of object comparaison (model.getObject()).
> In IModel or in LoadableDetachableModel We don't have any equals method 
> defined (no default, nothing), it will use the default one what is not good.
> example (l111) of NestedTree.java in wicket-extensions library
> {code:java}
> @Override
>     public void updateBranch(T t, IPartialPageRequestHandler target)
>     {
>         final IModel<T> model = getProvider().model(t);
>         visitChildren(BranchItem.class, new IVisitor<BranchItem<T>, Void>()
>         {
>             @Override
>             public void component(BranchItem<T> branch, IVisit<Void> visit)
>             {
>                 if (model.equals(branch.getModel()))
>                 {
>                     // BranchItem always outputs its markupId
>                     target.add(branch);
>                     visit.stop();
>                 }
>             }
>         });
>         model.detach();
>     }{code}
> {{}}
> Instead of comparing _*model.equals(branch.getModel()*_ should we use instead 
> the object comparaison itself :
> Objects.equals{*}_( model.getObject(), branch.getModelObject() )_{*}
> _because here model are different and not same ref , it will always return 
> false ? or i miss something ?_
> If not could you explain us why we have to use the model and what to do to 
> make it work properly ?
> Even we use a custom extension of LoadableDetachableModel if we override the 
> model equals we have to check the state, if state is attached, get the 
> transient object and compare it, if not attached, compare the unid. Moreover 
> it is possible in wicket core or other librairies to compare 2 models not 
> attached (so finally quite ugly equals no ?).
> What is the default behaviour of comparing models if we used the default 
> models in wicket ? because even in wicket models (CompoundPropertyModel for 
> instance no equals is defined)
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to