Commit bcae1247972decad830ddab32fa4423fdc337ad7
1 parent
1db622de
Exists in
master
Definindo os pontos de log
Showing
13 changed files
with
147 additions
and
39 deletions
Show diff stats
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} |