From 92f95eb8df046c44ba54d0234eb86bdad8476d96 Mon Sep 17 00:00:00 2001 From: lusabo Date: Fri, 24 May 2013 17:03:51 -0300 Subject: [PATCH] FacesContext deixou de ter @RequestEscoped, adicionado FacesContextProxy e retirado o FacesContextProducer. --- impl/extension/jsf/pom.xml | 2 +- impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/FacesContextProducer.java | 61 ------------------------------------------------------------- impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/proxy/FacesContextProxy.java | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ impl/extension/jsf/src/test/java/br/gov/frameworkdemoiselle/internal/producer/FacesContextProducerTest.java | 87 --------------------------------------------------------------------------------------- 4 files changed, 185 insertions(+), 149 deletions(-) delete mode 100644 impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/FacesContextProducer.java create mode 100644 impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/proxy/FacesContextProxy.java delete mode 100644 impl/extension/jsf/src/test/java/br/gov/frameworkdemoiselle/internal/producer/FacesContextProducerTest.java diff --git a/impl/extension/jsf/pom.xml b/impl/extension/jsf/pom.xml index cdafe56..60a0c9b 100755 --- a/impl/extension/jsf/pom.xml +++ b/impl/extension/jsf/pom.xml @@ -83,7 +83,7 @@ org.glassfish.web el-impl - test + provided diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/FacesContextProducer.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/FacesContextProducer.java deleted file mode 100644 index 070ce78..0000000 --- a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/FacesContextProducer.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Demoiselle Framework - * Copyright (C) 2010 SERPRO - * ---------------------------------------------------------------------------- - * This file is part of Demoiselle Framework. - * - * Demoiselle Framework is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License version 3 - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License version 3 - * along with this program; if not, see - * or write to the Free Software Foundation, Inc., 51 Franklin Street, - * Fifth Floor, Boston, MA 02110-1301, USA. - * ---------------------------------------------------------------------------- - * Este arquivo é parte do Framework Demoiselle. - * - * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou - * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação - * do Software Livre (FSF). - * - * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA - * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou - * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português - * para maiores detalhes. - * - * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título - * "LICENCA.txt", junto com esse programa. Se não, acesse - * ou escreva para a Fundação do Software Livre (FSF) Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. - */ -package br.gov.frameworkdemoiselle.internal.producer; - -import javax.enterprise.context.ContextNotActiveException; -import javax.enterprise.context.RequestScoped; -import javax.enterprise.inject.Default; -import javax.enterprise.inject.Produces; -import javax.faces.context.FacesContext; - -public class FacesContextProducer { - - @Produces - @RequestScoped - @Default - public FacesContext create() { - FacesContext ctx = FacesContext.getCurrentInstance(); - - if (ctx == null) { - // TODO Usar o bundle para a mensagem - throw new ContextNotActiveException("FacesContext isn't active"); - } - - return ctx; - } - -} diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/proxy/FacesContextProxy.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/proxy/FacesContextProxy.java new file mode 100644 index 0000000..bc81b86 --- /dev/null +++ b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/proxy/FacesContextProxy.java @@ -0,0 +1,184 @@ +package br.gov.frameworkdemoiselle.internal.proxy; + +import java.io.Serializable; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.el.ELContext; +import javax.enterprise.inject.Default; +import javax.faces.application.Application; +import javax.faces.application.FacesMessage; +import javax.faces.application.FacesMessage.Severity; +import javax.faces.application.ProjectStage; +import javax.faces.component.UIViewRoot; +import javax.faces.context.ExceptionHandler; +import javax.faces.context.ExternalContext; +import javax.faces.context.FacesContext; +import javax.faces.context.PartialViewContext; +import javax.faces.context.ResponseStream; +import javax.faces.context.ResponseWriter; +import javax.faces.event.PhaseId; +import javax.faces.render.RenderKit; + +@Default +public class FacesContextProxy extends FacesContext implements Serializable { + + private static final long serialVersionUID = 1L; + + private FacesContext getDelegate() { + return FacesContext.getCurrentInstance(); + } + + public int hashCode() { + return getDelegate().hashCode(); + } + + public boolean equals(Object obj) { + return getDelegate().equals(obj); + } + + public Application getApplication() { + return getDelegate().getApplication(); + } + + public Map getAttributes() { + return getDelegate().getAttributes(); + } + + public PartialViewContext getPartialViewContext() { + return getDelegate().getPartialViewContext(); + } + + public Iterator getClientIdsWithMessages() { + return getDelegate().getClientIdsWithMessages(); + } + + public String toString() { + return getDelegate().toString(); + } + + public ELContext getELContext() { + return getDelegate().getELContext(); + } + + public ExceptionHandler getExceptionHandler() { + return getDelegate().getExceptionHandler(); + } + + public void setExceptionHandler(ExceptionHandler exceptionHandler) { + getDelegate().setExceptionHandler(exceptionHandler); + } + + public ExternalContext getExternalContext() { + return getDelegate().getExternalContext(); + } + + public Severity getMaximumSeverity() { + return getDelegate().getMaximumSeverity(); + } + + public Iterator getMessages() { + return getDelegate().getMessages(); + } + + public List getMessageList() { + return getDelegate().getMessageList(); + } + + public List getMessageList(String clientId) { + return getDelegate().getMessageList(clientId); + } + + public Iterator getMessages(String clientId) { + return getDelegate().getMessages(clientId); + } + + public RenderKit getRenderKit() { + return getDelegate().getRenderKit(); + } + + public boolean getRenderResponse() { + return getDelegate().getRenderResponse(); + } + + public boolean getResponseComplete() { + return getDelegate().getResponseComplete(); + } + + public boolean isValidationFailed() { + return getDelegate().isValidationFailed(); + } + + public ResponseStream getResponseStream() { + return getDelegate().getResponseStream(); + } + + public void setResponseStream(ResponseStream responseStream) { + getDelegate().setResponseStream(responseStream); + } + + public ResponseWriter getResponseWriter() { + return getDelegate().getResponseWriter(); + } + + public void setResponseWriter(ResponseWriter responseWriter) { + getDelegate().setResponseWriter(responseWriter); + } + + public UIViewRoot getViewRoot() { + return getDelegate().getViewRoot(); + } + + public void setViewRoot(UIViewRoot root) { + getDelegate().setViewRoot(root); + } + + public void addMessage(String clientId, FacesMessage message) { + getDelegate().addMessage(clientId, message); + } + + public boolean isReleased() { + return getDelegate().isReleased(); + } + + public void release() { + getDelegate().release(); + } + + public void renderResponse() { + getDelegate().renderResponse(); + } + + public boolean isPostback() { + return getDelegate().isPostback(); + } + + public void responseComplete() { + getDelegate().responseComplete(); + } + + public void validationFailed() { + getDelegate().validationFailed(); + } + + public PhaseId getCurrentPhaseId() { + return getDelegate().getCurrentPhaseId(); + } + + public void setCurrentPhaseId(PhaseId currentPhaseId) { + getDelegate().setCurrentPhaseId(currentPhaseId); + } + + public void setProcessingEvents(boolean processingEvents) { + getDelegate().setProcessingEvents(processingEvents); + } + + public boolean isProcessingEvents() { + return getDelegate().isProcessingEvents(); + } + + public boolean isProjectStage(ProjectStage stage) { + return getDelegate().isProjectStage(stage); + } +} diff --git a/impl/extension/jsf/src/test/java/br/gov/frameworkdemoiselle/internal/producer/FacesContextProducerTest.java b/impl/extension/jsf/src/test/java/br/gov/frameworkdemoiselle/internal/producer/FacesContextProducerTest.java deleted file mode 100644 index cda16b3..0000000 --- a/impl/extension/jsf/src/test/java/br/gov/frameworkdemoiselle/internal/producer/FacesContextProducerTest.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Demoiselle Framework - * Copyright (C) 2010 SERPRO - * ---------------------------------------------------------------------------- - * This file is part of Demoiselle Framework. - * - * Demoiselle Framework is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License version 3 - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License version 3 - * along with this program; if not, see - * or write to the Free Software Foundation, Inc., 51 Franklin Street, - * Fifth Floor, Boston, MA 02110-1301, USA. - * ---------------------------------------------------------------------------- - * Este arquivo é parte do Framework Demoiselle. - * - * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou - * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação - * do Software Livre (FSF). - * - * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA - * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou - * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português - * para maiores detalhes. - * - * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título - * "LICENCA.txt", junto com esse programa. Se não, acesse - * ou escreva para a Fundação do Software Livre (FSF) Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. - */ -package br.gov.frameworkdemoiselle.internal.producer; -import static org.easymock.EasyMock.expect; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; -import static org.powermock.api.easymock.PowerMock.mockStatic; -import static org.powermock.api.easymock.PowerMock.replay; -import static org.powermock.api.easymock.PowerMock.verifyAll; - -import javax.enterprise.context.ContextNotActiveException; -import javax.faces.context.FacesContext; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.api.easymock.PowerMock; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -@RunWith(PowerMockRunner.class) -@PrepareForTest({ FacesContext.class }) -public class FacesContextProducerTest { - - private FacesContextProducer producer; - - @Before - public void before() { - this.producer = new FacesContextProducer(); - } - - @Test - public void createOK() { - mockStatic(FacesContext.class); - FacesContext facesContext = PowerMock.createMock(FacesContext.class); - expect(FacesContext.getCurrentInstance()).andReturn(facesContext); - replay(facesContext, FacesContext.class); - assertEquals(facesContext, producer.create()); - verifyAll(); - } - - @Test - public void createNOK() { - mockStatic(FacesContext.class); - expect(FacesContext.getCurrentInstance()).andReturn(null); - replay(FacesContext.class); - try { - this.producer.create(); - fail(); - } catch(ContextNotActiveException exception) {} - verifyAll(); - } -} -- libgit2 0.21.2