Hi guys,

well, yes - I fear so as well.

I wonder if that development switch is used often in other places as
well - do we have that same performance problem somewhere else?

best regards,

Martin

On Fri, May 21, 2010 at 6:17 PM, Jakob Korherr <jakob.korh...@gmail.com> wrote:
> But this _could_ be a problem, or at least result in weird behavior, so I
> think it is the best solution just to remove the code from UIInput...
>
> Regards,
> Jakob
>
> 2010/5/21 Gerhard Petracek <gerhard.petra...@gmail.com>
>>
>> yes - that's true! i also told leonardo about it.
>> in his e-mail he just skipped it...
>> regards,
>> gerhard
>>
>> http://www.irian.at
>>
>> Your JSF powerhouse -
>> JSF Consulting, Development and
>> Courses in English and German
>>
>> Professional Support for Apache MyFaces
>>
>>
>>
>> 2010/5/21 Martin Marinschek <mmarinsc...@apache.org>
>>>
>>> Hi guys,
>>>
>>> if MyFaces is deployed with the web-app, the static var will reside in
>>> a class which is loaded by the context class-loader - so once per app.
>>> Problems might only arise if MyFaces is deployed only once for all
>>> web-apps - which will seldom be the case, I guess.
>>>
>>> best regards,
>>>
>>> Martin
>>>
>>> On 5/21/10, Jakob Korherr <jakob.korh...@gmail.com> wrote:
>>> > So the conclusion is to use a private static boolean on UIInput that
>>> > tells
>>> > us if we are in Development stage or not.
>>> >
>>> > Any objections to that?
>>> >
>>> > Regards,
>>> > Jakob
>>> >
>>> > 2010/5/20 Leonardo Uribe <lu4...@gmail.com>
>>> >
>>> >> Hi
>>> >>
>>> >> 2010/5/19 Jan-Kees van Andel <jankeesvanan...@gmail.com>
>>> >>
>>> >> Sounds plausible, we already do the same thing with the
>>> >> ExternalContexts
>>> >>> class.
>>> >>>
>>> >>> It's blazing fast, but the question is: Are we allowed to and do we
>>> >>> want
>>> >>> to cache the instance?
>>> >>>
>>> >>>
>>> >> In theory yes, because it does not change the behavior expected by the
>>> >> spec.
>>> >>
>>> >>
>>> >>>  If the spec doesn't dictate otherwise, I'm in favor of caching it.
>>> >>>
>>> >>> Another idea is to cache it in the ServletContext. It's not as fast
>>> >>> as a
>>> >>> static final field, but still pretty fast and can be inspected and
>>> >>> modified
>>> >>> through appserver tooling.
>>> >>>
>>> >>>
>>> >> The problem is from UIInput.setValue() or UIInput.setSubmittedValue()
>>> >> we
>>> >> don't have access to ServletContext (the only way is through
>>> >> FacesContext.getCurrentInstance().getExternalContext(), and we want to
>>> >> avoid
>>> >> the call to FacesContext.getCurrentInstance() ).
>>> >>
>>> >> Talking with Gerhard, the conclusion was a static var could do the
>>> >> job. Is
>>> >> just unrealistic assume someone has a production environment with some
>>> >> applications with project stage "production" and others "development"
>>> >> (note
>>> >> shared variables are "shared" by all applications hosted in a web
>>> >> server).
>>> >> In the worst case, the applications will continue working.
>>> >>
>>> >> regards,
>>> >>
>>> >> Leonardo
>>> >>
>>> >>
>>> >>> Regards,
>>> >>> Jan-Kees
>>> >>>
>>> >>>
>>> >>> 2010/5/19 Gerhard Petracek <gerhard.petra...@gmail.com>
>>> >>>
>>> >>>> we don't have to cache the faces-context.
>>> >>>> we can use e.g. an interface with a static final field.
>>> >>>>
>>> >>>> usage (example):
>>> >>>> if(Boolean.TRUE.equals(InternalProjectStage.IS_DEV_MODE))
>>> >>>> {
>>> >>>> //...
>>> >>>> }
>>> >>>>
>>> >>>> -> there is just one evaluation.
>>> >>>>
>>> >>>> regards,
>>> >>>> gerhard
>>> >>>>
>>> >>>> http://www.irian.at
>>> >>>>
>>> >>>> Your JSF powerhouse -
>>> >>>> JSF Consulting, Development and
>>> >>>> Courses in English and German
>>> >>>>
>>> >>>> Professional Support for Apache MyFaces
>>> >>>>
>>> >>>>
>>> >>>> 2010/5/19 Leonardo Uribe <lu4...@gmail.com>
>>> >>>>
>>> >>>> Hi
>>> >>>>>
>>> >>>>> The problem in this case is the only place we can store this
>>> >>>>> information
>>> >>>>> is the component instance itself. So, at least there is one lookup
>>> >>>>> per
>>> >>>>> component.
>>> >>>>>
>>> >>>>> If we try to cache facesContext, unfortunately there is not safe
>>> >>>>> way to
>>> >>>>> clean this reference (portlet case), so there is a risk of use old
>>> >>>>> instances
>>> >>>>> of this object in this case.
>>> >>>>>
>>> >>>>> regards,
>>> >>>>>
>>> >>>>> Leonardo Uribe
>>> >>>>>
>>> >>>>> 2010/5/19 Gerhard Petracek <gerhard.petra...@gmail.com>
>>> >>>>>
>>> >>>>> hi,
>>> >>>>>>
>>> >>>>>> as long as we don't want to change the project stage dynamically,
>>> >>>>>> we
>>> >>>>>> can just store e.g. a marker as static information.
>>> >>>>>>
>>> >>>>>> regards,
>>> >>>>>> gerhard
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> http://www.irian.at
>>> >>>>>>
>>> >>>>>> Your JSF powerhouse -
>>> >>>>>> JSF Consulting, Development and
>>> >>>>>> Courses in English and German
>>> >>>>>>
>>> >>>>>> Professional Support for Apache MyFaces
>>> >>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> 2010/5/19 Jakob Korherr <jakob.korh...@gmail.com>
>>> >>>>>>
>>> >>>>>> Hi Martin,
>>> >>>>>>>
>>> >>>>>>> Indeed, we have to call FacesContext.getCurrentInstance()
>>> >>>>>>> everytime.
>>> >>>>>>>
>>> >>>>>>> So I guess it will be better to remove the code from UIInput!
>>> >>>>>>>
>>> >>>>>>> Regards,
>>> >>>>>>> Jakob
>>> >>>>>>>
>>> >>>>>>> 2010/5/19 Martin Marinschek <mmarinsc...@apache.org>
>>> >>>>>>>
>>> >>>>>>> Hi Jakob,
>>> >>>>>>>>
>>> >>>>>>>> > The problem with this is that the code on UIInput checks the
>>> >>>>>>>> ProjectStage
>>> >>>>>>>> > everytime setSubmittedValue() or setValue() are called, which
>>> >>>>>>>> > is
>>> >>>>>>>> very often
>>> >>>>>>>> > and could make MyFaces a bit slower, I guess. If we remove
>>> >>>>>>>> > this
>>> >>>>>>>> code on
>>> >>>>>>>> > UIInput, the debug output will stay mostly the same except for
>>> >>>>>>>> > the
>>> >>>>>>>> call
>>> >>>>>>>> > stack, because this will be gone.
>>> >>>>>>>> >
>>> >>>>>>>> > The question now is if we should leave it the way it currently
>>> >>>>>>>> > is
>>> >>>>>>>> (with the
>>> >>>>>>>> > code on UIInput and the possibility to display the call stack)
>>> >>>>>>>> > or
>>> >>>>>>>> if we
>>> >>>>>>>> > should remove the code from UIInput (which means no slowdown
>>> >>>>>>>> > on
>>> >>>>>>>> > setSubmittedValue() and setValue() but loosing the call
>>> >>>>>>>> > stack).
>>> >>>>>>>> What do you
>>> >>>>>>>> > guys think? Any opinions/objections?
>>> >>>>>>>>
>>> >>>>>>>> for me it is a question how fast this getProjectStage()
>>> >>>>>>>> derivation
>>> >>>>>>>> is.
>>> >>>>>>>> If that means to call FacesContext.getCurrentInstance() all the
>>> >>>>>>>> time,
>>> >>>>>>>> the impact is considerable (thread-local resolution). In this
>>> >>>>>>>> case
>>> >>>>>>>> it
>>> >>>>>>>> might be better to not have this information...
>>> >>>>>>>>
>>> >>>>>>>> Martin
>>> >>>>>>>>
>>> >>>>>>>> > Regards,
>>> >>>>>>>> > Jakob
>>> >>>>>>>> >
>>> >>>>>>>> > --
>>> >>>>>>>> > Jakob Korherr
>>> >>>>>>>> >
>>> >>>>>>>> > blog: http://www.jakobk.com
>>> >>>>>>>> > twitter: http://twitter.com/jakobkorherr
>>> >>>>>>>> > work: http://www.irian.at
>>> >>>>>>>> >
>>> >>>>>>>>
>>> >>>>>>>>
>>> >>>>>>>>
>>> >>>>>>>> --
>>> >>>>>>>>
>>> >>>>>>>> http://www.irian.at
>>> >>>>>>>>
>>> >>>>>>>> Your JSF powerhouse -
>>> >>>>>>>> JSF Consulting, Development and
>>> >>>>>>>> Courses in English and German
>>> >>>>>>>>
>>> >>>>>>>> Professional Support for Apache MyFaces
>>> >>>>>>>>
>>> >>>>>>>
>>> >>>>>>>
>>> >>>>>>>
>>> >>>>>>> --
>>> >>>>>>> Jakob Korherr
>>> >>>>>>>
>>> >>>>>>> blog: http://www.jakobk.com
>>> >>>>>>> twitter: http://twitter.com/jakobkorherr
>>> >>>>>>> work: http://www.irian.at
>>> >>>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>
>>> >>>>
>>> >>>
>>> >>
>>> >
>>> >
>>> > --
>>> > Jakob Korherr
>>> >
>>> > blog: http://www.jakobk.com
>>> > twitter: http://twitter.com/jakobkorherr
>>> > work: http://www.irian.at
>>> >
>>>
>>>
>>> --
>>>
>>> http://www.irian.at
>>>
>>> Your JSF powerhouse -
>>> JSF Consulting, Development and
>>> Courses in English and German
>>>
>>> Professional Support for Apache MyFaces
>>
>
>
>
> --
> Jakob Korherr
>
> blog: http://www.jakobk.com
> twitter: http://twitter.com/jakobkorherr
> work: http://www.irian.at
>



-- 

http://www.irian.at

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

Professional Support for Apache MyFaces

Reply via email to