From 2dce45971c37d4ab6a9d30f31491bedd15e26851 Mon Sep 17 00:00:00 2001 From: Wilson Guimarães Date: Wed, 22 Aug 2012 15:59:11 -0300 Subject: [PATCH] Ajustes na criação dos Locales. --- impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java | 11 ----------- impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducer.java | 66 ------------------------------------------------------------------ impl/extension/jsf/src/test/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducerTest.java | 109 ------------------------------------------------------------------------------------------------------------- impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ServletLocaleProducer.java | 11 ++++++++++- 4 files changed, 10 insertions(+), 187 deletions(-) delete mode 100644 impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducer.java delete mode 100644 impl/extension/jsf/src/test/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducerTest.java diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java index f1e7691..13c286c 100644 --- a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java +++ b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java @@ -38,22 +38,11 @@ package br.gov.frameworkdemoiselle.internal.bootstrap; import javax.enterprise.event.Observes; import javax.enterprise.inject.spi.AfterBeanDiscovery; -import javax.enterprise.inject.spi.AnnotatedType; -import javax.enterprise.inject.spi.ProcessAnnotatedType; import br.gov.frameworkdemoiselle.internal.context.ViewContext; -import br.gov.frameworkdemoiselle.internal.producer.ServletLocaleProducer; public class JsfBootstrap extends AbstractBootstrap { - protected void cancelServletLocaleProducer(@Observes final ProcessAnnotatedType event) { - final AnnotatedType annotatedType = event.getAnnotatedType(); - - if (annotatedType.getJavaClass() == ServletLocaleProducer.class) { - event.veto(); - } - } - public void loadContexts(@Observes final AfterBeanDiscovery event) { addContext(new ViewContext(), event); } diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducer.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducer.java deleted file mode 100644 index c15efc5..0000000 --- a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducer.java +++ /dev/null @@ -1,66 +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 java.io.Serializable; -import java.util.Locale; - -import javax.enterprise.context.RequestScoped; -import javax.enterprise.inject.Default; -import javax.enterprise.inject.Produces; -import javax.faces.context.FacesContext; -import javax.inject.Named; -import javax.servlet.http.HttpServletRequest; - -import br.gov.frameworkdemoiselle.util.Beans; - -@RequestScoped -public class JsfLocaleProducer implements Serializable { - - private static final long serialVersionUID = 1L; - - private boolean loaded = false; - - @Produces - @Default - @Named("currentLocale") - public Locale create() { - Locale locale; - - try { - FacesContext facesContext = Beans.getReference(FacesContext.class); - - if (!loaded) { - if (facesContext != null) { - locale = Beans.getReference(HttpServletRequest.class).getLocale(); - facesContext.getApplication().setDefaultLocale(locale); - } - - loaded = true; - } - - locale = facesContext.getApplication().getDefaultLocale(); - - } catch (Exception cause) { - locale = Locale.getDefault(); - } - - return locale; - } -} diff --git a/impl/extension/jsf/src/test/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducerTest.java b/impl/extension/jsf/src/test/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducerTest.java deleted file mode 100644 index ce86252..0000000 --- a/impl/extension/jsf/src/test/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducerTest.java +++ /dev/null @@ -1,109 +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 org.junit.Ignore; -import static junit.framework.Assert.assertEquals; -import static org.easymock.EasyMock.expect; -import static org.powermock.api.easymock.PowerMock.mockStatic; -import static org.powermock.api.easymock.PowerMock.replayAll; -import static org.powermock.api.easymock.PowerMock.verifyAll; - -import java.util.Locale; - -import javax.enterprise.context.ContextNotActiveException; -import javax.faces.application.Application; -import javax.faces.context.ExternalContext; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletRequest; - -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; - -import br.gov.frameworkdemoiselle.util.Beans; -@Ignore -@RunWith(PowerMockRunner.class) -@PrepareForTest({ Beans.class }) -public class JsfLocaleProducerTest { - - private JsfLocaleProducer producer; - - @Before - public void before() { - producer = new JsfLocaleProducer(); - } - - @Test - public void testCreateOK() { - mockStatic(Beans.class); - - Locale locale = PowerMock.createMock(Locale.class); - Application application = PowerMock.createMock(Application.class); - FacesContext facesContext = PowerMock.createMock(FacesContext.class); - ExternalContext externalContext = PowerMock.createMock(ExternalContext.class); - HttpServletRequest httpServletRequest = PowerMock.createMock(HttpServletRequest.class); - - expect(Beans.getReference(FacesContext.class)).andReturn(facesContext); - expect(facesContext.getExternalContext()).andReturn(externalContext); - expect(externalContext.getRequest()).andReturn(httpServletRequest); - expect(httpServletRequest.getLocale()).andReturn(locale); - expect(facesContext.getApplication()).andReturn(application).anyTimes(); - application.setDefaultLocale(locale); - expect(application.getDefaultLocale()).andReturn(locale); - - replayAll(); - - Locale returned = producer.create(); - assertEquals(returned, locale); - - verifyAll(); - } - - @Test - public void testCreateNOK() { - mockStatic(Beans.class); - expect(Beans.getReference(FacesContext.class)).andThrow(new ContextNotActiveException()); - replayAll(); - Locale returned = producer.create(); - assertEquals(Locale.getDefault(), returned); - verifyAll(); - } - -} diff --git a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ServletLocaleProducer.java b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ServletLocaleProducer.java index 0e0277b..785bfdf 100644 --- a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ServletLocaleProducer.java +++ b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/producer/ServletLocaleProducer.java @@ -43,14 +43,23 @@ import javax.enterprise.inject.Default; import javax.enterprise.inject.Produces; import javax.servlet.http.HttpServletRequest; +import br.gov.frameworkdemoiselle.util.Beans; + public class ServletLocaleProducer implements Serializable { private static final long serialVersionUID = 1L; @Default @Produces - public Locale create(HttpServletRequest request) { + public Locale create() { Locale result; + HttpServletRequest request; + + try { + request = Beans.getReference(HttpServletRequest.class); + } catch (Exception cause) { + request = null; + } if (request == null) { result = Locale.getDefault(); -- libgit2 0.21.2