Hi guys, I am alright with this. Jakob, can you check generally if we do anything in static settings which would also be affected by this deployment scenario? I would certainly think it is possible that we already do so...
best regards, Martin On 5/27/10, Gerhard Petracek <gerhard.petra...@gmail.com> wrote: > to reduce possible confusions in such very special cases - we can provide a > meaningful default message, if the call stack is missing in dev. mode. > > -> +1 for keeping this feature (for now). > > 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/27 Jakob Korherr <jakob.korh...@gmail.com> > >> Hi guys, >> >> I'd like to sum this up and get some final opinions on whether or not to >> remove the code from UIInput. >> >> Keeping the code on UIInput would provide the call stack in the extended >> debug tree for submittedValue and localValue which is a very cool feature, >> but may lead to a small performance loss (even in production stage) unless >> we cache the project stage setting in UIInput. This could result in weird >> behavior when using MyFaces from a shared lib folder on a system with many >> applications with different project stage settings. >> >> This weird behavior however only means having the call stack available in >> the debug output or not, so it is just an extra feature which will be >> available or not when mixing different project stage settings and I think >> we >> can deal with this by a good documentation (e.g. adding a wiki page >> regarding this problem) and also I guess this will not affect many users. >> >> So my suggestion is to leave the code on UIInput but to cache the Project >> Stage setting in a static final attribute on UIInput to get rid of the >> performance issue and furthermore add a wiki page about this. >> >> >> What do you guys think? >> >> Regards, >> Jakob >> >> 2010/5/21 Jakob Korherr <jakob.korh...@gmail.com> >> >> 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 >>> >> >> >> >> -- >> 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