[
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)