Commit 50cc595e3b0bafe67f98ad82c21e73a3c35daaaa

Authored by Dancovich
2 parents 1c9e25ba b14e654f
Exists in master

Merge remote-tracking branch 'origin/2.4.0' into 2.4.0

Conflicts:
	impl/core/src/main/java/br/gov/frameworkdemoiselle/annotation/OperationType.java
Showing 107 changed files with 1255 additions and 1349 deletions   Show diff stats

Too many changes.

To preserve performance only 100 of 107 files displayed.

documentation/reference/pom.xml
... ... @@ -45,7 +45,7 @@
45 45 <parent>
46 46 <groupId>br.gov.frameworkdemoiselle</groupId>
47 47 <artifactId>demoiselle-documentation-parent</artifactId>
48   - <version>8</version>
  48 + <version>9-SNAPSHOT</version>
49 49 <relativePath>../../../internal/parent/documentation</relativePath>
50 50 </parent>
51 51  
... ...
documentation/reference/pt-BR/gerenciamento.xml
... ... @@ -24,6 +24,8 @@
24 24 uso o desenvolvedor pode se despreocupar com detalhes de implementação de cada tecnologia individual e facilmente integrar tais tecnologias.</para>
25 25 </section>
26 26  
  27 +
  28 +
27 29 <section>
28 30 <title>Introdução ao mecanismo</title>
29 31  
... ... @@ -136,6 +138,8 @@
136 138  
137 139 </section>
138 140  
  141 +
  142 +
139 143 <section>
140 144 <title>Expondo aspectos de sua aplicação para monitoração</title>
141 145  
... ... @@ -169,6 +173,8 @@
169 173 a quantidade de logins efetuados no momento da consulta.</para>
170 174 </section>
171 175  
  176 +
  177 +
172 178 <section>
173 179 <title>Conectando um cliente de monitoração</title>
174 180  
... ... @@ -197,7 +203,7 @@
197 203 individualmente, as classes monitoradas serão então expostas para todas as extensões escolhidas.</para>
198 204 </tip>
199 205  
200   - <para>A imagem abaixo mostra como uma classe monitorada na aplicação <emphasis>Bookmark</emphasis> é exibida no <emphasis>JConsole</emphasis>.</para>
  206 + <para>A figura <xref linkend="exemplo_jconsole"/> mostra como uma classe monitorada na aplicação <emphasis>Bookmark</emphasis> é exibida no <emphasis>JConsole</emphasis>.</para>
201 207  
202 208 <programlisting role="JAVA"><![CDATA[
203 209 @ManagementController
... ... @@ -213,15 +219,14 @@
213 219 }
214 220 ]]></programlisting>
215 221  
216   - <figure>
217   - <title>JConsole acessando a aplicação <emphasis>Bookmark</emphasis></title>
  222 + <figure id="exemplo_jconsole"><title>JConsole acessando a aplicação <emphasis>Bookmark</emphasis></title>
218 223 <mediaobject>
219 224 <imageobject>
220   - <imagedata fileref="jmx-console-example.jpg" align="center"/>
  225 + <imagedata fileref="images/jmx-jconsole-example.png"/>
221 226 </imageobject>
  227 + <textobject><phrase>JConsole acessando a aplicação <emphasis>Bookmark</emphasis></phrase></textobject>
222 228 </mediaobject>
223 229 </figure>
224   -
225 230 </section>
226 231  
227 232 </chapter>
228 233 \ No newline at end of file
... ...
documentation/reference/pt-BR/images/jmx-jconsole-example.png 0 → 100644

290 KB

documentation/reference/pt-BR/jmx-jconsole-example.jpg

95.5 KB

documentation/reference/pt-BR/master.xml
... ... @@ -5,6 +5,7 @@
5 5  
6 6 <xi:include href="bookinfo.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
7 7  
  8 + <!--
8 9 <preface>
9 10 <title>Sobre o Guia de Referência</title>
10 11 <para>
... ... @@ -38,8 +39,9 @@
38 39 <xi:include href="templates.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
39 40 <xi:include href="security.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
40 41 <xi:include href="paginacao.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  42 + -->
41 43 <xi:include href="gerenciamento.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
42   - <xi:include href="properties.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  44 + <!-- <xi:include href="properties.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
43 45  
44 46 <!-- parte 1 -->
45 47 <!-- TODO: dividir melhor os capítulos em seções -->
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/annotation/Ignore.java
... ... @@ -42,7 +42,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
42 42 import java.lang.annotation.Retention;
43 43 import java.lang.annotation.Target;
44 44  
45   -@Target(FIELD)
  45 +@Target(FIELD)
