Em quase todos os grandes eventos de Ruby e Rails estamos tendo o privilegio imensuravel de desfrutarmos do talento musical dos railers. Como sou uma boa pessoa, nao irei priva-lo destes momentos inusitados......deixando de lado a ironia, realmente e muito bom ouvir musica nos eventos e as que voce vera nos proximos videos sao otimas!Regaae do NodeApresentado na RubyConf Brasil 2010.By @danicuki, @luizfaias, @ucoaaa e @andrefaria.Melo do Teste Automatizado e Samba do AkitaMelo do Teste Automatizado e Samba do Akita apresentado no Rails Summit 2009 por Daniel CukierForro do ElomarForro do Elomar no Oxente Rails em 2010 Um dos fundamentos de maior relevancia do JSF e seu ciclo de vida que se da entre requisicao e resposta do servidor de aplicacao. Sao varios os motivos da existencia deste ciclo, dentre estes, temos:Manter o controle de estado dos componentes de interface;Alinhar ouvintes de eventos com seus respectivos eventos;Controle de navegacao entre paginas, que deve ser realizado pelo servidor;Permitir que validacoes e conversoes sejam realizadas no lado do servidor.Indo direto ao assunto, o ciclo de vida do JSF se divide em 6 fases (veja a figura abaixo), que sao:Fase 1: Restore View (Restauracao da Visao)Fase 2: Apply Request Values (Aplicar Valores da Requisicao)Fase 3: Process Validation (Processar as Validacoes)Fase 4: Update Model Values (Atualizar Valores de Modelo)Fase 5: Invoke Application (Invocar Aplicacao)Fase 6: Render Response (Renderizar a Resposta)Ciclo de vida do JSFVejamos agora o que acontece em cada uma.Fase 1: Restore View (Restauracao da Visao)A partir de uma requisicao proveniente do servlet FacesServlet, e identificado qual visao esta sendo requisitada por meio do ID desta que e determinado pelo nome da pagina JSP. Tendo identificado a pagina, esta e salva no FacesContext (caso ainda nao tenha sido salva) e sua respectiva arvore de componentes e construida.Fase 2: Apply Request Values (Aplicar Valores da Requisicao)Nesta fase, cada componente da visao, criado ou recuperado, passa a ter o seu valor. Nesse contexto, existem algumas diferencas ocasionadas pelo valor do atributo "immediate" em cada componente:immediate = false: Neste caso, que e o padrao, os valores sao apenas convertidos para o tipo apropriado. Se o valor e um Integer, e convertido para Integer.immediate = true: Os valores sao convertidos e validos.Fase 3: Process Validation (Processar as Validacoes)Esta e a primeira manipulacao de eventos do ciclo, aqui serao executadas as validacoes definidas pelo servidor em cada componente. Nao existindo valores invalidos, o ciclo segue para a Fase 4. Existindo, uma mensagem de erro sera gerada (adicionada ao contexto do Faces, FacesContext) e o componente e marcado como invalido. Neste caso, o ciclo segue para a Fase 6 (Renderizar a resposta).Fase 4: Update Model Values (Atualizar Valores de Modelo)Os valores enviados pela requisicao e validados pela fase 3, sao atualizados em seus respectivos atributos contidos nos backings beans, onde somente as propriedades enviadas sao atualizadas. E importante dizer que, mesmo apos a fase de validacao, fase 3, os valores enviados podem estar invalidos a nivel de negocio ou a nivel de conversao de tipos, o que pode ser verificado pelo proprio bean.Fase 5: Invoke Application (Invocar Aplicacao)Nesta fase, os valores