Return-Path: X-Original-To: apmail-myfaces-dev-archive@www.apache.org Delivered-To: apmail-myfaces-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id ECA079765 for ; Wed, 14 Mar 2012 19:44:59 +0000 (UTC) Received: (qmail 91712 invoked by uid 500); 14 Mar 2012 19:44:59 -0000 Delivered-To: apmail-myfaces-dev-archive@myfaces.apache.org Received: (qmail 91667 invoked by uid 500); 14 Mar 2012 19:44:59 -0000 Mailing-List: contact dev-help@myfaces.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "MyFaces Development" Delivered-To: mailing list dev@myfaces.apache.org Received: (qmail 91498 invoked by uid 99); 14 Mar 2012 19:44:51 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 14 Mar 2012 19:44:51 +0000 X-ASF-Spam-Status: No, hits=-0.5 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of lu4242@gmail.com designates 209.85.210.51 as permitted sender) Received: from [209.85.210.51] (HELO mail-pz0-f51.google.com) (209.85.210.51) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 14 Mar 2012 19:44:47 +0000 Received: by dady9 with SMTP id y9so3174583dad.10 for ; Wed, 14 Mar 2012 12:44:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; bh=xXoOvCGFL1xZWO5NtCQfC2HRbcYOQKDjqAEXVIDIHfc=; b=Dw5RZt5jxNk9C62xdF62Go4Xm0/xEzoEjXlsD61RU63TSWFtxdNmGl912LZN5cMYli o5yBNeLUlhCfctixZLpZkKJbulk3ZPIgl4/eTK/QTSzb9K6oM2BHUdAE6XqGzy3QoGGs GAg00ljbJw26xwGjZp20u3Bq/PuFdP0i0Dk4wnKst+V/RSIngB06DcJEMcRYY2vY+OQo qdHz0bfZ6THOfnXxqQgxIJMfhWO9RvUxZfCYTGNEwG18FJ9OVzF2tgg7xpg8ozlIuQTC f9WNYjEwdfbLf1FQT3a9qaO5u2dnugNcr31gI5zjvfNP/xQvjGUrvmpddqvFiMfa07kx A8qQ== MIME-Version: 1.0 Received: by 10.68.135.74 with SMTP id pq10mr4564930pbb.24.1331754267275; Wed, 14 Mar 2012 12:44:27 -0700 (PDT) Received: by 10.142.251.8 with HTTP; Wed, 14 Mar 2012 12:44:27 -0700 (PDT) In-Reply-To: References: <7EFDA21B0072FC449D32FFDCE5367FB680CBB694DB@MBX02.scisb.isban.corp> Date: Wed, 14 Mar 2012 14:44:27 -0500 Message-ID: Subject: Re: Question about DefaultFaceletsStateManagementStrategy From: Leonardo Uribe To: MyFaces Development Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-Virus-Checked: Checked by ClamAV on apache.org Hi In theory there exists 2 ids: the viewId without resolve, and the logical viewId. The first one is the one extracted from request path, and usually contains the suffix mapping (for example /home.jsf) . The logical is the one that points to the real resouce, for example /home.xhtml or /home.jspx or /home.xml). This is an example extracted from my experiments playing with stateless jsf: public class StatelessViewHandler extends ViewHandlerWrapper { @Override public UIViewRoot restoreView(FacesContext context, String viewId) { InitialViewCache ivch =3D InitialViewCache.getInstance(context); ViewHandler viewHandler =3D context.getApplication().getViewHandler= (); String logicalViewId =3D viewHandler.deriveLogicalViewId(context, v= iewId); if (ivch.isMarkedAsStateless(rawViewId)) { The idea is be careful an use always the logical viewId, and when you are not sure call viewHandler.deriveLogicalViewId(context, viewId) . regards, Leonardo Uribe 2012/3/14 Thomas Andraschko : > Hi Leonardo, > > how can i get the viewId/deriveLogicalViewId in initView()? > Maybe i can change this stuff the next weeks. > > Thanks, > Thomas > > > 2012/3/14 Leonardo Uribe >> >> Hi >> >> 2012/3/14 PEREZ ALCAIDE JESUS : >> > Hello, >> > >> > >> > >> > I=92m creating a custom ViewHandler in order to cache the component tr= ee >> > whenever is possible. I=92m following the idea of =93stateless JSF=94 = to >> > improve >> > performance. >> > >> >> Ok. Please be sure to read the latest discussion about this topic: >> >> >> http://markmail.org/message/24sbs2ltnrql7swz?q=3D[core]+discussion+about= +stateless+jsf+implementation >> >> > >> > >> > My question is about >> > DefaultFaceletsStateManagementStrategy.restoreView() >> > method. In this method, you are calling >> > ViewMetadata.createMetadataView() >> > =A0which ends up calling ViewHandler.createView to create the UIViewRo= ot >> > used >> > for metadata and a ViewMetadataFacelet to populate it. >> > >> > >> > >> > But this UIViewRoot (created for metadata) is used later to build the >> > =91real=92 >> > view. Why? >> > >> >> That is for performance reasons. Suppose a request is received with some >> query params. To process them, it is only necessary to build the metadat= a >> and then if a navigation occur by some condition, the new view can be >> build, preventing the overhead associated with build the first view. >> >> > I think that a new UIViewRoot should be created for the real view, >> > because >> > metadata-view and real-view use different Facelets to populate the vie= w. >> > >> > >> > >> > Also, in the method DefaultFaceletsStateManagementStrategy.restoreView= () >> > you >> > are calling the static method ViewMetadata.getViewParameters(UIViewRoo= t) >> > on >> > an instance of ViewMetadata (I think this should be fixed) and the >> > Collection of UIViewParameters returned is not processed. >> > >> > >> >> That's by JSF 2.0 spec. >> >> > >> > I wonder if ViewMetadata should be used in this method. I cannot see a= ny >> > processing related to metadata happening here. >> > >> > >> >> It should be, because if we don't Partial State Saving algorithm will >> break. The >> view should be build on restoreView just like the first time + update >> the "delta" >> information. >> >> > >> > Hope you have understood me. >> > >> > >> >> Yes, from my side, I can read the mail without problem. The idea propose= d >> in "stateless JSF" is feasible, but it requires some changes like: >> >> - Use ConcurrentHashMap/ConcurrentLRUCache instead synchronized blocks. >> - Use buildView instead clone the view to generate a new one. >> - Use a combination of viewId/deriveLogicalViewId() >> >> Suggestions and contributions are welcome. >> >> regards, >> >> Leonardo Uribe >> >> > >> > >> > >> > Un saludo, >> > >> > >> > >> > Jes=FAs P=E9rez Alcaide >> > >> > Lab. Banksphere - Runtime >> > >> > Tlf:=A0 91 470 5223 >> > >> > >> > >> > >> > >> > >> > *********************AVISO LEGAL ********************** >> > Este mensaje es privado y confidencial y solamente para la persona a l= a >> > que >> > va dirigido. Si usted ha recibido este mensaje por error, no debe >> > revelar, >> > copiar, distribuir o usarlo en ning=FAn sentido. Le rogamos lo comuniq= ue >> > al >> > remitente y borre dicho mensaje y cualquier documento adjunto que >> > pudiera >> > contener. No hay renuncia a la confidencialidad ni a ning=FAn privileg= io >> > por >> > causa de transmisi=F3n err=F3nea o mal funcionamiento. >> > Cualquier opini=F3n expresada en este mensaje pertenece =FAnicamente a= l >> > autor >> > remitente, y no representa necesariamente la opini=F3n de ISBAN, a no = ser >> > que >> > expresamente se diga y el remitente est=E9 autorizado para hacerlo. >> > Los correos electr=F3nicos no son seguros, no garantizan la >> > confidencialidad >> > ni la correcta recepci=F3n de los mismos, dado que pueden ser >> > interceptados, >> > manipulados, destruidos, llegar con demora o incompletos, o con virus. >> > ISBAN >> > no se hace responsable de los cambios, alteraciones, errores u omision= es >> > que >> > pudieran hacerse al mensaje una vez enviado. >> > Este mensaje s=F3lo tiene una finalidad de informaci=F3n, y no debe >> > interpretarse como una oferta de venta o de compra de valores ni de >> > instrumentos financieros relacionados. >> > >> > **********************DISCLAIMER***************** >> > This message is private and confidential and it is intended exclusivel= y >> > for >> > the addressee. If you receive this message by mistake, you should not >> > disseminate, distribute or copy this e-mail. Please inform the sender >> > and >> > delete the message and attachments from your system. No confidentialit= y >> > nor >> > any privilege regarding the information is waived or lost by any >> > mistransmission or malfunction. >> > Any views or opinions contained in this message are solely those of th= e >> > author, and do not necessarily represent those of ISBAN, unless >> > otherwise >> > specifically stated and the sender is authorized to do so. >> > E-mail transmission cannot be guaranteed to be secure, confidential, o= r >> > error-free, as information could be intercepted, corrupted, lost, >> > destroyed, >> > arrive late or incomplete, or contain viruses. ISBAN does not accept >> > responsibility for any changes, errors or omissions in the contents of >> > this >> > message after it has been sent. >> > This message is provided for informational purposes and should not be >> > construed as a solicitation or offer to buy or sell any securities or >> > related financial instruments. > >