From 588ca76ec8fd5386bfb11baabe81066fcb5a461a Mon Sep 17 00:00:00 2001 From: Cleverson Sacramento Date: Mon, 13 Aug 2012 10:21:39 -0300 Subject: [PATCH] Ajuste no startup e shutdown --- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ShutdownBootstrap.java | 17 +++++++++++++---- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/StartupBootstrap.java | 9 +++++---- 2 files changed, 18 insertions(+), 8 deletions(-) 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 3635bf8..e459ffc 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 @@ -55,6 +55,7 @@ import javax.enterprise.inject.spi.ProcessAnnotatedType; import br.gov.frameworkdemoiselle.DemoiselleException; import br.gov.frameworkdemoiselle.annotation.Shutdown; import br.gov.frameworkdemoiselle.annotation.ViewScoped; +import br.gov.frameworkdemoiselle.internal.configuration.ConfigurationLoader; import br.gov.frameworkdemoiselle.internal.context.CustomContext; import br.gov.frameworkdemoiselle.internal.context.ThreadLocalContext; import br.gov.frameworkdemoiselle.internal.processor.ShutdownProcessor; @@ -128,10 +129,16 @@ public class ShutdownBootstrap extends AbstractBootstrap { ShutdownProcessor processor = iter.next(); try { - processor.process(); + ClassLoader classLoader = ConfigurationLoader.getClassLoaderForClass(processor.getAnnotatedMethod() + .getDeclaringType().getJavaClass().getCanonicalName()); - if (remove) { - iter.remove(); + if (Thread.currentThread().getContextClassLoader().equals(classLoader)) { + + processor.process(); + + if (remove) { + iter.remove(); + } } } catch (Throwable cause) { @@ -139,7 +146,9 @@ public class ShutdownBootstrap extends AbstractBootstrap { } } - unloadTempContexts(); + if (processors.isEmpty()) { + unloadTempContexts(); + } if (failure != null) { throw new DemoiselleException(failure); 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 2d0408f..56cd2f5 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 @@ -56,6 +56,7 @@ import br.gov.frameworkdemoiselle.DemoiselleException; import br.gov.frameworkdemoiselle.annotation.Startup; import br.gov.frameworkdemoiselle.annotation.ViewScoped; import br.gov.frameworkdemoiselle.internal.configuration.ConfigurationLoader; +import br.gov.frameworkdemoiselle.internal.context.CustomContext; import br.gov.frameworkdemoiselle.internal.context.ThreadLocalContext; import br.gov.frameworkdemoiselle.internal.processor.StartupProcessor; @@ -66,7 +67,7 @@ public class StartupBootstrap extends AbstractBootstrap { private static final Class annotationClass = Startup.class; - private static final List tempContexts = new ArrayList(); + private static final List tempContexts = new ArrayList(); @SuppressWarnings("rawtypes") private static final List processors = Collections @@ -97,7 +98,7 @@ public class StartupBootstrap extends AbstractBootstrap { tempContexts.add(new ThreadLocalContext(ConversationScoped.class)); tempContexts.add(new ThreadLocalContext(RequestScoped.class)); - for (ThreadLocalContext tempContext : tempContexts) { + for (CustomContext tempContext : tempContexts) { addContext(tempContext, event); } } @@ -140,7 +141,7 @@ public class StartupBootstrap extends AbstractBootstrap { } } - if (processors.isEmpty()){ + if (processors.isEmpty()) { unloadTempContexts(); } @@ -150,7 +151,7 @@ public class StartupBootstrap extends AbstractBootstrap { } private static void unloadTempContexts() { - for (ThreadLocalContext tempContext : tempContexts) { + for (CustomContext tempContext : tempContexts) { disableContext(tempContext); } } -- libgit2 0.21.2