myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Marinschek <mmarinsc...@apache.org>
Subject Re: [GSOC] State saving status after first improvements
Date Fri, 23 Jul 2010 08:01:09 GMT
Hi Marius,

> The state of a typical input text contains the following 4 attributes (both
> the keys and the values): valid, value, localValueSet and submittedValue.
> Value and submittedValue may be null, in this case only the keys are
> contained in the state. Valid and localValueSet are boolean properties. I
> measured the state of an input text to be approximately 300 B. If this is in
> a table, you need to multiply it by the number of rows in that table.

why are the keys contained in the state if the thing is null? null is
the default value, we should probably not state save this case. Same
with the default values of valid and localValueSet...

best regards,

Martin

> On Fri, Jul 23, 2010 at 6:07 AM, Martin Marinschek <mmarinschek@apache.org>
> wrote:
>>
>> Hi guys,
>>
>>
>> > Unfortunately, try to save the state directly on the child components is
>> > not
>> > possible. The problem is the datatable is the one who know about the
>> > rows,
>> > so the right place for save this information (at least the delta
>> > information) is there. But the initial state could be saved on the
>> > children
>> > if some additional methods are provided. I don't know if it is worth to
>> > add
>> > those methods, because the only one interested to save the initial state
>> > is
>> > the datatable (things are different if the children could use that
>> > information to "reset" the current state, maybe a method called
>> > resetInitialState). My first solution for partial state saving used a
>> > protected variable to save the initial state on the children, but after
>> > look
>> > the latest solution I'm inclined to implement the latest one.
>>
>> Leonardo is right - I don´t see a way to do this either. Additionally,
>> I don´t think changing the location will buy any major reductions.
>>
>> For the state of a normal input text - what exactly does it consist
>> of, highlight the size of each of the parts.
>>
>> best regards,
>>
>> Martin
>>
>> >> On Wed, Jul 21, 2010 at 7:51 PM, Leonardo Uribe <lu4242@gmail.com>
>> >> wrote:
>> >>>
>> >>> Hi Marius, Martin
>> >>>
>> >>> Yes, it is a bug. The problem is related to some changes done on
>> >>> MYFACES-2754. I think that this changes was tested against jsp but not
>> >>> against facelets. I reverted the changes so you can test now.
>> >>>
>> >>> regards,
>> >>>
>> >>> Leonardo Uribe
>> >>>
>> >>> 2010/7/21 Martin Marinschek <mmarinschek@apache.org>
>> >>>>
>> >>>> Hi Marius,
>> >>>>
>> >>>> ok, Leonardo will hopefully take a look - for you to continue: just
>> >>>> post the partial state values for typical pages right now (you can
>> >>>> also take the pages of the sample as a base if you want).
>> >>>>
>> >>>> best regards,
>> >>>>
>> >>>> Martin
>> >>>>
>> >>>> On Wed, Jul 21, 2010 at 3:23 PM, Marius Petoi
>> >>>> <marius.petoi@codebeat.ro>
>> >>>> wrote:
>> >>>> > Hello,
>> >>>> >
>> >>>> > As I see, in JspStateManagerImpl.saveSerializedView (actually
in
>> >>>> > the
>> >>>> > isWritingState() method), there is a check whether the
>> >>>> > JSP_IS_WRITING_STATE_ATTR is set in the FacesContext. But this
>> >>>> > attribute is
>> >>>> > set in ViewHandlerImpl.setWritingState() if there is no StateWriter
>> >>>> > defined
>> >>>> > (if the current view is a jsp). So, in my opinion, the verification
>> >>>> > in
>> >>>> > the
>> >>>> > JspStateManagerImpl.isWritingState() should also include the
>> >>>> > verification of
>> >>>> > the StateWriter. Otherwise, full state saving will work only
for
>> >>>> > JSP-s.
>> >>>> >
>> >>>> > Regards,
>> >>>> > Marius
>> >>>> >
>> >>>> > On Wed, Jul 21, 2010 at 3:49 PM, Martin Marinschek
>> >>>> > <mmarinschek@apache.org>
>> >>>> > wrote:
>> >>>> >>
>> >>>> >> Hi Marius
>> >>>> >>
>> >>>> >> > --> Full state saving means setting the context
parameter
>> >>>> >> > javax.faces.PARTIAL_STATE_SAVING to false. This is
all, right?
>> >>>> >> > I've
>> >>>> >> > noticed
>> >>>> >> > that just by doing this, the xhtml pages don't work
>> >>>> >> > anymore...only
>> >>>> >> > the
>> >>>> >> > jsp-s. There is no state saved in xhtml-s. Am I missing
>> >>>> >> > something?
>> >>>> >>
>> >>>> >> Oh my. That´s a bug then. Leonardo, can you look into
this (not
>> >>>> >> that
>> >>>> >> I
>> >>>> >> desperately need full state saving, but some users might
need it)?
>> >>>> >>
>> >>>> >> best regards,
>> >>>> >>
>> >>>> >> Martin
>> >>>> >>
>> >>>> >> >> On Tue, Jul 20, 2010 at 2:46 PM, Marius Petoi
>> >>>> >> >> <marius.petoi@codebeat.ro>
>> >>>> >> >> wrote:
>> >>>> >> >> > Hi Leonardo,
>> >>>> >> >> >
>> >>>> >> >> > So you are working on UIData at the moment.
What about
>> >>>> >> >> > UIRepeat?
>> >>>> >> >> > I
>> >>>> >> >> > see
>> >>>> >> >> > that
>> >>>> >> >> > partial state saving is not implemented in
UIRepeat
>> >>>> >> >> > components.
>> >>>> >> >> > We
>> >>>> >> >> > could
>> >>>> >> >> > improve the _childState table (which is included
in the saved
>> >>>> >> >> > state)
>> >>>> >> >> > to
>> >>>> >> >> > save
>> >>>> >> >> > only the states which are different from
an initial state
>> >>>> >> >> > (like
>> >>>> >> >> > in
>> >>>> >> >> > UIData
>> >>>> >> >> > components).
>> >>>> >> >> >
>> >>>> >> >> > Regards,
>> >>>> >> >> > Marius
>> >>>> >> >> >
>> >>>> >> >> > On Mon, Jul 19, 2010 at 1:46 PM, Leonardo
Uribe
>> >>>> >> >> > <lu4242@gmail.com>
>> >>>> >> >> > wrote:
>> >>>> >> >> >>
>> >>>> >> >> >> Hi Marius
>> >>>> >> >> >>
>> >>>> >> >> >> Right now I'm working on "MYFACES-2616
Fix UIData state
>> >>>> >> >> >> saving
>> >>>> >> >> >> model
>> >>>> >> >> >> (spec
>> >>>> >> >> >> issue 153)". I hope to attach some new
patches, a example
>> >>>> >> >> >> and a
>> >>>> >> >> >> better
>> >>>> >> >> >> documentation in that issue soon, so
we can review it and
>> >>>> >> >> >> make
>> >>>> >> >> >> comments.
>> >>>> >> >> >>
>> >>>> >> >> >> regards,
>> >>>> >> >> >>
>> >>>> >> >> >> Leonardo Uribe
>> >>>> >> >> >>
>> >>>> >> >> >> 2010/7/19 Marius Petoi <marius.petoi@codebeat.ro>
>> >>>> >> >> >>>
>> >>>> >> >> >>> Hi Martin,
>> >>>> >> >> >>>
>> >>>> >> >> >>> Regarding state saving in tables,
here are my observations
>> >>>> >> >> >>> and
>> >>>> >> >> >>> comments:
>> >>>> >> >> >>> - there is no state saved in relation
to the UIData
>> >>>> >> >> >>> objects.
>> >>>> >> >> >>> - the states saved for the children
of the UIData objects
>> >>>> >> >> >>> (the
>> >>>> >> >> >>> components
>> >>>> >> >> >>> in the tables) are irrelevant. They
are not used
>> >>>> >> >> >>> afterwards,
>> >>>> >> >> >>> as the
>> >>>> >> >> >>> components are initialized at each
request with default
>> >>>> >> >> >>> values
>> >>>> >> >> >>> and
>> >>>> >> >> >>> the
>> >>>> >> >> >>> state
>> >>>> >> >> >>> saved corresponds to the last modifications
of the
>> >>>> >> >> >>> component
>> >>>> >> >> >>> (to
>> >>>> >> >> >>> the
>> >>>> >> >> >>> row
>> >>>> >> >> >>> which was last set via the setRowIndex()
method).
>> >>>> >> >> >>> - every time the setRowIndex() method
is invoked with the
>> >>>> >> >> >>> -1
>> >>>> >> >> >>> parameter,
>> >>>> >> >> >>> _initialDescendantComponentState
is initialized. This will
>> >>>> >> >> >>> no
>> >>>> >> >> >>> longer
>> >>>> >> >> >>> be
>> >>>> >> >> >>> necessary, as the initial state will
be restored from the
>> >>>> >> >> >>> previously
>> >>>> >> >> >>> saved
>> >>>> >> >> >>> state.
>> >>>> >> >> >>> - the _rowStates array of states
is constructed using
>> >>>> >> >> >>> "partial"
>> >>>> >> >> >>> state.
>> >>>> >> >> >>> This means that only states for the
rows which are
>> >>>> >> >> >>> different
>> >>>> >> >> >>> from
>> >>>> >> >> >>> the
>> >>>> >> >> >>> template are saved in this array.
In my opinion, this is
>> >>>> >> >> >>> what
>> >>>> >> >> >>> needs
>> >>>> >> >> >>> to
>> >>>> >> >> >>> be
>> >>>> >> >> >>> saved for the UIData. The children
component of the UIData
>> >>>> >> >> >>> should
>> >>>> >> >> >>> have
>> >>>> >> >> >>> no
>> >>>> >> >> >>> state saved (at least not in the
first phase - we could
>> >>>> >> >> >>> think
>> >>>> >> >> >>> that
>> >>>> >> >> >>> if
>> >>>> >> >> >>> something appears in all the rows
of _rowStates for a
>> >>>> >> >> >>> componentt,
>> >>>> >> >> >>> then
>> >>>> >> >> >>> we
>> >>>> >> >> >>> could move this down to the component
state).
>> >>>> >> >> >>>
>> >>>> >> >> >>> These are just some basic observations
about state saving
>> >>>> >> >> >>> in
>> >>>> >> >> >>> tables.
>> >>>> >> >> >>> What
>> >>>> >> >> >>> do you think?
>> >>>> >> >> >>>
>> >>>> >> >> >>> Regards,
>> >>>> >> >> >>> Marius
>> >>>> >> >> >>>
>> >>>> >> >> >>> On Wed, Jul 14, 2010 at 4:29 PM,
Martin Marinschek
>> >>>> >> >> >>> <mmarinschek@apache.org> wrote:
>> >>>> >> >> >>>>
>> >>>> >> >> >>>> Ok, so you actually checked it
- perfect!
>> >>>> >> >> >>>>
>> >>>> >> >> >>>> Next step: is there any component
where this is different?
>> >>>> >> >> >>>> UIInput
>> >>>> >> >> >>>> is
>> >>>> >> >> >>>> ok - all the other standard components
are ok as well?
>> >>>> >> >> >>>>
>> >>>> >> >> >>>> When we have finished this, take
a look at what Leonardo
>> >>>> >> >> >>>> has
>> >>>> >> >> >>>> done
>> >>>> >> >> >>>> for
>> >>>> >> >> >>>> partial state saving in data-tables.
We will need to work
>> >>>> >> >> >>>> out
>> >>>> >> >> >>>> a
>> >>>> >> >> >>>> proposal for an API in JSF 2.1
- and, I guess, alsongside
>> >>>> >> >> >>>> our
>> >>>> >> >> >>>> implementation, also an implementation
for Mojarra, cause
>> >>>> >> >> >>>> the
>> >>>> >> >> >>>> RI
>> >>>> >> >> >>>> team
>> >>>> >> >> >>>> will not be able to get this
done.
>> >>>> >> >> >>>>
>> >>>> >> >> >>>> best regards,
>> >>>> >> >> >>>>
>> >>>> >> >> >>>> Martin
>> >>>> >> >> >>>>
>> >>>> >> >> >>>> On 7/14/10, Marius Petoi <marius.petoi@codebeat.ro>
wrote:
>> >>>> >> >> >>>> > I placed a breakpoint in
>> >>>> >> >> >>>> > DefaultFaceletsManagementStrategy.saveStateOnMap,
>> >>>> >> >> >>>> > in the point where saveState
is called for each
>> >>>> >> >> >>>> > component.
>> >>>> >> >> >>>> > That
>> >>>> >> >> >>>> > is
>> >>>> >> >> >>>> > the
>> >>>> >> >> >>>> > point
>> >>>> >> >> >>>> > where the state to be saved
is retrieved. That is where
>> >>>> >> >> >>>> > I
>> >>>> >> >> >>>> > got
>> >>>> >> >> >>>> > the
>> >>>> >> >> >>>> > information on the first
place. I looked at each
>> >>>> >> >> >>>> > component
>> >>>> >> >> >>>> > and
>> >>>> >> >> >>>> > at
>> >>>> >> >> >>>> > the
>> >>>> >> >> >>>> > returned value of saveState.
>> >>>> >> >> >>>> >
>> >>>> >> >> >>>> > On Wed, Jul 14, 2010 at
3:41 PM, Martin Marinschek
>> >>>> >> >> >>>> > <mmarinschek@apache.org>wrote:
>> >>>> >> >> >>>> >
>> >>>> >> >> >>>> >> Hi Marius,
>> >>>> >> >> >>>> >>
>> >>>> >> >> >>>> >> "as I see" means you
see it, or you think it is like
>> >>>> >> >> >>>> >> this
>> >>>> >> >> >>>> >> ;) ?
>> >>>> >> >> >>>> >>
>> >>>> >> >> >>>> >> best regards,
>> >>>> >> >> >>>> >>
>> >>>> >> >> >>>> >> Martin
>> >>>> >> >> >>>> >>
>> >>>> >> >> >>>> >> On 7/14/10, Marius Petoi
<marius.petoi@codebeat.ro>
>> >>>> >> >> >>>> >> wrote:
>> >>>> >> >> >>>> >> > Hi Martin,
>> >>>> >> >> >>>> >> >
>> >>>> >> >> >>>> >> > I think you mean
for the attributes that I say are
>> >>>> >> >> >>>> >> > added
>> >>>> >> >> >>>> >> > before
>> >>>> >> >> >>>> >> > the
>> >>>> >> >> >>>> >> > call
>> >>>> >> >> >>>> >> to
>> >>>> >> >> >>>> >> > markInitialState().
So, as I see, the
>> >>>> >> >> >>>> >> > org.apache.myfaces.view.facelets.MARK_ID,
locale,
>> >>>> >> >> >>>> >> > uniqueIdCounter,
>> >>>> >> >> >>>> >> > renderKitId, rendererType
are not present in the
>> >>>> >> >> >>>> >> > partial
>> >>>> >> >> >>>> >> > state
>> >>>> >> >> >>>> >> > at
>> >>>> >> >> >>>> >> > the
>> >>>> >> >> >>>> >> > end
>> >>>> >> >> >>>> >> of
>> >>>> >> >> >>>> >> > the lifecycle,
although they are in the StateHelper.
>> >>>> >> >> >>>> >> > The
>> >>>> >> >> >>>> >> > reason
>> >>>> >> >> >>>> >> > for
>> >>>> >> >> >>>> >> > this
>> >>>> >> >> >>>> >> is
>> >>>> >> >> >>>> >> > that they are added
there before the call to
>> >>>> >> >> >>>> >> > markInitialState().
>> >>>> >> >> >>>> >> > So,
>> >>>> >> >> >>>> >> > they
>> >>>> >> >> >>>> >> > will never be in
the partial state.
>> >>>> >> >> >>>> >> >
>> >>>> >> >> >>>> >> > Regards,
>> >>>> >> >> >>>> >> > Marius
>> >>>> >> >> >>>> >> >
>> >>>> >> >> >>>> >> > On Wed, Jul 14,
2010 at 3:05 PM, Martin Marinschek
>> >>>> >> >> >>>> >> > <mmarinschek@apache.org>wrote:
>> >>>> >> >> >>>> >> >
>> >>>> >> >> >>>> >> >> Hi Marius,
>> >>>> >> >> >>>> >> >>
>> >>>> >> >> >>>> >> >> you are sounding
a bit unsure about this - did you
>> >>>> >> >> >>>> >> >> really
>> >>>> >> >> >>>> >> >> check
>> >>>> >> >> >>>> >> >> what
>> >>>> >> >> >>>> >> >> is in the partial
state at the end of the lifecycle?
>> >>>> >> >> >>>> >> >>
>> >>>> >> >> >>>> >> >> best regards,
>> >>>> >> >> >>>> >> >>
>> >>>> >> >> >>>> >> >> Martin
>> >>>> >> >> >>>> >> >>
>> >>>> >> >> >>>> >> >> On 7/14/10,
Marius Petoi <marius.petoi@codebeat.ro>
>> >>>> >> >> >>>> >> >> wrote:
>> >>>> >> >> >>>> >> >> > Hello,
>> >>>> >> >> >>>> >> >> >
>> >>>> >> >> >>>> >> >> > After
the improvements we discussed in previous
>> >>>> >> >> >>>> >> >> > threads,
>> >>>> >> >> >>>> >> >> > here
>> >>>> >> >> >>>> >> >> > is
>> >>>> >> >> >>>> >> >> > what
>> >>>> >> >> >>>> >> >> > the
>> >>>> >> >> >>>> >> >> > state
looks like for some of the components:
>> >>>> >> >> >>>> >> >> >
>> >>>> >> >> >>>> >> >> > - the
org.apache.myfaces.view.facelets.MARK_ID
>> >>>> >> >> >>>> >> >> > (ComponentSupport.MARK_CREATED)
attribute is
>> >>>> >> >> >>>> >> >> > present
>> >>>> >> >> >>>> >> >> > in
>> >>>> >> >> >>>> >> >> > almost
>> >>>> >> >> >>>> >> >> > all
>> >>>> >> >> >>>> >> >> > the
>> >>>> >> >> >>>> >> >> > components,
but that is put in the attributes map
>> >>>> >> >> >>>> >> >> > before
>> >>>> >> >> >>>> >> >> > the
>> >>>> >> >> >>>> >> >> > initial
>> >>>> >> >> >>>> >> >> state
>> >>>> >> >> >>>> >> >> > is marked,
so I think it does not affect partial
>> >>>> >> >> >>>> >> >> > state
>> >>>> >> >> >>>> >> >> > saving
>> >>>> >> >> >>>> >> >> >
>> >>>> >> >> >>>> >> >> > - same
goes for locale, uniqueIdCounter,
>> >>>> >> >> >>>> >> >> > renderKitId,
>> >>>> >> >> >>>> >> >> > rendererType,
>> >>>> >> >> >>>> >> >> > which
>> >>>> >> >> >>>> >> >> > are also
attributes in the StateHelper, but are
>> >>>> >> >> >>>> >> >> > added
>> >>>> >> >> >>>> >> >> > before
>> >>>> >> >> >>>> >> >> > the
>> >>>> >> >> >>>> >> >> > call
>> >>>> >> >> >>>> >> to
>> >>>> >> >> >>>> >> >> > markInitialState().
So they also shouldn't be
>> >>>> >> >> >>>> >> >> > included
in
>> >>>> >> >> >>>> >> >> > the
>> >>>> >> >> >>>> >> >> > partial
>> >>>> >> >> >>>> >> >> state.
>> >>>> >> >> >>>> >> >> >
>> >>>> >> >> >>>> >> >> > - for
UIInput, the partial state contains the
>> >>>> >> >> >>>> >> >> > value,
>> >>>> >> >> >>>> >> >> > localValueSet,
>> >>>> >> >> >>>> >> >> > submittedValue
and valid properties. This is the
>> >>>> >> >> >>>> >> >> > partial
>> >>>> >> >> >>>> >> >> > state
>> >>>> >> >> >>>> >> >> > which
>> >>>> >> >> >>>> >> is
>> >>>> >> >> >>>> >> >> > stored
after one submit.
>> >>>> >> >> >>>> >> >> >
>> >>>> >> >> >>>> >> >> > Do you
have other suggestions about what else
>> >>>> >> >> >>>> >> >> > could
>> >>>> >> >> >>>> >> >> > be
>> >>>> >> >> >>>> >> >> > improved
>> >>>> >> >> >>>> >> >> > in
>> >>>> >> >> >>>> >> >> partial
>> >>>> >> >> >>>> >> >> > state
saving?
>> >>>> >> >> >>>> >> >> >
>> >>>> >> >> >>>> >> >> > Regards,
>> >>>> >> >> >>>> >> >> > Marius
>> >>>> >> >> >>>> >> >> >
>> >>>> >> >> >>>> >> >>
>> >>>> >> >> >>>> >> >>
>> >>>> >> >> >>>> >> >> --
>> >>>> >> >> >>>> >> >>
>> >>>> >> >> >>>> >> >> http://www.irian.at
>> >>>> >> >> >>>> >> >>
>> >>>> >> >> >>>> >> >> Your JSF powerhouse
-
>> >>>> >> >> >>>> >> >> JSF Consulting,
Development and
>> >>>> >> >> >>>> >> >> Courses in
English and German
>> >>>> >> >> >>>> >> >>
>> >>>> >> >> >>>> >> >> Professional
Support for Apache MyFaces
>> >>>> >> >> >>>> >> >>
>> >>>> >> >> >>>> >> >
>> >>>> >> >> >>>> >>
>> >>>> >> >> >>>> >>
>> >>>> >> >> >>>> >> --
>> >>>> >> >> >>>> >>
>> >>>> >> >> >>>> >> http://www.irian.at
>> >>>> >> >> >>>> >>
>> >>>> >> >> >>>> >> Your JSF powerhouse
-
>> >>>> >> >> >>>> >> JSF Consulting, Development
and
>> >>>> >> >> >>>> >> Courses in English and
German
>> >>>> >> >> >>>> >>
>> >>>> >> >> >>>> >> Professional Support
for Apache MyFaces
>> >>>> >> >> >>>> >>
>> >>>> >> >> >>>> >
>> >>>> >> >> >>>>
>> >>>> >> >> >>>>
>> >>>> >> >> >>>> --
>> >>>> >> >> >>>>
>> >>>> >> >> >>>> http://www.irian.at
>> >>>> >> >> >>>>
>> >>>> >> >> >>>> Your JSF powerhouse -
>> >>>> >> >> >>>> JSF Consulting, Development and
>> >>>> >> >> >>>> Courses in English and German
>> >>>> >> >> >>>>
>> >>>> >> >> >>>> Professional Support for Apache
MyFaces
>> >>>> >> >> >>>
>> >>>> >> >> >>
>> >>>> >> >> >
>> >>>> >> >> >
>> >>>> >> >>
>> >>>> >> >>
>> >>>> >> >>
>> >>>> >> >> --
>> >>>> >> >>
>> >>>> >> >> http://www.irian.at
>> >>>> >> >>
>> >>>> >> >> Your JSF powerhouse -
>> >>>> >> >> JSF Consulting, Development and
>> >>>> >> >> Courses in English and German
>> >>>> >> >>
>> >>>> >> >> Professional Support for Apache MyFaces
>> >>>> >> >
>> >>>> >> >
>> >>>> >>
>> >>>> >>
>> >>>> >>
>> >>>> >> --
>> >>>> >>
>> >>>> >> http://www.irian.at
>> >>>> >>
>> >>>> >> Your JSF powerhouse -
>> >>>> >> JSF Consulting, Development and
>> >>>> >> Courses in English and German
>> >>>> >>
>> >>>> >> Professional Support for Apache MyFaces
>> >>>> >
>> >>>> >
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>>
>> >>>> http://www.irian.at
>> >>>>
>> >>>> Your JSF powerhouse -
>> >>>> JSF Consulting, Development and
>> >>>> Courses in English and German
>> >>>>
>> >>>> Professional Support for Apache MyFaces
>> >>>
>> >>
>> >
>> >
>>
>>
>>
>> --
>>
>> http://www.irian.at
>>
>> Your JSF powerhouse -
>> JSF Consulting, Development and
>> Courses in English and German
>>
>> Professional Support for Apache MyFaces
>
>



-- 

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Mime
View raw message