You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Jeremy Thomerson (JIRA)" <ji...@apache.org> on 2010/12/20 00:05:01 UTC
[jira] Closed: (WICKET-3273) Redo Componet's internal data and
ModelImpl methods
[ https://issues.apache.org/jira/browse/WICKET-3273?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jeremy Thomerson closed WICKET-3273.
------------------------------------
Resolution: Won't Fix
I also don't agree with the proposed changes (and am glad that Richard acknowledged that we wouldn't in his initial submission). Reasons: same as Igor's.
Additionally, find it odd that you did this to avoid casting, and in your example, you don't use generics for the model, and you cast there :)
> Redo Componet's internal data and ModelImpl methods
> ---------------------------------------------------
>
> Key: WICKET-3273
> URL: https://issues.apache.org/jira/browse/WICKET-3273
> Project: Wicket
> Issue Type: Improvement
> Components: wicket
> Affects Versions: 1.5-M3
> Environment: all
> Reporter: Richard Emberson
> Priority: Minor
> Attachments: TestRun.java
>
>
> I am in the process of adding type parameters to Component and
> those derived classes are not parameterize so that I can
> get strong typing when accessing a Componet's Model. To do this
> a different mechanism is needed for storing the Model object
> in the Component.
> The current "data" storage mechanism is very well optimized for
> low memory usage. The problem is that one can not use it and still
> have typed Models without casting.
> In addition, the data_* methods are not easy to understand
> nor can their data-structure algorithms be tested without
> exercising other methods (like not being able to test an
> ArrayList directly but having to all access mediated by other
> methods).
> So, for my project I've devised a data structure that allows for
> separate testing and Model strong typing (without having to
> use instanceof and casts). Access to the underlying data is
> also faster.
> I also believe that separating out the data structure is a
> good thing; IMHO, Component is rather plump.
> An attached file contains the IHolder class and implementations.
> Using the IHodler classes, the data instance variable, data_* methods
> and ModelImpl access methods become (this is the
> non-type-parameterized version):
> // why is this not private in Wicket?
> private IHolder data = EmptyHolder.instance;
> private final int data_length() {
> return data.length();
> }
> private final Object data_get(int index) {
> return data.get(index);
> }
> private final Object data_set(int index, Object object) {
> data.set(index, obj);
> }
> private final void data_add(Object object) {
> data = data.append(obj);
> }
> private final void data_insert(int position, Object object) {
> data = data.insert(position, obj);
> }
> private final Object data_remove(int position){
> data = data.remove(position);
> }
> final IModel<?> getModelImpl() {
> return data.getModel();
> }
> final void setModelImpl(IModel<?> model) {
> data = data.setModel(model);
> }
> Also, the use of the FLAG_MODEL_SET can be removed throughout
> the rest of Component.
> I actually do not expect the Wicket team to adapt my changes here
> since for Components with data there is an extra reference and
> with Models, yet another reference; which is to say, greater
> memory usage. But, I want strong typing, so this is what I've done.
> Oh, yes, all of the test pass (after adjusting the
> org.apache.wicket.markup.html.debug.WicketComponentTreeTest test).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.