diff --git a/impl/core/pom.xml b/impl/core/pom.xml index 83de563..aa17e00 100755 --- a/impl/core/pom.xml +++ b/impl/core/pom.xml @@ -34,7 +34,8 @@ ou escreva para a Fundação do Software Livre (FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. --> - + 4.0.0 @@ -117,10 +118,6 @@ javax.validation - org.slf4j - slf4j-api - - org.javassist javassist @@ -129,6 +126,12 @@ commons-configuration + + + org.slf4j + slf4j-api + + junit @@ -143,7 +146,6 @@ org.jboss.arquillian.container arquillian-weld-se-embedded-1.1 - test @@ -156,11 +158,6 @@ hibernate-validator test - - org.slf4j - slf4j-log4j12 - test - diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/exception/ExceptionHandlerInterceptor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/exception/ExceptionHandlerInterceptor.java index df47768..aaaa776 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/exception/ExceptionHandlerInterceptor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/exception/ExceptionHandlerInterceptor.java @@ -44,13 +44,12 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.logging.Logger; import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; -import org.slf4j.Logger; - import br.gov.frameworkdemoiselle.DemoiselleException; import br.gov.frameworkdemoiselle.stereotype.Controller; import br.gov.frameworkdemoiselle.util.Beans; @@ -93,6 +92,9 @@ import br.gov.frameworkdemoiselle.util.ResourceBundle; * } * } * + * + * + * * * * @@ -255,7 +257,7 @@ public class ExceptionHandlerInterceptor implements Serializable { private Logger getLogger() { if (logger == null) { - logger = Beans.getReference(Logger.class, new NameQualifier(ExceptionHandlerInterceptor.class.getName())); + logger = Beans.getReference(Logger.class, new NameQualifier("br.gov.frameworkdemoiselle.exception")); } return logger; diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractLifecycleBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractLifecycleBootstrap.java index 139f83c..6c1b57d 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractLifecycleBootstrap.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractLifecycleBootstrap.java @@ -42,6 +42,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.logging.Logger; import javax.enterprise.event.Observes; import javax.enterprise.inject.spi.AnnotatedMethod; @@ -49,8 +50,6 @@ import javax.enterprise.inject.spi.AnnotatedType; import javax.enterprise.inject.spi.Extension; import javax.enterprise.inject.spi.ProcessAnnotatedType; -import org.slf4j.Logger; - import br.gov.frameworkdemoiselle.DemoiselleException; import br.gov.frameworkdemoiselle.context.ConversationContext; import br.gov.frameworkdemoiselle.context.CustomContext; @@ -73,11 +72,11 @@ public abstract class AbstractLifecycleBootstrap implement .synchronizedList(new ArrayList()); private transient static ResourceBundle bundle; - + private boolean registered = false; - + private HashMap startedContextHere = new HashMap(); - + private transient CustomContext backupContext = null; protected abstract Logger getLogger(); @@ -115,13 +114,13 @@ public abstract class AbstractLifecycleBootstrap implement @SuppressWarnings({ "unchecked", "rawtypes" }) protected synchronized void proccessEvent() { - getLogger().debug(getBundle().getString("executing-all", getAnnotationClass().getSimpleName())); + getLogger().fine(getBundle().getString("executing-all", getAnnotationClass().getSimpleName())); Collections.sort(processors); Exception failure = null; - + startContexts(); - + for (Iterator iter = processors.iterator(); iter.hasNext();) { AnnotatedMethodProcessor processor = iter.next(); @@ -138,49 +137,48 @@ public abstract class AbstractLifecycleBootstrap implement failure = cause; } } - + stopContexts(); if (failure != null) { throw new DemoiselleException(failure); } } - - private void startContexts(){ - if (!registered){ + + private void startContexts() { + if (!registered) { RequestContext requestContext = Beans.getReference(RequestContext.class); SessionContext sessionContext = Beans.getReference(SessionContext.class); ViewContext viewContext = Beans.getReference(ViewContext.class); ConversationContext conversationContext = Beans.getReference(ConversationContext.class); - - if (requestContext!=null){ + + if (requestContext != null) { startedContextHere.put("request", requestContext.activate()); } - - if (sessionContext!=null){ + + if (sessionContext != null) { startedContextHere.put("session", sessionContext.activate()); } - - - if (conversationContext!=null){ + + if (conversationContext != null) { startedContextHere.put("conversation", conversationContext.activate()); } - - //Contexto temporário de visão precisa de tratamento especial - //para evitar conflito com o contexto presente na extensão demoiselle-jsf - if (viewContext!=null){ - if (TemporaryViewContextImpl.class.isInstance(viewContext)){ + + // Contexto temporário de visão precisa de tratamento especial + // para evitar conflito com o contexto presente na extensão demoiselle-jsf + if (viewContext != null) { + if (TemporaryViewContextImpl.class.isInstance(viewContext)) { startedContextHere.put("view", viewContext.activate()); - } - else{ - //Precisamos desativar temporariamente o contexto - if (viewContext.isActive()){ + } else { + // Precisamos desativar temporariamente o contexto + if (viewContext.isActive()) { backupContext = viewContext; viewContext.deactivate(); - - CustomContextBootstrap customContextBootstrap = Beans.getReference(CustomContextBootstrap.class); - for (CustomContext customContext : customContextBootstrap.getCustomContexts()){ - if ( TemporaryViewContextImpl.class.isInstance(customContext) ){ + + CustomContextBootstrap customContextBootstrap = Beans + .getReference(CustomContextBootstrap.class); + for (CustomContext customContext : customContextBootstrap.getCustomContexts()) { + if (TemporaryViewContextImpl.class.isInstance(customContext)) { startedContextHere.put("view", customContext.activate()); break; } @@ -188,37 +186,37 @@ public abstract class AbstractLifecycleBootstrap implement } } } - + registered = true; } } - - private void stopContexts(){ - if (registered){ + + private void stopContexts() { + if (registered) { RequestContext requestContext = Beans.getReference(RequestContext.class); SessionContext sessionContext = Beans.getReference(SessionContext.class); ViewContext viewContext = Beans.getReference(ViewContext.class); ConversationContext conversationContext = Beans.getReference(ConversationContext.class); - - if (requestContext!=null && Boolean.TRUE.equals(startedContextHere.get("request"))){ + + if (requestContext != null && Boolean.TRUE.equals(startedContextHere.get("request"))) { requestContext.deactivate(); } - - if (sessionContext!=null && Boolean.TRUE.equals(startedContextHere.get("session"))){ + + if (sessionContext != null && Boolean.TRUE.equals(startedContextHere.get("session"))) { sessionContext.deactivate(); } - - if (conversationContext!=null && Boolean.TRUE.equals(startedContextHere.get("conversation"))){ + + if (conversationContext != null && Boolean.TRUE.equals(startedContextHere.get("conversation"))) { conversationContext.deactivate(); } - - //Contexto temporário de visão precisa de tratamento especial - //para evitar conflito com o contexto presente na extensão demoiselle-jsf - if (viewContext!=null){ - if (TemporaryViewContextImpl.class.isInstance(viewContext) && startedContextHere.get("view")){ + + // Contexto temporário de visão precisa de tratamento especial + // para evitar conflito com o contexto presente na extensão demoiselle-jsf + if (viewContext != null) { + if (TemporaryViewContextImpl.class.isInstance(viewContext) && startedContextHere.get("view")) { viewContext.deactivate(); - - if (backupContext!=null){ + + if (backupContext != null) { backupContext.activate(); backupContext = null; } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractStrategyBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractStrategyBootstrap.java index 17ae584..93889f4 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractStrategyBootstrap.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/AbstractStrategyBootstrap.java @@ -3,14 +3,13 @@ package br.gov.frameworkdemoiselle.internal.bootstrap; import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.logging.Logger; import javax.enterprise.event.Observes; import javax.enterprise.inject.spi.AnnotatedType; import javax.enterprise.inject.spi.Extension; import javax.enterprise.inject.spi.ProcessAnnotatedType; -import org.slf4j.Logger; - import br.gov.frameworkdemoiselle.util.Reflections; public abstract class AbstractStrategyBootstrap implements Extension { diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ConfigurationBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ConfigurationBootstrap.java index 546effc..8d7dd3d 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ConfigurationBootstrap.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ConfigurationBootstrap.java @@ -42,6 +42,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.logging.Logger; import javassist.ClassPool; import javassist.CtClass; @@ -55,8 +56,6 @@ import javax.enterprise.inject.spi.AnnotatedType; import javax.enterprise.inject.spi.BeanManager; import javax.enterprise.inject.spi.ProcessAnnotatedType; -import org.slf4j.Logger; - import br.gov.frameworkdemoiselle.configuration.Configuration; import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; import br.gov.frameworkdemoiselle.internal.implementation.ConfigurationImpl; @@ -139,7 +138,7 @@ public class ConfigurationBootstrap extends AbstractStrategyBootstrap { @Override protected Logger getLogger() { if (logger == null) { - logger = LoggerProducer.create(ShutdownBootstrap.class); + logger = LoggerProducer.create("br.gov.frameworkdemoiselle.lifecycle"); } return logger; diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/StartupBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/StartupBootstrap.java index 410d25f..561e5d4 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/StartupBootstrap.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/StartupBootstrap.java @@ -36,9 +36,9 @@ */ package br.gov.frameworkdemoiselle.internal.bootstrap; -import javax.enterprise.event.Observes; +import java.util.logging.Logger; -import org.slf4j.Logger; +import javax.enterprise.event.Observes; import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer; import br.gov.frameworkdemoiselle.lifecycle.AfterStartupProccess; @@ -54,7 +54,7 @@ public class StartupBootstrap extends AbstractLifecycleBootstrap { @Override protected Logger getLogger() { if (logger == null) { - logger = LoggerProducer.create(StartupBootstrap.class); + logger = LoggerProducer.create("br.gov.frameworkdemoiselle.lifecycle"); } return logger; diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/AbstractCustomContext.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/AbstractCustomContext.java index 3f14758..c31f4fa 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/AbstractCustomContext.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/AbstractCustomContext.java @@ -38,6 +38,7 @@ package br.gov.frameworkdemoiselle.internal.context; import java.lang.annotation.Annotation; import java.util.Locale; +import java.util.logging.Logger; import javax.enterprise.context.ContextNotActiveException; import javax.enterprise.context.spi.Context; @@ -46,8 +47,6 @@ import javax.enterprise.context.spi.CreationalContext; import javax.enterprise.inject.spi.Bean; import javax.enterprise.inject.spi.BeanManager; -import org.slf4j.Logger; - import br.gov.frameworkdemoiselle.DemoiselleException; import br.gov.frameworkdemoiselle.context.CustomContext; import br.gov.frameworkdemoiselle.internal.bootstrap.CustomContextBootstrap; @@ -60,9 +59,9 @@ public abstract class AbstractCustomContext implements CustomContext { private boolean active; private final Class scope; - + private transient Logger logger; - + private transient ResourceBundle bundle; protected AbstractCustomContext(final Class scope) { @@ -71,7 +70,7 @@ public abstract class AbstractCustomContext implements CustomContext { } protected abstract BeanStore getStore(); - + protected abstract boolean isStoreInitialized(); @Override @@ -90,17 +89,16 @@ public abstract class AbstractCustomContext implements CustomContext { String id = getContextualStore().putIfAbsentAndGetId(contextual); BeanStore store = getStore(); - if (store!=null){ + if (store != null) { if (store.contains(id)) { instance = (T) store.getInstance(id); - } - else if (creationalContext!=null){ + } else if (creationalContext != null) { instance = contextual.create(creationalContext); - store.put(id, instance,creationalContext); + store.put(id, instance, creationalContext); } - } - else{ - throw new DemoiselleException(getBundle().getString("store-not-found" , ((Bean)contextual).getBeanClass().getName() , getScope().getName())); + } else { + throw new DemoiselleException(getBundle().getString("store-not-found", + ((Bean) contextual).getBeanClass().getName(), getScope().getName())); } return instance; @@ -114,34 +112,39 @@ public abstract class AbstractCustomContext implements CustomContext { @Override public boolean activate() { boolean success = false; - - if (!this.active){ + + if (!this.active) { BeanManager beanManager = Beans.getBeanManager(); - if (beanManager!=null){ - try{ + if (beanManager != null) { + try { Context ctx = beanManager.getContext(this.getScope()); - if (ctx!=null){ - getLogger().trace( getBundle().getString("custom-context-already-activated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() , ctx.getClass().getCanonicalName() ) ); + if (ctx != null) { + getLogger().finest( + getBundle().getString("custom-context-already-activated", + this.getClass().getCanonicalName(), this.getScope().getSimpleName(), + ctx.getClass().getCanonicalName())); } - } - catch(ContextNotActiveException ce){ + } catch (ContextNotActiveException ce) { success = this.active = true; - getLogger().trace( getBundle().getString("custom-context-was-activated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() ) ); + getLogger().finest( + getBundle().getString("custom-context-was-activated", this.getClass().getCanonicalName(), + this.getScope().getSimpleName())); } - } - else{ + } else { success = this.active = true; - getLogger().trace( getBundle().getString("custom-context-was-activated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() ) ); + getLogger().finer( + getBundle().getString("custom-context-was-activated", this.getClass().getCanonicalName(), + this.getScope().getSimpleName())); } } - + return success; } - + @Override - public void deactivate(){ - if (this.active){ - if (isStoreInitialized()){ + public void deactivate() { + if (this.active) { + if (isStoreInitialized()) { clearInstances(); getStore().clear(); @@ -152,26 +155,27 @@ public abstract class AbstractCustomContext implements CustomContext { Logger logger = getLogger(); ResourceBundle bundle = getBundle(); - logger.trace( bundle.getString("custom-context-was-deactivated" , this.getClass().getCanonicalName() , this.getScope().getSimpleName() ) ); + logger.finer(bundle.getString("custom-context-was-deactivated", this.getClass().getCanonicalName(), this + .getScope().getSimpleName())); } } - + @SuppressWarnings({ "rawtypes", "unchecked" }) - public void clearInstances(){ + public void clearInstances() { BeanStore store = getStore(); - if (store!=null){ - for (String id : store){ + if (store != null) { + for (String id : store) { Contextual contextual = getContextualStore().getContextual(id); Object instance = store.getInstance(id); CreationalContext creationalContext = store.getCreationalContext(id); - - if (contextual!=null && instance!=null){ + + if (contextual != null && instance != null) { contextual.destroy(instance, creationalContext); } } } } - + @Override public Class getScope() { return this.scope; @@ -180,39 +184,39 @@ public abstract class AbstractCustomContext implements CustomContext { protected static BeanStore createStore() { return new BeanStore(); } - + protected static ContextualStore createContextualStore() { return new ContextualStore(); } - - private ResourceBundle getBundle(){ - if (bundle==null){ + + private ResourceBundle getBundle() { + if (bundle == null) { bundle = new ResourceBundle("demoiselle-core-bundle", Locale.getDefault()); } - + return bundle; } - - private Logger getLogger(){ - if (logger==null){ - logger = LoggerProducer.create(this.getClass()); + + private Logger getLogger() { + if (logger == null) { + logger = LoggerProducer.create("br.gov.frameworkdemoiselle.context"); } - + return logger; } - - protected ContextualStore getContextualStore(){ + + protected ContextualStore getContextualStore() { CustomContextBootstrap bootstrap = Beans.getReference(CustomContextBootstrap.class); return bootstrap.getContextualStore(); } - + @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; - if ( !this.getClass().equals(obj.getClass()) ) + if (!this.getClass().equals(obj.getClass())) return false; AbstractCustomContext other = (AbstractCustomContext) obj; if (scope == null) { diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/CustomContextProducer.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/CustomContextProducer.java index 5fc9676..1c7adbe 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/CustomContextProducer.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/CustomContextProducer.java @@ -51,6 +51,7 @@ package br.gov.frameworkdemoiselle.internal.context; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.logging.Logger; import javax.annotation.PreDestroy; import javax.enterprise.context.ApplicationScoped; @@ -58,8 +59,6 @@ import javax.enterprise.inject.Produces; import javax.enterprise.inject.spi.AfterBeanDiscovery; import javax.enterprise.inject.spi.InjectionPoint; -import org.slf4j.Logger; - import br.gov.frameworkdemoiselle.annotation.Priority; import br.gov.frameworkdemoiselle.context.ConversationContext; import br.gov.frameworkdemoiselle.context.CustomContext; @@ -74,37 +73,38 @@ import br.gov.frameworkdemoiselle.util.Beans; import br.gov.frameworkdemoiselle.util.ResourceBundle; /** - * Produces instances of {@link CustomContext} to control contexts not activated - * by the container + * Produces instances of {@link CustomContext} to control contexts not activated by the container * * @author serpro - * */ @ApplicationScoped public class CustomContextProducer { - + private Logger logger; private transient ResourceBundle bundle; - + /** - *

Store a context into this producer. The context must have - * been registered into CDI (unsing {@link AfterBeanDiscovery#addContext(javax.enterprise.context.spi.Context context)}) by a portable extension, - * this method will not do this.

- * - *

This producer can only produce contexts registered through this method.

- * + *

+ * Store a context into this producer. The context must have been registered into CDI (unsing + * {@link AfterBeanDiscovery#addContext(javax.enterprise.context.spi.Context context)}) by a portable extension, + * this method will not do this. + *

+ *

+ * This producer can only produce contexts registered through this method. + *

*/ - public void addRegisteredContext(CustomContext context){ + public void addRegisteredContext(CustomContext context) { Logger logger = getLogger(); ResourceBundle bundle = getBundle(); - - if (!getContexts().contains(context)){ + + if (!getContexts().contains(context)) { getContexts().add(context); - logger.trace( bundle.getString("bootstrap-context-added", context.getClass().getCanonicalName() , context.getScope().getSimpleName() ) ); - } - else{ - logger.warn( bundle.getString("bootstrap-context-already-managed", context.getClass().getCanonicalName() , context.getScope().getSimpleName() ) ); + logger.finest(bundle.getString("bootstrap-context-added", context.getClass().getCanonicalName(), context + .getScope().getSimpleName())); + } else { + logger.finest(bundle.getString("bootstrap-context-already-managed", context.getClass().getCanonicalName(), + context.getScope().getSimpleName())); } } @@ -112,140 +112,138 @@ public class CustomContextProducer { * Deactivates all registered contexts and clear the context collection */ @PreDestroy - public void closeContexts(){ - //Desativa todos os contextos registrados. - for (CustomContext context : getContexts()){ + public void closeContexts() { + // Desativa todos os contextos registrados. + for (CustomContext context : getContexts()) { context.deactivate(); } - + getContexts().clear(); } - - private List getContexts(){ - /* The demoiselle-core CustomContextBootstrap class creates default contexts for the main - * scopes of an application (request, session and conversation) and some custom contexts - * (view and static). This method injects a reference to the CustomContextBootstrap to obtain those - * contexts. Also any context registered after application start-up will be obtained by this method. */ - + + private List getContexts() { + /* + * The demoiselle-core CustomContextBootstrap class creates default contexts for the main scopes of an + * application (request, session and conversation) and some custom contexts (view and static). This method + * injects a reference to the CustomContextBootstrap to obtain those contexts. Also any context registered after + * application start-up will be obtained by this method. + */ + CustomContextBootstrap contextBootstrap = Beans.getReference(CustomContextBootstrap.class); return contextBootstrap.getCustomContexts(); } - - /////////////PRODUCERS/////////////////// - + + // ///////////PRODUCERS/////////////////// + @Produces - protected RequestContext getRequestContext(InjectionPoint ip){ - if (ip!=null){ + protected RequestContext getRequestContext(InjectionPoint ip) { + if (ip != null) { return getContext(ip); - } - else{ + } else { return getContext(RequestContext.class); } } - + @Produces - protected SessionContext getSessionContext(InjectionPoint ip){ - if (ip!=null){ + protected SessionContext getSessionContext(InjectionPoint ip) { + if (ip != null) { return getContext(ip); - } - else{ + } else { return getContext(SessionContext.class); } } - + @Produces - protected ViewContext getViewContext(InjectionPoint ip){ - if (ip!=null){ + protected ViewContext getViewContext(InjectionPoint ip) { + if (ip != null) { return getContext(ip); - } - else{ + } else { return getContext(ViewContext.class); } } - + @Produces - protected StaticContext getStaticContext(InjectionPoint ip){ - if (ip!=null){ + protected StaticContext getStaticContext(InjectionPoint ip) { + if (ip != null) { return getContext(ip); - } - else{ + } else { return getContext(StaticContext.class); } } - + @Produces - protected ConversationContext getConversationContext(InjectionPoint ip){ - if (ip!=null){ + protected ConversationContext getConversationContext(InjectionPoint ip) { + if (ip != null) { return getContext(ip); - } - else{ + } else { return getContext(ConversationContext.class); } } - - /////////////END OF PRODUCERS/////////////////// - + + // ///////////END OF PRODUCERS/////////////////// + /** * Obtain a custom context for the provided injection point. * - * @param ip The object containing information about the injection point - most importantly - * the declared type of the injection point, to decide the context to return - * - * @return A context of a type compatible with the type of the injection point, or null if there is - * no such context. + * @param ip + * The object containing information about the injection point - most importantly the declared type of + * the injection point, to decide the context to return + * @return A context of a type compatible with the type of the injection point, or null if there is no + * such context. */ @SuppressWarnings("unchecked") - public T getContext(InjectionPoint ip){ + public T getContext(InjectionPoint ip) { T producedContext = null; - - if (ip!=null){ + + if (ip != null) { Class beanClass = (Class) ip.getType(); producedContext = (T) getContext(beanClass); } - - if (producedContext!=null){ - getLogger().trace( getBundle().getString("custom-context-selected" , producedContext.getClass().getCanonicalName()) ); + + if (producedContext != null) { + getLogger().finest( + getBundle().getString("custom-context-selected", producedContext.getClass().getCanonicalName())); } - + return producedContext; } - + /** * Obtain a context compatible with the provided type. * - * @param contextClass The type of the desired context. The returned context will be compatible with this type, if there - * is more than one compatible type, this method will decide witch one to return based on the {@link Priority} annotation. - * + * @param contextClass + * The type of the desired context. The returned context will be compatible with this type, if there is + * more than one compatible type, this method will decide witch one to return based on the + * {@link Priority} annotation. * @return A context of a type compatible with the informed type, or null if there is no such context. */ @SuppressWarnings("unchecked") - public T getContext(Class contextClass){ + public T getContext(Class contextClass) { CustomContext producedContext = null; - + ArrayList selectableContexts = new ArrayList(); - - for (CustomContext context : getContexts()){ - if ( contextClass.isAssignableFrom( context.getClass() ) ){ - if (context.isActive()){ + + for (CustomContext context : getContexts()) { + if (contextClass.isAssignableFrom(context.getClass())) { + if (context.isActive()) { producedContext = context; break; - } - else{ + } else { selectableContexts.add(context); } } } - - if (producedContext==null && !selectableContexts.isEmpty()){ + + if (producedContext == null && !selectableContexts.isEmpty()) { producedContext = StrategySelector.selectInstance(CustomContext.class, selectableContexts); } - + return (T) producedContext; } - + private Logger getLogger() { if (this.logger == null) { - this.logger = LoggerProducer.create(this.getClass()); + this.logger = LoggerProducer.create("br.gov.frameworkdemoiselle.context"); } return this.logger; diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/AnnotatedMethodProcessor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/AnnotatedMethodProcessor.java index 99d423e..652b631 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/AnnotatedMethodProcessor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/AnnotatedMethodProcessor.java @@ -36,12 +36,13 @@ */ package br.gov.frameworkdemoiselle.internal.implementation; +import static java.util.logging.Level.SEVERE; + import java.lang.reflect.InvocationTargetException; +import java.util.logging.Logger; import javax.enterprise.inject.spi.AnnotatedMethod; -import org.slf4j.Logger; - import br.gov.frameworkdemoiselle.annotation.Priority; import br.gov.frameworkdemoiselle.exception.ApplicationException; import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer; @@ -110,11 +111,11 @@ public class AnnotatedMethodProcessor implements Comparable implements Comparable>) violations); + throw new ConstraintViolationException(bundle.getString( + "management-validation-constraint-violation", managedType.getType() + .getCanonicalName(), propertyName, errorBuffer.toString()), + (Set>) violations); } } else { - logger.warn(bundle.getString("management-validation-validator-not-found")); + logger.warning(bundle.getString("management-validation-validator-not-found")); } Method getterMethod = managedType.getFields().get(propertyName).getGetterMethod(); @@ -279,24 +286,23 @@ public class Management implements Serializable { NotificationManager notificationManager = Beans.getReference(NotificationManager.class); Class attributeType = newValue != null ? newValue.getClass() : null; - Notification notification = new DefaultNotification( new AttributeChangeMessage( - bundle.getString("management-notification-attribute-changed", propertyName, managedType.getType().getCanonicalName()) - , propertyName - , attributeType - , oldValue - , newValue) ); + Notification notification = new DefaultNotification(new AttributeChangeMessage(bundle.getString( + "management-notification-attribute-changed", propertyName, managedType.getType() + .getCanonicalName()), propertyName, attributeType, oldValue, newValue)); notificationManager.sendNotification(notification); } catch (ConstraintViolationException ce) { throw ce; } catch (Exception e) { - throw new ManagedInvokationException(bundle.getString("management-invoke-error", method.getName()), e); + throw new ManagedInvokationException(bundle.getString("management-invoke-error", method.getName()), + e); } finally { deactivateContexts(managedType.getType()); } } else { - throw new ManagedAttributeNotFoundException(bundle.getString("management-write-value-error", propertyName)); + throw new ManagedAttributeNotFoundException(bundle.getString("management-write-value-error", + propertyName)); } } else { throw new ManagedInvokationException(bundle.getString("management-type-not-found")); @@ -307,18 +313,18 @@ public class Management implements Serializable { private void activateContexts(Class managedType) { RequestContext requestContext = Beans.getReference(RequestContext.class); ConversationContext conversationContext = Beans.getReference(ConversationContext.class); - - if (!requestContext.isActive()){ - logger.debug(bundle.getString("management-debug-starting-custom-context", - requestContext.getClass().getCanonicalName(), managedType.getCanonicalName())); - + + if (!requestContext.isActive()) { + logger.fine(bundle.getString("management-debug-starting-custom-context", requestContext.getClass() + .getCanonicalName(), managedType.getCanonicalName())); + requestContext.activate(); } - - if (!conversationContext.isActive()){ - logger.debug(bundle.getString("management-debug-starting-custom-context", - conversationContext.getClass().getCanonicalName(), managedType.getCanonicalName())); - + + if (!conversationContext.isActive()) { + logger.fine(bundle.getString("management-debug-starting-custom-context", conversationContext.getClass() + .getCanonicalName(), managedType.getCanonicalName())); + conversationContext.activate(); } } @@ -326,18 +332,18 @@ public class Management implements Serializable { private void deactivateContexts(Class managedType) { RequestContext requestContext = Beans.getReference(RequestContext.class); ConversationContext conversationContext = Beans.getReference(ConversationContext.class); - - if (requestContext.isActive()){ - logger.debug(bundle.getString("management-debug-stoping-custom-context", - requestContext.getClass().getCanonicalName(), managedType.getCanonicalName())); - + + if (requestContext.isActive()) { + logger.fine(bundle.getString("management-debug-stoping-custom-context", requestContext.getClass() + .getCanonicalName(), managedType.getCanonicalName())); + requestContext.deactivate(); } - - if (conversationContext.isActive()){ - logger.debug(bundle.getString("management-debug-stoping-custom-context", - conversationContext.getClass().getCanonicalName(), managedType.getCanonicalName())); - + + if (conversationContext.isActive()) { + logger.fine(bundle.getString("management-debug-stoping-custom-context", conversationContext.getClass() + .getCanonicalName(), managedType.getCanonicalName())); + conversationContext.deactivate(); } } @@ -347,7 +353,7 @@ public class Management implements Serializable { ManagementExtension monitoringExtension = Beans.getReference(monitoringExtensionClass); monitoringExtension.shutdown(this.getManagedTypes()); - logger.debug(bundle.getString("management-debug-removing-management-extension", monitoringExtension + logger.fine(bundle.getString("management-debug-removing-management-extension", monitoringExtension .getClass().getCanonicalName())); } @@ -357,7 +363,7 @@ public class Management implements Serializable { for (Class monitoringExtensionClass : monitoringExtensions) { ManagementExtension monitoringExtension = Beans.getReference(monitoringExtensionClass); - logger.debug(bundle.getString("management-debug-processing-management-extension", monitoringExtension + logger.fine(bundle.getString("management-debug-processing-management-extension", monitoringExtension .getClass().getCanonicalName())); monitoringExtension.initialize(this.getManagedTypes()); @@ -375,6 +381,4 @@ public class Management implements Serializable { return this.validator; } - - } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/MessageContextImpl.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/MessageContextImpl.java index b40dcd5..866f301 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/MessageContextImpl.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/MessageContextImpl.java @@ -37,14 +37,10 @@ package br.gov.frameworkdemoiselle.internal.implementation; import java.io.Serializable; -import java.util.List; +import java.util.logging.Logger; -import org.slf4j.Logger; - -import br.gov.frameworkdemoiselle.DemoiselleException; import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer; import br.gov.frameworkdemoiselle.message.DefaultMessage; -import br.gov.frameworkdemoiselle.message.Message; import br.gov.frameworkdemoiselle.message.MessageAppender; import br.gov.frameworkdemoiselle.message.MessageContext; import br.gov.frameworkdemoiselle.message.SeverityType; @@ -61,30 +57,9 @@ public class MessageContextImpl implements Serializable, MessageContext { private static final long serialVersionUID = 1L; - private transient ResourceBundle bundle; - - private transient Logger logger; + private transient ResourceBundle bundle; - @Override - @Deprecated - public void add(final Message message, Object... params) { - - getLogger().debug(getBundle().getString("adding-message-to-context", message.toString())); - if (params == null || params.length == 0) { - getAppender().append(message); - } else { - getLogger().warn("Atualmente, ao chamar o método add do MessageContext passando um objeto" - + " do tipo Message e mais parâmetros, será recriando um objeto" +"\n" - + " Message, na implementação DefaultMessage para que os parâmetros sejam utilizados." - + " Note que isso poderá trazer problemas para sua aplicação, caso" +"\n" - + " a implementação de Message utilizada não seja a DefaultMessage. Para evitar esse tipo de problema" - + " e garantir compatibilidade com versões futuras, recomendamos que" +"\n" - + " o objeto message seja criado com os parâmetros, e que para o método add apenas seja passado" - + " esse objeto como parâmetro."); - - getAppender().append(new DefaultMessage(message.getText(), message.getSeverity(), params)); - } - } + private transient Logger logger; private MessageAppender getAppender() { Class appenderClass = StrategySelector.selectClass(MessageAppender.class); @@ -99,26 +74,10 @@ public class MessageContextImpl implements Serializable, MessageContext { @Override public void add(String text, SeverityType severity, Object... params) { - add(new DefaultMessage(text, severity, params)); - } - - @Override - @Deprecated - public List getMessages() { - throw new DemoiselleException( - "Este método não é mais suportado desde a versão 2.4.0 do Demoiselle Framework. Considere atualizar a sua aplicação ou o componente com uma nova versão que faça uso do " - + MessageAppender.class.getCanonicalName() + "."); - } - - @Override - @Deprecated - public void clear() { - throw new DemoiselleException( - "Este método não é mais suportado desde a versão 2.4.0 do Demoiselle Framework. Considere atualizar a sua aplicação ou o componente com uma nova versão que faça uso do " - + MessageAppender.class.getCanonicalName() + "."); + getAppender().append(new DefaultMessage(text, severity, params)); } - private ResourceBundle getBundle() { + private ResourceBundle getBundle() { if (bundle == null) { bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-core-bundle")); } @@ -126,9 +85,9 @@ public class MessageContextImpl implements Serializable, MessageContext { return bundle; } - private Logger getLogger() { + private Logger getLogger() { if (logger == null) { - logger = LoggerProducer.create(MessageContext.class); + logger = LoggerProducer.create("br.gov.frameworkdemoiselle.message"); } return logger; diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/LoggerProducer.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/LoggerProducer.java index 1196ab5..a77597e 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/LoggerProducer.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/LoggerProducer.java @@ -49,17 +49,14 @@ package br.gov.frameworkdemoiselle.internal.producer; import java.io.Serializable; +import java.util.logging.Logger; import javax.enterprise.inject.Default; import javax.enterprise.inject.Produces; import javax.enterprise.inject.spi.InjectionPoint; -import org.slf4j.Logger; - -import br.gov.frameworkdemoiselle.DemoiselleException; import br.gov.frameworkdemoiselle.annotation.Name; -import br.gov.frameworkdemoiselle.internal.proxy.Slf4jLoggerProxy; -import br.gov.frameworkdemoiselle.util.Reflections; +import br.gov.frameworkdemoiselle.internal.proxy.LoggerProxy; public class LoggerProducer implements Serializable { @@ -68,36 +65,25 @@ public class LoggerProducer implements Serializable { @Default @Produces public Logger create(final InjectionPoint ip) { - Class type; + String name; if (ip != null && ip.getMember() != null) { - type = ip.getMember().getDeclaringClass(); + name = ip.getMember().getDeclaringClass().getName(); } else { - type = LoggerProducer.class; + name = "not.categorized"; } - return create(type); + return create(name); } @Name("") @Produces public Logger createNamed(final InjectionPoint ip) throws ClassNotFoundException { - Class type; - - try { - String canonicalName = ip.getAnnotated().getAnnotation(Name.class).value(); - type = Reflections.forName(canonicalName); - - } catch (ClassCastException cause) { - // TODO Colocar a mensgaem apropriada mostrando como utilizar a anotação @AmbiguousQualifier corretamente com a injeção de - // Logger. - throw new DemoiselleException(null, cause); - } - - return create(type); + String name = ip.getAnnotated().getAnnotation(Name.class).value(); + return create(name); } - public static Logger create(Class type) { - return new Slf4jLoggerProxy(type); + public static Logger create(String name) { + return new LoggerProxy(name); } } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/proxy/LoggerProxy.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/proxy/LoggerProxy.java new file mode 100644 index 0000000..4a94294 --- /dev/null +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/proxy/LoggerProxy.java @@ -0,0 +1,206 @@ +package br.gov.frameworkdemoiselle.internal.proxy; + +import java.util.ResourceBundle; +import java.util.logging.Filter; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import java.util.logging.Logger; + +public class LoggerProxy extends Logger { + + private String name; + + private transient Logger delegate; + + public LoggerProxy(String name) { + super(name, null); + this.name = name; + } + + public Logger getDelegate() { + if (this.delegate == null) { + this.delegate = Logger.getLogger(this.name); + } + + return this.delegate; + } + + public int hashCode() { + return getDelegate().hashCode(); + } + + public boolean equals(Object obj) { + return getDelegate().equals(obj); + } + + public String toString() { + return getDelegate().toString(); + } + + public ResourceBundle getResourceBundle() { + return getDelegate().getResourceBundle(); + } + + public String getResourceBundleName() { + return getDelegate().getResourceBundleName(); + } + + public void setFilter(Filter newFilter) throws SecurityException { + getDelegate().setFilter(newFilter); + } + + public Filter getFilter() { + return getDelegate().getFilter(); + } + + public void log(LogRecord record) { + getDelegate().log(record); + } + + public void log(Level level, String msg) { + getDelegate().log(level, msg); + } + + public void log(Level level, String msg, Object param1) { + getDelegate().log(level, msg, param1); + } + + public void log(Level level, String msg, Object[] params) { + getDelegate().log(level, msg, params); + } + + public void log(Level level, String msg, Throwable thrown) { + getDelegate().log(level, msg, thrown); + } + + public void logp(Level level, String sourceClass, String sourceMethod, String msg) { + getDelegate().logp(level, sourceClass, sourceMethod, msg); + } + + public void logp(Level level, String sourceClass, String sourceMethod, String msg, Object param1) { + getDelegate().logp(level, sourceClass, sourceMethod, msg, param1); + } + + public void logp(Level level, String sourceClass, String sourceMethod, String msg, Object[] params) { + getDelegate().logp(level, sourceClass, sourceMethod, msg, params); + } + + public void logp(Level level, String sourceClass, String sourceMethod, String msg, Throwable thrown) { + getDelegate().logp(level, sourceClass, sourceMethod, msg, thrown); + } + + public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg) { + getDelegate().logrb(level, sourceClass, sourceMethod, bundleName, msg); + } + + public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Object param1) { + getDelegate().logrb(level, sourceClass, sourceMethod, bundleName, msg, param1); + } + + public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, + Object[] params) { + getDelegate().logrb(level, sourceClass, sourceMethod, bundleName, msg, params); + } + + public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, + Throwable thrown) { + getDelegate().logrb(level, sourceClass, sourceMethod, bundleName, msg, thrown); + } + + public void entering(String sourceClass, String sourceMethod) { + getDelegate().entering(sourceClass, sourceMethod); + } + + public void entering(String sourceClass, String sourceMethod, Object param1) { + getDelegate().entering(sourceClass, sourceMethod, param1); + } + + public void entering(String sourceClass, String sourceMethod, Object[] params) { + getDelegate().entering(sourceClass, sourceMethod, params); + } + + public void exiting(String sourceClass, String sourceMethod) { + getDelegate().exiting(sourceClass, sourceMethod); + } + + public void exiting(String sourceClass, String sourceMethod, Object result) { + getDelegate().exiting(sourceClass, sourceMethod, result); + } + + public void throwing(String sourceClass, String sourceMethod, Throwable thrown) { + getDelegate().throwing(sourceClass, sourceMethod, thrown); + } + + public void severe(String msg) { + getDelegate().severe(msg); + } + + public void warning(String msg) { + getDelegate().warning(msg); + } + + public void info(String msg) { + getDelegate().info(msg); + } + + public void config(String msg) { + getDelegate().config(msg); + } + + public void fine(String msg) { + getDelegate().fine(msg); + } + + public void finer(String msg) { + getDelegate().finer(msg); + } + + public void finest(String msg) { + getDelegate().finest(msg); + } + + public void setLevel(Level newLevel) throws SecurityException { + getDelegate().setLevel(newLevel); + } + + public Level getLevel() { + return getDelegate().getLevel(); + } + + public boolean isLoggable(Level level) { + return getDelegate().isLoggable(level); + } + + public String getName() { + return getDelegate().getName(); + } + + public void addHandler(Handler handler) throws SecurityException { + getDelegate().addHandler(handler); + } + + public void removeHandler(Handler handler) throws SecurityException { + getDelegate().removeHandler(handler); + } + + public Handler[] getHandlers() { + return getDelegate().getHandlers(); + } + + public void setUseParentHandlers(boolean useParentHandlers) { + getDelegate().setUseParentHandlers(useParentHandlers); + } + + public boolean getUseParentHandlers() { + return getDelegate().getUseParentHandlers(); + } + + public Logger getParent() { + return getDelegate().getParent(); + } + + public void setParent(Logger parent) { + getDelegate().setParent(parent); + } +} diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/message/MessageContext.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/message/MessageContext.java index 858a3a1..4f087be 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/message/MessageContext.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/message/MessageContext.java @@ -36,8 +36,6 @@ */ package br.gov.frameworkdemoiselle.message; -import java.util.List; - /** * Context interface reserved for messaging purposes. *

@@ -51,27 +49,20 @@ import java.util.List; public interface MessageContext { /** - * Saves a message into the context. + * Deliver a message to the MessageAppender. * + * @see MessageAppender * @param message */ - @Deprecated - void add(Message message, Object... params); - - void add(String text, Object... params); - - void add(String text, SeverityType severity, Object... params); + void add(String message, Object... params); /** - * Returns all messages in the context. - */ - @Deprecated - List getMessages(); - - /** - * Clears the list of messages in the context. + * Deliver a message to the MessageAppender. + * + * @see MessageAppender + * @param message + * @param severity + * @param params */ - @Deprecated - void clear(); - + void add(String message, SeverityType severity, Object... params); } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/security/RequiredPermissionInterceptor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/security/RequiredPermissionInterceptor.java index f9b143a..53b33a9 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/security/RequiredPermissionInterceptor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/security/RequiredPermissionInterceptor.java @@ -37,13 +37,12 @@ package br.gov.frameworkdemoiselle.security; import java.io.Serializable; +import java.util.logging.Logger; import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; -import org.slf4j.Logger; - import br.gov.frameworkdemoiselle.annotation.Name; import br.gov.frameworkdemoiselle.util.Beans; import br.gov.frameworkdemoiselle.util.NameQualifier; @@ -86,15 +85,15 @@ public class RequiredPermissionInterceptor implements Serializable { if (getSecurityContext().isLoggedIn()) { username = getSecurityContext().getUser().getName(); - getLogger().trace(getBundle().getString("access-checking", username, operation, resource)); + getLogger().finest(getBundle().getString("access-checking", username, operation, resource)); } if (!getSecurityContext().hasPermission(resource, operation)) { - getLogger().error(getBundle().getString("access-denied", username, operation, resource)); + getLogger().severe(getBundle().getString("access-denied", username, operation, resource)); throw new AuthorizationException(getBundle().getString("access-denied-ui", resource, operation)); } - getLogger().debug(getBundle().getString("access-allowed", username, operation, resource)); + getLogger().fine(getBundle().getString("access-allowed", username, operation, resource)); return ic.proceed(); } @@ -110,8 +109,8 @@ public class RequiredPermissionInterceptor implements Serializable { private String getResource(InvocationContext ic) { RequiredPermission requiredPermission; requiredPermission = ic.getMethod().getAnnotation(RequiredPermission.class); - - if(requiredPermission == null){ + + if (requiredPermission == null) { requiredPermission = ic.getTarget().getClass().getAnnotation(RequiredPermission.class); } @@ -138,11 +137,11 @@ public class RequiredPermissionInterceptor implements Serializable { private String getOperation(InvocationContext ic) { RequiredPermission requiredPermission; requiredPermission = ic.getMethod().getAnnotation(RequiredPermission.class); - - if(requiredPermission == null){ + + if (requiredPermission == null) { requiredPermission = ic.getTarget().getClass().getAnnotation(RequiredPermission.class); } - + if (Strings.isEmpty(requiredPermission.operation())) { if (ic.getMethod().getAnnotation(Name.class) == null) { return ic.getMethod().getName(); diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/security/RequiredRoleInterceptor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/security/RequiredRoleInterceptor.java index a6b7e38..4793458 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/security/RequiredRoleInterceptor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/security/RequiredRoleInterceptor.java @@ -40,13 +40,12 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.logging.Logger; import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; -import org.slf4j.Logger; - import br.gov.frameworkdemoiselle.util.Beans; import br.gov.frameworkdemoiselle.util.NameQualifier; import br.gov.frameworkdemoiselle.util.ResourceBundle; @@ -84,8 +83,7 @@ public class RequiredRoleInterceptor implements Serializable { if (getSecurityContext().isLoggedIn()) { getLogger().info( - getBundle().getString("has-role-verification", getSecurityContext().getUser().getName(), - roles)); + getBundle().getString("has-role-verification", getSecurityContext().getUser().getName(), roles)); } List userRoles = new ArrayList(); @@ -97,15 +95,13 @@ public class RequiredRoleInterceptor implements Serializable { } if (userRoles.isEmpty()) { - getLogger() - .error(getBundle().getString("does-not-have-role", getSecurityContext().getUser().getName(), - roles)); + getLogger().severe( + getBundle().getString("does-not-have-role", getSecurityContext().getUser().getName(), roles)); throw new AuthorizationException(getBundle().getString("does-not-have-role-ui", roles)); } - getLogger().debug( - getBundle().getString("user-has-role", getSecurityContext().getUser().getName(), userRoles)); + getLogger().fine(getBundle().getString("user-has-role", getSecurityContext().getUser().getName(), userRoles)); return ic.proceed(); } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/transaction/TransactionalInterceptor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/transaction/TransactionalInterceptor.java index 28780e6..3c61a49 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/transaction/TransactionalInterceptor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/transaction/TransactionalInterceptor.java @@ -37,6 +37,7 @@ package br.gov.frameworkdemoiselle.transaction; import java.io.Serializable; +import java.util.logging.Logger; import javax.enterprise.context.ContextNotActiveException; import javax.enterprise.context.RequestScoped; @@ -45,8 +46,6 @@ import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; -import org.slf4j.Logger; - import br.gov.frameworkdemoiselle.exception.ApplicationException; import br.gov.frameworkdemoiselle.util.Beans; import br.gov.frameworkdemoiselle.util.NameQualifier; @@ -115,7 +114,7 @@ public class TransactionalInterceptor implements Serializable { Object result = null; try { - getLogger().debug(getBundle().getString("transactional-execution", ic.getMethod().toGenericString())); + getLogger().fine(getBundle().getString("transactional-execution", ic.getMethod().toGenericString())); result = ic.proceed(); } catch (Exception cause) { @@ -195,7 +194,7 @@ public class TransactionalInterceptor implements Serializable { private Logger getLogger() { if (logger == null) { - logger = Beans.getReference(Logger.class, new NameQualifier(TransactionalInterceptor.class.getName())); + logger = Beans.getReference(Logger.class, new NameQualifier("br.gov.frameworkdemoiselle.transaction")); } return logger; diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/NameQualifier.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/NameQualifier.java index d511851..322a3c9 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/NameQualifier.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/NameQualifier.java @@ -38,6 +38,7 @@ package br.gov.frameworkdemoiselle.util; import javax.enterprise.util.AnnotationLiteral; +import util.beans.ambiguous.AmbiguousQualifier; import br.gov.frameworkdemoiselle.annotation.Name; /** diff --git a/impl/core/src/test/java/context/staticcontext/ConversationBean.java b/impl/core/src/test/java/context/staticcontext/ConversationBean.java index 58e4b2f..a63ef2d 100644 --- a/impl/core/src/test/java/context/staticcontext/ConversationBean.java +++ b/impl/core/src/test/java/context/staticcontext/ConversationBean.java @@ -1,8 +1,9 @@ package context.staticcontext; -import javax.enterprise.context.ConversationScoped; import java.io.Serializable; +import javax.enterprise.context.ConversationScoped; + @ConversationScoped public class ConversationBean implements Serializable { diff --git a/impl/core/src/test/java/context/staticcontext/StaticContextTest.java b/impl/core/src/test/java/context/staticcontext/StaticContextTest.java index 2cffa13..d96c4e3 100644 --- a/impl/core/src/test/java/context/staticcontext/StaticContextTest.java +++ b/impl/core/src/test/java/context/staticcontext/StaticContextTest.java @@ -45,10 +45,10 @@ import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; +import test.Tests; import br.gov.frameworkdemoiselle.context.ConversationContext; import br.gov.frameworkdemoiselle.context.SessionContext; import br.gov.frameworkdemoiselle.util.Beans; -import test.Tests; @RunWith(Arquillian.class) public class StaticContextTest { diff --git a/impl/core/src/test/java/logger/LoggerTest.java b/impl/core/src/test/java/logger/LoggerTest.java index 4873fd3..c1fbcea 100644 --- a/impl/core/src/test/java/logger/LoggerTest.java +++ b/impl/core/src/test/java/logger/LoggerTest.java @@ -36,48 +36,74 @@ */ package logger; -import static junit.framework.Assert.assertTrue; +import static junit.framework.Assert.assertEquals; + +import java.util.logging.Logger; import javax.inject.Inject; -import logger.appender.LoggerMemory; +import logger.appender.FakeHandler; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.Test; import org.junit.runner.RunWith; -import org.slf4j.Logger; import test.Tests; +import br.gov.frameworkdemoiselle.annotation.Name; +import br.gov.frameworkdemoiselle.util.Beans; @RunWith(Arquillian.class) public class LoggerTest { - private static final String LOGGER_MESSAGE = "Testing log4j proxy"; - @Inject - private Logger logger; + private Logger unnamedLogger; @Inject - private LoggerMemory loggerMemory; + @Name("just.another.test") + private Logger namedLogger; @Deployment public static JavaArchive createDeployment() { - JavaArchive deployment = Tests.createDeployment(LoggerTest.class); - return deployment; - } @Test - public void testLoggerProducer() { + public void unnamedLoggerProducer() { + String message = "unnamed producer"; + + FakeHandler handler = new FakeHandler(); + unnamedLogger.addHandler(handler); + unnamedLogger.info(message); + + assertEquals(message, handler.getMessage()); + assertEquals(LoggerTest.class.getName(), handler.getName()); + } - logger.info(LOGGER_MESSAGE); + @Test + public void namedLoggerProducer() { + String message = "named producer"; - assertTrue(loggerMemory.checkMessage(LOGGER_MESSAGE)); + FakeHandler handler = new FakeHandler(); + namedLogger.addHandler(handler); + namedLogger.info(message); + assertEquals(message, handler.getMessage()); + assertEquals("just.another.test", handler.getName()); } + @Test + public void loggerProducedByBeansGetReference() { + String message = "beans reference producer"; + + FakeHandler handler = new FakeHandler(); + Logger logger = Beans.getReference(Logger.class); + logger.addHandler(handler); + logger.info(message); + + assertEquals(message, handler.getMessage()); + assertEquals("not.categorized", handler.getName()); + } } diff --git a/impl/core/src/test/java/logger/appender/FakeHandler.java b/impl/core/src/test/java/logger/appender/FakeHandler.java new file mode 100644 index 0000000..dc87cee --- /dev/null +++ b/impl/core/src/test/java/logger/appender/FakeHandler.java @@ -0,0 +1,41 @@ +package logger.appender; + +import java.util.logging.Handler; +import java.util.logging.LogRecord; + +public class FakeHandler extends Handler { + + private String name; + + private String message; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + @Override + public void publish(LogRecord record) { + this.name = record.getLoggerName(); + this.message = record.getMessage(); + } + + @Override + public void flush() { + } + + @Override + public void close() throws SecurityException { + } +} diff --git a/impl/core/src/test/java/logger/appender/LoggerMemory.java b/impl/core/src/test/java/logger/appender/LoggerMemory.java deleted file mode 100644 index f0214bc..0000000 --- a/impl/core/src/test/java/logger/appender/LoggerMemory.java +++ /dev/null @@ -1,56 +0,0 @@ -package logger.appender; - -import java.util.ArrayList; -import java.util.List; - -import javax.inject.Inject; - -import org.slf4j.Logger; - -public class LoggerMemory { - - @Inject - private Logger logger; - - private static List messages = new ArrayList(); - - public boolean checkMessage(String loggerMessage) { - - logger.info("Verificando a mensagem [" + loggerMessage + "]"); - this.showMessages(); - - for (String mensagem : messages) { - - if (mensagem.equals(loggerMessage)) { - - logger.info("Mensagem encontrada"); - return true; - - } - - } - - logger.info("Mensagem não encontrada"); - return false; - - } - - private void showMessages() { - - logger.debug("Inicio da listagem de mensagens armazenadas..."); - for (String message : messages) { - - logger.debug("\"" + message + "\""); - - } - logger.debug("Fim da listagem de mensagens armazenadas..."); - - } - - public static void addMessage(String mensagem) { - - messages.add(mensagem); - - } - -} diff --git a/impl/core/src/test/java/logger/appender/MemoryAppender.java b/impl/core/src/test/java/logger/appender/MemoryAppender.java deleted file mode 100644 index 6af4a72..0000000 --- a/impl/core/src/test/java/logger/appender/MemoryAppender.java +++ /dev/null @@ -1,28 +0,0 @@ -package logger.appender; - -import org.apache.log4j.AppenderSkeleton; -import org.apache.log4j.spi.LoggingEvent; - -public class MemoryAppender extends AppenderSkeleton { - - @Override - public void close() { - } - - @Override - public boolean requiresLayout() { - return false; - } - - @Override - protected void append(LoggingEvent loggingEvent) { - - if (!LoggerMemory.class.getName().equals(loggingEvent.getLoggerName())) { - - LoggerMemory.addMessage(loggingEvent.getMessage().toString()); - - } - - } - -} diff --git a/impl/core/src/test/java/message/MessageContextTest.java b/impl/core/src/test/java/message/MessageContextTest.java index a8f5a28..180a3ca 100644 --- a/impl/core/src/test/java/message/MessageContextTest.java +++ b/impl/core/src/test/java/message/MessageContextTest.java @@ -36,7 +36,6 @@ */ package message; -import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import javax.inject.Inject; @@ -54,7 +53,6 @@ import br.gov.frameworkdemoiselle.context.RequestContext; import br.gov.frameworkdemoiselle.message.DefaultMessage; import br.gov.frameworkdemoiselle.message.Message; import br.gov.frameworkdemoiselle.message.MessageContext; -import br.gov.frameworkdemoiselle.message.SeverityType; import br.gov.frameworkdemoiselle.util.Beans; @RunWith(Arquillian.class) @@ -77,76 +75,6 @@ public class MessageContextTest { } @Test - @Deprecated - public void testAddMessageWithoutParams() { - RequestContext context = Beans.getReference(RequestContext.class); - - context.activate(); - Message message = new DefaultMessage("Menssage without param"); - DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class); - - messageContext.add(message); - assertEquals(appender.getMessages().size(), 1); - context.deactivate(); - } - - @Test - @Deprecated - public void testAddMessageWithoutParamsIfSeverityIsInfo() { - RequestContext context = Beans.getReference(RequestContext.class); - - context.activate(); - Message message = new DefaultMessage("Menssage without param"); - DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class); - - messageContext.add(message); - assertEquals(appender.getMessages().get(0).getSeverity(), SeverityType.INFO); - context.deactivate(); - } - - @Test - @Deprecated - public void testAddMessageWitSeverityInfo() { - RequestContext context = Beans.getReference(RequestContext.class); - - context.activate(); - Message message = new DefaultMessage("Menssage without param", SeverityType.INFO); - DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class); - - messageContext.add(message); - assertEquals(appender.getMessages().get(0).getSeverity(), SeverityType.INFO); - context.deactivate(); - } - - @Test - @Deprecated - public void testAddMessageWitSeverityWarn() { - RequestContext context = Beans.getReference(RequestContext.class); - - context.activate(); - Message message = new DefaultMessage("Menssage without param", SeverityType.WARN); - DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class); - - messageContext.add(message); - assertEquals(appender.getMessages().get(0).getSeverity(), SeverityType.WARN); - context.deactivate(); - } - - @Test - @Deprecated - public void testAddMessageWitSeverityErro() { - RequestContext context = Beans.getReference(RequestContext.class); - - context.activate(); - Message message = new DefaultMessage("Menssage without param", SeverityType.ERROR); - DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class); - - messageContext.add(message); - assertEquals(appender.getMessages().get(0).getSeverity(), SeverityType.ERROR); - context.deactivate(); - } - - @Test public void testRecoverStringMessageWithParams() { RequestContext context = Beans.getReference(RequestContext.class); @@ -159,20 +87,6 @@ public class MessageContextTest { } @Test - @Deprecated - public void testRecoverMessageWithParams() { - RequestContext context = Beans.getReference(RequestContext.class); - - context.activate(); - Message message = new DefaultMessage("Message with {0} param"); - DummyMessageAppender appender = Beans.getReference(DummyMessageAppender.class); - - messageContext.add(message, 1); - assertTrue(appender.getMessages().get(0).getText().equals("Message with 1 param")); - context.deactivate(); - } - - @Test public void testMessageWithResourceBundle() { bundleCustom = Beans.getReference(MessageWithResourceBundle.class); String expected = "Mensagem sem parâmetro"; -- libgit2 0.21.2