Commit bcae1247972decad830ddab32fa4423fdc337ad7

Authored by Cleverson Sacramento
1 parent 1db622de
Exists in master

Definindo os pontos de log

impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CoreBootstrap.java
@@ -77,14 +77,14 @@ public class CoreBootstrap implements Extension { @@ -77,14 +77,14 @@ public class CoreBootstrap implements Extension {
77 getLogger().info(getBundle().getString("engine-on")); 77 getLogger().info(getBundle().getString("engine-on"));
78 78
79 Beans.setBeanManager(beanManager); 79 Beans.setBeanManager(beanManager);
80 - getLogger().info(getBundle().getString("setting-up-bean-manager", Beans.class.getCanonicalName())); 80 + getLogger().trace(getBundle().getString("setting-up-bean-manager", Beans.class.getCanonicalName()));
81 } 81 }
82 82
83 public void takeOff(@Observes final AfterDeploymentValidation event) { 83 public void takeOff(@Observes final AfterDeploymentValidation event) {
84 - getLogger().info(getBundle().getString("taking-off")); 84 + getLogger().trace(getBundle().getString("taking-off"));
85 } 85 }
86 86
87 public void engineOff(@Observes final BeforeShutdown event) { 87 public void engineOff(@Observes final BeforeShutdown event) {
88 - getLogger().info(getBundle().getString("engine-off")); 88 + getLogger().trace(getBundle().getString("engine-off"));
89 } 89 }
90 } 90 }
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/AbstractCustomContext.java
@@ -121,17 +121,17 @@ public abstract class AbstractCustomContext implements CustomContext { @@ -121,17 +121,17 @@ public abstract class AbstractCustomContext implements CustomContext {
121 try{ 121 try{
122 Context ctx = beanManager.getContext(this.getScope()); 122 Context ctx = beanManager.getContext(this.getScope());
123 if (ctx!=null){ 123 if (ctx!=null){
124 - getLogger().debug( getBundle().getString("custom-context-already-activated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() , ctx.getClass().getCanonicalName() ) ); 124 + getLogger().trace( getBundle().getString("custom-context-already-activated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() , ctx.getClass().getCanonicalName() ) );
125 } 125 }
126 } 126 }
127 catch(ContextNotActiveException ce){ 127 catch(ContextNotActiveException ce){
128 success = this.active = true; 128 success = this.active = true;
129 - getLogger().debug( getBundle().getString("custom-context-was-activated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() ) ); 129 + getLogger().trace( getBundle().getString("custom-context-was-activated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() ) );
130 } 130 }
131 } 131 }
132 else{ 132 else{
133 success = this.active = true; 133 success = this.active = true;
134 - getLogger().debug( getBundle().getString("custom-context-was-activated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() ) ); 134 + getLogger().trace( getBundle().getString("custom-context-was-activated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() ) );
135 } 135 }
136 } 136 }
137 137
@@ -152,7 +152,7 @@ public abstract class AbstractCustomContext implements CustomContext { @@ -152,7 +152,7 @@ public abstract class AbstractCustomContext implements CustomContext {
152 152
153 Logger logger = getLogger(); 153 Logger logger = getLogger();
154 ResourceBundle bundle = getBundle(); 154 ResourceBundle bundle = getBundle();
155 - logger.debug( bundle.getString("custom-context-was-deactivated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() ) ); 155 + logger.trace( bundle.getString("custom-context-was-deactivated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() ) );
156 } 156 }
157 } 157 }
158 158
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/CustomContextProducer.java
@@ -101,7 +101,7 @@ public class CustomContextProducer { @@ -101,7 +101,7 @@ public class CustomContextProducer {
101 101
102 if (!getContexts().contains(context)){ 102 if (!getContexts().contains(context)){
103 getContexts().add(context); 103 getContexts().add(context);
104 - logger.debug( bundle.getString("bootstrap-context-added", context.getClass().getCanonicalName() , context.getScope().getSimpleName() ) ); 104 + logger.trace( bundle.getString("bootstrap-context-added", context.getClass().getCanonicalName() , context.getScope().getSimpleName() ) );
105 } 105 }
106 else{ 106 else{
107 logger.warn( bundle.getString("bootstrap-context-already-managed", context.getClass().getCanonicalName() , context.getScope().getSimpleName() ) ); 107 logger.warn( bundle.getString("bootstrap-context-already-managed", context.getClass().getCanonicalName() , context.getScope().getSimpleName() ) );
@@ -204,7 +204,7 @@ public class CustomContextProducer { @@ -204,7 +204,7 @@ public class CustomContextProducer {
204 } 204 }
205 205
206 if (producedContext!=null){ 206 if (producedContext!=null){
207 - getLogger().debug( getBundle().getString("custom-context-selected" , producedContext.getClass().getCanonicalName()) ); 207 + getLogger().trace( getBundle().getString("custom-context-selected" , producedContext.getClass().getCanonicalName()) );
208 } 208 }
209 209
210 return producedContext; 210 return producedContext;
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationImpl.java
@@ -46,19 +46,21 @@ public class ConfigurationImpl implements Serializable { @@ -46,19 +46,21 @@ public class ConfigurationImpl implements Serializable {
46 private static final long serialVersionUID = 1L; 46 private static final long serialVersionUID = 1L;
47 47
48 @Ignore 48 @Ignore
49 - private boolean loaded = false; 49 + private Boolean loaded = false;
50 50
51 @SuppressWarnings("unused") 51 @SuppressWarnings("unused")
52 - private synchronized void load(Object instance) throws Throwable {  
53 - if (!loaded) {  
54 - loaded = true; 52 + private void load(Object instance) throws Throwable {
  53 + synchronized (loaded) {
  54 + if (!loaded) {
  55 + loaded = true;
55 56
56 - try {  
57 - Beans.getReference(ConfigurationLoader.class).load(instance); 57 + try {
  58 + Beans.getReference(ConfigurationLoader.class).load(instance);
58 59
59 - } catch (Throwable cause) {  
60 - loaded = false;  
61 - throw cause; 60 + } catch (Throwable cause) {
  61 + loaded = false;
  62 + throw cause;
  63 + }
62 } 64 }
63 } 65 }
64 } 66 }
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java
@@ -100,11 +100,11 @@ public class ConfigurationLoader implements Serializable { @@ -100,11 +100,11 @@ public class ConfigurationLoader implements Serializable {
100 private Collection<Field> fields; 100 private Collection<Field> fields;
101 101
102 public void load(Object object) throws ConfigurationException { 102 public void load(Object object) throws ConfigurationException {
103 - load(object,true); 103 + load(object, true);
104 } 104 }
105 -  
106 - public void load(Object object,boolean logLoadingProcess) throws ConfigurationException {  
107 - if (logLoadingProcess){ 105 +
  106 + public void load(Object object, boolean logLoadingProcess) throws ConfigurationException {
  107 + if (logLoadingProcess) {
108 getLogger().debug(getBundle().getString("loading-configuration-class", object.getClass().getName())); 108 getLogger().debug(getBundle().getString("loading-configuration-class", object.getClass().getName()));
109 } 109 }
110 110
@@ -223,7 +223,7 @@ public class ConfigurationLoader implements Serializable { @@ -223,7 +223,7 @@ public class ConfigurationLoader implements Serializable {
223 Object finalValue = (loadedValue == null ? defaultValue : loadedValue); 223 Object finalValue = (loadedValue == null ? defaultValue : loadedValue);
224 224
225 if (loadedValue == null) { 225 if (loadedValue == null) {
226 - getLogger().debug(getBundle().getString("configuration-key-not-found", this.prefix + getKey(field))); 226 + getLogger().trace(getBundle().getString("configuration-key-not-found", this.prefix + getKey(field)));
227 } 227 }
228 228
229 Reflections.setFieldValue(field, this.object, finalValue); 229 Reflections.setFieldValue(field, this.object, finalValue);
@@ -248,7 +248,8 @@ public class ConfigurationLoader implements Serializable { @@ -248,7 +248,8 @@ public class ConfigurationLoader implements Serializable {
248 } 248 }
249 249
250 catch (Exception cause) { 250 catch (Exception cause) {
251 - throw new ConfigurationException(getBundle().getString("configuration-generic-extraction-error", field.getType().toString(), getValueExtractor(field).getClass().getCanonicalName()), cause); 251 + throw new ConfigurationException(getBundle().getString("configuration-generic-extraction-error",
  252 + field.getType().toString(), getValueExtractor(field).getClass().getCanonicalName()), cause);
252 } 253 }
253 254
254 return value; 255 return value;
impl/core/src/main/resources/demoiselle-core-bundle.properties
@@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
33 # ou escreva para a Fundação do Software Livre (FSF) Inc., 33 # ou escreva para a Fundação do Software Livre (FSF) Inc.,
34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. 34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
35 35
36 -engine-on=Ligando os motores do Demoiselle ${project.version} 36 +engine-on=Iniciando o Demoiselle Framework ${project.version}
37 resource-not-found=Arquivo {0} n\u00E3o foi encontrado 37 resource-not-found=Arquivo {0} n\u00E3o foi encontrado
38 key-not-found=A chave {0} n\u00E3o foi encontrada 38 key-not-found=A chave {0} n\u00E3o foi encontrada
39 ambiguous-strategy-resolution=Foi detectada ambiguidade da interface {0} com as seguintes implementa\u00E7\u00F5es\: {1}. Para resolver o conflito, defina explicitamente a implementa\u00E7\u00E3o no demoiselle.properties. 39 ambiguous-strategy-resolution=Foi detectada ambiguidade da interface {0} com as seguintes implementa\u00E7\u00F5es\: {1}. Para resolver o conflito, defina explicitamente a implementa\u00E7\u00E3o no demoiselle.properties.
@@ -59,17 +59,17 @@ bootstrap-context-already-managed=O contexto {0} para o escopo {1} j\u00E1 foi a @@ -59,17 +59,17 @@ bootstrap-context-already-managed=O contexto {0} para o escopo {1} j\u00E1 foi a
59 bootstrap-context-added=Adicionando o contexto {0} para o escopo {1} 59 bootstrap-context-added=Adicionando o contexto {0} para o escopo {1}
60 60
61 loading-configuration-class=Carregando a classe de configura\u00E7\u00E3o {0} 61 loading-configuration-class=Carregando a classe de configura\u00E7\u00E3o {0}
62 -configuration-field-loaded=Configura\u00E7\u00E3o {0} atribu\u00EDda a {1} com o valor {2} 62 +configuration-field-loaded={0}: {2}
63 configuration-attribute-is-mandatory=A configura\u00E7\u00E3o {0} \u00E9 obrigat\u00F3ria, mas n\u00E3o foi encontrada em {1} 63 configuration-attribute-is-mandatory=A configura\u00E7\u00E3o {0} \u00E9 obrigat\u00F3ria, mas n\u00E3o foi encontrada em {1}
64 -configuration-name-attribute-cant-be-empty=A nota\u00E7\u00E3o Name n\u00E3o pode estar em branco 64 +configuration-name-attribute-cant-be-empty=A nota\u00E7\u00E3o @Name n\u00E3o pode estar em branco
65 configuration-generic-extraction-error=Ocorreu um erro durante a extra\u00E7\u00E3o do tipo {0} com o extrator {1} 65 configuration-generic-extraction-error=Ocorreu um erro durante a extra\u00E7\u00E3o do tipo {0} com o extrator {1}
66 configuration-dot-after-prefix=N\u00E3o \u00E9 necess\u00E1rio adicionar o ponto ap\u00F3s o prefixo para uma classe de configura\u00E7\u00E3o. \u00C9 recomendado que sejam retirados, pois poder\u00E3o causar erros em vers\u00F5es futuras do Framework. 66 configuration-dot-after-prefix=N\u00E3o \u00E9 necess\u00E1rio adicionar o ponto ap\u00F3s o prefixo para uma classe de configura\u00E7\u00E3o. \u00C9 recomendado que sejam retirados, pois poder\u00E3o causar erros em vers\u00F5es futuras do Framework.
67 -configuration-key-not-found=Chave de configura\u00E7\u00E3o {0} n\u00E3o encontrada 67 +configuration-key-not-found={0}\: [n\u00E3o encontrada]
68 configuration-extractor-not-found=N\u00E3o foi poss\u00EDvel encontrar a classe extratora para o atributo {0}. Implemente a interface {1} para criar sua classe extratora. 68 configuration-extractor-not-found=N\u00E3o foi poss\u00EDvel encontrar a classe extratora para o atributo {0}. Implemente a interface {1} para criar sua classe extratora.
69 configuration-not-conversion=N\u00E3o \u00E9 poss\u00EDvel converter o valor {0} para o tipo {1} 69 configuration-not-conversion=N\u00E3o \u00E9 poss\u00EDvel converter o valor {0} para o tipo {1}
70 70
71 transaction-not-defined=Nenhuma transa\u00E7\u00E3o foi definida. Para utilizar @{0} \u00E9 preciso definir a propriedade frameworkdemoiselle.transaction.class com a estrat\u00E9gia de transa\u00E7\u00E3o desejada no arquivo demoiselle.properties 71 transaction-not-defined=Nenhuma transa\u00E7\u00E3o foi definida. Para utilizar @{0} \u00E9 preciso definir a propriedade frameworkdemoiselle.transaction.class com a estrat\u00E9gia de transa\u00E7\u00E3o desejada no arquivo demoiselle.properties
72 -executing-all=Executando todos os \: {0} 72 +executing-all=Executando m\u00E9todos anotados com @{0}
73 custom-context-selected=Produzindo inst\u00E2ncia do contexto {0} 73 custom-context-selected=Produzindo inst\u00E2ncia do contexto {0}
74 custom-context-was-activated=O contexto {0} foi ativado para o escopo {1} 74 custom-context-was-activated=O contexto {0} foi ativado para o escopo {1}
75 custom-context-was-deactivated=O contexto {0} foi desativado para o escopo {1} 75 custom-context-was-deactivated=O contexto {0} foi desativado para o escopo {1}
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/AuthenticationExceptionMapper.java
@@ -6,13 +6,28 @@ import javax.ws.rs.core.Response; @@ -6,13 +6,28 @@ import javax.ws.rs.core.Response;
6 import javax.ws.rs.ext.ExceptionMapper; 6 import javax.ws.rs.ext.ExceptionMapper;
7 import javax.ws.rs.ext.Provider; 7 import javax.ws.rs.ext.Provider;
8 8
  9 +import org.slf4j.Logger;
  10 +
9 import br.gov.frameworkdemoiselle.security.AuthenticationException; 11 import br.gov.frameworkdemoiselle.security.AuthenticationException;
  12 +import br.gov.frameworkdemoiselle.util.Beans;
  13 +import br.gov.frameworkdemoiselle.util.NameQualifier;
10 14
11 @Provider 15 @Provider
12 public class AuthenticationExceptionMapper implements ExceptionMapper<AuthenticationException> { 16 public class AuthenticationExceptionMapper implements ExceptionMapper<AuthenticationException> {
13 17
  18 + private transient Logger logger;
  19 +
14 @Override 20 @Override
15 public Response toResponse(AuthenticationException exception) { 21 public Response toResponse(AuthenticationException exception) {
  22 + getLogger().info(exception.getMessage());
16 return Response.status(SC_UNAUTHORIZED).entity(exception.getMessage()).type("text/plain").build(); 23 return Response.status(SC_UNAUTHORIZED).entity(exception.getMessage()).type("text/plain").build();
17 } 24 }
  25 +
  26 + private Logger getLogger() {
  27 + if (logger == null) {
  28 + logger = Beans.getReference(Logger.class, new NameQualifier(AuthenticationExceptionMapper.class.getName()));
  29 + }
  30 +
  31 + return logger;
  32 + }
18 } 33 }
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/AuthorizationExceptionMapper.java
@@ -6,13 +6,28 @@ import javax.ws.rs.core.Response; @@ -6,13 +6,28 @@ import javax.ws.rs.core.Response;
6 import javax.ws.rs.ext.ExceptionMapper; 6 import javax.ws.rs.ext.ExceptionMapper;
7 import javax.ws.rs.ext.Provider; 7 import javax.ws.rs.ext.Provider;
8 8
  9 +import org.slf4j.Logger;
  10 +
9 import br.gov.frameworkdemoiselle.security.AuthorizationException; 11 import br.gov.frameworkdemoiselle.security.AuthorizationException;
  12 +import br.gov.frameworkdemoiselle.util.Beans;
  13 +import br.gov.frameworkdemoiselle.util.NameQualifier;
10 14
11 @Provider 15 @Provider
12 public class AuthorizationExceptionMapper implements ExceptionMapper<AuthorizationException> { 16 public class AuthorizationExceptionMapper implements ExceptionMapper<AuthorizationException> {
13 17
  18 + private transient Logger logger;
  19 +
14 @Override 20 @Override
15 public Response toResponse(AuthorizationException exception) { 21 public Response toResponse(AuthorizationException exception) {
  22 + getLogger().info(exception.getMessage());
16 return Response.status(SC_FORBIDDEN).build(); 23 return Response.status(SC_FORBIDDEN).build();
17 } 24 }
  25 +
  26 + private Logger getLogger() {
  27 + if (logger == null) {
  28 + logger = Beans.getReference(Logger.class, new NameQualifier(AuthorizationExceptionMapper.class.getName()));
  29 + }
  30 +
  31 + return logger;
  32 + }
18 } 33 }
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConstraintViolationExceptionMapper.java
@@ -8,21 +8,47 @@ import javax.ws.rs.core.Response; @@ -8,21 +8,47 @@ import javax.ws.rs.core.Response;
8 import javax.ws.rs.ext.ExceptionMapper; 8 import javax.ws.rs.ext.ExceptionMapper;
9 import javax.ws.rs.ext.Provider; 9 import javax.ws.rs.ext.Provider;
10 10
  11 +import org.slf4j.Logger;
  12 +
11 import br.gov.frameworkdemoiselle.UnprocessableEntityException; 13 import br.gov.frameworkdemoiselle.UnprocessableEntityException;
  14 +import br.gov.frameworkdemoiselle.util.Beans;
  15 +import br.gov.frameworkdemoiselle.util.NameQualifier;
  16 +import br.gov.frameworkdemoiselle.util.ResourceBundle;
12 17
13 @Provider 18 @Provider
14 public class ConstraintViolationExceptionMapper implements ExceptionMapper<ConstraintViolationException> { 19 public class ConstraintViolationExceptionMapper implements ExceptionMapper<ConstraintViolationException> {
15 20
  21 + private transient ResourceBundle bundle;
  22 +
  23 + private transient Logger logger;
  24 +
16 @Override 25 @Override
17 public Response toResponse(ConstraintViolationException exception) { 26 public Response toResponse(ConstraintViolationException exception) {
18 UnprocessableEntityException failed = new UnprocessableEntityException(); 27 UnprocessableEntityException failed = new UnprocessableEntityException();
  28 + int status = new UnprocessableEntityException().getStatusCode();
19 29
20 for (Iterator<ConstraintViolation<?>> iter = exception.getConstraintViolations().iterator(); iter.hasNext();) { 30 for (Iterator<ConstraintViolation<?>> iter = exception.getConstraintViolations().iterator(); iter.hasNext();) {
21 ConstraintViolation<?> violation = iter.next(); 31 ConstraintViolation<?> violation = iter.next();
22 failed.addViolation(violation.getPropertyPath().toString(), violation.getMessage()); 32 failed.addViolation(violation.getPropertyPath().toString(), violation.getMessage());
23 } 33 }
24 34
25 - int status = new UnprocessableEntityException().getStatusCode(); 35 + getLogger().debug(getBundle().getString("mapping-violations", status, failed.getViolations().toString()));
26 return Response.status(status).entity(failed.getViolations()).build(); 36 return Response.status(status).entity(failed.getViolations()).build();
27 } 37 }
  38 +
  39 + private ResourceBundle getBundle() {
  40 + if (bundle == null) {
  41 + bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-rest-bundle"));
  42 + }
  43 +
  44 + return bundle;
  45 + }
  46 +
  47 + private Logger getLogger() {
  48 + if (logger == null) {
  49 + logger = Beans.getReference(Logger.class, new NameQualifier(HttpViolationExceptionMapper.class.getName()));
  50 + }
  51 +
  52 + return logger;
  53 + }
28 } 54 }
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/DefaultExceptionMapper.java
@@ -16,14 +16,31 @@ import br.gov.frameworkdemoiselle.util.NameQualifier; @@ -16,14 +16,31 @@ import br.gov.frameworkdemoiselle.util.NameQualifier;
16 @Provider 16 @Provider
17 public class DefaultExceptionMapper implements ExceptionMapper<Throwable> { 17 public class DefaultExceptionMapper implements ExceptionMapper<Throwable> {
18 18
  19 + private transient ResourceBundle bundle;
  20 +
  21 + private transient Logger logger;
  22 +
19 @Override 23 @Override
20 public Response toResponse(Throwable exception) { 24 public Response toResponse(Throwable exception) {
21 - ResourceBundle bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-rest-bundle"));  
22 - Logger logger = Beans.getReference(Logger.class);  
23 -  
24 - logger.error(exception.getMessage(), exception); 25 + String message = getBundle().getString("internal.server.error");
  26 + getLogger().error(message, exception);
25 27
26 - String message = bundle.getString("internal.server.error");  
27 return Response.status(INTERNAL_SERVER_ERROR).entity(message).build(); 28 return Response.status(INTERNAL_SERVER_ERROR).entity(message).build();
28 } 29 }
  30 +
  31 + private ResourceBundle getBundle() {
  32 + if (bundle == null) {
  33 + bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-rest-bundle"));
  34 + }
  35 +
  36 + return bundle;
  37 + }
  38 +
  39 + private Logger getLogger() {
  40 + if (logger == null) {
  41 + logger = Beans.getReference(Logger.class, new NameQualifier(DefaultExceptionMapper.class.getName()));
  42 + }
  43 +
  44 + return logger;
  45 + }
29 } 46 }
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/HttpViolationExceptionMapper.java
@@ -6,17 +6,48 @@ import javax.ws.rs.core.Response; @@ -6,17 +6,48 @@ import javax.ws.rs.core.Response;
6 import javax.ws.rs.ext.ExceptionMapper; 6 import javax.ws.rs.ext.ExceptionMapper;
7 import javax.ws.rs.ext.Provider; 7 import javax.ws.rs.ext.Provider;
8 8
  9 +import org.slf4j.Logger;
  10 +
9 import br.gov.frameworkdemoiselle.HttpViolationException; 11 import br.gov.frameworkdemoiselle.HttpViolationException;
10 import br.gov.frameworkdemoiselle.HttpViolationException.Violation; 12 import br.gov.frameworkdemoiselle.HttpViolationException.Violation;
  13 +import br.gov.frameworkdemoiselle.util.Beans;
  14 +import br.gov.frameworkdemoiselle.util.NameQualifier;
  15 +import br.gov.frameworkdemoiselle.util.ResourceBundle;
11 16
12 @Provider 17 @Provider
13 public class HttpViolationExceptionMapper implements ExceptionMapper<HttpViolationException> { 18 public class HttpViolationExceptionMapper implements ExceptionMapper<HttpViolationException> {
14 19
  20 + private transient ResourceBundle bundle;
  21 +
  22 + private transient Logger logger;
  23 +
15 @Override 24 @Override
16 public Response toResponse(HttpViolationException exception) { 25 public Response toResponse(HttpViolationException exception) {
17 Set<Violation> violations = exception.getViolations(); 26 Set<Violation> violations = exception.getViolations();
18 - violations = violations.isEmpty() ? null : violations; 27 + int status = exception.getStatusCode();
  28 +
  29 + if (violations.isEmpty()) {
  30 + violations = null;
  31 + } else {
  32 + getLogger().debug(getBundle().getString("mapping-violations", status, violations.toString()));
  33 + }
  34 +
  35 + return Response.status(status).entity(violations).build();
  36 + }
  37 +
  38 + private ResourceBundle getBundle() {
  39 + if (bundle == null) {
  40 + bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-rest-bundle"));
  41 + }
  42 +
  43 + return bundle;
  44 + }
  45 +
  46 + private Logger getLogger() {
  47 + if (logger == null) {
  48 + logger = Beans.getReference(Logger.class, new NameQualifier(HttpViolationExceptionMapper.class.getName()));
  49 + }
19 50
20 - return Response.status(exception.getStatusCode()).entity(violations).build(); 51 + return logger;
21 } 52 }
22 } 53 }
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/SessionNotPermittedListener.java
@@ -9,8 +9,8 @@ public class SessionNotPermittedListener implements HttpSessionListener { @@ -9,8 +9,8 @@ public class SessionNotPermittedListener implements HttpSessionListener {
9 9
10 @Override 10 @Override
11 public void sessionCreated(HttpSessionEvent event) { 11 public void sessionCreated(HttpSessionEvent event) {
12 -// event.getSession().invalidate();  
13 -// throw new IllegalStateException("Session use is not permitted."); 12 + // event.getSession().invalidate();
  13 + // throw new IllegalStateException("Session use is not permitted.");
14 } 14 }
15 15
16 @Override 16 @Override
impl/extension/rest/src/main/resources/demoiselle-rest-bundle.properties
@@ -34,3 +34,4 @@ @@ -34,3 +34,4 @@
34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. 34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
35 35
36 internal.server.error=Erro interno do servidor 36 internal.server.error=Erro interno do servidor
  37 +mapping-violations=Mapeando viola\u00E7\u00F5es com o status HTTP {0}\: {1}