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