Commit 8d4eb858f332821afd44ab986140eaad065deedd

Authored by Luciano Borges
2 parents 826a2c01 69f80244
Exists in master

Merge branch '2.4.0' of git@github.com:demoiselle/framework.git into 2.4.0

impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java
@@ -193,8 +193,7 @@ public class ConfigurationLoader implements Serializable { @@ -193,8 +193,7 @@ public class ConfigurationLoader implements Serializable {
193 String prefix = this.object.getClass().getAnnotation(Configuration.class).prefix(); 193 String prefix = this.object.getClass().getAnnotation(Configuration.class).prefix();
194 194
195 if (prefix.endsWith(".")) { 195 if (prefix.endsWith(".")) {
196 - // prefix = prefix.substring(0, prefix.length() - 1);  
197 - // TODO Lançar warning pedindo para retirar o ponto (.)? 196 + getLogger().warn(getBundle().getString("configuration-dot-after-prefix", this.resource));
198 } else if (!prefix.isEmpty()) { 197 } else if (!prefix.isEmpty()) {
199 prefix += "."; 198 prefix += ".";
200 } 199 }
@@ -243,8 +242,7 @@ public class ConfigurationLoader implements Serializable { @@ -243,8 +242,7 @@ public class ConfigurationLoader implements Serializable {
243 } 242 }
244 243
245 catch (Exception cause) { 244 catch (Exception cause) {
246 - // TODO Lançar mensagem informando que houve erro ao tentar extrair o valor com o extrator tal.  
247 - throw new ConfigurationException("", cause); 245 + throw new ConfigurationException(getBundle().getString("configuration-generic-extraction-error", field.getType().toString(), getValueExtractor(field).getClass().getCanonicalName()), cause);
248 } 246 }
249 247
250 return value; 248 return value;
impl/core/src/main/resources/demoiselle-core-bundle.properties
@@ -60,6 +60,8 @@ loading-configuration-class=Carregando a classe de configura\u00E7\u00E3o {0} @@ -60,6 +60,8 @@ loading-configuration-class=Carregando a classe de configura\u00E7\u00E3o {0}
60 configuration-field-loaded=Configura\u00E7\u00E3o {0} atribu\u00EDda a {1} com o valor {2} 60 configuration-field-loaded=Configura\u00E7\u00E3o {0} atribu\u00EDda a {1} com o valor {2}
61 configuration-attribute-is-mandatory=A configura\u00E7\u00E3o {0} \u00E9 obrigat\u00F3ria, mas n\u00E3o foi encontrada em {1} 61 configuration-attribute-is-mandatory=A configura\u00E7\u00E3o {0} \u00E9 obrigat\u00F3ria, mas n\u00E3o foi encontrada em {1}
62 configuration-name-attribute-cant-be-empty=A nota\u00E7\u00E3o Name n\u00E3o pode estar em branco 62 configuration-name-attribute-cant-be-empty=A nota\u00E7\u00E3o Name n\u00E3o pode estar em branco
  63 +configuration-generic-extraction-error=Ocorreu um erro durante a extra\u00E7\u00E3o do tipo {0} com o extrator {1}
  64 +configuration-dot-after-prefix=N\u00E3o \u00E9 necess\u00E1rio adicionar o ponto ap\u00F3s o prefixo para uma classe de configura\u00E7\u00E3o. \u00C9 recomendado que sejam retirados, pois poder\u00E3o causar erros em vers\u00F5es futuras do Framework.
63 configuration-key-not-found=Chave de configura\u00E7\u00E3o {0} n\u00E3o encontrada 65 configuration-key-not-found=Chave de configura\u00E7\u00E3o {0} n\u00E3o encontrada
64 configuration-extractor-not-found=N\u00E3o foi poss\u00EDvel encontrar a classe extratora para o atributo {0}. Implemente a interface {1} para criar sua classe extratora. 66 configuration-extractor-not-found=N\u00E3o foi poss\u00EDvel encontrar a classe extratora para o atributo {0}. Implemente a interface {1} para criar sua classe extratora.
65 configuration-not-conversion=N\u00E3o \u00E9 poss\u00EDvel converter o valor {0} para o tipo {1} 67 configuration-not-conversion=N\u00E3o \u00E9 poss\u00EDvel converter o valor {0} para o tipo {1}
impl/extension/jpa/src/test/java/productor/MyEntity.java
@@ -1,29 +0,0 @@ @@ -1,29 +0,0 @@
1 -package productor;  
2 -  
3 -import javax.persistence.Entity;  
4 -import javax.persistence.Id;  
5 -  
6 -@Entity  
7 -public class MyEntity {  
8 -  
9 - @Id  
10 - private String id;  
11 -  
12 - private String description;  
13 -  
14 - public String getId() {  
15 - return id;  
16 - }  
17 -  
18 - public void setId(String id) {  
19 - this.id = id;  
20 - }  
21 -  
22 - public String getDescription() {  
23 - return description;  
24 - }  
25 -  
26 - public void setDescription(String description) {  
27 - this.description = description;  
28 - }  
29 -}  
impl/extension/jpa/src/test/java/productor/ProductorTest.java
@@ -1,80 +0,0 @@ @@ -1,80 +0,0 @@
1 -package productor;  
2 -  
3 -import javax.persistence.EntityManager;  
4 -  
5 -import org.jboss.arquillian.container.test.api.Deployment;  
6 -import org.jboss.arquillian.junit.Arquillian;  
7 -import org.jboss.shrinkwrap.api.spec.WebArchive;  
8 -import org.junit.Assert;  
9 -import org.junit.Test;  
10 -import org.junit.runner.RunWith;  
11 -  
12 -import test.Tests;  
13 -import br.gov.frameworkdemoiselle.internal.proxy.EntityManagerProxy;  
14 -import br.gov.frameworkdemoiselle.util.Beans;  
15 -import br.gov.frameworkdemoiselle.util.NameQualifier;  
16 -  
17 -  
18 -@RunWith(Arquillian.class)  
19 -public class ProductorTest {  
20 -  
21 - private static final String PATH = "src/test/resources/productor";  
22 -  
23 - @Deployment  
24 - public static WebArchive createDeployment() {  
25 - WebArchive deployment = Tests.createDeployment(ProductorTest.class);  
26 - deployment.addAsResource(Tests.createFileAsset(PATH + "/persistence.xml"), "META-INF/persistence.xml");  
27 - deployment.addAsResource(Tests.createFileAsset(PATH + "/demoiselle.properties"), "demoiselle.properties");  
28 -  
29 - return deployment;  
30 - }  
31 -  
32 - @Test  
33 - public void produceEntityManager(){  
34 -  
35 - EntityManager manager = Beans.getReference(EntityManager.class);  
36 - Assert.assertNotNull(manager);  
37 - Assert.assertEquals(EntityManagerProxy.class,manager.getClass());  
38 -  
39 - }  
40 -  
41 - @Test  
42 - public void produceMultipleEntityManagers(){  
43 -  
44 - EntityManager m1 = Beans.getReference(EntityManager.class,new NameQualifier("pu"));  
45 -  
46 - Assert.assertNotNull(m1);  
47 - Assert.assertEquals(EntityManagerProxy.class,m1.getClass());  
48 -  
49 - EntityManager m2 = Beans.getReference(EntityManager.class,new NameQualifier("pu2"));  
50 -  
51 - Assert.assertNotNull(m2);  
52 - Assert.assertEquals(EntityManagerProxy.class,m2.getClass());  
53 -  
54 - }  
55 -  
56 - @Test  
57 - public void produceOneEntityManagerPerRequest(){  
58 - EntityManager m1 = Beans.getReference(EntityManager.class,new NameQualifier("pu"));  
59 -  
60 - Assert.assertNotNull(m1);  
61 - Assert.assertEquals(EntityManagerProxy.class,m1.getClass());  
62 -  
63 - EntityManager m2 = Beans.getReference(EntityManager.class,new NameQualifier("pu"));  
64 -  
65 - Assert.assertNotNull(m2);  
66 - Assert.assertEquals(EntityManagerProxy.class,m2.getClass());  
67 -  
68 - MyEntity entity = new MyEntity();  
69 - entity.setId(createId("testID"));  
70 -  
71 - m1.persist(entity);  
72 -  
73 - Assert.assertTrue( m2.contains(entity) );  
74 - }  
75 -  
76 - private String createId(String id) {  
77 - return this.getClass().getName() + "_" + id;  
78 - }  
79 -  
80 -}  
impl/extension/jpa/src/test/resources/producer/demoiselle.properties 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +frameworkdemoiselle.persistence.default.unit.name=pu
0 \ No newline at end of file 2 \ No newline at end of file
impl/extension/jpa/src/test/resources/productor/demoiselle.properties
@@ -1 +0,0 @@ @@ -1 +0,0 @@
1 -frameworkdemoiselle.persistence.default.unit.name=pu  
2 \ No newline at end of file 0 \ No newline at end of file
impl/extension/jpa/src/test/resources/productor/persistence.xml
@@ -1,64 +0,0 @@ @@ -1,64 +0,0 @@
1 -<!--  
2 - Demoiselle Framework  
3 - Copyright (C) 2010 SERPRO  
4 - ============================================================================  
5 - This file is part of Demoiselle Framework.  
6 -  
7 - Demoiselle Framework is free software; you can redistribute it and/or  
8 - modify it under the terms of the GNU Lesser General Public License version 3  
9 - as published by the Free Software Foundation.  
10 -  
11 - This program is distributed in the hope that it will be useful,  
12 - but WITHOUT ANY WARRANTY; without even the implied warranty of  
13 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
14 - GNU General Public License for more details.  
15 -  
16 - You should have received a copy of the GNU Lesser General Public License version 3  
17 - along with this program; if not, see <http://www.gnu.org/licenses/>  
18 - or write to the Free Software Foundation, Inc., 51 Franklin Street,  
19 - Fifth Floor, Boston, MA 02110-1301, USA.  
20 - ============================================================================  
21 - Este arquivo é parte do Framework Demoiselle.  
22 -  
23 - O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou  
24 - modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação  
25 - do Software Livre (FSF).  
26 -  
27 - Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA  
28 - GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou  
29 - APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português  
30 - para maiores detalhes.  
31 -  
32 - Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título  
33 - "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>  
34 - ou escreva para a Fundação do Software Livre (FSF) Inc.,  
35 - 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.  
36 --->  
37 -<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
38 - xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">  
39 -  
40 - <persistence-unit name="pu" transaction-type="RESOURCE_LOCAL">  
41 - <non-jta-data-source>jdbc/__default</non-jta-data-source>  
42 -  
43 - <class>productor.MyEntity</class>  
44 -  
45 - <properties>  
46 - <property name="hibernate.show_sql" value="true" />  
47 - <property name="hibernate.format_sql" value="false" />  
48 - <property name="hibernate.hbm2ddl.auto" value="create-drop" />  
49 - </properties>  
50 - </persistence-unit>  
51 -  
52 - <persistence-unit name="pu2" transaction-type="RESOURCE_LOCAL">  
53 - <non-jta-data-source>jdbc/__default</non-jta-data-source>  
54 -  
55 - <class>productor.MyEntity</class>  
56 -  
57 - <properties>  
58 - <property name="hibernate.show_sql" value="true" />  
59 - <property name="hibernate.format_sql" value="false" />  
60 - <property name="hibernate.hbm2ddl.auto" value="create-drop" />  
61 - </properties>  
62 - </persistence-unit>  
63 -  
64 -</persistence>  
65 \ No newline at end of file 0 \ No newline at end of file
impl/extension/jta/src/test/resources/beans.xml
@@ -1,46 +0,0 @@ @@ -1,46 +0,0 @@
1 -<!--  
2 - Demoiselle Framework  
3 - Copyright (C) 2010 SERPRO  
4 - ============================================================================  
5 - This file is part of Demoiselle Framework.  
6 -  
7 - Demoiselle Framework is free software; you can redistribute it and/or  
8 - modify it under the terms of the GNU Lesser General Public License version 3  
9 - as published by the Free Software Foundation.  
10 -  
11 - This program is distributed in the hope that it will be useful,  
12 - but WITHOUT ANY WARRANTY; without even the implied warranty of  
13 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
14 - GNU General Public License for more details.  
15 -  
16 - You should have received a copy of the GNU Lesser General Public License version 3  
17 - along with this program; if not, see <http://www.gnu.org/licenses />  
18 - or write to the Free Software Foundation, Inc., 51 Franklin Street,  
19 - Fifth Floor, Boston, MA 02110-1301, USA.  
20 - ============================================================================  
21 - Este arquivo é parte do Framework Demoiselle.  
22 -  
23 - O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou  
24 - modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação  
25 - do Software Livre (FSF).  
26 -  
27 - Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA  
28 - GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou  
29 - APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português  
30 - para maiores detalhes.  
31 -  
32 - Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título  
33 - "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses />  
34 - ou escreva para a Fundação do Software Livre (FSF) Inc.,  
35 - 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.  
36 --->  
37 -<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">  
38 -  
39 - <interceptors>  
40 - <class>br.gov.frameworkdemoiselle.transaction.TransactionalInterceptor</class>  
41 - <class>br.gov.frameworkdemoiselle.security.RequiredPermissionInterceptor</class>  
42 - <class>br.gov.frameworkdemoiselle.security.RequiredRoleInterceptor</class>  
43 - <class>br.gov.frameworkdemoiselle.exception.ExceptionHandlerInterceptor</class>  
44 - </interceptors>  
45 -  
46 -</beans>  
impl/extension/jta/src/test/resources/test/beans.xml 0 → 100644
@@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
  1 +<!--
  2 + Demoiselle Framework
  3 + Copyright (C) 2010 SERPRO
  4 + ============================================================================
  5 + This file is part of Demoiselle Framework.
  6 +
  7 + Demoiselle Framework is free software; you can redistribute it and/or
  8 + modify it under the terms of the GNU Lesser General Public License version 3
  9 + as published by the Free Software Foundation.
  10 +
  11 + This program is distributed in the hope that it will be useful,
  12 + but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + GNU General Public License for more details.
  15 +
  16 + You should have received a copy of the GNU Lesser General Public License version 3
  17 + along with this program; if not, see <http://www.gnu.org/licenses />
  18 + or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + Fifth Floor, Boston, MA 02110-1301, USA.
  20 + ============================================================================
  21 + Este arquivo é parte do Framework Demoiselle.
  22 +
  23 + O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + do Software Livre (FSF).
  26 +
  27 + Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + para maiores detalhes.
  31 +
  32 + Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses />
  34 + ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 +-->
  37 +<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
  38 +
  39 + <interceptors>
  40 + <class>br.gov.frameworkdemoiselle.transaction.TransactionalInterceptor</class>
  41 + <class>br.gov.frameworkdemoiselle.security.RequiredPermissionInterceptor</class>
  42 + <class>br.gov.frameworkdemoiselle.security.RequiredRoleInterceptor</class>
  43 + <class>br.gov.frameworkdemoiselle.exception.ExceptionHandlerInterceptor</class>
  44 + </interceptors>
  45 +
  46 +</beans>
impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/security/Credentials.java
@@ -41,6 +41,13 @@ import java.io.Serializable; @@ -41,6 +41,13 @@ import java.io.Serializable;
41 import javax.enterprise.context.RequestScoped; 41 import javax.enterprise.context.RequestScoped;
42 import javax.inject.Named; 42 import javax.inject.Named;
43 43
  44 +/**
  45 + * This classes keeps credential informations, username and password.
  46 + *
  47 + * @author SERPRO
  48 + *
  49 + */
  50 +
44 @Named 51 @Named
45 @RequestScoped 52 @RequestScoped
46 public class Credentials implements Serializable { 53 public class Credentials implements Serializable {
@@ -51,6 +58,9 @@ public class Credentials implements Serializable { @@ -51,6 +58,9 @@ public class Credentials implements Serializable {
51 58
52 private String password; 59 private String password;
53 60
  61 + /**
  62 + * Cleans the stored information, setting username and password to null.
  63 + */
54 public void clear() { 64 public void clear() {
55 this.username = null; 65 this.username = null;
56 this.password = null; 66 this.password = null;
impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/security/ServletAuthenticator.java
@@ -48,6 +48,14 @@ import br.gov.frameworkdemoiselle.util.Beans; @@ -48,6 +48,14 @@ import br.gov.frameworkdemoiselle.util.Beans;
48 import br.gov.frameworkdemoiselle.util.NameQualifier; 48 import br.gov.frameworkdemoiselle.util.NameQualifier;
49 import br.gov.frameworkdemoiselle.util.ResourceBundle; 49 import br.gov.frameworkdemoiselle.util.ResourceBundle;
50 50
  51 +/**
  52 + * Implements the {@link Authenticator} interface, offering a way to implement
  53 + * offering a manner to use the authenticator's functionalities.
  54 + *
  55 + * @author SERPRO
  56 + *
  57 + */
  58 +
51 @Priority(L2_PRIORITY) 59 @Priority(L2_PRIORITY)
52 public class ServletAuthenticator implements Authenticator { 60 public class ServletAuthenticator implements Authenticator {
53 61
impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/security/ServletAuthorizer.java
@@ -46,6 +46,14 @@ import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer; @@ -46,6 +46,14 @@ import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
46 import br.gov.frameworkdemoiselle.util.Beans; 46 import br.gov.frameworkdemoiselle.util.Beans;
47 import br.gov.frameworkdemoiselle.util.ResourceBundle; 47 import br.gov.frameworkdemoiselle.util.ResourceBundle;
48 48
  49 +/**
  50 + * Implements the {@link Authorizer} interface, offering a way to implement
  51 + * offering a manner to use the authorizer's functionalities.
  52 + *
  53 + * @author SERPRO
  54 + *
  55 + */
  56 +
49 @Priority(L2_PRIORITY) 57 @Priority(L2_PRIORITY)
50 public class ServletAuthorizer implements Authorizer { 58 public class ServletAuthorizer implements Authorizer {
51 59
impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/util/ServletFilter.java
@@ -45,6 +45,13 @@ import javax.servlet.ServletException; @@ -45,6 +45,13 @@ import javax.servlet.ServletException;
45 import javax.servlet.ServletRequest; 45 import javax.servlet.ServletRequest;
46 import javax.servlet.ServletResponse; 46 import javax.servlet.ServletResponse;
47 47
  48 +/**
  49 + * Implements the {@link javax.servlet.Filter} interface.
  50 + *
  51 + * @author SERPRO
  52 + *
  53 + */
  54 +
48 public class ServletFilter implements Filter { 55 public class ServletFilter implements Filter {
49 56
50 @Override 57 @Override
impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/util/ServletListener.java
@@ -41,6 +41,14 @@ import javax.servlet.ServletContextEvent; @@ -41,6 +41,14 @@ import javax.servlet.ServletContextEvent;
41 import br.gov.frameworkdemoiselle.lifecycle.AfterShutdownProccess; 41 import br.gov.frameworkdemoiselle.lifecycle.AfterShutdownProccess;
42 import br.gov.frameworkdemoiselle.lifecycle.AfterStartupProccess; 42 import br.gov.frameworkdemoiselle.lifecycle.AfterStartupProccess;
43 43
  44 +/**
  45 + * Implements the {@link javax.servlet.ServletContextListener} interface, and fire two events:
  46 + * {@link AfterStartupProccess} and {@link AfterShutdownProccess}.
  47 + *
  48 + * @author SERPRO
  49 + *
  50 + */
  51 +
44 public class ServletListener implements javax.servlet.ServletContextListener { 52 public class ServletListener implements javax.servlet.ServletContextListener {
45 53
46 @Override 54 @Override