46 46 @Retention(RUNTIME)
47 47 public @interface Ignore {
48 48 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/annotation/ManagedOperation.java
... ... @@ -47,24 +47,28 @@ import javax.enterprise.util.Nonbinding;
47 47 import br.gov.frameworkdemoiselle.DemoiselleException;
48 48  
49 49 /**
50   - * <p>Indicates that a method is a <b>managed operation</b>, meaning you can manage some aspect of the application by calling it from a external management client.</p>
51   - * <p>This annotation can't be used together with {@link ManagedProperty}, doing so will throw a {@link DemoiselleException}.</p>
  50 + * <p>
  51 + * Indicates that a method is a <b>managed operation</b>, meaning you can manage some aspect of the application by
  52 + * calling it from a external management client.
  53 + * </p>
  54 + * <p>
  55 + * This annotation can't be used together with {@link ManagedProperty}, doing so will throw a
  56 + * {@link DemoiselleException}.
  57 + * </p>
52 58 *
53 59 * @author SERPRO
54   - *
55 60 */
56 61 @Documented
57   -@Target({ElementType.METHOD})
  62 +@Target({ ElementType.METHOD })
58 63 @Retention(RetentionPolicy.RUNTIME)
59 64 public @interface ManagedOperation {
60   -
  65 +
61 66 /**
62   - * Description that will be used to publish the operation to clients.
63   - * Defaults to an empty description.
  67 + * Description that will be used to publish the operation to clients. Defaults to an empty description.
64 68 */
65 69 @Nonbinding
66 70 String description() default "";
67   -
  71 +
68 72 /**
69 73 * Type of operation. Defaults to {@link OperationType#UNKNOWN}.
70 74 */
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/annotation/ManagedProperty.java
... ... @@ -45,57 +45,65 @@ import java.lang.annotation.Target;
45 45 import javax.enterprise.util.Nonbinding;
46 46  
47 47 /**
48   - * <p>Indicates that a field must be exposed as a property to management clients.</p>
49   - * <p>The property will be writable if there's a public setter method
50   - * declared for the field and readable if there's a getter method. You can override this behaviour by passing a value
51   - * to the {@link #accessLevel()} property.</p>
52   - * <p>It's a runtime error to annotate a field with no getter and no setter method.</p>
53   - * <p>It's also a runtime error to declare a field as a property and one or both of it's getter and setter
54   - * methods as an operation using the {@link ManagedOperation} annotation.</p>
  48 + * <p>
  49 + * Indicates that a field must be exposed as a property to management clients.
  50 + * </p>
  51 + * <p>
  52 + * The property will be writable if there's a public setter method declared for the field and readable if there's a
  53 + * getter method. You can override this behaviour by passing a value to the {@link #accessLevel()} property.
  54 + * </p>
  55 + * <p>
  56 + * It's a runtime error to annotate a field with no getter and no setter method.
  57 + * </p>
  58 + * <p>
  59 + * It's also a runtime error to declare a field as a property and one or both of it's getter and setter methods as an
  60 + * operation using the {@link ManagedOperation} annotation.
  61 + * </p>
55 62 *
56 63 * @author SERPRO
57   - *
58 64 */
59 65 @Documented
60   -@Target({ElementType.FIELD})
  66 +@Target({ ElementType.FIELD })
61 67 @Retention(RetentionPolicy.RUNTIME)
62 68 public @interface ManagedProperty {
63   -
  69 +
64 70 /**
65 71 * @return The description of this property exposed to management clients.
66 72 */
67 73 @Nonbinding
68 74 String description() default "";
69   -
  75 +
70 76 @Nonbinding
71 77 ManagedPropertyAccess accessLevel() default ManagedPropertyAccess.DEFAULT;
72   -
  78 +
73 79 /**
74   - * <p>Access level of a managed property.</p>
75   - *
76   - * <p>These values only affect access via external management clients, the application is still able to inject and use the normal visibility of the property
77   - * by Java standards.</p>
  80 + * <p>
  81 + * Access level of a managed property.
  82 + * </p>
  83 + * <p>
  84 + * These values only affect access via external management clients, the application is still able to inject and use
  85 + * the normal visibility of the property by Java standards.
  86 + * </p>
78 87 *
79 88 * @author serpro
80   - *
81 89 */
82   - enum ManagedPropertyAccess{
83   -
  90 + enum ManagedPropertyAccess {
  91 +
84 92 /**
85 93 * Restricts a property to be only readable even if a setter method exists.
86 94 */
87 95 READ_ONLY
88   -
  96 +
89 97 /**
90 98 * Restricts a property to be only writeable even if a getter method exists.
91 99 */
92   - ,WRITE_ONLY
93   -
  100 + , WRITE_ONLY
  101 +
94 102 /**
95   - * Says that the read or write access will
96   - * be determined by the presence of a getter method <code>(getProperty())</code> or setter method <code>(setProperty(propertyValue))</code> for a property.
  103 + * Says that the read or write access will be determined by the presence of a getter method
  104 + * <code>(getProperty())</code> or setter method <code>(setProperty(propertyValue))</code> for a property.
97 105 */
98   - ,DEFAULT;
  106 + , DEFAULT;
99 107 }
100 108  
101 109 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/annotation/OperationParameter.java
... ... @@ -45,29 +45,31 @@ import java.lang.annotation.Target;
45 45 import javax.enterprise.util.Nonbinding;
46 46  
47 47 /**
48   - * <p>Optional annotation to write additional detail about an operation's parameter.</p>
49   - * <p>This annotation is ignored for non-operation methods.</p>
  48 + * <p>
  49 + * Optional annotation to write additional detail about an operation's parameter.
  50 + * </p>
  51 + * <p>
  52 + * This annotation is ignored for non-operation methods.
  53 + * </p>
50 54 *
51 55 * @author SERPRO
52   - *
53 56 */
54 57 @Documented
55   -@Target({ElementType.PARAMETER})
  58 +@Target({ ElementType.PARAMETER })
56 59 @Retention(RetentionPolicy.RUNTIME)
57 60 public @interface OperationParameter {
58   -
  61 +
59 62 /**
60 63 * Name that will be used to publish this operation's parameter to clients.
61 64 */
62 65 @Nonbinding
63 66 String name();
64   -
  67 +
65 68 /**
66   - * Optional description that will be used to publish this operation's parameter to clients.
67   - * Defaults to an empty description.
  69 + * Optional description that will be used to publish this operation's parameter to clients. Defaults to an empty
  70 + * description.
68 71 */
69 72 @Nonbinding
70 73 String description() default "";
71   -
72 74  
73 75 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/annotation/OperationType.java
... ... @@ -37,43 +37,42 @@
37 37 package br.gov.frameworkdemoiselle.annotation;
38 38  
39 39  
40   -
41 40 /**
42   - * <p>Define the operation type for an operation inside a ManagementController class.</p>
43   - *
44   - * <p>This is an optional annotation and it's significanse will change based on the management extension
45   - * used. Most extensions will just publish this information to the client so it can better show to the user the inner
46   - * workings of the annotated operation.</p>
47   - *
  41 + * <p>
  42 + * Define the operation type for an operation inside a ManagementController class.
  43 + * </p>
  44 + * <p>
  45 + * This is an optional annotation and it's significanse will change based on the management extension used. Most
  46 + * extensions will just publish this information to the client so it can better show to the user the inner workings of
  47 + * the annotated operation.
  48 + * </p>
48 49 *
49 50 * @author SERPRO
50   - *
51 51 */
52 52 public enum OperationType {
53   -
  53 +
54 54 /**
55   - * ManagedOperation is write-only, it causes the application
56   - * to change some of it's behaviour but doesn't return any kind of information
  55 + * ManagedOperation is write-only, it causes the application to change some of it's behaviour but doesn't return any
  56 + * kind of information
57 57 */
58   - ACTION
59   - ,
  58 + ACTION,
  59 +
60 60 /**
61 61 * ManagedOperation is read-only, it will operate over data provided by the application and return some information,
62 62 * but will not change the application in any way.
63 63 */
64   - INFO
65   - ,
  64 + INFO,
  65 +
66 66 /**
67   - * ManagedOperation is read-write, it will both change the way the application work and return some information regarding
68   - * the result of the operation.
  67 + * ManagedOperation is read-write, it will both change the way the application work and return some information
  68 + * regarding the result of the operation.
69 69 */
70   - ACTION_INFO
71   - ,
  70 + ACTION_INFO,
  71 +
72 72 /**
73   - * The effect of calling this operation is unknown. This is the default type and if this type is assigned to an operation,
74   - * the user must rely on the {@link ManagedOperation#description()} attribute to learn about how the operation works.
  73 + * The effect of calling this operation is unknown. This is the default type and if this type is assigned to an
  74 + * operation, the user must rely on the {@link ManagedOperation#description()} attribute to learn about how the
  75 + * operation works.
75 76 */
76 77 UNKNOWN
77   -
78   -
79 78 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/annotation/Priority.java
... ... @@ -60,6 +60,14 @@ public @interface Priority {
60 60 */
61 61 static int MIN_PRIORITY = Integer.MAX_VALUE;
62 62  
  63 + static int L1_PRIORITY = MIN_PRIORITY;
  64 +
  65 + static int L2_PRIORITY = L1_PRIORITY - 100;
  66 +
  67 + static int L3_PRIORITY = L2_PRIORITY - 100;
  68 +
  69 + static int L4_PRIORITY = L3_PRIORITY - 100;
  70 +
63 71 /**
64 72 * An integer value defines the priority order.
65 73 */
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/ConfigType.java
... ... @@ -57,5 +57,5 @@ public enum ConfigType {
57 57 * Configuration loaded on properties resources.
58 58 */
59 59 PROPERTIES;
60   -
  60 +
61 61 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/exception/ExceptionHandlerInterceptor.java
... ... @@ -52,9 +52,9 @@ import javax.interceptor.InvocationContext;
52 52 import org.slf4j.Logger;
53 53  
54 54 import br.gov.frameworkdemoiselle.DemoiselleException;
55   -import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer;
56   -import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
57 55 import br.gov.frameworkdemoiselle.stereotype.Controller;
  56 +import br.gov.frameworkdemoiselle.util.Beans;
  57 +import br.gov.frameworkdemoiselle.util.NameQualifier;
58 58 import br.gov.frameworkdemoiselle.util.ResourceBundle;
59 59  
60 60 @Interceptor
... ... @@ -63,9 +63,9 @@ public class ExceptionHandlerInterceptor implements Serializable {
63 63  
64 64 private static final long serialVersionUID = 1L;
65 65  
66   - private static ResourceBundle bundle;
  66 + private static transient ResourceBundle bundle;
67 67  
68   - private static Logger logger;
  68 + private static transient Logger logger;
69 69  
70 70 private final Map<Class<?>, Map<Class<?>, Method>> cache = new HashMap<Class<?>, Map<Class<?>, Method>>();
71 71  
... ... @@ -199,7 +199,7 @@ public class ExceptionHandlerInterceptor implements Serializable {
199 199  
200 200 private static ResourceBundle getBundle() {
201 201 if (bundle == null) {
202   - bundle = ResourceBundleProducer.create("demoiselle-core-bundle");
  202 + bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-core-bundle"));
203 203 }
204 204  
205 205 return bundle;
... ... @@ -207,7 +207,7 @@ public class ExceptionHandlerInterceptor implements Serializable {
207 207  
208 208 private static Logger getLogger() {
209 209 if (logger == null) {
210   - logger = LoggerProducer.create(ExceptionHandlerInterceptor.class);
  210 + logger = Beans.getReference(Logger.class, new NameQualifier(ExceptionHandlerInterceptor.class.getName()));
211 211 }
212 212  
213 213 return logger;
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractLifecycleBootstrap.java
... ... @@ -98,23 +98,22 @@ public abstract class AbstractLifecycleBootstrap&lt;A extends Annotation&gt; implement
98 98 return this.annotationClass;
99 99 }
100 100  
  101 + @SuppressWarnings("unchecked")
101 102 public <T> void processAnnotatedType(@Observes final ProcessAnnotatedType<T> event) {
102 103 final AnnotatedType<T> annotatedType = event.getAnnotatedType();
103 104  
104 105 for (AnnotatedMethod<?> am : annotatedType.getMethods()) {
105 106 if (am.isAnnotationPresent(getAnnotationClass())) {
106   - @SuppressWarnings("unchecked")
107   - AnnotatedMethod<T> annotatedMethod = (AnnotatedMethod<T>) am;
108   - processors.add(newProcessorInstance(annotatedMethod));
  107 + processors.add(newProcessorInstance((AnnotatedMethod<T>) am));
109 108 }
110 109 }
111 110 }
112 111  
113 112 public void loadTempContexts(@Observes final AfterBeanDiscovery event) {
114   - //Caso este bootstrap rode antes do CoreBootstrap. Não há problemas em chamar este método várias vezes, ele
115   - //ignora chamadas adicionais.
  113 + // Caso este bootstrap rode antes do CoreBootstrap. Não há problemas em chamar este método várias vezes, ele
  114 + // ignora chamadas adicionais.
116 115 ContextManager.initialize(event);
117   -
  116 +
118 117 // Não registrar o contexto de aplicação pq ele já é registrado pela implementação do CDI
119 118 ContextManager.add(new ThreadLocalContext(ViewScoped.class), event);
120 119 ContextManager.add(new ThreadLocalContext(SessionScoped.class), event);
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AuthenticatorBootstrap.java
... ... @@ -1,56 +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   -package br.gov.frameworkdemoiselle.internal.bootstrap;
38   -
39   -import org.slf4j.Logger;
40   -
41   -import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer;
42   -import br.gov.frameworkdemoiselle.security.Authenticator;
43   -
44   -public class AuthenticatorBootstrap extends AbstractStrategyBootstrap<Authenticator> {
45   -
46   - private Logger logger;
47   -
48   - @Override
49   - protected Logger getLogger() {
50   - if (logger == null) {
51   - logger = LoggerProducer.create(AuthenticatorBootstrap.class);
52   - }
53   -
54   - return logger;
55   - }
56   -}
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AuthorizerBootstrap.java
... ... @@ -1,56 +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   -package br.gov.frameworkdemoiselle.internal.bootstrap;
38   -
39   -import org.slf4j.Logger;
40   -
41   -import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer;
42   -import br.gov.frameworkdemoiselle.security.Authorizer;
43   -
44   -public class AuthorizerBootstrap extends AbstractStrategyBootstrap<Authorizer> {
45   -
46   - private Logger logger;
47   -
48   - @Override
49   - protected Logger getLogger() {
50   - if (logger == null) {
51   - logger = LoggerProducer.create(AuthorizerBootstrap.class);
52   - }
53   -
54   - return logger;
55   - }
56   -}
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ConfigurationBootstrap.java
... ... @@ -96,7 +96,7 @@ public class ConfigurationBootstrap extends AbstractStrategyBootstrap&lt;Configurat
96 96 String superClassName = type.getCanonicalName();
97 97 String chieldClassName = superClassName + "_$$_DemoiselleProxy";
98 98  
99   - Map<String, Class<Object>> cacheProxy = Collections.synchronizedMap(new HashMap<String, Class<Object>>());;
  99 + Map<String, Class<Object>> cacheProxy = Collections.synchronizedMap(new HashMap<String, Class<Object>>());
100 100  
101 101 Class<Object> clazzProxy = null;
102 102  
... ... @@ -139,7 +139,7 @@ public class ConfigurationBootstrap extends AbstractStrategyBootstrap&lt;Configurat
139 139 @Override
140 140 protected Logger getLogger() {
141 141 if (logger == null) {
142   - logger = LoggerProducer.create(TransactionBootstrap.class);
  142 + logger = LoggerProducer.create(ConfigurationBootstrap.class);
143 143 }
144 144  
145 145 return logger;
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CustomInjectionPoint.java
... ... @@ -1,136 +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   -package br.gov.frameworkdemoiselle.internal.bootstrap;
38   -
39   -import java.lang.annotation.Annotation;
40   -import java.lang.reflect.Member;
41   -import java.lang.reflect.Type;
42   -import java.util.Arrays;
43   -import java.util.HashSet;
44   -import java.util.Set;
45   -
46   -import javax.enterprise.inject.spi.Annotated;
47   -import javax.enterprise.inject.spi.Bean;
48   -import javax.enterprise.inject.spi.InjectionPoint;
49   -
50   -public class CustomInjectionPoint implements InjectionPoint {
51   -
52   - private final Bean<?> bean;
53   -
54   - private final Type beanType;
55   -
56   - private final Set<Annotation> qualifiers;
57   -
58   - public CustomInjectionPoint(Bean<?> bean, Type beanType, Annotation... qualifiers) {
59   - this.bean = bean;
60   - this.beanType = beanType;
61   - this.qualifiers = new HashSet<Annotation>(Arrays.asList(qualifiers));
62   - }
63   -
64   - @Override
65   - public Type getType() {
66   - return this.beanType;
67   - }
68   -
69   - @Override
70   - public Set<Annotation> getQualifiers() {
71   - return this.qualifiers;
72   - }
73   -
74   - @Override
75   - public Bean<?> getBean() {
76   - return this.bean;
77   - }
78   -
79   - @Override
80   - public Member getMember() {
81   - return null;
82   - }
83   -
84   - @Override
85   - public boolean isDelegate() {
86   - return false;
87   - }
88   -
89   - @Override
90   - public boolean isTransient() {
91   - return false;
92   - }
93   -
94   - @Override
95   - public Annotated getAnnotated() {
96   - return new Annotated() {
97   -
98   - @Override
99   - public Type getBaseType() {
100   - // TODO Auto-generated method stub
101   - return null;
102   - }
103   -
104   - @Override
105   - public Set<Type> getTypeClosure() {
106   - // TODO Auto-generated method stub
107   - return null;
108   - }
109   -
110   - @Override
111   - @SuppressWarnings("unchecked")
112   - public <T extends Annotation> T getAnnotation(Class<T> annotationType) {
113   - T result = null;
114   -
115   - for (Annotation annotation : getAnnotations()) {
116   - if (annotation.annotationType() == annotationType) {
117   - result = (T) annotation;
118   - break;
119   - }
120   - }
121   -
122   - return result;
123   - }
124   -
125   - @Override
126   - public Set<Annotation> getAnnotations() {
127   - return qualifiers;
128   - }
129   -
130   - @Override
131   - public boolean isAnnotationPresent(Class<? extends Annotation> annotationType) {
132   - return qualifiers.contains(annotationType);
133   - }
134   - };
135   - }
136   -}
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ManagementBootstrap.java
... ... @@ -32,8 +32,8 @@ public class ManagementBootstrap implements Extension {
32 32  
33 33 protected static List<AnnotatedType<?>> types = Collections.synchronizedList(new ArrayList<AnnotatedType<?>>());
34 34  
35   - private List<Class<? extends ManagementExtension>> managementExtensionCache = Collections.synchronizedList(new ArrayList<Class<? extends ManagementExtension>>());
36   -
  35 + private List<Class<? extends ManagementExtension>> managementExtensionCache = Collections
  36 + .synchronizedList(new ArrayList<Class<? extends ManagementExtension>>());
37 37  
38 38 public <T> void detectAnnotation(@Observes final ProcessAnnotatedType<T> event, final BeanManager beanManager) {
39 39 if (event.getAnnotatedType().isAnnotationPresent(ManagementController.class)) {
... ... @@ -47,27 +47,28 @@ public class ManagementBootstrap implements Extension {
47 47 }
48 48  
49 49 @SuppressWarnings("unchecked")
50   - public void registerAvailableManagedTypes(@Observes final AfterDeploymentValidation event,BeanManager beanManager) {
  50 + public void registerAvailableManagedTypes(@Observes final AfterDeploymentValidation event, BeanManager beanManager) {
51 51 ResourceBundle bundle = ResourceBundleProducer.create("demoiselle-core-bundle", Locale.getDefault());
52 52  
53 53 Management monitoringManager = Beans.getReference(Management.class);
54 54 for (AnnotatedType<?> type : types) {
55   - if (type.getJavaClass().isInterface() || Modifier.isAbstract(type.getJavaClass().getModifiers()) ){
56   - throw new DemoiselleException(bundle.getString("management-abstract-class-defined" , type.getJavaClass().getCanonicalName()));
  55 + if (type.getJavaClass().isInterface() || Modifier.isAbstract(type.getJavaClass().getModifiers())) {
  56 + throw new DemoiselleException(bundle.getString("management-abstract-class-defined", type.getJavaClass()
  57 + .getCanonicalName()));
57 58 }
58 59  
59 60 ManagedType managedType = new ManagedType(type.getJavaClass());
60 61 monitoringManager.addManagedType(managedType);
61 62 }
62   -
  63 +
63 64 Set<Bean<?>> extensionBeans = beanManager.getBeans(ManagementExtension.class);
64   - if (extensionBeans!=null){
65   - for (Bean<?> bean : extensionBeans){
  65 + if (extensionBeans != null) {
  66 + for (Bean<?> bean : extensionBeans) {
66 67 Class<?> extensionConcreteClass = bean.getBeanClass();
67 68 managementExtensionCache.add((Class<? extends ManagementExtension>) extensionConcreteClass);
68 69 }
69 70 }
70   -
  71 +
71 72 monitoringManager.initialize(managementExtensionCache);
72 73 }
73 74  
... ... @@ -75,7 +76,7 @@ public class ManagementBootstrap implements Extension {
75 76  
76 77 Management manager = Beans.getReference(Management.class);
77 78 manager.shutdown(managementExtensionCache);
78   -
  79 +
79 80 managementExtensionCache.clear();
80 81 types.clear();
81 82 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/TransactionBootstrap.java
... ... @@ -1,56 +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   -package br.gov.frameworkdemoiselle.internal.bootstrap;
38   -
39   -import org.slf4j.Logger;
40   -
41   -import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer;
42   -import br.gov.frameworkdemoiselle.transaction.Transaction;
43   -
44   -public class TransactionBootstrap extends AbstractStrategyBootstrap<Transaction> {
45   -
46   - private Logger logger;
47   -
48   - @Override
49   - protected Logger getLogger() {
50   - if (logger == null) {
51   - logger = LoggerProducer.create(TransactionBootstrap.class);
52   - }
53   -
54   - return logger;
55   - }
56   -}
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/AbstractCustomContext.java
... ... @@ -75,7 +75,7 @@ public abstract class AbstractCustomContext implements CustomContext {
75 75  
76 76 Class<?> type = getType(contextual);
77 77 if (getStore().contains(type)) {
78   - instance = (T) getStore().get(type);
  78 + instance = getStore().get(type);
79 79  
80 80 } else if (creationalContext != null) {
81 81 instance = contextual.create(creationalContext);
... ... @@ -96,8 +96,8 @@ public abstract class AbstractCustomContext implements CustomContext {
96 96 }
97 97  
98 98 public void setActive(boolean active) {
99   - if (!active && this.active){
100   - //Limpando contexto
  99 + if (!active && this.active) {
  100 + // Limpando contexto
101 101 getStore().clear();
102 102 }
103 103 this.active = active;
... ... @@ -120,13 +120,13 @@ public abstract class AbstractCustomContext implements CustomContext {
120 120 private Store() {
121 121 }
122 122  
123   -
124 123 private boolean contains(final Class<?> type) {
125 124 return this.getMap().containsKey(type);
126 125 }
127 126  
128   - private Object get(final Class<?> type) {
129   - return this.getMap().get(type);
  127 + @SuppressWarnings("unchecked")
  128 + private <T> T get(final Class<?> type) {
  129 + return (T) this.getMap().get(type);
130 130 }
131 131  
132 132 private void put(final Class<?> type, final Object instance) {
... ... @@ -136,7 +136,7 @@ public abstract class AbstractCustomContext implements CustomContext {
136 136 public void clear() {
137 137 cache.clear();
138 138 }
139   -
  139 +
140 140 private Map<Class<?>, Object> getMap() {
141 141 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
142 142  
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/ContextManager.java
... ... @@ -51,8 +51,9 @@ public class ContextManager {
51 51 private static ResourceBundle bundle;
52 52  
53 53 private static Logger logger;
54   -
55   - private ContextManager(){}
  54 +
  55 + private ContextManager() {
  56 + }
56 57  
57 58 /**
58 59 * <p>
... ... @@ -105,9 +106,9 @@ public class ContextManager {
105 106 }
106 107  
107 108 ContextManager.getLogger().trace(
108   - ContextManager.getBundle().getString("bootstrap-context-added",
109   - context.getClass().getCanonicalName(), context.getScope().getCanonicalName()));
110   -
  109 + ContextManager.getBundle().getString("bootstrap-context-added", context.getClass().getCanonicalName(),
  110 + context.getScope().getCanonicalName()));
  111 +
111 112 context.setActive(false);
112 113 event.addContext(context);
113 114 contexts.add(new CustomContextCounter(context));
... ... @@ -194,8 +195,10 @@ public class ContextManager {
194 195 }
195 196  
196 197 /**
197   - * <p>This method should be called when the application is shutting down, usually by observing
198   - * the {@link BeforeShutdown} event.</p>
  198 + * <p>
  199 + * This method should be called when the application is shutting down, usually by observing the
  200 + * {@link BeforeShutdown} event.
  201 + * </p>
199 202 */
200 203 public static synchronized void shutdown() {
201 204 for (CustomContextCounter context : contexts) {
... ... @@ -252,7 +255,7 @@ class CustomContextCounter {
252 255 public CustomContext getInternalContext() {
253 256 return this.context;
254 257 }
255   -
  258 +
256 259 public void setInternalContext(CustomContext context) {
257 260 this.context = context;
258 261 }
... ... @@ -261,19 +264,14 @@ class CustomContextCounter {
261 264 try {
262 265 BeanManager beanManager = Beans.getReference(BeanManager.class);
263 266 Context c = beanManager.getContext(context.getScope());
264   -
265   -
  267 +
266 268 if (c == context) {
267 269 activationCounter++;
268   - }
269   - else{
  270 + } else {
270 271 ContextManager.getLogger().trace(
271 272 ContextManager.getBundle().getString("custom-context-already-activated",
272   - context.getClass().getCanonicalName()
273   - ,c.getScope().getCanonicalName()
274   - ,c.getClass().getCanonicalName()
275   - )
276   - );
  273 + context.getClass().getCanonicalName(), c.getScope().getCanonicalName(),
  274 + c.getClass().getCanonicalName()));
277 275 }
278 276 } catch (ContextNotActiveException ce) {
279 277 context.setActive(true);
... ... @@ -299,10 +297,10 @@ class CustomContextCounter {
299 297 } catch (ContextNotActiveException ce) {
300 298 }
301 299 }
302   -
  300 +
303 301 public synchronized void shutdown() {
304 302 context.setActive(false);
305   - context=null;
306   - activationCounter=0;
  303 + context = null;
  304 + activationCounter = 0;
307 305 }
308 306 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/ManagedContext.java
... ... @@ -5,14 +5,13 @@ import javax.enterprise.context.RequestScoped;
5 5 import br.gov.frameworkdemoiselle.stereotype.ManagementController;
6 6  
7 7 /**
8   - * Context that stores {@link RequestScoped} beans during client calls to {@link ManagementController} classes.
9   - * This context is only activated when no other context is active for {@link RequestScoped}.
  8 + * Context that stores {@link RequestScoped} beans during client calls to {@link ManagementController} classes. This
  9 + * context is only activated when no other context is active for {@link RequestScoped}.
10 10 *
11 11 * @author serpro
12   - *
13 12 */
14 13 public class ManagedContext extends ThreadLocalContext {
15   -
  14 +
16 15 /**
17 16 * Constructs a new context.
18 17 */
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/ThreadLocalContext.java
... ... @@ -51,10 +51,9 @@ package br.gov.frameworkdemoiselle.internal.context;
51 51 import java.lang.annotation.Annotation;
52 52  
53 53 /**
54   - * Base context that has a separated store for each thread
  54 + * Base context that has a separated store for each thread
55 55 *
56 56 * @author serpro
57   - *
58 57 */
59 58 public class ThreadLocalContext extends AbstractCustomContext {
60 59  
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationArrayValueExtractor.java
... ... @@ -36,7 +36,7 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.internal.implementation;
38 38  
39   -import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.EXTENSIONS_L1_PRIORITY;
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L2_PRIORITY;
40 40  
41 41 import java.lang.reflect.Field;
42 42  
... ... @@ -46,7 +46,7 @@ import org.apache.commons.configuration.DataConfiguration;
46 46 import br.gov.frameworkdemoiselle.annotation.Priority;
47 47 import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor;
48 48  
49   -@Priority(EXTENSIONS_L1_PRIORITY)
  49 +@Priority(L2_PRIORITY)
50 50 public class ConfigurationArrayValueExtractor implements ConfigurationValueExtractor {
51 51  
52 52 @Override
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java
... ... @@ -36,7 +36,7 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.internal.implementation;
38 38  
39   -import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.EXTENSIONS_L1_PRIORITY;
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L2_PRIORITY;
40 40  
41 41 import java.lang.reflect.Field;
42 42  
... ... @@ -46,7 +46,7 @@ import br.gov.frameworkdemoiselle.annotation.Priority;
46 46 import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor;
47 47 import br.gov.frameworkdemoiselle.util.Reflections;
48 48  
49   -@Priority(EXTENSIONS_L1_PRIORITY)
  49 +@Priority(L2_PRIORITY)
50 50 public class ConfigurationClassValueExtractor implements ConfigurationValueExtractor {
51 51  
52 52 @Override
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java
... ... @@ -36,7 +36,7 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.internal.implementation;
38 38  
39   -import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.EXTENSIONS_L1_PRIORITY;
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L2_PRIORITY;
40 40  
41 41 import java.lang.reflect.Field;
42 42 import java.util.HashMap;
... ... @@ -50,7 +50,7 @@ import org.apache.commons.configuration.Configuration;
50 50 import br.gov.frameworkdemoiselle.annotation.Priority;
51 51 import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor;
52 52  
53   -@Priority(EXTENSIONS_L1_PRIORITY)
  53 +@Priority(L2_PRIORITY)
54 54 public class ConfigurationMapValueExtractor implements ConfigurationValueExtractor {
55 55  
56 56 @Override
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationPrimitiveOrWrapperValueExtractor.java
... ... @@ -36,7 +36,7 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.internal.implementation;
38 38  
39   -import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.EXTENSIONS_L1_PRIORITY;
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L2_PRIORITY;
40 40  
41 41 import java.lang.reflect.Field;
42 42 import java.util.HashSet;
... ... @@ -50,7 +50,7 @@ import org.apache.commons.lang.ClassUtils;
50 50 import br.gov.frameworkdemoiselle.annotation.Priority;
51 51 import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor;
52 52  
53   -@Priority(EXTENSIONS_L1_PRIORITY)
  53 +@Priority(L2_PRIORITY)
54 54 public class ConfigurationPrimitiveOrWrapperValueExtractor implements ConfigurationValueExtractor {
55 55  
56 56 private static final Set<Object> wrappers = new HashSet<Object>();
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationStringValueExtractor.java
... ... @@ -36,7 +36,7 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.internal.implementation;
38 38  
39   -import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.EXTENSIONS_L1_PRIORITY;
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L2_PRIORITY;
40 40  
41 41 import java.lang.reflect.Field;
42 42  
... ... @@ -45,7 +45,7 @@ import org.apache.commons.configuration.Configuration;
45 45 import br.gov.frameworkdemoiselle.annotation.Priority;
46 46 import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor;
47 47  
48   -@Priority(EXTENSIONS_L1_PRIORITY)
  48 +@Priority(L2_PRIORITY)
49 49 public class ConfigurationStringValueExtractor implements ConfigurationValueExtractor {
50 50  
51 51 @Override
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultAuthenticator.java
... ... @@ -36,14 +36,16 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.internal.implementation;
38 38  
39   -import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.CORE_PRIORITY;
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L1_PRIORITY;
  40 +
  41 +import java.security.Principal;
  42 +
40 43 import br.gov.frameworkdemoiselle.DemoiselleException;
41 44 import br.gov.frameworkdemoiselle.annotation.Priority;
42 45 import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
43 46 import br.gov.frameworkdemoiselle.security.AuthenticationException;
44 47 import br.gov.frameworkdemoiselle.security.Authenticator;
45 48 import br.gov.frameworkdemoiselle.security.SecurityContext;
46   -import br.gov.frameworkdemoiselle.security.User;
47 49 import br.gov.frameworkdemoiselle.util.ResourceBundle;
48 50  
49 51 /**
... ... @@ -52,8 +54,7 @@ import br.gov.frameworkdemoiselle.util.ResourceBundle;
52 54 * @author SERPRO
53 55 * @see Authenticator
54 56 */
55   -@SuppressWarnings("deprecation")
56   -@Priority(CORE_PRIORITY)
  57 +@Priority(L1_PRIORITY)
57 58 public class DefaultAuthenticator implements Authenticator {
58 59  
59 60 private static final long serialVersionUID = 1L;
... ... @@ -80,7 +81,7 @@ public class DefaultAuthenticator implements Authenticator {
80 81 * @see br.gov.frameworkdemoiselle.security.Authenticator#getUser()
81 82 */
82 83 @Override
83   - public User getUser() {
  84 + public Principal getUser() {
84 85 throw getException();
85 86 }
86 87  
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultAuthorizer.java
... ... @@ -36,7 +36,7 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.internal.implementation;
38 38  
39   -import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.CORE_PRIORITY;
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L1_PRIORITY;
40 40 import br.gov.frameworkdemoiselle.DemoiselleException;
41 41 import br.gov.frameworkdemoiselle.annotation.Priority;
42 42 import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
... ... @@ -50,7 +50,7 @@ import br.gov.frameworkdemoiselle.util.ResourceBundle;
50 50 * @author SERPRO
51 51 * @see Authorizer
52 52 */
53   -@Priority(CORE_PRIORITY)
  53 +@Priority(L1_PRIORITY)
54 54 public class DefaultAuthorizer implements Authorizer {
55 55  
56 56 private static final long serialVersionUID = 1L;
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultTransaction.java
... ... @@ -36,7 +36,7 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.internal.implementation;
38 38  
39   -import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.CORE_PRIORITY;
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L1_PRIORITY;
40 40 import br.gov.frameworkdemoiselle.DemoiselleException;
41 41 import br.gov.frameworkdemoiselle.annotation.Priority;
42 42 import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
... ... @@ -50,7 +50,7 @@ import br.gov.frameworkdemoiselle.util.ResourceBundle;
50 50 * @author SERPRO
51 51 * @see Transaction
52 52 */
53   -@Priority(CORE_PRIORITY)
  53 +@Priority(L1_PRIORITY)
54 54 public class DefaultTransaction implements Transaction {
55 55  
56 56 private static final long serialVersionUID = 1L;
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/LoggerMessageAppender.java 0 → 100644
... ... @@ -0,0 +1,74 @@
  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 +package br.gov.frameworkdemoiselle.internal.implementation;
  38 +
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L1_PRIORITY;
  40 +
  41 +import javax.inject.Inject;
  42 +
  43 +import org.slf4j.Logger;
  44 +
  45 +import br.gov.frameworkdemoiselle.annotation.Priority;
  46 +import br.gov.frameworkdemoiselle.message.Message;
  47 +import br.gov.frameworkdemoiselle.message.MessageAppender;
  48 +
  49 +@Priority(L1_PRIORITY)
  50 +public class LoggerMessageAppender implements MessageAppender {
  51 +
  52 + private static final long serialVersionUID = 1L;
  53 +
  54 + @Inject
  55 + private Logger logger;
  56 +
  57 + @Override
  58 + public void append(Message message) {
  59 + String text = message.getText();
  60 +
  61 + switch (message.getSeverity()) {
  62 + case INFO:
  63 + logger.info(text);
  64 + break;
  65 +
  66 + case WARN:
  67 + logger.warn(text);
  68 + break;
  69 +
  70 + default:
  71 + logger.error(text);
  72 + }
  73 + }
  74 +}
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/MessageContextImpl.java
... ... @@ -48,8 +48,10 @@ import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer;
48 48 import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
49 49 import br.gov.frameworkdemoiselle.message.DefaultMessage;
50 50 import br.gov.frameworkdemoiselle.message.Message;
  51 +import br.gov.frameworkdemoiselle.message.MessageAppender;
51 52 import br.gov.frameworkdemoiselle.message.MessageContext;
52 53 import br.gov.frameworkdemoiselle.message.SeverityType;
  54 +import br.gov.frameworkdemoiselle.util.Beans;
53 55 import br.gov.frameworkdemoiselle.util.ResourceBundle;
54 56  
55 57 /**
... ... @@ -79,7 +81,13 @@ public class MessageContextImpl implements Serializable, MessageContext {
79 81 }
80 82  
81 83 getLogger().debug(getBundle().getString("adding-message-to-context", message.toString()));
82   - messages.add(aux);
  84 + getAppender().append(aux);
  85 + }
  86 +
  87 + private MessageAppender getAppender() {
  88 + Class<? extends MessageAppender> appenderClass = StrategySelector.selectClass(MessageAppender.class);
  89 +
  90 + return Beans.getReference(appenderClass);
83 91 }
84 92  
85 93 @Override
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/SecurityContextImpl.java
... ... @@ -42,8 +42,6 @@ import java.security.Principal;
42 42 import javax.inject.Named;
43 43  
44 44 import br.gov.frameworkdemoiselle.DemoiselleException;
45   -import br.gov.frameworkdemoiselle.internal.bootstrap.AuthenticatorBootstrap;
46   -import br.gov.frameworkdemoiselle.internal.bootstrap.AuthorizerBootstrap;
47 45 import br.gov.frameworkdemoiselle.internal.configuration.SecurityConfig;
48 46 import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
49 47 import br.gov.frameworkdemoiselle.security.AfterLoginSuccessful;
... ... @@ -74,11 +72,10 @@ public class SecurityContextImpl implements SecurityContext {
74 72  
75 73 private Authenticator getAuthenticator() {
76 74 if (this.authenticator == null) {
77   - AuthenticatorBootstrap bootstrap = Beans.getReference(AuthenticatorBootstrap.class);
78 75 Class<? extends Authenticator> clazz = getConfig().getAuthenticatorClass();
79 76  
80 77 if (clazz == null) {
81   - clazz = StrategySelector.selectClass(Authenticator.class, bootstrap.getCache());
  78 + clazz = StrategySelector.selectClass(Authenticator.class);
82 79 }
83 80  
84 81 this.authenticator = Beans.getReference(clazz);
... ... @@ -89,11 +86,10 @@ public class SecurityContextImpl implements SecurityContext {
89 86  
90 87 private Authorizer getAuthorizer() {
91 88 if (this.authorizer == null) {
92   - AuthorizerBootstrap bootstrap = Beans.getReference(AuthorizerBootstrap.class);
93 89 Class<? extends Authorizer> clazz = getConfig().getAuthorizerClass();
94 90  
95 91 if (clazz == null) {
96   - clazz = StrategySelector.selectClass(Authorizer.class, bootstrap.getCache());
  92 + clazz = StrategySelector.selectClass(Authorizer.class);
97 93 }
98 94  
99 95 this.authorizer = Beans.getReference(clazz);
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/StrategySelector.java
... ... @@ -36,32 +36,26 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.internal.implementation;
38 38  
39   -import static br.gov.frameworkdemoiselle.annotation.Priority.MIN_PRIORITY;
40   -
41 39 import java.io.Serializable;
42 40 import java.util.ArrayList;
43 41 import java.util.Collection;
44 42 import java.util.HashMap;
  43 +import java.util.HashSet;
45 44 import java.util.List;
46 45 import java.util.Map;
  46 +import java.util.Set;
47 47  
48 48 import javax.enterprise.inject.AmbiguousResolutionException;
  49 +import javax.enterprise.inject.spi.Bean;
49 50  
50 51 import br.gov.frameworkdemoiselle.DemoiselleException;
51 52 import br.gov.frameworkdemoiselle.annotation.Priority;
52 53 import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
  54 +import br.gov.frameworkdemoiselle.util.Beans;
53 55 import br.gov.frameworkdemoiselle.util.ResourceBundle;
54 56  
55 57 public final class StrategySelector implements Serializable {
56 58  
57   - public static final int CORE_PRIORITY = MIN_PRIORITY;
58   -
59   - public static final int EXTENSIONS_L1_PRIORITY = CORE_PRIORITY - 100;
60   -
61   - public static final int EXTENSIONS_L2_PRIORITY = EXTENSIONS_L1_PRIORITY - 100;
62   -
63   - public static final int COMPONENTS_PRIORITY = EXTENSIONS_L2_PRIORITY - 100;
64   -
65 59 private static final long serialVersionUID = 1L;
66 60  
67 61 private static ResourceBundle bundle;
... ... @@ -92,7 +86,7 @@ public final class StrategySelector implements Serializable {
92 86 return map.get(elected);
93 87 }
94 88  
95   - public static <T> Class<? extends T> selectClass(Class<T> type, Collection<Class<? extends T>> options) {
  89 + private static <T> Class<? extends T> selectClass(Class<T> type, Collection<Class<? extends T>> options) {
96 90 Class<? extends T> selected = null;
97 91  
98 92 for (Class<? extends T> option : options) {
... ... @@ -102,13 +96,28 @@ public final class StrategySelector implements Serializable {
102 96 }
103 97  
104 98 if (selected != null) {
105   - checkForAmbiguity(type, selected, options);
  99 + performAmbiguityCheck(type, selected, options);
106 100 }
107 101  
108 102 return selected;
109 103 }
110 104  
111   - private static <T> void checkForAmbiguity(Class<T> type, Class<? extends T> selected,
  105 + public static <T> Class<? extends T> selectClass(Class<T> type) {
  106 + return selectClass(type, getOptions(type));
  107 + }
  108 +
  109 + @SuppressWarnings("unchecked")
  110 + private static <T> Collection<Class<? extends T>> getOptions(Class<T> type) {
  111 + Set<Class<? extends T>> result = new HashSet<Class<? extends T>>();
  112 +
  113 + for (Bean<?> bean : Beans.getBeanManager().getBeans(type)) {
  114 + result.add((Class<? extends T>) bean.getBeanClass());
  115 + }
  116 +
  117 + return result;
  118 + }
  119 +
  120 + private static <T> void performAmbiguityCheck(Class<T> type, Class<? extends T> selected,
112 121 Collection<Class<? extends T>> options) {
113 122 int selectedPriority = getPriority(selected);
114 123  
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/TransactionContextImpl.java
... ... @@ -38,7 +38,6 @@ package br.gov.frameworkdemoiselle.internal.implementation;
38 38  
39 39 import javax.inject.Named;
40 40  
41   -import br.gov.frameworkdemoiselle.internal.bootstrap.TransactionBootstrap;
42 41 import br.gov.frameworkdemoiselle.internal.configuration.TransactionConfig;
43 42 import br.gov.frameworkdemoiselle.transaction.Transaction;
44 43 import br.gov.frameworkdemoiselle.transaction.TransactionContext;
... ... @@ -56,13 +55,13 @@ public class TransactionContextImpl implements TransactionContext {
56 55  
57 56 private Transaction transaction;
58 57  
59   - private Transaction getTransaction() {
  58 + @Override
  59 + public Transaction getCurrentTransaction() {
60 60 if (this.transaction == null) {
61   - TransactionBootstrap bootstrap = Beans.getReference(TransactionBootstrap.class);
62 61 Class<? extends Transaction> clazz = getConfig().getTransactionClass();
63 62  
64 63 if (clazz == null) {
65   - clazz = StrategySelector.selectClass(Transaction.class, bootstrap.getCache());
  64 + clazz = StrategySelector.selectClass(Transaction.class);
66 65 }
67 66  
68 67 this.transaction = Beans.getReference(clazz);
... ... @@ -71,11 +70,6 @@ public class TransactionContextImpl implements TransactionContext {
71 70 return this.transaction;
72 71 }
73 72  
74   - @Override
75   - public Transaction getCurrentTransaction() {
76   - return getTransaction();
77   - }
78   -
79 73 private TransactionConfig getConfig() {
80 74 return Beans.getReference(TransactionConfig.class);
81 75 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/interceptor/ExceptionHandlerInterceptor.java
... ... @@ -57,7 +57,7 @@ public class ExceptionHandlerInterceptor extends br.gov.frameworkdemoiselle.exce
57 57  
58 58 @Inject
59 59 private Logger logger;
60   -
  60 +
61 61 @Override
62 62 @AroundInvoke
63 63 public Object manage(InvocationContext ic) throws Exception {
... ... @@ -65,4 +65,3 @@ public class ExceptionHandlerInterceptor extends br.gov.frameworkdemoiselle.exce
65 65 return super.manage(ic);
66 66 }
67 67 }
68   -
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/proxy/Slf4jLoggerProxy.java
... ... @@ -61,12 +61,12 @@ public class Slf4jLoggerProxy implements Logger, Serializable {
61 61 private transient Logger delegate;
62 62  
63 63 private final Class<?> type;
64   -
  64 +
65 65 private Logger getDelegate() {
66   - if(delegate == null) {
  66 + if (delegate == null) {
67 67 delegate = LoggerFactory.getLogger(type);
68 68 }
69   -
  69 +
70 70 return delegate;
71 71 }
72 72  
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/lifecycle/ManagementExtension.java
... ... @@ -42,34 +42,36 @@ import br.gov.frameworkdemoiselle.internal.management.ManagedType;
42 42 import br.gov.frameworkdemoiselle.stereotype.ManagementController;
43 43  
44 44 /**
45   - *
46   - * <p>Interface defining the lifecycle of a <b>management extension</b>, an extension
47   - * capable of exposing {@link ManagementController}'s to external clients in one
48   - * of the available management technologies, such as JMX or SNMP.</p>
49   - *
50   - * <p>To include a management extension into the management lifecycle, it just needs
51   - * to implement this interface and be a CDI bean (have a <b>beans.xml</b> file inside
52   - * the META-INF folder of it's java package). The Demoiselle Core lifecycle controller
53   - * will call the {@link #initialize(List managedTypes)} and {@link #shutdown(List managedTypes)} methods at the apropriate times.</p>
  45 + * <p>
  46 + * Interface defining the lifecycle of a <b>management extension</b>, an extension capable of exposing
  47 + * {@link ManagementController}'s to external clients in one of the available management technologies, such as JMX or
  48 + * SNMP.
  49 + * </p>
  50 + * <p>
  51 + * To include a management extension into the management lifecycle, it just needs to implement this interface and be a
  52 + * CDI bean (have a <b>beans.xml</b> file inside the META-INF folder of it's java package). The Demoiselle Core
  53 + * lifecycle controller will call the {@link #initialize(List managedTypes)} and {@link #shutdown(List managedTypes)}
  54 + * methods at the apropriate times.
  55 + * </p>
54 56 *
55 57 * @author serpro
56   - *
57 58 */
58 59 public interface ManagementExtension {
59 60  
60 61 /**
61   - * This method is called during the application initialization process for each concrete
62   - * implementation of this interface.
  62 + * This method is called during the application initialization process for each concrete implementation of this
  63 + * interface.
63 64 *
64   - * @param managedTypes The list of discovered {@link ManagementController} classes.
  65 + * @param managedTypes
  66 + * The list of discovered {@link ManagementController} classes.
65 67 */
66 68 void initialize(List<ManagedType> managedTypes);
67 69  
68 70 /**
69   - * This method is called during the application shutdown process for each concrete
70   - * implementation of this interface.
  71 + * This method is called during the application shutdown process for each concrete implementation of this interface.
71 72 *
72   - * @param managedTypes The list of discovered {@link ManagementController} classes.
  73 + * @param managedTypes
  74 + * The list of discovered {@link ManagementController} classes.
73 75 */
74 76 void shutdown(List<ManagedType> managedTypes);
75 77  
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/lifecycle/Shutdown.java
... ... @@ -48,17 +48,20 @@ import java.lang.annotation.Target;
48 48 * Take a look at the following usage sample:
49 49 * <p>
50 50 * <blockquote>
  51 + *
51 52 * <pre>
52 53 * public class Finalizer {
53 54 *
54   - * &#064;Shutdown
  55 + * &#064;Shutdown
55 56 * &#064;Priority(5)
56 57 * public void finalize() {
57 58 * ...
58 59 * }
59 60 * }
60 61 *
  62 + *
61 63 * </pre>
  64 + *
62 65 * </blockquote>
63 66 * <p>
64 67 *
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/lifecycle/Startup.java
... ... @@ -48,17 +48,20 @@ import java.lang.annotation.Target;
48 48 * Take a look at the following usage sample:
49 49 * <p>
50 50 * <blockquote>
  51 + *
51 52 * <pre>
52 53 * public class Finalizer {
53 54 *
54   - * &#064;Startup
  55 + * &#064;Startup
55 56 * &#064;Priority(1)
56 57 * public void init() {
57 58 * ...
58 59 * }
59 60 * }
60 61 *
  62 + *
61 63 * </pre>
  64 + *
62 65 * </blockquote>
63 66 * <p>
64 67 *
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/message/DefaultMessage.java
... ... @@ -36,8 +36,6 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.message;
38 38  
39   -import javax.enterprise.inject.Alternative;
40   -
41 39 import br.gov.frameworkdemoiselle.util.Beans;
42 40 import br.gov.frameworkdemoiselle.util.ResourceBundle;
43 41 import br.gov.frameworkdemoiselle.util.Strings;
... ... @@ -45,7 +43,6 @@ import br.gov.frameworkdemoiselle.util.Strings;
45 43 /**
46 44 * @author SERPRO
47 45 */
48   -@Alternative
49 46 public class DefaultMessage implements Message {
50 47  
51 48 private final String originalText;
... ... @@ -65,28 +62,27 @@ public class DefaultMessage implements Message {
65 62 this.severity = (severity == null ? DEFAULT_SEVERITY : severity);
66 63 this.params = params;
67 64 this.bundle = Beans.getReference(ResourceBundle.class);
  65 +
  66 + initParsedText();
68 67 }
69 68  
70 69 public DefaultMessage(String text, Object... params) {
71 70 this(text, null, (Object[]) params);
72 71 }
73 72  
74   - public String getText() {
75   - initParsedText();
76   - return parsedText;
77   - }
78   -
79 73 private void initParsedText() {
80   - if (parsedText == null) {
81   - if (Strings.isResourceBundleKeyFormat(originalText)) {
82   - parsedText = bundle.getString(Strings.removeBraces(originalText));
83   -
84   - } else if (originalText != null) {
85   - parsedText = new String(originalText);
86   - }
  74 + if (Strings.isResourceBundleKeyFormat(originalText)) {
  75 + parsedText = bundle.getString(Strings.removeBraces(originalText));
87 76  
88   - parsedText = Strings.getString(parsedText, params);
  77 + } else if (originalText != null) {
  78 + parsedText = new String(originalText);
89 79 }
  80 +
  81 + parsedText = Strings.getString(parsedText, params);
  82 + }
  83 +
  84 + public String getText() {
  85 + return parsedText;
90 86 }
91 87  
92 88 public SeverityType getSeverity() {
... ... @@ -95,7 +91,40 @@ public class DefaultMessage implements Message {
95 91  
96 92 @Override
97 93 public String toString() {
98   - initParsedText();
99 94 return Strings.toString(this);
100 95 }
  96 +
  97 + @Override
  98 + public int hashCode() {
  99 + final int prime = 31;
  100 + int result = 1;
  101 + result = prime * result + ((parsedText == null) ? 0 : parsedText.hashCode());
  102 + result = prime * result + ((severity == null) ? 0 : severity.hashCode());
  103 + return result;
  104 + }
  105 +
  106 + @Override
  107 + public boolean equals(Object obj) {
  108 + if (this == obj) {
  109 + return true;
  110 + }
  111 + if (obj == null) {
  112 + return false;
  113 + }
  114 + if (getClass() != obj.getClass()) {
  115 + return false;
  116 + }
  117 + DefaultMessage other = (DefaultMessage) obj;
  118 + if (parsedText == null) {
  119 + if (other.parsedText != null) {
  120 + return false;
  121 + }
  122 + } else if (!parsedText.equals(other.parsedText)) {
  123 + return false;
  124 + }
  125 + if (severity != other.severity) {
  126 + return false;
  127 + }
  128 + return true;
  129 + }
101 130 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/message/MessageAppender.java 0 → 100644
... ... @@ -0,0 +1,47 @@
  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 +package br.gov.frameworkdemoiselle.message;
  38 +
  39 +import java.io.Serializable;
  40 +
  41 +/**
  42 + * @author SERPRO
  43 + */
  44 +public interface MessageAppender extends Serializable {
  45 +
  46 + void append(Message message);
  47 +}
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/message/MessageContext.java
... ... @@ -65,11 +65,13 @@ public interface MessageContext {
65 65 /**
66 66 * Returns all messages in the context.
67 67 */
  68 + @Deprecated
68 69 List<Message> getMessages();
69 70  
70 71 /**
71 72 * Clears the list of messages in the context.
72 73 */
  74 + @Deprecated
73 75 void clear();
74 76  
75 77 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/pagination/Pagination.java
... ... @@ -88,5 +88,5 @@ public interface Pagination {
88 88 * Sets the position for the first record and hence calculates current page according to page size.
89 89 */
90 90 void setFirstResult(int firstResult);
91   -
  91 +
92 92 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/pagination/PaginationContext.java
... ... @@ -51,7 +51,8 @@ public interface PaginationContext {
51 51 /**
52 52 * Retrieves the pagination according to the class type specified.
53 53 *
54   - * @param clazz a {@code Class} type
  54 + * @param clazz
  55 + * a {@code Class} type
55 56 * @return Pagination
56 57 */
57 58 Pagination getPagination(Class<?> clazz);
... ... @@ -60,8 +61,10 @@ public interface PaginationContext {
60 61 * Retrieves the pagination according to the class type specified. If not existing, creates the pagination whenever
61 62 * {@code create} parameter is true.
62 63 *
63   - * @param clazz a {@code Class} type
64   - * @param create determines whether pagination must always be returned
  64 + * @param clazz
  65 + * a {@code Class} type
  66 + * @param create
  67 + * determines whether pagination must always be returned
65 68 * @return Pagination
66 69 */
67 70 Pagination getPagination(Class<?> clazz, boolean create);
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/security/Authenticator.java
... ... @@ -49,7 +49,8 @@ public interface Authenticator extends Serializable {
49 49 /**
50 50 * Executes the necessary steps to authenticate an user.
51 51 *
52   - * @throws AuthenticationException When the authentication process fails, this exception is thrown.
  52 + * @throws AuthenticationException
  53 + * When the authentication process fails, this exception is thrown.
53 54 */
54 55 void authenticate() throws AuthenticationException;
55 56  
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/security/RequiredPermissionInterceptor.java
... ... @@ -46,9 +46,8 @@ import javax.interceptor.InvocationContext;
46 46 import org.slf4j.Logger;
47 47  
48 48 import br.gov.frameworkdemoiselle.annotation.Name;
49   -import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer;
50   -import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
51 49 import br.gov.frameworkdemoiselle.util.Beans;
  50 +import br.gov.frameworkdemoiselle.util.NameQualifier;
52 51 import br.gov.frameworkdemoiselle.util.ResourceBundle;
53 52 import br.gov.frameworkdemoiselle.util.Strings;
54 53  
... ... @@ -63,9 +62,9 @@ public class RequiredPermissionInterceptor implements Serializable {
63 62  
64 63 private static final long serialVersionUID = 1L;
65 64  
66   - private static ResourceBundle bundle;
  65 + private static transient ResourceBundle bundle;
67 66  
68   - private static Logger logger;
  67 + private static transient Logger logger;
69 68  
70 69 /**
71 70 * Gets the values for both resource and operation properties of {@code @RequiredPermission}. Delegates to
... ... @@ -168,7 +167,7 @@ public class RequiredPermissionInterceptor implements Serializable {
168 167  
169 168 private static ResourceBundle getBundle() {
170 169 if (bundle == null) {
171   - bundle = ResourceBundleProducer.create("demoiselle-core-bundle");
  170 + bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-core-bundle"));
172 171 }
173 172  
174 173 return bundle;
... ... @@ -176,7 +175,7 @@ public class RequiredPermissionInterceptor implements Serializable {
176 175  
177 176 private static Logger getLogger() {
178 177 if (logger == null) {
179   - logger = LoggerProducer.create(RequiredPermissionInterceptor.class);
  178 + logger = Beans.getReference(Logger.class, new NameQualifier(RequiredPermissionInterceptor.class.getName()));
180 179 }
181 180  
182 181 return logger;
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/security/RequiredRoleInterceptor.java
... ... @@ -47,9 +47,8 @@ import javax.interceptor.InvocationContext;
47 47  
48 48 import org.slf4j.Logger;
49 49  
50   -import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer;
51   -import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
52 50 import br.gov.frameworkdemoiselle.util.Beans;
  51 +import br.gov.frameworkdemoiselle.util.NameQualifier;
53 52 import br.gov.frameworkdemoiselle.util.ResourceBundle;
54 53  
55 54 /**
... ... @@ -63,9 +62,9 @@ public class RequiredRoleInterceptor implements Serializable {
63 62  
64 63 private static final long serialVersionUID = 1L;
65 64  
66   - private static ResourceBundle bundle;
  65 + private static transient ResourceBundle bundle;
67 66  
68   - private static Logger logger;
  67 + private static transient Logger logger;
69 68  
70 69 /**
71 70 * Gets the value property of {@code @RequiredRole}. Delegates to {@code SecurityContext} check role. If the user
... ... @@ -102,7 +101,6 @@ public class RequiredRoleInterceptor implements Serializable {
102 101 .error(getBundle().getString("does-not-have-role", getSecurityContext().getCurrentUser().getName(),
103 102 roles));
104 103  
105   - // AuthorizationException a = new AuthorizationException(null);
106 104 throw new AuthorizationException(getBundle().getString("does-not-have-role-ui", roles));
107 105 }
108 106  
... ... @@ -139,7 +137,7 @@ public class RequiredRoleInterceptor implements Serializable {
139 137  
140 138 private static ResourceBundle getBundle() {
141 139 if (bundle == null) {
142   - bundle = ResourceBundleProducer.create("demoiselle-core-bundle");
  140 + bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-core-bundle"));
143 141 }
144 142  
145 143 return bundle;
... ... @@ -147,7 +145,7 @@ public class RequiredRoleInterceptor implements Serializable {
147 145  
148 146 private static Logger getLogger() {
149 147 if (logger == null) {
150   - logger = LoggerProducer.create(RequiredRoleInterceptor.class);
  148 + logger = Beans.getReference(Logger.class, new NameQualifier(RequiredRoleInterceptor.class.getName()));
151 149 }
152 150  
153 151 return logger;
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/security/User.java
... ... @@ -41,7 +41,7 @@ import java.security.Principal;
41 41  
42 42 /**
43 43 * @author SERPRO
44   - * @deprecated
  44 + * @deprecated
45 45 */
46 46 public interface User extends Principal, Serializable {
47 47  
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/stereotype/ManagementController.java
... ... @@ -49,17 +49,23 @@ import javax.enterprise.inject.Stereotype;
49 49 import javax.enterprise.util.Nonbinding;
50 50  
51 51 /**
52   - * <p>Identifies a <b>management controller</b> bean. What it means is that an external client can manage the application
53   - * this class is in by reading or writing it's attributes and calling it's operations.</p>
54 52 * <p>
55   - * Only fields annotated with {@link br.gov.frameworkdemoiselle.annotation.ManagedProperty} or
56   - * methods annotated with {@link br.gov.frameworkdemoiselle.annotation.ManagedOperation} will be exposed
57   - * to clients.</p>
58   - * <p>Only bean implementations (concrete classes) can be management controllers. It's a runtime error to mark an interface
59   - * or abstract class with this annotation.</p>
60   - * <p>This stereotype only defines a class as managed, you need to choose an extension that will expose this managed class
  53 + * Identifies a <b>management controller</b> bean. What it means is that an external client can manage the application
  54 + * this class is in by reading or writing it's attributes and calling it's operations.
  55 + * </p>
  56 + * <p>
  57 + * Only fields annotated with {@link br.gov.frameworkdemoiselle.annotation.ManagedProperty} or methods annotated with
  58 + * {@link br.gov.frameworkdemoiselle.annotation.ManagedOperation} will be exposed to clients.
  59 + * </p>
  60 + * <p>
  61 + * Only bean implementations (concrete classes) can be management controllers. It's a runtime error to mark an interface
  62 + * or abstract class with this annotation.
  63 + * </p>
  64 + * <p>
  65 + * This stereotype only defines a class as managed, you need to choose an extension that will expose this managed class
61 66 * to external clients using any technology available. One example is the Demoiselle JMX extension, that will expose
62   - * managed classes as MBeans.</p>
  67 + * managed classes as MBeans.
  68 + * </p>
63 69 *
64 70 * @author SERPRO
65 71 */
... ... @@ -71,7 +77,7 @@ import javax.enterprise.util.Nonbinding;
71 77 @Retention(RUNTIME)
72 78 @Target({ TYPE })
73 79 public @interface ManagementController {
74   -
  80 +
75 81 /**
76 82 * @return Human readable description of this managed class.
77 83 */
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/template/Crud.java
... ... @@ -43,16 +43,18 @@ import java.util.List;
43 43 * Interface containing basic methods for creating, updating and deleting entities (the CRUD design pattern).
44 44 *
45 45 * @author serpro
46   - *
47   - * @param <T> Type of the entity
48   - * @param <I> Type of the identification attribute of the entity
  46 + * @param <T>
  47 + * Type of the entity
  48 + * @param <I>
  49 + * Type of the identification attribute of the entity
49 50 */
50 51 public interface Crud<T, I> extends Serializable {
51 52  
52 53 /**
53 54 * Find an entity by it's identification attribute and make it transient.
54 55 *
55   - * @param id The unique identification to find the entity to be deleted.
  56 + * @param id
  57 + * The unique identification to find the entity to be deleted.
56 58 */
57 59 void delete(I id);
58 60  
... ... @@ -66,24 +68,27 @@ public interface Crud&lt;T, I&gt; extends Serializable {
66 68 /**
67 69 * Insert an entity and return the inserted instance of the entity
68 70 *
69   - * @param bean The bean to be inserted
  71 + * @param bean
  72 + * The bean to be inserted
70 73 * @return The inserted instance of the entity
71 74 */
72 75 T insert(T bean);
73 76  
74 77 /**
75 78 * Find an entity's instance by it's identification attribute and return it
76   - * @param id Value of the identification attribute of the desired entity's instance
77   - * @return The entity's instance whose identification attribute's value matches
78   - * the one passed as argument.
  79 + *
  80 + * @param id
  81 + * Value of the identification attribute of the desired entity's instance
  82 + * @return The entity's instance whose identification attribute's value matches the one passed as argument.
79 83 */
80 84 T load(I id);
81 85  
82 86 /**
83   - * Update an instance of the entity with the bean's attributes as new values.
  87 + * Update an instance of the entity with the bean's attributes as new values.
84 88 *
85   - * @param bean The bean instance containing both the identification value to find the old
86   - * instance and the new values for the instance's attributes.
  89 + * @param bean
  90 + * The bean instance containing both the identification value to find the old instance and the new values
  91 + * for the instance's attributes.
87 92 * @return The updated entity's instance
88 93 */
89 94 T update(T bean);
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/template/DelegateCrud.java
... ... @@ -39,20 +39,15 @@ package br.gov.frameworkdemoiselle.template;
39 39 import java.util.List;
40 40 import java.util.ListIterator;
41 41  
42   -import br.gov.frameworkdemoiselle.internal.implementation.DefaultTransaction;
43   -import br.gov.frameworkdemoiselle.transaction.Transaction;
44   -import br.gov.frameworkdemoiselle.transaction.TransactionContext;
45   -import br.gov.frameworkdemoiselle.transaction.Transactional;
46 42 import br.gov.frameworkdemoiselle.util.Beans;
47 43 import br.gov.frameworkdemoiselle.util.Reflections;
48 44  
49 45 /**
50   - * An implementation of the {@link Crud} interface that delegates it's operations
51   - * to another {@link Crud} implementation.
  46 + * An implementation of the {@link Crud} interface that delegates it's operations to another {@link Crud}
  47 + * implementation.
52 48 *
53 49 * @author serpro
54   - *
55   - * @param <T>
  50 + * @param <T>
56 51 * bean object type
57 52 * @param <I>
58 53 * bean id type
... ... @@ -75,19 +70,6 @@ public class DelegateCrud&lt;T, I, C extends Crud&lt;T, I&gt;&gt; implements Crud&lt;T, I&gt; {
75 70 */
76 71 @Override
77 72 public void delete(final I id) {
78   - if (isRunningTransactionalOperations()) {
79   - transactionalDelete(id);
80   - } else {
81   - nonTransactionalDelete(id);
82   - }
83   - }
84   -
85   - @Transactional
86   - private void transactionalDelete(final I id) {
87   - nonTransactionalDelete(id);
88   - }
89   -
90   - private void nonTransactionalDelete(final I id) {
91 73 getDelegate().delete(id);
92 74 }
93 75  
... ... @@ -98,20 +80,8 @@ public class DelegateCrud&lt;T, I, C extends Crud&lt;T, I&gt;&gt; implements Crud&lt;T, I&gt; {
98 80 * List of entities identifiers
99 81 */
100 82 public void delete(final List<I> ids) {
101   - if (isRunningTransactionalOperations()) {
102   - transactionalDelete(ids);
103   - } else {
104   - nonTransactionalDelete(ids);
105   - }
106   - }
107   -
108   - @Transactional
109   - private void transactionalDelete(final List<I> ids) {
110   - nonTransactionalDelete(ids);
111   - }
112   -
113   - private void nonTransactionalDelete(final List<I> ids) {
114 83 ListIterator<I> iter = ids.listIterator();
  84 +
115 85 while (iter.hasNext()) {
116 86 this.delete(iter.next());
117 87 }
... ... @@ -151,19 +121,6 @@ public class DelegateCrud&lt;T, I, C extends Crud&lt;T, I&gt;&gt; implements Crud&lt;T, I&gt; {
151 121 */
152 122 @Override
153 123 public T insert(final T bean) {
154   - if (isRunningTransactionalOperations()) {
155   - return transactionalInsert(bean);
156   - } else {
157   - return nonTransactionalInsert(bean);
158   - }
159   - }
160   -
161   - @Transactional
162   - private T transactionalInsert(final T bean) {
163   - return nonTransactionalInsert(bean);
164   - }
165   -
166   - private T nonTransactionalInsert(final T bean) {
167 124 return getDelegate().insert(bean);
168 125 }
169 126  
... ... @@ -185,24 +142,6 @@ public class DelegateCrud&lt;T, I, C extends Crud&lt;T, I&gt;&gt; implements Crud&lt;T, I&gt; {
185 142 */
186 143 @Override
187 144 public T update(final T bean) {
188   - if (isRunningTransactionalOperations()) {
189   - return transactionalUpdate(bean);
190   - } else {
191   - return nonTransactionalUpdate(bean);
192   - }
193   - }
194   -
195   - @Transactional
196   - private T transactionalUpdate(final T bean) {
197   - return nonTransactionalUpdate(bean);
198   - }
199   -
200   - private T nonTransactionalUpdate(final T bean) {
201 145 return getDelegate().update(bean);
202 146 }
203   -
204   - private boolean isRunningTransactionalOperations() {
205   - Transaction transaction = Beans.getReference(TransactionContext.class).getCurrentTransaction();
206   - return !(transaction instanceof DefaultTransaction);
207   - }
208 147 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/transaction/TransactionalInterceptor.java
... ... @@ -48,9 +48,8 @@ import javax.interceptor.InvocationContext;
48 48 import org.slf4j.Logger;
49 49  
50 50 import br.gov.frameworkdemoiselle.exception.ApplicationException;
51   -import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer;
52   -import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
53 51 import br.gov.frameworkdemoiselle.util.Beans;
  52 +import br.gov.frameworkdemoiselle.util.NameQualifier;
54 53 import br.gov.frameworkdemoiselle.util.ResourceBundle;
55 54  
56 55 @Interceptor
... ... @@ -63,9 +62,9 @@ public class TransactionalInterceptor implements Serializable {
63 62  
64 63 private TransactionInfo transactionInfo;
65 64  
66   - private static ResourceBundle bundle;
  65 + private static transient ResourceBundle bundle;
67 66  
68   - private static Logger logger;
  67 + private static transient Logger logger;
69 68  
70 69 private TransactionContext getTransactionContext() {
71 70 if (this.transactionContext == null) {
... ... @@ -175,7 +174,7 @@ public class TransactionalInterceptor implements Serializable {
175 174  
176 175 private static ResourceBundle getBundle() {
177 176 if (bundle == null) {
178   - bundle = ResourceBundleProducer.create("demoiselle-core-bundle");
  177 + bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-core-bundle"));
179 178 }
180 179  
181 180 return bundle;
... ... @@ -183,7 +182,7 @@ public class TransactionalInterceptor implements Serializable {
183 182  
184 183 private static Logger getLogger() {
185 184 if (logger == null) {
186   - logger = LoggerProducer.create(TransactionalInterceptor.class);
  185 + logger = Beans.getReference(Logger.class, new NameQualifier(TransactionalInterceptor.class.getName()));
187 186 }
188 187  
189 188 return logger;
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Beans.java
... ... @@ -37,22 +37,25 @@
37 37 package br.gov.frameworkdemoiselle.util;
38 38  
39 39 import java.lang.annotation.Annotation;
  40 +import java.lang.reflect.Member;
40 41 import java.lang.reflect.Type;
41   -import java.util.Locale;
  42 +import java.util.Arrays;
  43 +import java.util.HashSet;
42 44 import java.util.NoSuchElementException;
43 45 import java.util.Set;
44 46  
45 47 import javax.enterprise.context.spi.CreationalContext;
  48 +import javax.enterprise.inject.spi.Annotated;
46 49 import javax.enterprise.inject.spi.Bean;
47 50 import javax.enterprise.inject.spi.BeanManager;
48 51 import javax.enterprise.inject.spi.InjectionPoint;
49 52  
50 53 import br.gov.frameworkdemoiselle.DemoiselleException;
51   -import br.gov.frameworkdemoiselle.internal.bootstrap.CustomInjectionPoint;
52   -import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
53 54  
54 55 public final class Beans {
55 56  
  57 + private static transient ResourceBundle bundle;
  58 +
56 59 private static BeanManager manager;
57 60  
58 61 private Beans() {
... ... @@ -132,6 +135,98 @@ public final class Beans {
132 135 }
133 136  
134 137 private static ResourceBundle getBundle() {
135   - return ResourceBundleProducer.create("demoiselle-core-bundle", Locale.getDefault());
  138 + if (bundle == null) {
  139 + bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-core-bundle"));
  140 + }
  141 +
  142 + return bundle;
  143 + }
  144 +
  145 + static class CustomInjectionPoint implements InjectionPoint {
  146 +
  147 + private final Bean<?> bean;
  148 +
  149 + private final Type beanType;
  150 +
  151 + private final Set<Annotation> qualifiers;
  152 +
  153 + public CustomInjectionPoint(Bean<?> bean, Type beanType, Annotation... qualifiers) {
  154 + this.bean = bean;
  155 + this.beanType = beanType;
  156 + this.qualifiers = new HashSet<Annotation>(Arrays.asList(qualifiers));
  157 + }
  158 +
  159 + @Override
  160 + public Type getType() {
  161 + return this.beanType;
  162 + }
  163 +
  164 + @Override
  165 + public Set<Annotation> getQualifiers() {
  166 + return this.qualifiers;
  167 + }
  168 +
  169 + @Override
  170 + public Bean<?> getBean() {
  171 + return this.bean;
  172 + }
  173 +
  174 + @Override
  175 + public Member getMember() {
  176 + return null;
  177 + }
  178 +
  179 + @Override
  180 + public boolean isDelegate() {
  181 + return false;
  182 + }
  183 +
  184 + @Override
  185 + public boolean isTransient() {
  186 + return false;
  187 + }
  188 +
  189 + @Override
  190 + public Annotated getAnnotated() {
  191 + return new Annotated() {
  192 +
  193 + @Override
  194 + public Type getBaseType() {
  195 + // TODO Auto-generated method stub
  196 + return null;
  197 + }
  198 +
  199 + @Override
  200 + public Set<Type> getTypeClosure() {
  201 + // TODO Auto-generated method stub
  202 + return null;
  203 + }
  204 +
  205 + @Override
  206 + @SuppressWarnings("unchecked")
  207 + public <T extends Annotation> T getAnnotation(Class<T> annotationType) {
  208 + T result = null;
  209 +
  210 + for (Annotation annotation : getAnnotations()) {
  211 + if (annotation.annotationType() == annotationType) {
  212 + result = (T) annotation;
  213 + break;
  214 + }
  215 + }
  216 +
  217 + return result;
  218 + }
  219 +
  220 + @Override
  221 + public Set<Annotation> getAnnotations() {
  222 + return qualifiers;
  223 + }
  224 +
  225 + @Override
  226 + public boolean isAnnotationPresent(Class<? extends Annotation> annotationType) {
  227 + return qualifiers.contains(annotationType);
  228 + }
  229 + };
  230 + }
136 231 }
137 232 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Reflections.java
... ... @@ -166,7 +166,7 @@ public final class Reflections {
166 166 }
167 167  
168 168 public static ClassLoader getClassLoaderForResource(final String resource) {
169   - final String stripped = resource.startsWith("/") ? resource.substring(1) : resource;
  169 + final String stripped = resource.charAt(0) == '/' ? resource.substring(1) : resource;
170 170  
171 171 URL url = null;
172 172 ClassLoader result = Thread.currentThread().getContextClassLoader();
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Strings.java
... ... @@ -114,14 +114,14 @@ public final class Strings {
114 114 }
115 115  
116 116 result.append(field.getName());
117   - result.append("=");
  117 + result.append('=');
118 118 fieldValue = Reflections.getFieldValue(field, object);
119 119 result.append(fieldValue != null && fieldValue.getClass().isArray() ? Arrays
120 120 .toString((Object[]) fieldValue) : fieldValue);
121 121 }
122 122 }
123 123  
124   - result.append("]");
  124 + result.append(']');
125 125 }
126 126  
127 127 return result.toString();
... ...
impl/core/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
1 1 br.gov.frameworkdemoiselle.internal.bootstrap.CoreBootstrap
2 2 br.gov.frameworkdemoiselle.internal.bootstrap.ConfigurationBootstrap
3   -br.gov.frameworkdemoiselle.internal.bootstrap.TransactionBootstrap
4   -br.gov.frameworkdemoiselle.internal.bootstrap.AuthenticatorBootstrap
5   -br.gov.frameworkdemoiselle.internal.bootstrap.AuthorizerBootstrap
6 3 br.gov.frameworkdemoiselle.internal.bootstrap.ManagementBootstrap
7 4 br.gov.frameworkdemoiselle.internal.bootstrap.StartupBootstrap
8 5 br.gov.frameworkdemoiselle.internal.bootstrap.ShutdownBootstrap
... ...
impl/core/src/test/java/configuration/field/beanvalidation/BeanValidationWithEmptyNotNullFieldConfig.java
... ... @@ -42,14 +42,14 @@ public abstract class BeanValidationWithEmptyNotNullFieldConfig {
42 42  
43 43 @NotNull
44 44 private Integer intAttributeNull;
45   -
  45 +
46 46 @NotNull
47 47 private String stringAttributeNull;
48   -
  48 +
49 49 public Integer getIntAttributeNull() {
50 50 return intAttributeNull;
51 51 }
52   -
  52 +
53 53 public String getStringAttributeNull() {
54 54 return stringAttributeNull;
55 55 }
... ...
impl/core/src/test/java/configuration/field/beanvalidation/BeanValidationWithFilledNotNullFieldConfig.java
... ... @@ -6,14 +6,14 @@ public class BeanValidationWithFilledNotNullFieldConfig {
6 6  
7 7 @NotNull
8 8 private String stringAttributeNotNull;
9   -
  9 +
10 10 @NotNull
11 11 private Integer intAttibuteNotNull;
12   -
  12 +
13 13 public String getStringAttributeNotNull() {
14 14 return stringAttributeNotNull;
15 15 }
16   -
  16 +
17 17 public Integer getIntAttibuteNotNull() {
18 18 return intAttibuteNotNull;
19 19 }
... ...
impl/core/src/test/java/configuration/field/beanvalidation/ConfigurationBeanValidationFieldTest.java
... ... @@ -80,7 +80,8 @@ public class ConfigurationBeanValidationFieldTest {
80 80 JavaArchive deployment = Tests.createDeployment(ConfigurationBeanValidationFieldTest.class);
81 81 deployment.addAsResource(Tests.createFileAsset(PATH + "/demoiselle.properties"), "demoiselle.properties");
82 82 deployment.addAsResource(Tests.createFileAsset(PATH + "/demoiselle.xml"), "demoiselle.xml");
83   - deployment.addAsResource(Tests.createFileAsset(PATH + "/two-constrain-validation.properties"), "two-constrain-validation.properties");
  83 + deployment.addAsResource(Tests.createFileAsset(PATH + "/two-constrain-validation.properties"),
  84 + "two-constrain-validation.properties");
84 85  
85 86 return deployment;
86 87 }
... ... @@ -136,7 +137,7 @@ public class ConfigurationBeanValidationFieldTest {
136 137 }
137 138  
138 139 @Test
139   - public void loadPropertiesWithTwoConstraintViolations(){
  140 + public void loadPropertiesWithTwoConstraintViolations() {
140 141 try {
141 142 propertyWithTwoConstrainViolations.getAttributeWithTwoConstrainValidations();
142 143 fail();
... ...
impl/core/src/test/java/configuration/field/clazz/AbstractClassNotFoundFieldConfig.java
... ... @@ -41,7 +41,7 @@ public abstract class AbstractClassNotFoundFieldConfig {
41 41 private Class<MyClass> nonExistentTypedClass;
42 42  
43 43 private Class<?> nonExistentUntypedClass;
44   -
  44 +
45 45 public Class<MyClass> getNonExistentTypedClass() {
46 46 return nonExistentTypedClass;
47 47 }
... ...
impl/core/src/test/java/configuration/field/clazz/PropertiesNullClassFieldConfig.java
... ... @@ -40,9 +40,9 @@ import br.gov.frameworkdemoiselle.configuration.Configuration;
40 40  
41 41 @Configuration
42 42 public class PropertiesNullClassFieldConfig {
43   -
  43 +
44 44 private Class<MyClass> nullClass;
45   -
  45 +
46 46 public Class<MyClass> getNullClass() {
47 47 return nullClass;
48 48 }
... ...
impl/core/src/test/java/configuration/field/map/AbstractMapFieldConfig.java
... ... @@ -45,7 +45,7 @@ public abstract class AbstractMapFieldConfig {
45 45 private Map<String, String> stringWithUndefinedKeyMap;
46 46  
47 47 private Map<String, String> emptyValueMap;
48   -
  48 +
49 49 private Map<String, String> NullMapValue;
50 50  
51 51 public Map<String, String> getStringWithUndefinedKeyMap() {
... ...
impl/core/src/test/java/configuration/field/map/ConfigurationMapFieldTest.java
... ... @@ -99,9 +99,9 @@ public class ConfigurationMapFieldTest {
99 99 assertEquals(expected, propertiesConfig.getEmptyValueMap());
100 100 assertEquals(expected, xmlConfig.getEmptyValueMap());
101 101 }
102   -
  102 +
103 103 @Test
104   - public void loadNullMap(){
  104 + public void loadNullMap() {
105 105 assertNull(propertiesConfig.getNullMapValue());
106 106 assertNull(xmlConfig.getNullMapValue());
107 107 }
... ...
impl/core/src/test/java/configuration/field/primitiveorwrapper/AbstractPrimitiveOrWrapperErrorFieldConfig.java
... ... @@ -45,7 +45,7 @@ public abstract class AbstractPrimitiveOrWrapperErrorFieldConfig {
45 45 private Integer emptyWrappedField;
46 46  
47 47 private Integer conversionErrorWrappedField;
48   -
  48 +
49 49 public int getEmptyPrimitiveField() {
50 50 return emptyPrimitiveField;
51 51 }
... ...
impl/core/src/test/java/configuration/field/primitiveorwrapper/ConfigurationPrimitiveOrWrapperFieldTest.java
... ... @@ -78,7 +78,7 @@ public class ConfigurationPrimitiveOrWrapperFieldTest {
78 78  
79 79 @Inject
80 80 private PropertiesNullWrappedField nullWrappedField;
81   -
  81 +
82 82 @Deployment
83 83 public static JavaArchive createDeployment() {
84 84 JavaArchive deployment = Tests.createDeployment(ConfigurationPrimitiveOrWrapperFieldTest.class);
... ... @@ -210,9 +210,9 @@ public class ConfigurationPrimitiveOrWrapperFieldTest {
210 210 assertEquals(ConversionException.class, cause.getCause().getClass());
211 211 }
212 212 }
213   -
  213 +
214 214 @Test
215   - public void loadNullWrappedField(){
  215 + public void loadNullWrappedField() {
216 216 assertNull(nullWrappedField.getNullWrappedField());
217 217 }
218 218 }
... ...
impl/core/src/test/java/configuration/field/primitiveorwrapper/PropertiesNullWrappedField.java
... ... @@ -6,7 +6,7 @@ import br.gov.frameworkdemoiselle.configuration.Configuration;
6 6 public class PropertiesNullWrappedField {
7 7  
8 8 private Integer nullWrappedField;
9   -
  9 +
10 10 public Integer getNullWrappedField() {
11 11 return nullWrappedField;
12 12 }
... ...
impl/core/src/test/java/configuration/field/string/AbstractNullStringFieldConfig.java
1 1 package configuration.field.string;
2 2  
3   -
4 3 public class AbstractNullStringFieldConfig {
5 4  
6 5 private String nullString;
... ...
impl/core/src/test/java/configuration/field/string/ConfigurationStringFieldTest.java
... ... @@ -63,7 +63,7 @@ public class ConfigurationStringFieldTest {
63 63  
64 64 @Inject
65 65 private SystemStringFieldConfig systemConfig;
66   -
  66 +
67 67 @Inject
68 68 private PropertiesNullStringFieldConfig propertiesNullConfig;
69 69  
... ... @@ -113,9 +113,9 @@ public class ConfigurationStringFieldTest {
113 113 assertEquals(expected, propertiesConfig.getEmptyString());
114 114 assertEquals(expected, xmlConfig.getEmptyString());
115 115 }
116   -
  116 +
117 117 @Test
118   - public void loadNullString(){
  118 + public void loadNullString() {
119 119 assertNull(propertiesNullConfig.getNullString());
120 120 assertNull(xmlNullConfig.getNullString());
121 121 assertNull(systemNullConfig.getNullString());
... ...
impl/core/src/test/java/exception/basic/ExceptionClassNotAnnotated.java
... ... @@ -41,7 +41,7 @@ import br.gov.frameworkdemoiselle.exception.ExceptionHandler;
41 41 public class ExceptionClassNotAnnotated {
42 42  
43 43 private boolean nullPointerExceptionHandler = false;
44   -
  44 +
45 45 public boolean isNullPointerExceptionHandler() {
46 46 return nullPointerExceptionHandler;
47 47 }
... ...
impl/core/src/test/java/exception/basic/ExceptionHandlerTest.java
... ... @@ -64,7 +64,7 @@ public class ExceptionHandlerTest {
64 64  
65 65 @Inject
66 66 private ExceptionNested nested;
67   -
  67 +
68 68 @Inject
69 69 private ExceptionClassNotAnnotated classNotAnnotated;
70 70  
... ... @@ -127,7 +127,7 @@ public class ExceptionHandlerTest {
127 127 assertEquals(false, nested.isExceptionHandler());
128 128 }
129 129 }
130   -
  130 +
131 131 @Test
132 132 public void exceptionClassNotAnnotatedController() {
133 133 try {
... ...
impl/core/src/test/java/exception/basic/SimpleExceptionHandler.java
... ... @@ -45,7 +45,7 @@ public class SimpleExceptionHandler {
45 45 private boolean nullPointerExceptionHandler = false;
46 46  
47 47 private boolean arithmeticExceptionHandler = false;
48   -
  48 +
49 49 public boolean isNullPointerExceptionHandler() {
50 50 return nullPointerExceptionHandler;
51 51 }
... ... @@ -53,7 +53,7 @@ public class SimpleExceptionHandler {
53 53 public boolean isArithmeticExceptionHandler() {
54 54 return arithmeticExceptionHandler;
55 55 }
56   -
  56 +
57 57 public void throwNullPointerException() {
58 58 throw new NullPointerException();
59 59 }
... ... @@ -61,11 +61,11 @@ public class SimpleExceptionHandler {
61 61 public void throwArithmeticException() {
62 62 throw new ArithmeticException();
63 63 }
64   -
  64 +
65 65 public void throwExceptionWithoutHandler() {
66 66 throw new IllegalArgumentException();
67   - }
68   -
  67 + }
  68 +
69 69 @SuppressWarnings({ "null", "unused" })
70 70 public void throwTwoException() {
71 71 String txt = null;
... ... @@ -81,5 +81,5 @@ public class SimpleExceptionHandler {
81 81 @ExceptionHandler
82 82 public void handler(ArithmeticException cause) {
83 83 arithmeticExceptionHandler = true;
84   - }
  84 + }
85 85 }
... ...
impl/core/src/test/java/exception/custom/CustomExceptionHandler.java
... ... @@ -50,12 +50,12 @@ public class CustomExceptionHandler {
50 50  
51 51 public void setExceptionHandler(boolean exceptionHandler) {
52 52 this.exceptionHandler = exceptionHandler;
53   - }
54   -
  53 + }
  54 +
55 55 public void throwExceptionWithMessage() {
56 56 throw new CustomException();
57 57 }
58   -
  58 +
59 59 @ExceptionHandler
60 60 public void handler(CustomException exception) {
61 61 setExceptionHandler(true);
... ...
impl/core/src/test/java/lifecycle/shutdown/priority/ShutdownWithPriority.java
... ... @@ -51,7 +51,7 @@ import br.gov.frameworkdemoiselle.lifecycle.Shutdown;
51 51 public class ShutdownWithPriority {
52 52  
53 53 private List<Integer> listShutdown = new ArrayList<Integer>();
54   -
  54 +
55 55 public List<Integer> getListShutdown() {
56 56 return listShutdown;
57 57 }
... ... @@ -67,7 +67,7 @@ public class ShutdownWithPriority {
67 67 public void unloadWithPriority1() {
68 68 listShutdown.add(2);
69 69 }
70   -
  70 +
71 71 @Shutdown
72 72 @Priority(MAX_PRIORITY)
73 73 public void unloadWithMaxPriority() {
... ...
impl/core/src/test/java/lifecycle/shutdown/simple/ShutdownSimple.java
... ... @@ -47,11 +47,11 @@ import br.gov.frameworkdemoiselle.lifecycle.Shutdown;
47 47 public class ShutdownSimple {
48 48  
49 49 private List<Integer> listShutdown = new ArrayList<Integer>();
50   -
  50 +
51 51 public List<Integer> getListShutdown() {
52 52 return listShutdown;
53 53 }
54   -
  54 +
55 55 @Shutdown
56 56 public void unloadWithoutPriorityFirst() {
57 57 listShutdown.add(3);
... ...
impl/core/src/test/java/lifecycle/startup/priority/StartupWithPriorityTest.java
... ... @@ -73,7 +73,7 @@ public class StartupWithPriorityTest {
73 73 Beans.getBeanManager().fireEvent(new AfterStartupProccess() {
74 74 });
75 75 }
76   -
  76 +
77 77 @Test
78 78 public void startupWithPriority() {
79 79 expected.add(1);
... ...
impl/core/src/test/java/lifecycle/startup/simple/StartupSimple.java
... ... @@ -65,5 +65,5 @@ public class StartupSimple {
65 65 @Startup
66 66 public void loadWithoutPriorityThird() {
67 67 listStartup.add(2);
68   - }
  68 + }
69 69 }
... ...
impl/core/src/test/java/lifecycle/startup/simple/StartupSimpleTest.java
... ... @@ -59,9 +59,9 @@ public class StartupSimpleTest {
59 59  
60 60 @Inject
61 61 private StartupSimple startupSimple;
62   -
  62 +
63 63 List<Integer> expected = new ArrayList<Integer>();
64   -
  64 +
65 65 @Deployment
66 66 public static JavaArchive createDeployment() {
67 67 JavaArchive deployment = Tests.createDeployment(StartupSimpleTest.class);
... ... @@ -73,7 +73,7 @@ public class StartupSimpleTest {
73 73 Beans.getBeanManager().fireEvent(new AfterStartupProccess() {
74 74 });
75 75 }
76   -
  76 +
77 77 @Test
78 78 public void startup() {
79 79 expected.add(1);
... ... @@ -83,4 +83,3 @@ public class StartupSimpleTest {
83 83 Assert.assertEquals(expected, startupSimple.getListStartup());
84 84 }
85 85 }
86   -
... ...
impl/core/src/test/java/message/DummyMessageAppender.java 0 → 100644
... ... @@ -0,0 +1,62 @@
  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 +package message;
  38 +
  39 +import java.util.ArrayList;
  40 +import java.util.List;
  41 +
  42 +import javax.enterprise.context.RequestScoped;
  43 +
  44 +import br.gov.frameworkdemoiselle.message.Message;
  45 +import br.gov.frameworkdemoiselle.message.MessageAppender;
  46 +
  47 +@RequestScoped
  48 +public class DummyMessageAppender implements MessageAppender {
  49 +
  50 + private static final long serialVersionUID = 1L;
  51 +
  52 + private List<Message> messages = new ArrayList<Message>();
  53 +
  54 + @Override
  55 + public void append(Message message) {
  56 + messages.add(message);
  57 + }
  58 +
  59 + public List<Message> getMessages() {
  60 + return messages;
  61 + }
  62 +}
... ...
impl/core/src/test/java/message/MessageContextTest.java
  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 + */
1 37 package message;
2 38  
3 39 import static junit.framework.Assert.assertEquals;
... ... @@ -14,7 +50,6 @@ import org.jboss.shrinkwrap.api.spec.JavaArchive;
14 50 import org.junit.Test;
15 51 import org.junit.runner.RunWith;
16 52  
17   -import resourcebundle.parameter.ResourceBundleWithParameter;
18 53 import test.Tests;
19 54 import br.gov.frameworkdemoiselle.internal.context.ContextManager;
20 55 import br.gov.frameworkdemoiselle.internal.context.ManagedContext;
... ... @@ -34,7 +69,7 @@ public class MessageContextTest {
34 69 private MessageWithResourceBundle bundleCustom;
35 70  
36 71 private static final String PATH = "src/test/resources/message/";
37   -
  72 +
38 73 @Deployment
39 74 public static JavaArchive createDeployment() {
40 75 JavaArchive deployment = Tests.createDeployment(MessageContextTest.class);
... ... @@ -47,8 +82,10 @@ public class MessageContextTest {
47 82 public void testAddMessageWithoutParams() {
48 83 ContextManager.activate(ManagedContext.class, RequestScoped.class);
49 84 Message message = new DefaultMessage("Menssage without param");
  85 + DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class);
  86 +
50 87 messageContext.add(message);
51   - assertEquals(messageContext.getMessages().size(), 1);
  88 + assertEquals(appender.getMessages().size(), 1);
52 89 ContextManager.deactivate(ManagedContext.class, RequestScoped.class);
53 90 }
54 91  
... ... @@ -56,8 +93,10 @@ public class MessageContextTest {
56 93 public void testAddMessageWithoutParamsIfSeverityIsInfo() {
57 94 ContextManager.activate(ManagedContext.class, RequestScoped.class);
58 95 Message message = new DefaultMessage("Menssage without param");
  96 + DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class);
  97 +
59 98 messageContext.add(message);
60   - assertEquals(messageContext.getMessages().get(0).getSeverity(), SeverityType.INFO);
  99 + assertEquals(appender.getMessages().get(0).getSeverity(), SeverityType.INFO);
61 100 ContextManager.deactivate(ManagedContext.class, RequestScoped.class);
62 101 }
63 102  
... ... @@ -65,8 +104,10 @@ public class MessageContextTest {
65 104 public void testAddMessageWitSeverityInfo() {
66 105 ContextManager.activate(ManagedContext.class, RequestScoped.class);
67 106 Message message = new DefaultMessage("Menssage without param", SeverityType.INFO);
  107 + DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class);
  108 +
68 109 messageContext.add(message);
69   - assertEquals(messageContext.getMessages().get(0).getSeverity(), SeverityType.INFO);
  110 + assertEquals(appender.getMessages().get(0).getSeverity(), SeverityType.INFO);
70 111 ContextManager.deactivate(ManagedContext.class, RequestScoped.class);
71 112 }
72 113  
... ... @@ -74,28 +115,21 @@ public class MessageContextTest {
74 115 public void testAddMessageWitSeverityWarn() {
75 116 ContextManager.activate(ManagedContext.class, RequestScoped.class);
76 117 Message message = new DefaultMessage("Menssage without param", SeverityType.WARN);
  118 + DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class);
  119 +
77 120 messageContext.add(message);
78   - assertEquals(messageContext.getMessages().get(0).getSeverity(), SeverityType.WARN);
  121 + assertEquals(appender.getMessages().get(0).getSeverity(), SeverityType.WARN);
79 122 ContextManager.deactivate(ManagedContext.class, RequestScoped.class);
80 123 }
81   -
  124 +
82 125 @Test
83 126 public void testAddMessageWitSeverityErro() {
84 127 ContextManager.activate(ManagedContext.class, RequestScoped.class);
85 128 Message message = new DefaultMessage("Menssage without param", SeverityType.ERROR);
  129 + DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class);
  130 +
86 131 messageContext.add(message);
87   - assertEquals(messageContext.getMessages().get(0).getSeverity(), SeverityType.ERROR);
88   - ContextManager.deactivate(ManagedContext.class, RequestScoped.class);
89   - }
90   -
91   - @Test
92   - public void testCleanMessageContext() {
93   - ContextManager.activate(ManagedContext.class, RequestScoped.class);
94   - Message message = new DefaultMessage("Menssage without param");
95   - messageContext.add(message);
96   - assertEquals(messageContext.getMessages().size(), 1);
97   - messageContext.clear();
98   - assertEquals(messageContext.getMessages().size(), 0);
  132 + assertEquals(appender.getMessages().get(0).getSeverity(), SeverityType.ERROR);
99 133 ContextManager.deactivate(ManagedContext.class, RequestScoped.class);
100 134 }
101 135  
... ... @@ -103,11 +137,13 @@ public class MessageContextTest {
103 137 public void testRecoverMessageWithParams() {
104 138 ContextManager.activate(ManagedContext.class, RequestScoped.class);
105 139 Message message = new DefaultMessage("Message with {0} param");
  140 + DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class);
  141 +
106 142 messageContext.add(message, 1);
107   - assertTrue(messageContext.getMessages().get(0).getText().equals("Message with 1 param"));
  143 + assertTrue(appender.getMessages().get(0).getText().equals("Message with 1 param"));
108 144 ContextManager.deactivate(ManagedContext.class, RequestScoped.class);
109 145 }
110   -
  146 +
111 147 @Test
112 148 public void testMessageWithResourceBundle() {
113 149 bundleCustom = Beans.getReference(MessageWithResourceBundle.class);
... ... @@ -115,9 +151,9 @@ public class MessageContextTest {
115 151 String value = bundleCustom.getBundle().getString("MESSAGE_WITHOUT_PARAMETER");
116 152 Assert.assertEquals(expected, value);
117 153 }
118   -
  154 +
119 155 @Test
120   - public void testMessageParsedText(){
  156 + public void testMessageParsedText() {
121 157 ContextManager.activate(ManagedContext.class, RequestScoped.class);
122 158 Message MESSAGE_PARSED = new DefaultMessage("{MESSAGE_PARSED}");
123 159 String expected = "Message parsed";
... ... @@ -125,9 +161,9 @@ public class MessageContextTest {
125 161 Assert.assertEquals(expected, value);
126 162 ContextManager.deactivate(ManagedContext.class, RequestScoped.class);
127 163 }
128   -
  164 +
129 165 @Test
130   - public void testMessageIsNull(){
  166 + public void testMessageIsNull() {
131 167 ContextManager.activate(ManagedContext.class, RequestScoped.class);
132 168 Message NULL_MESSAGE = new DefaultMessage(null);
133 169 String expected = null;
... ... @@ -135,5 +171,4 @@ public class MessageContextTest {
135 171 Assert.assertEquals(expected, value);
136 172 ContextManager.deactivate(ManagedContext.class, RequestScoped.class);
137 173 }
138   -
139 174 }
... ...
impl/core/src/test/java/message/MessageWithResourceBundle.java
  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 + */
1 37 package message;
2 38  
3 39 import javax.inject.Inject;
4 40  
5 41 import br.gov.frameworkdemoiselle.util.ResourceBundle;
6 42  
7   -public class MessageWithResourceBundle{
  43 +public class MessageWithResourceBundle {
8 44  
9 45 @Inject
10 46 private ResourceBundle bundle;
... ...
impl/core/src/test/java/resourcebundle/file/defaultfile/ResourceBundleDefaultTest.java
... ... @@ -67,23 +67,23 @@ public class ResourceBundleDefaultTest {
67 67  
68 68 @Test
69 69 public void loadResourceDefault() {
70   - Locale.setDefault(new Locale("pt", "BR"));
  70 + Locale.setDefault(new Locale("pt", "BR"));
71 71 bundleDefault = Beans.getReference(ResourceBundleDefault.class);
72 72 Assert.assertEquals("mensagem em Portugues", bundleDefault.getMessage());
73 73 }
74 74  
75 75 @Test
76 76 public void loadResourceDefaultEnglish() {
77   - Locale.setDefault(Locale.US);
  77 + Locale.setDefault(Locale.US);
78 78 bundleDefault = Beans.getReference(ResourceBundleDefault.class);
79 79 Assert.assertEquals("message in English", bundleDefault.getMessage());
80 80 }
81   -
  81 +
82 82 @Test
83 83 public void loadResourceWithLocaleNotExist() {
84 84 Locale.setDefault(Locale.ITALY);
85 85 bundleDefault = Beans.getReference(ResourceBundleDefault.class);
86 86 Assert.assertEquals("mensagem em Portugues", bundleDefault.getMessage());
87   - }
  87 + }
88 88  
89 89 }
... ...
impl/core/src/test/java/resourcebundle/parameter/ResourceBundleWithParameterTest.java
... ... @@ -77,7 +77,7 @@ public class ResourceBundleWithParameterTest {
77 77 String value = bundleCustom.getBundle().getString("messageTwoParameter", "1", "2");
78 78 Assert.assertEquals(expected, value);
79 79 }
80   -
  80 +
81 81 @Test
82 82 public void loadKeyWithoutParameter() {
83 83 bundleCustom = Beans.getReference(ResourceBundleWithParameter.class);
... ... @@ -85,15 +85,15 @@ public class ResourceBundleWithParameterTest {
85 85 String value = bundleCustom.getBundle().getString("messageWithoutParameter", "1", "2", "3");
86 86 Assert.assertEquals(expected, value);
87 87 }
88   -
  88 +
89 89 @Test
90 90 public void loadKeyWithStringParameter() {
91 91 bundleCustom = Beans.getReference(ResourceBundleWithParameter.class);
92 92 String expected = "Mensagem número 1";
93 93 String value = bundleCustom.getBundle().getString("messageParameterString", "1");
94 94 Assert.assertNotSame(expected, value);
95   -
96   - expected = "Mensagem número {numero}";
  95 +
  96 + expected = "Mensagem número {numero}";
97 97 Assert.assertEquals(expected, value);
98 98 }
99 99  
... ...
impl/core/src/test/java/security/athentication/custom/CustomAuthenticatorTest.java
... ... @@ -83,24 +83,24 @@ public class CustomAuthenticatorTest {
83 83 @Test
84 84 public void loginProcess() {
85 85 ContextManager.activate(ThreadLocalContext.class, RequestScoped.class);
86   -
  86 +
87 87 context.login();
88 88 assertTrue(context.isLoggedIn());
89 89 assertNotNull(observer.getEvent());
90 90 assertEquals("demoiselle", context.getCurrentUser().getName());
91   -
  91 +
92 92 ContextManager.deactivate(ThreadLocalContext.class, RequestScoped.class);
93 93 }
94 94  
95 95 @Test
96 96 public void logoutProcess() {
97 97 ContextManager.activate(ThreadLocalContext.class, RequestScoped.class);
98   -
  98 +
99 99 context.login();
100 100 context.logout();
101 101 assertFalse(context.isLoggedIn());
102 102 assertNull(context.getCurrentUser());
103   -
  103 +
104 104 ContextManager.deactivate(ThreadLocalContext.class, RequestScoped.class);
105 105 }
106 106 }
... ...
impl/core/src/test/java/test/Tests.java
... ... @@ -47,7 +47,7 @@ public final class Tests {
47 47 private Tests() {
48 48 }
49 49  
50   - public static JavaArchive createDeployment(Class<?> baseClass) {
  50 + public static JavaArchive createDeployment(final Class<?> baseClass) {
51 51 return createDeployment().addPackages(true, baseClass.getPackage());
52 52 }
53 53  
... ... @@ -62,7 +62,7 @@ public final class Tests {
62 62 "services/javax.enterprise.inject.spi.Extension");
63 63 }
64 64  
65   - public static FileAsset createFileAsset(String pathname) {
  65 + public static FileAsset createFileAsset(final String pathname) {
66 66 return new FileAsset(new File(pathname));
67 67 }
68 68 }
... ...
impl/core/src/test/java/transaction/rollback/DummyStrategy.java
... ... @@ -41,7 +41,7 @@ import br.gov.frameworkdemoiselle.transaction.Transaction;
41 41 public class DummyStrategy implements Transaction {
42 42  
43 43 private static final long serialVersionUID = 1L;
44   -
  44 +
45 45 private boolean markedRollback = false;
46 46  
47 47 private boolean active = false;
... ...
impl/core/src/test/java/transaction/rollback/TransactionManager.java
... ... @@ -97,35 +97,35 @@ public class TransactionManager {
97 97 return transactionPassedInSetRollbackOnlyMethod;
98 98 }
99 99  
100   - public static void setTransactionMarkedRollback(boolean markedRollback) {
  100 + public static void setTransactionMarkedRollback(final boolean markedRollback) {
101 101 transactionMarkedRollback = markedRollback;
102 102 }
103 103  
104   - public static void setTransactionActive(boolean active) {
  104 + public static void setTransactionActive(final boolean active) {
105 105 transactionActive = active;
106 106 }
107 107  
108   - public static void setTransactionPassedInIsActiveMethod(boolean passedInIsActiveMethod) {
  108 + public static void setTransactionPassedInIsActiveMethod(final boolean passedInIsActiveMethod) {
109 109 transactionPassedInIsActiveMethod = passedInIsActiveMethod;
110 110 }
111 111  
112   - public static void setTransactionPassedInIsMarkedRollbackMethod(boolean passedInIsMarkedRollbackMethod) {
  112 + public static void setTransactionPassedInIsMarkedRollbackMethod(final boolean passedInIsMarkedRollbackMethod) {
113 113 transactionPassedInIsMarkedRollbackMethod = passedInIsMarkedRollbackMethod;
114 114 }
115 115  
116   - public static void setTransactionPassedInBeginMethod(boolean passedInBeginMethod) {
  116 + public static void setTransactionPassedInBeginMethod(final boolean passedInBeginMethod) {
117 117 transactionPassedInBeginMethod = passedInBeginMethod;
118 118 }
119 119  
120   - public static void setTransactionPassedInCommitMethod(boolean passedInCommitMethod) {
  120 + public static void setTransactionPassedInCommitMethod(final boolean passedInCommitMethod) {
121 121 transactionPassedInCommitMethod = passedInCommitMethod;
122 122 }
123 123  
124   - public static void setTransactionPassedInRollbackMethod(boolean passedInRollbackMethod) {
  124 + public static void setTransactionPassedInRollbackMethod(final boolean passedInRollbackMethod) {
125 125 transactionPassedInRollbackMethod = passedInRollbackMethod;
126 126 }
127 127  
128   - public static void setTransactionPassedInSetRollbackOnlyMethod(boolean passedInSetRollbackOnlyMethod) {
  128 + public static void setTransactionPassedInSetRollbackOnlyMethod(final boolean passedInSetRollbackOnlyMethod) {
129 129 transactionPassedInSetRollbackOnlyMethod = passedInSetRollbackOnlyMethod;
130 130 }
131 131 }
... ...
impl/core/src/test/java/transaction/rollback/TransactionManagerWithDefaultRollback.java
... ... @@ -41,8 +41,8 @@ import br.gov.frameworkdemoiselle.stereotype.Controller;
41 41 import br.gov.frameworkdemoiselle.transaction.Transactional;
42 42  
43 43 @Controller
44   -public class TransactionManagerWithDefaultRollback extends TransactionManager{
45   -
  44 +public class TransactionManagerWithDefaultRollback extends TransactionManager {
  45 +
46 46 @Transactional
47 47 public void insert() {
48 48 throw new TransactionExceptionWithDefaultRollback();
... ...
impl/core/src/test/java/transaction/rollback/TransactionManagerWithRollback.java
... ... @@ -41,7 +41,7 @@ import br.gov.frameworkdemoiselle.stereotype.Controller;
41 41 import br.gov.frameworkdemoiselle.transaction.Transactional;
42 42  
43 43 @Controller
44   -public class TransactionManagerWithRollback extends TransactionManager{
  44 +public class TransactionManagerWithRollback extends TransactionManager {
45 45  
46 46 @Transactional
47 47 public void insert() {
... ...
impl/core/src/test/java/transaction/rollback/TransactionRollbackTest.java
... ... @@ -58,16 +58,16 @@ import br.gov.frameworkdemoiselle.internal.context.ManagedContext;
58 58  
59 59 @RunWith(Arquillian.class)
60 60 public class TransactionRollbackTest {
61   -
  61 +
62 62 @Inject
63 63 private TransactionManagerWithDefaultRollback managerWithDefaultRollback;
64   -
  64 +
65 65 @Inject
66 66 private TransactionManagerWithRollback managerWithRollback;
67   -
  67 +
68 68 @Inject
69 69 private TransactionManagerWithoutRollback managerWithoutRollback;
70   -
  70 +
71 71 @Deployment
72 72 public static JavaArchive createDeployment() {
73 73 JavaArchive deployment = Tests.createDeployment(TransactionRollbackTest.class);
... ... @@ -78,19 +78,19 @@ public class TransactionRollbackTest {
78 78 public void activeContext() {
79 79 ContextManager.activate(ManagedContext.class, RequestScoped.class);
80 80 }
81   -
  81 +
82 82 @After
83   - public void deactiveContext(){
  83 + public void deactiveContext() {
84 84 ContextManager.deactivate(ManagedContext.class, RequestScoped.class);
85 85 }
86   -
  86 +
87 87 @Test
88   - public void transactionWithDefaultRollback(){
89   - try{
  88 + public void transactionWithDefaultRollback() {
  89 + try {
90 90 managerWithDefaultRollback.clean();
91 91 managerWithDefaultRollback.insert();
92 92 fail();
93   - }catch(TransactionExceptionWithDefaultRollback exception){
  93 + } catch (TransactionExceptionWithDefaultRollback exception) {
94 94 assertTrue(managerWithDefaultRollback.isTransactionPassedInIsActiveMethod());
95 95 assertTrue(managerWithDefaultRollback.isTransactionPassedInBeginMethod());
96 96 assertTrue(managerWithDefaultRollback.isTransactionMarkedRollback());
... ... @@ -101,14 +101,14 @@ public class TransactionRollbackTest {
101 101 assertFalse(managerWithDefaultRollback.isTransactionActive());
102 102 }
103 103 }
104   -
  104 +
105 105 @Test
106   - public void transactionWithRollback(){
107   - try{
  106 + public void transactionWithRollback() {
  107 + try {
108 108 managerWithRollback.clean();
109 109 managerWithRollback.insert();
110 110 fail();
111   - }catch(TransactionExceptionWithRollback exception){
  111 + } catch (TransactionExceptionWithRollback exception) {
112 112 assertTrue(managerWithRollback.isTransactionPassedInIsActiveMethod());
113 113 assertTrue(managerWithRollback.isTransactionPassedInBeginMethod());
114 114 assertTrue(managerWithRollback.isTransactionMarkedRollback());
... ... @@ -119,14 +119,14 @@ public class TransactionRollbackTest {
119 119 assertFalse(managerWithRollback.isTransactionActive());
120 120 }
121 121 }
122   -
123   - @Test
124   - public void transactionWithoutRollback(){
125   - try{
  122 +
  123 + @Test
  124 + public void transactionWithoutRollback() {
  125 + try {
126 126 managerWithoutRollback.clean();
127 127 managerWithoutRollback.insert();
128 128 fail();
129   - }catch(TransactionExceptionWithoutRollback exception){
  129 + } catch (TransactionExceptionWithoutRollback exception) {
130 130 assertTrue(managerWithRollback.isTransactionPassedInIsActiveMethod());
131 131 assertTrue(managerWithRollback.isTransactionPassedInBeginMethod());
132 132 assertFalse(managerWithRollback.isTransactionMarkedRollback());
... ...
impl/core/src/test/java/util/ReflectionsTest.java
... ... @@ -62,7 +62,7 @@ public class ReflectionsTest {
62 62  
63 63 class SomeClass<T, I> {
64 64  
65   - public void setNumber(T t) {
  65 + public void setNumber(final T t) {
66 66  
67 67 }
68 68 }
... ...
impl/core/src/test/java/util/StringsTest.java
... ... @@ -144,7 +144,7 @@ public class StringsTest {
144 144 assertTrue(result.contains("Test [name=myName, lastname=myLastname, nullField=null, this"));
145 145 }
146 146  
147   - private void testEqualsGetString(String in, String expected, Object... params) {
  147 + private void testEqualsGetString(final String in, final String expected, final Object... params) {
148 148 String out = Strings.getString(in, params);
149 149 assertEquals(expected, out);
150 150 }
... ...
impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/producer/DataSourceProducer.java
... ... @@ -21,7 +21,7 @@ import org.slf4j.Logger;
21 21 import br.gov.frameworkdemoiselle.DemoiselleException;
22 22 import br.gov.frameworkdemoiselle.annotation.Name;
23 23 import br.gov.frameworkdemoiselle.internal.configuration.JDBCConfig;
24   -import br.gov.frameworkdemoiselle.transaction.BasicDataSourceProxy;
  24 +import br.gov.frameworkdemoiselle.internal.proxy.BasicDataSourceProxy;
25 25 import br.gov.frameworkdemoiselle.util.Beans;
26 26 import br.gov.frameworkdemoiselle.util.ResourceBundle;
27 27  
... ...
impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/proxy/BasicDataSourceProxy.java 0 → 100644
... ... @@ -0,0 +1,363 @@
  1 +package br.gov.frameworkdemoiselle.internal.proxy;
  2 +
  3 +import java.io.PrintWriter;
  4 +import java.io.Serializable;
  5 +import java.sql.Connection;
  6 +import java.sql.SQLException;
  7 +import java.util.Collection;
  8 +
  9 +import org.apache.commons.dbcp.BasicDataSource;
  10 +
  11 +import br.gov.frameworkdemoiselle.DemoiselleException;
  12 +import br.gov.frameworkdemoiselle.internal.configuration.JDBCConfig;
  13 +import br.gov.frameworkdemoiselle.util.ResourceBundle;
  14 +
  15 +public class BasicDataSourceProxy extends BasicDataSource implements Serializable {
  16 +
  17 + private static final long serialVersionUID = 1L;
  18 +
  19 + private ResourceBundle bundle;
  20 +
  21 + private String dataSourceName;
  22 +
  23 + private JDBCConfig config;
  24 +
  25 + private transient BasicDataSource delegate;
  26 +
  27 + public BasicDataSourceProxy(String dataSourceName, JDBCConfig config, ResourceBundle bundle) {
  28 + this.dataSourceName = dataSourceName;
  29 + this.config = config;
  30 + this.bundle = bundle;
  31 + }
  32 +
  33 + private BasicDataSource getDelegate() {
  34 + if (this.delegate == null) {
  35 + BasicDataSource dataSource = new BasicDataSource();
  36 +
  37 + try {
  38 + String driver = config.getDriverClass().get(dataSourceName);
  39 + String url = config.getUrl().get(dataSourceName);
  40 + String username = config.getUsername().get(dataSourceName);
  41 + String password = config.getPassword().get(dataSourceName);
  42 +
  43 + dataSource.setDriverClassName(driver);
  44 + dataSource.setUrl(url);
  45 + dataSource.setUsername(username);
  46 + dataSource.setPassword(password);
  47 +
  48 + } catch (ClassCastException cause) {
  49 + throw new DemoiselleException(bundle.getString("load-duplicated-configuration-failed"), cause);
  50 + }
  51 +
  52 + delegate = dataSource;
  53 + }
  54 +
  55 + return this.delegate;
  56 + }
  57 +
  58 + public boolean getDefaultAutoCommit() {
  59 + return getDelegate().getDefaultAutoCommit();
  60 + }
  61 +
  62 + public void setDefaultAutoCommit(boolean defaultAutoCommit) {
  63 + getDelegate().setDefaultAutoCommit(defaultAutoCommit);
  64 + }
  65 +
  66 + public boolean getDefaultReadOnly() {
  67 + return getDelegate().getDefaultReadOnly();
  68 + }
  69 +
  70 + public void setDefaultReadOnly(boolean defaultReadOnly) {
  71 + getDelegate().setDefaultReadOnly(defaultReadOnly);
  72 + }
  73 +
  74 + public int getDefaultTransactionIsolation() {
  75 + return getDelegate().getDefaultTransactionIsolation();
  76 + }
  77 +
  78 + public void setDefaultTransactionIsolation(int defaultTransactionIsolation) {
  79 + getDelegate().setDefaultTransactionIsolation(defaultTransactionIsolation);
  80 + }
  81 +
  82 + public String getDefaultCatalog() {
  83 + return getDelegate().getDefaultCatalog();
  84 + }
  85 +
  86 + public void setDefaultCatalog(String defaultCatalog) {
  87 + getDelegate().setDefaultCatalog(defaultCatalog);
  88 + }
  89 +
  90 + public String getDriverClassName() {
  91 + return getDelegate().getDriverClassName();
  92 + }
  93 +
  94 + public void setDriverClassName(String driverClassName) {
  95 + getDelegate().setDriverClassName(driverClassName);
  96 + }
  97 +
  98 + public ClassLoader getDriverClassLoader() {
  99 + return getDelegate().getDriverClassLoader();
  100 + }
  101 +
  102 + public void setDriverClassLoader(ClassLoader driverClassLoader) {
  103 + getDelegate().setDriverClassLoader(driverClassLoader);
  104 + }
  105 +
  106 + public int getMaxActive() {
  107 + return getDelegate().getMaxActive();
  108 + }
  109 +
  110 + public void setMaxActive(int maxActive) {
  111 + getDelegate().setMaxActive(maxActive);
  112 + }
  113 +
  114 + public int getMaxIdle() {
  115 + return getDelegate().getMaxIdle();
  116 + }
  117 +
  118 + public void setMaxIdle(int maxIdle) {
  119 + getDelegate().setMaxIdle(maxIdle);
  120 + }
  121 +
  122 + public int getMinIdle() {
  123 + return getDelegate().getMinIdle();
  124 + }
  125 +
  126 + public void setMinIdle(int minIdle) {
  127 + getDelegate().setMinIdle(minIdle);
  128 + }
  129 +
  130 + public int getInitialSize() {
  131 + return getDelegate().getInitialSize();
  132 + }
  133 +
  134 + public void setInitialSize(int initialSize) {
  135 + getDelegate().setInitialSize(initialSize);
  136 + }
  137 +
  138 + public long getMaxWait() {
  139 + return getDelegate().getMaxWait();
  140 + }
  141 +
  142 + public void setMaxWait(long maxWait) {
  143 + getDelegate().setMaxWait(maxWait);
  144 + }
  145 +
  146 + public boolean isPoolPreparedStatements() {
  147 + return getDelegate().isPoolPreparedStatements();
  148 + }
  149 +
  150 + public void setPoolPreparedStatements(boolean poolingStatements) {
  151 + getDelegate().setPoolPreparedStatements(poolingStatements);
  152 + }
  153 +
  154 + public int getMaxOpenPreparedStatements() {
  155 + return getDelegate().getMaxOpenPreparedStatements();
  156 + }
  157 +
  158 + public void setMaxOpenPreparedStatements(int maxOpenStatements) {
  159 + getDelegate().setMaxOpenPreparedStatements(maxOpenStatements);
  160 + }
  161 +
  162 + public boolean getTestOnBorrow() {
  163 + return getDelegate().getTestOnBorrow();
  164 + }
  165 +
  166 + public void setTestOnBorrow(boolean testOnBorrow) {
  167 + getDelegate().setTestOnBorrow(testOnBorrow);
  168 + }
  169 +
  170 + public boolean getTestOnReturn() {
  171 + return getDelegate().getTestOnReturn();
  172 + }
  173 +
  174 + public void setTestOnReturn(boolean testOnReturn) {
  175 + getDelegate().setTestOnReturn(testOnReturn);
  176 + }
  177 +
  178 + public long getTimeBetweenEvictionRunsMillis() {
  179 + return getDelegate().getTimeBetweenEvictionRunsMillis();
  180 + }
  181 +
  182 + public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) {
  183 + getDelegate().setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
  184 + }
  185 +
  186 + public int getNumTestsPerEvictionRun() {
  187 + return getDelegate().getNumTestsPerEvictionRun();
  188 + }
  189 +
  190 + public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) {
  191 + getDelegate().setNumTestsPerEvictionRun(numTestsPerEvictionRun);
  192 + }
  193 +
  194 + public long getMinEvictableIdleTimeMillis() {
  195 + return getDelegate().getMinEvictableIdleTimeMillis();
  196 + }
  197 +
  198 + public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) {
  199 + getDelegate().setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
  200 + }
  201 +
  202 + public boolean getTestWhileIdle() {
  203 + return getDelegate().getTestWhileIdle();
  204 + }
  205 +
  206 + public void setTestWhileIdle(boolean testWhileIdle) {
  207 + getDelegate().setTestWhileIdle(testWhileIdle);
  208 + }
  209 +
  210 + public int getNumActive() {
  211 + return getDelegate().getNumActive();
  212 + }
  213 +
  214 + public int getNumIdle() {
  215 + return getDelegate().getNumIdle();
  216 + }
  217 +
  218 + public String getPassword() {
  219 + return getDelegate().getPassword();
  220 + }
  221 +
  222 + public void setPassword(String password) {
  223 + getDelegate().setPassword(password);
  224 + }
  225 +
  226 + public String getUrl() {
  227 + return getDelegate().getUrl();
  228 + }
  229 +
  230 + public void setUrl(String url) {
  231 + getDelegate().setUrl(url);
  232 + }
  233 +
  234 + public String getUsername() {
  235 + return getDelegate().getUsername();
  236 + }
  237 +
  238 + public void setUsername(String username) {
  239 + getDelegate().setUsername(username);
  240 + }
  241 +
  242 + public String getValidationQuery() {
  243 + return getDelegate().getValidationQuery();
  244 + }
  245 +
  246 + public void setValidationQuery(String validationQuery) {
  247 + getDelegate().setValidationQuery(validationQuery);
  248 + }
  249 +
  250 + public int getValidationQueryTimeout() {
  251 + return getDelegate().getValidationQueryTimeout();
  252 + }
  253 +
  254 + public void setValidationQueryTimeout(int timeout) {
  255 + getDelegate().setValidationQueryTimeout(timeout);
  256 + }
  257 +
  258 + @SuppressWarnings("rawtypes")
  259 + public Collection getConnectionInitSqls() {
  260 + return getDelegate().getConnectionInitSqls();
  261 + }
  262 +
  263 + @SuppressWarnings("rawtypes")
  264 + public void setConnectionInitSqls(Collection connectionInitSqls) {
  265 + getDelegate().setConnectionInitSqls(connectionInitSqls);
  266 + }
  267 +
  268 + public void setAccessToUnderlyingConnectionAllowed(boolean allow) {
  269 + getDelegate().setAccessToUnderlyingConnectionAllowed(allow);
  270 + }
  271 +
  272 + public Connection getConnection(String user, String pass) throws SQLException {
  273 + return getDelegate().getConnection(user, pass);
  274 + }
  275 +
  276 + public int getLoginTimeout() throws SQLException {
  277 + return getDelegate().getLoginTimeout();
  278 + }
  279 +
  280 + public PrintWriter getLogWriter() throws SQLException {
  281 + return getDelegate().getLogWriter();
  282 + }
  283 +
  284 + public void setLoginTimeout(int loginTimeout) throws SQLException {
  285 + getDelegate().setLoginTimeout(loginTimeout);
  286 + }
  287 +
  288 + public void setLogWriter(PrintWriter logWriter) throws SQLException {
  289 + getDelegate().setLogWriter(logWriter);
  290 + }
  291 +
  292 + public boolean getRemoveAbandoned() {
  293 + return getDelegate().getRemoveAbandoned();
  294 + }
  295 +
  296 + public void setRemoveAbandoned(boolean removeAbandoned) {
  297 + getDelegate().setRemoveAbandoned(removeAbandoned);
  298 + }
  299 +
  300 + public int getRemoveAbandonedTimeout() {
  301 + return getDelegate().getRemoveAbandonedTimeout();
  302 + }
  303 +
  304 + public void setRemoveAbandonedTimeout(int removeAbandonedTimeout) {
  305 + getDelegate().setRemoveAbandonedTimeout(removeAbandonedTimeout);
  306 + }
  307 +
  308 + public boolean getLogAbandoned() {
  309 + return getDelegate().getLogAbandoned();
  310 + }
  311 +
  312 + public void setLogAbandoned(boolean logAbandoned) {
  313 + getDelegate().setLogAbandoned(logAbandoned);
  314 + }
  315 +
  316 + public void addConnectionProperty(String name, String value) {
  317 + getDelegate().addConnectionProperty(name, value);
  318 + }
  319 +
  320 + public void removeConnectionProperty(String name) {
  321 + getDelegate().removeConnectionProperty(name);
  322 + }
  323 +
  324 + public void setConnectionProperties(String connectionProperties) {
  325 + getDelegate().setConnectionProperties(connectionProperties);
  326 + }
  327 +
  328 + public void close() throws SQLException {
  329 + getDelegate().close();
  330 + }
  331 +
  332 + public boolean equals(Object arg0) {
  333 + return getDelegate().equals(arg0);
  334 + }
  335 +
  336 + public Connection getConnection() throws SQLException {
  337 + return getDelegate().getConnection();
  338 + }
  339 +
  340 + public int hashCode() {
  341 + return getDelegate().hashCode();
  342 + }
  343 +
  344 + public boolean isAccessToUnderlyingConnectionAllowed() {
  345 + return getDelegate().isAccessToUnderlyingConnectionAllowed();
  346 + }
  347 +
  348 + public boolean isClosed() {
  349 + return getDelegate().isClosed();
  350 + }
  351 +
  352 + public boolean isWrapperFor(Class<?> iface) throws SQLException {
  353 + return getDelegate().isWrapperFor(iface);
  354 + }
  355 +
  356 + public String toString() {
  357 + return getDelegate().toString();
  358 + }
  359 +
  360 + public <T> T unwrap(Class<T> iface) throws SQLException {
  361 + return getDelegate().unwrap(iface);
  362 + }
  363 +}
... ...
impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/transaction/BasicDataSourceProxy.java
... ... @@ -1,363 +0,0 @@
1   -package br.gov.frameworkdemoiselle.transaction;
2   -
3   -import java.io.PrintWriter;
4   -import java.io.Serializable;
5   -import java.sql.Connection;
6   -import java.sql.SQLException;
7   -import java.util.Collection;
8   -
9   -import org.apache.commons.dbcp.BasicDataSource;
10   -
11   -import br.gov.frameworkdemoiselle.DemoiselleException;
12   -import br.gov.frameworkdemoiselle.internal.configuration.JDBCConfig;
13   -import br.gov.frameworkdemoiselle.util.ResourceBundle;
14   -
15   -public class BasicDataSourceProxy extends BasicDataSource implements Serializable {
16   -
17   - private static final long serialVersionUID = 1L;
18   -
19   - private ResourceBundle bundle;
20   -
21   - private String dataSourceName;
22   -
23   - private JDBCConfig config;
24   -
25   - private transient BasicDataSource delegate;
26   -
27   - public BasicDataSourceProxy(String dataSourceName, JDBCConfig config, ResourceBundle bundle) {
28   - this.dataSourceName = dataSourceName;
29   - this.config = config;
30   - this.bundle = bundle;
31   - }
32   -
33   - private BasicDataSource getDelegate() {
34   - if (this.delegate == null) {
35   - BasicDataSource dataSource = new BasicDataSource();
36   -
37   - try {
38   - String driver = config.getDriverClass().get(dataSourceName);
39   - String url = config.getUrl().get(dataSourceName);
40   - String username = config.getUsername().get(dataSourceName);
41   - String password = config.getPassword().get(dataSourceName);
42   -
43   - dataSource.setDriverClassName(driver);
44   - dataSource.setUrl(url);
45   - dataSource.setUsername(username);
46   - dataSource.setPassword(password);
47   -
48   - } catch (ClassCastException cause) {
49   - throw new DemoiselleException(bundle.getString("load-duplicated-configuration-failed"), cause);
50   - }
51   -
52   - delegate = dataSource;
53   - }
54   -
55   - return this.delegate;
56   - }
57   -
58   - public boolean getDefaultAutoCommit() {
59   - return getDelegate().getDefaultAutoCommit();
60   - }
61   -
62   - public void setDefaultAutoCommit(boolean defaultAutoCommit) {
63   - getDelegate().setDefaultAutoCommit(defaultAutoCommit);
64   - }
65   -
66   - public boolean getDefaultReadOnly() {
67   - return getDelegate().getDefaultReadOnly();
68   - }
69   -
70   - public void setDefaultReadOnly(boolean defaultReadOnly) {
71   - getDelegate().setDefaultReadOnly(defaultReadOnly);
72   - }
73   -
74   - public int getDefaultTransactionIsolation() {
75   - return getDelegate().getDefaultTransactionIsolation();
76   - }
77   -
78   - public void setDefaultTransactionIsolation(int defaultTransactionIsolation) {
79   - getDelegate().setDefaultTransactionIsolation(defaultTransactionIsolation);
80   - }
81   -
82   - public String getDefaultCatalog() {
83   - return getDelegate().getDefaultCatalog();
84   - }
85   -
86   - public void setDefaultCatalog(String defaultCatalog) {
87   - getDelegate().setDefaultCatalog(defaultCatalog);
88   - }
89   -
90   - public String getDriverClassName() {
91   - return getDelegate().getDriverClassName();
92   - }
93   -
94   - public void setDriverClassName(String driverClassName) {
95   - getDelegate().setDriverClassName(driverClassName);
96   - }
97   -
98   - public ClassLoader getDriverClassLoader() {
99   - return getDelegate().getDriverClassLoader();
100   - }
101   -
102   - public void setDriverClassLoader(ClassLoader driverClassLoader) {
103   - getDelegate().setDriverClassLoader(driverClassLoader);
104   - }
105   -
106   - public int getMaxActive() {
107   - return getDelegate().getMaxActive();
108   - }
109   -
110   - public void setMaxActive(int maxActive) {
111   - getDelegate().setMaxActive(maxActive);
112   - }
113   -
114   - public int getMaxIdle() {
115   - return getDelegate().getMaxIdle();
116   - }
117   -
118   - public void setMaxIdle(int maxIdle) {
119   - getDelegate().setMaxIdle(maxIdle);
120   - }
121   -
122   - public int getMinIdle() {
123   - return getDelegate().getMinIdle();
124   - }
125   -
126   - public void setMinIdle(int minIdle) {
127   - getDelegate().setMinIdle(minIdle);
128   - }
129   -
130   - public int getInitialSize() {
131   - return getDelegate().getInitialSize();
132   - }
133   -
134   - public void setInitialSize(int initialSize) {
135   - getDelegate().setInitialSize(initialSize);
136   - }
137   -
138   - public long getMaxWait() {
139   - return getDelegate().getMaxWait();
140   - }
141   -
142   - public void setMaxWait(long maxWait) {
143   - getDelegate().setMaxWait(maxWait);
144   - }
145   -
146   - public boolean isPoolPreparedStatements() {
147   - return getDelegate().isPoolPreparedStatements();
148   - }
149   -
150   - public void setPoolPreparedStatements(boolean poolingStatements) {
151   - getDelegate().setPoolPreparedStatements(poolingStatements);
152   - }
153   -
154   - public int getMaxOpenPreparedStatements() {
155   - return getDelegate().getMaxOpenPreparedStatements();
156   - }
157   -
158   - public void setMaxOpenPreparedStatements(int maxOpenStatements) {
159   - getDelegate().setMaxOpenPreparedStatements(maxOpenStatements);
160   - }
161   -
162   - public boolean getTestOnBorrow() {
163   - return getDelegate().getTestOnBorrow();
164   - }
165   -
166   - public void setTestOnBorrow(boolean testOnBorrow) {
167   - getDelegate().setTestOnBorrow(testOnBorrow);
168   - }
169   -
170   - public boolean getTestOnReturn() {
171   - return getDelegate().getTestOnReturn();
172   - }
173   -
174   - public void setTestOnReturn(boolean testOnReturn) {
175   - getDelegate().setTestOnReturn(testOnReturn);
176   - }
177   -
178   - public long getTimeBetweenEvictionRunsMillis() {
179   - return getDelegate().getTimeBetweenEvictionRunsMillis();
180   - }
181   -
182   - public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) {
183   - getDelegate().setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
184   - }
185   -
186   - public int getNumTestsPerEvictionRun() {
187   - return getDelegate().getNumTestsPerEvictionRun();
188   - }
189   -
190   - public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) {
191   - getDelegate().setNumTestsPerEvictionRun(numTestsPerEvictionRun);
192   - }
193   -
194   - public long getMinEvictableIdleTimeMillis() {
195   - return getDelegate().getMinEvictableIdleTimeMillis();
196   - }
197   -
198   - public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) {
199   - getDelegate().setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
200   - }
201   -
202   - public boolean getTestWhileIdle() {
203   - return getDelegate().getTestWhileIdle();
204   - }
205   -
206   - public void setTestWhileIdle(boolean testWhileIdle) {
207   - getDelegate().setTestWhileIdle(testWhileIdle);
208   - }
209   -
210   - public int getNumActive() {
211   - return getDelegate().getNumActive();
212   - }
213   -
214   - public int getNumIdle() {
215   - return getDelegate().getNumIdle();
216   - }
217   -
218   - public String getPassword() {
219   - return getDelegate().getPassword();
220   - }
221   -
222   - public void setPassword(String password) {
223   - getDelegate().setPassword(password);
224   - }
225   -
226   - public String getUrl() {
227   - return getDelegate().getUrl();
228   - }
229   -
230   - public void setUrl(String url) {
231   - getDelegate().setUrl(url);
232   - }
233   -
234   - public String getUsername() {
235   - return getDelegate().getUsername();
236   - }
237   -
238   - public void setUsername(String username) {
239   - getDelegate().setUsername(username);
240   - }
241   -
242   - public String getValidationQuery() {
243   - return getDelegate().getValidationQuery();
244   - }
245   -
246   - public void setValidationQuery(String validationQuery) {
247   - getDelegate().setValidationQuery(validationQuery);
248   - }
249   -
250   - public int getValidationQueryTimeout() {
251   - return getDelegate().getValidationQueryTimeout();
252   - }
253   -
254   - public void setValidationQueryTimeout(int timeout) {
255   - getDelegate().setValidationQueryTimeout(timeout);
256   - }
257   -
258   - @SuppressWarnings("rawtypes")
259   - public Collection getConnectionInitSqls() {
260   - return getDelegate().getConnectionInitSqls();
261   - }
262   -
263   - @SuppressWarnings("rawtypes")
264   - public void setConnectionInitSqls(Collection connectionInitSqls) {
265   - getDelegate().setConnectionInitSqls(connectionInitSqls);
266   - }
267   -
268   - public void setAccessToUnderlyingConnectionAllowed(boolean allow) {
269   - getDelegate().setAccessToUnderlyingConnectionAllowed(allow);
270   - }
271   -
272   - public Connection getConnection(String user, String pass) throws SQLException {
273   - return getDelegate().getConnection(user, pass);
274   - }
275   -
276   - public int getLoginTimeout() throws SQLException {
277   - return getDelegate().getLoginTimeout();
278   - }
279   -
280   - public PrintWriter getLogWriter() throws SQLException {
281   - return getDelegate().getLogWriter();
282   - }
283   -
284   - public void setLoginTimeout(int loginTimeout) throws SQLException {
285   - getDelegate().setLoginTimeout(loginTimeout);
286   - }
287   -
288   - public void setLogWriter(PrintWriter logWriter) throws SQLException {
289   - getDelegate().setLogWriter(logWriter);
290   - }
291   -
292   - public boolean getRemoveAbandoned() {
293   - return getDelegate().getRemoveAbandoned();
294   - }
295   -
296   - public void setRemoveAbandoned(boolean removeAbandoned) {
297   - getDelegate().setRemoveAbandoned(removeAbandoned);
298   - }
299   -
300   - public int getRemoveAbandonedTimeout() {
301   - return getDelegate().getRemoveAbandonedTimeout();
302   - }
303   -
304   - public void setRemoveAbandonedTimeout(int removeAbandonedTimeout) {
305   - getDelegate().setRemoveAbandonedTimeout(removeAbandonedTimeout);
306   - }
307   -
308   - public boolean getLogAbandoned() {
309   - return getDelegate().getLogAbandoned();
310   - }
311   -
312   - public void setLogAbandoned(boolean logAbandoned) {
313   - getDelegate().setLogAbandoned(logAbandoned);
314   - }
315   -
316   - public void addConnectionProperty(String name, String value) {
317   - getDelegate().addConnectionProperty(name, value);
318   - }
319   -
320   - public void removeConnectionProperty(String name) {
321   - getDelegate().removeConnectionProperty(name);
322   - }
323   -
324   - public void setConnectionProperties(String connectionProperties) {
325   - getDelegate().setConnectionProperties(connectionProperties);
326   - }
327   -
328   - public void close() throws SQLException {
329   - getDelegate().close();
330   - }
331   -
332   - public boolean equals(Object arg0) {
333   - return getDelegate().equals(arg0);
334   - }
335   -
336   - public Connection getConnection() throws SQLException {
337   - return getDelegate().getConnection();
338   - }
339   -
340   - public int hashCode() {
341   - return getDelegate().hashCode();
342   - }
343   -
344   - public boolean isAccessToUnderlyingConnectionAllowed() {
345   - return getDelegate().isAccessToUnderlyingConnectionAllowed();
346   - }
347   -
348   - public boolean isClosed() {
349   - return getDelegate().isClosed();
350   - }
351   -
352   - public boolean isWrapperFor(Class<?> iface) throws SQLException {
353   - return getDelegate().isWrapperFor(iface);
354   - }
355   -
356   - public String toString() {
357   - return getDelegate().toString();
358   - }
359   -
360   - public <T> T unwrap(Class<T> iface) throws SQLException {
361   - return getDelegate().unwrap(iface);
362   - }
363   -}
impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/transaction/JDBCTransaction.java
... ... @@ -36,7 +36,7 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.transaction;
38 38  
39   -import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.EXTENSIONS_L1_PRIORITY;
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L2_PRIORITY;
40 40  
41 41 import java.io.Serializable;
42 42 import java.sql.Connection;
... ... @@ -55,7 +55,7 @@ import br.gov.frameworkdemoiselle.util.Beans;
55 55 * @author SERPRO
56 56 * @see Transaction
57 57 */
58   -@Priority(EXTENSIONS_L1_PRIORITY)
  58 +@Priority(L2_PRIORITY)
59 59 public class JDBCTransaction implements Transaction {
60 60  
61 61 private static final long serialVersionUID = 1L;
... ...
impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/transaction/JPATransaction.java
... ... @@ -36,7 +36,7 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.transaction;
38 38  
39   -import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.EXTENSIONS_L1_PRIORITY;
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L2_PRIORITY;
40 40  
41 41 import java.util.Collection;
42 42  
... ... @@ -53,7 +53,7 @@ import br.gov.frameworkdemoiselle.util.Beans;
53 53 * @author SERPRO
54 54 * @see Transaction
55 55 */
56   -@Priority(EXTENSIONS_L1_PRIORITY)
  56 +@Priority(L2_PRIORITY)
57 57 public class JPATransaction implements Transaction {
58 58  
59 59 private static final long serialVersionUID = 1L;
... ...
impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/FacesMessageAppender.java 0 → 100644
... ... @@ -0,0 +1,54 @@
  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 +package br.gov.frameworkdemoiselle.internal.implementation;
  38 +
  39 +import static br.gov.frameworkdemoiselle.annotation.Priority.L3_PRIORITY;
  40 +import br.gov.frameworkdemoiselle.annotation.Priority;
  41 +import br.gov.frameworkdemoiselle.message.Message;
  42 +import br.gov.frameworkdemoiselle.message.MessageAppender;
  43 +import br.gov.frameworkdemoiselle.util.Faces;
  44 +
  45 +@Priority(L3_PRIORITY)
  46 +public class FacesMessageAppender implements MessageAppender {
  47 +
  48 + private static final long serialVersionUID = 1L;
  49 +
  50 + @Override
  51 + public void append(Message message) {
  52 + Faces.addMessage(message);
  53 + }
  54 +}
... ...