diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ShutdownBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ShutdownBootstrap.java index a7c2276..4713d92 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ShutdownBootstrap.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ShutdownBootstrap.java @@ -49,7 +49,6 @@ import javax.enterprise.inject.spi.AfterBeanDiscovery; import javax.enterprise.inject.spi.AnnotatedMethod; import javax.enterprise.inject.spi.AnnotatedType; import javax.enterprise.inject.spi.BeanManager; -import javax.enterprise.inject.spi.BeforeShutdown; import javax.enterprise.inject.spi.ProcessAnnotatedType; import br.gov.frameworkdemoiselle.annotation.Shutdown; @@ -115,7 +114,7 @@ public class ShutdownBootstrap extends AbstractBootstrap { * @throws Exception */ @SuppressWarnings("unchecked") - public static void shuttingDown(@Observes final BeforeShutdown event) throws Throwable { + public static void shutdown() throws Throwable { loadTempContexts(ShutdownBootstrap.event); getLogger().debug( 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 0e0e256..b319408 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 @@ -46,7 +46,6 @@ import javax.enterprise.context.RequestScoped; import javax.enterprise.context.SessionScoped; import javax.enterprise.event.Observes; import javax.enterprise.inject.spi.AfterBeanDiscovery; -import javax.enterprise.inject.spi.AfterDeploymentValidation; import javax.enterprise.inject.spi.AnnotatedMethod; import javax.enterprise.inject.spi.AnnotatedType; import javax.enterprise.inject.spi.BeanManager; @@ -64,7 +63,7 @@ public class StartupBootstrap extends AbstractBootstrap { private static final Class annotationClass = Startup.class; - private final List tempContexts = new ArrayList(); + private static final List tempContexts = new ArrayList(); @SuppressWarnings("rawtypes") private static final List processors = Collections @@ -89,13 +88,13 @@ public class StartupBootstrap extends AbstractBootstrap { } public void loadTempContexts(@Observes final AfterBeanDiscovery event) { - //Não registrar o contexto de aplicação pq ele já é registrado pela implementação do CDI - this.tempContexts.add(new ThreadLocalContext(ViewScoped.class)); - this.tempContexts.add(new ThreadLocalContext(SessionScoped.class)); - this.tempContexts.add(new ThreadLocalContext(ConversationScoped.class)); - this.tempContexts.add(new ThreadLocalContext(RequestScoped.class)); + // Não registrar o contexto de aplicação pq ele já é registrado pela implementação do CDI + tempContexts.add(new ThreadLocalContext(ViewScoped.class)); + tempContexts.add(new ThreadLocalContext(SessionScoped.class)); + tempContexts.add(new ThreadLocalContext(ConversationScoped.class)); + tempContexts.add(new ThreadLocalContext(RequestScoped.class)); - for (ThreadLocalContext tempContext : this.tempContexts) { + for (ThreadLocalContext tempContext : tempContexts) { addContext(tempContext, event); } } @@ -108,7 +107,7 @@ public class StartupBootstrap extends AbstractBootstrap { * @throws StartupException */ @SuppressWarnings("unchecked") - public void startup(@Observes final AfterDeploymentValidation event) throws Throwable { + public static void startup() throws Throwable { getLogger().debug( getBundle("demoiselle-core-bundle").getString("executing-all", annotationClass.getSimpleName())); Collections.sort(processors); @@ -116,12 +115,13 @@ public class StartupBootstrap extends AbstractBootstrap { for (StartupProcessor action : processors) { action.process(); } + processors.clear(); unloadTempContexts(); } - private void unloadTempContexts() { - for (ThreadLocalContext tempContext : this.tempContexts) { + private static void unloadTempContexts() { + for (ThreadLocalContext tempContext : tempContexts) { disableContext(tempContext); } } diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducer.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducer.java index 06186a9..1ffb03f 100644 --- a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducer.java +++ b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/producer/JsfLocaleProducer.java @@ -21,7 +21,6 @@ package br.gov.frameworkdemoiselle.internal.producer; import java.io.Serializable; import java.util.Locale; -import javax.enterprise.context.ContextNotActiveException; import javax.enterprise.context.RequestScoped; import javax.enterprise.inject.Alternative; import javax.enterprise.inject.Default; diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/util/DemoiselleServletContextListener.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/util/DemoiselleServletContextListener.java new file mode 100644 index 0000000..a7e43b7 --- /dev/null +++ b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/util/DemoiselleServletContextListener.java @@ -0,0 +1,31 @@ +package br.gov.frameworkdemoiselle.util; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +import br.gov.frameworkdemoiselle.DemoiselleException; +import br.gov.frameworkdemoiselle.internal.bootstrap.ShutdownBootstrap; +import br.gov.frameworkdemoiselle.internal.bootstrap.StartupBootstrap; + +public class DemoiselleServletContextListener implements ServletContextListener { + + @Override + public void contextInitialized(ServletContextEvent event) { + try { + StartupBootstrap.startup(); + + } catch (Throwable cause) { + throw new DemoiselleException(cause); + } + } + + @Override + public void contextDestroyed(ServletContextEvent event) { + try { + ShutdownBootstrap.shutdown(); + + } catch (Throwable cause) { + throw new DemoiselleException(cause); + } + } +} diff --git a/impl/extension/jsf/src/main/resources/META-INF/web-fragment.xml b/impl/extension/jsf/src/main/resources/META-INF/web-fragment.xml new file mode 100644 index 0000000..2fed417 --- /dev/null +++ b/impl/extension/jsf/src/main/resources/META-INF/web-fragment.xml @@ -0,0 +1,7 @@ + + + + br.gov.frameworkdemoiselle.util.DemoiselleServletContextListener + + + \ No newline at end of file -- libgit2 0.21.2