diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/Configuration.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/Configuration.java
index e08e487..5ba46d7 100644
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/Configuration.java
+++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/Configuration.java
@@ -46,6 +46,8 @@ import java.lang.annotation.Target;
import javax.enterprise.inject.Stereotype;
import javax.enterprise.util.Nonbinding;
+import br.gov.frameworkdemoiselle.annotation.StaticScoped;
+
/**
* Identifies a configuration class, that is, a structure reserved to store configuration values retrieved from a
* given resource file or system variables.
@@ -63,7 +65,7 @@ import javax.enterprise.util.Nonbinding;
*/
@Inherited
@Stereotype
-// @StaticScoped
+@StaticScoped
@Target(TYPE)
@Retention(RUNTIME)
public @interface Configuration {
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CoreBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CoreBootstrap.java
index 15b4638..c4b5754 100644
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CoreBootstrap.java
+++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/CoreBootstrap.java
@@ -36,6 +36,8 @@
*/
package br.gov.frameworkdemoiselle.internal.bootstrap;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Locale;
import javax.enterprise.event.Observes;
@@ -49,6 +51,7 @@ import javax.enterprise.inject.spi.Extension;
import org.slf4j.Logger;
import br.gov.frameworkdemoiselle.internal.context.Contexts;
+import br.gov.frameworkdemoiselle.internal.context.CustomContext;
import br.gov.frameworkdemoiselle.internal.context.StaticContext;
import br.gov.frameworkdemoiselle.internal.producer.LoggerProducer;
import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
@@ -61,7 +64,9 @@ public class CoreBootstrap implements Extension {
private ResourceBundle bundle;
- private AfterBeanDiscovery afterBeanDiscovery;
+ private AfterBeanDiscovery afterBeanDiscoveryEvent;
+
+ private List customContexts = new ArrayList();
private Logger getLogger() {
if (this.logger == null) {
@@ -86,17 +91,24 @@ public class CoreBootstrap implements Extension {
getLogger().info(getBundle().getString("setting-up-bean-manager", Beans.class.getCanonicalName()));
}
- public void afterBeanDiscovery(@Observes final AfterBeanDiscovery event) {
- this.afterBeanDiscovery = event;
+ public void storeContexts(@Observes final AfterBeanDiscovery event) {
+ this.customContexts.add(new StaticContext());
+ this.afterBeanDiscoveryEvent = event;
}
public void takeOff(@Observes final AfterDeploymentValidation event) {
- Contexts.add(new StaticContext(), this.afterBeanDiscovery);
+ for (CustomContext tempContext : this.customContexts) {
+ Contexts.add(tempContext, this.afterBeanDiscoveryEvent);
+ }
getLogger().info(getBundle().getString("taking-off"));
}
public void engineOff(@Observes final BeforeShutdown event) {
+ for (CustomContext tempContext : this.customContexts) {
+ Contexts.remove(tempContext);
+ }
+
getLogger().info(getBundle().getString("engine-off"));
}
}
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 c0c445d..1032a9b 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
@@ -42,12 +42,11 @@ import java.util.HashMap;
import java.util.Map;
import javax.enterprise.context.ContextNotActiveException;
-import javax.enterprise.context.spi.Context;
import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
-public abstract class AbstractCustomContext implements Context {
+public abstract class AbstractCustomContext implements CustomContext {
private boolean active;
@@ -96,7 +95,7 @@ public abstract class AbstractCustomContext implements Context {
return this.active;
}
- public void setActive(final boolean active) {
+ public void setActive(boolean active) {
this.active = active;
}
@@ -105,41 +104,27 @@ public abstract class AbstractCustomContext implements Context {
return this.scope;
}
- // static class Store {
- //
- // private Map, Object> cache = Collections.synchronizedMap(new HashMap, Object>());
- //
- // public boolean contains(final Class> type) {
- // return this.getMap().containsKey(type);
- // }
- //
- // public Object get(final Class> type) {
- // return this.getMap().get(type);
- // }
- //
- // public void put(final Class> type, final Object instance) {
- // this.getMap().put(type, instance);
- // }
- //
- // private Map, Object> getMap() {
- // return cache;
- // }
- // }
+ protected static Store createStore() {
+ return new Store();
+ }
static class Store {
private Map, Object>> cache = Collections
.synchronizedMap(new HashMap, Object>>());
- public boolean contains(final Class> type) {
+ private Store() {
+ }
+
+ private boolean contains(final Class> type) {
return this.getMap().containsKey(type);
}
- public Object get(final Class> type) {
+ private Object get(final Class> type) {
return this.getMap().get(type);
}
- public void put(final Class> type, final Object instance) {
+ private void put(final Class> type, final Object instance) {
this.getMap().put(type, instance);
}
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/Contexts.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/Contexts.java
index f2e58f9..0dcb1f7 100644
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/Contexts.java
+++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/Contexts.java
@@ -52,9 +52,9 @@ import br.gov.frameworkdemoiselle.util.ResourceBundle;
public final class Contexts {
- private static List activeContexts = Collections.synchronizedList(new ArrayList());
+ private static List activeContexts = Collections.synchronizedList(new ArrayList());
- private static List inactiveContexts = Collections.synchronizedList(new ArrayList());
+ private static List inactiveContexts = Collections.synchronizedList(new ArrayList());
private static Logger logger;
@@ -79,7 +79,7 @@ public final class Contexts {
return bundle;
}
- public static synchronized void add(AbstractCustomContext context, AfterBeanDiscovery event) {
+ public static synchronized void add(CustomContext context, AfterBeanDiscovery event) {
Class extends Annotation> scope = context.getScope();
getLogger()
@@ -99,10 +99,10 @@ public final class Contexts {
}
}
- private static AbstractCustomContext get(Class extends Annotation> scope, List contexts) {
- AbstractCustomContext result = null;
+ private static CustomContext get(Class extends Annotation> scope, List contexts) {
+ CustomContext result = null;
- for (AbstractCustomContext context : contexts) {
+ for (CustomContext context : contexts) {
if (scope.equals(context.getScope())) {
result = context;
break;
@@ -112,7 +112,7 @@ public final class Contexts {
return result;
}
- public static synchronized void remove(AbstractCustomContext context) {
+ public static synchronized void remove(CustomContext context) {
getLogger().trace(
getBundle().getString("custom-context-was-unregistered", context.getScope().getCanonicalName()));
@@ -120,7 +120,7 @@ public final class Contexts {
activeContexts.remove(context);
context.setActive(false);
- AbstractCustomContext inactive = get(context.getScope(), inactiveContexts);
+ CustomContext inactive = get(context.getScope(), inactiveContexts);
if (inactive != null) {
activeContexts.add(inactive);
inactive.setActive(true);
@@ -133,8 +133,8 @@ public final class Contexts {
}
public static synchronized void clear() {
- AbstractCustomContext context;
- for (Iterator iter = activeContexts.iterator(); iter.hasNext();) {
+ CustomContext context;
+ for (Iterator iter = activeContexts.iterator(); iter.hasNext();) {
context = iter.next();
context.setActive(false);
iter.remove();
@@ -144,11 +144,11 @@ public final class Contexts {
inactiveContexts.clear();
}
- public static synchronized List getActiveContexts() {
+ public static synchronized List getActiveContexts() {
return activeContexts;
}
- public static synchronized List getInactiveContexts() {
+ public static synchronized List getInactiveContexts() {
return inactiveContexts;
}
}
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/CustomContext.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/CustomContext.java
new file mode 100644
index 0000000..f1528eb
--- /dev/null
+++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/CustomContext.java
@@ -0,0 +1,9 @@
+package br.gov.frameworkdemoiselle.internal.context;
+
+import javax.enterprise.context.spi.Context;
+
+public interface CustomContext extends Context {
+
+ void setActive(boolean active);
+
+}
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/StaticContext.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/StaticContext.java
index 61653b7..e5cd9bd 100644
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/StaticContext.java
+++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/StaticContext.java
@@ -52,7 +52,7 @@ import br.gov.frameworkdemoiselle.annotation.StaticScoped;
public class StaticContext extends AbstractCustomContext {
- private final static Store store = new Store();
+ private final static Store store = createStore();
public StaticContext() {
super(StaticScoped.class, true);
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/ThreadLocalContext.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/ThreadLocalContext.java
index 287ee21..f11c17a 100644
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/ThreadLocalContext.java
+++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/ThreadLocalContext.java
@@ -65,7 +65,7 @@ public class ThreadLocalContext extends AbstractCustomContext {
@Override
protected Store getStore() {
if (this.threadLocal.get() == null) {
- this.threadLocal.set(new Store());
+ this.threadLocal.set(createStore());
}
return this.threadLocal.get();
diff --git a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/basic/ConfigurationBasicFieldTest.java b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/basic/ConfigurationBasicFieldTest.java
index 9f8699e..59c5421 100644
--- a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/basic/ConfigurationBasicFieldTest.java
+++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/basic/ConfigurationBasicFieldTest.java
@@ -46,6 +46,7 @@ import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.asset.FileAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -77,10 +78,17 @@ public class ConfigurationBasicFieldTest extends AbstractConfigurationTest {
return deployment;
}
+ @BeforeClass
+ public static void afterClass() {
+ System.setProperty("primitiveInteger", String.valueOf(1));
+ System.setProperty("wrappedInteger", String.valueOf(2));
+ System.setProperty("stringWithSpace", String.valueOf("demoiselle framework"));
+ System.setProperty("stringWithComma", String.valueOf("demoiselle,framework"));
+ }
+
@Test
public void loadPrimitiveInteger() {
int expected = 1;
- System.setProperty("primitiveInteger", String.valueOf(expected));
assertEquals(expected, systemConfig.getPrimitiveInteger());
assertEquals(expected, propertiesConfig.getPrimitiveInteger());
@@ -90,7 +98,6 @@ public class ConfigurationBasicFieldTest extends AbstractConfigurationTest {
@Test
public void loadWrappedInteger() {
Integer expected = 2;
- System.setProperty("wrappedInteger", String.valueOf(expected));
assertEquals(expected, systemConfig.getWrappedInteger());
assertEquals(expected, propertiesConfig.getWrappedInteger());
@@ -100,7 +107,6 @@ public class ConfigurationBasicFieldTest extends AbstractConfigurationTest {
@Test
public void loadStringWithSpace() {
String expected = "demoiselle framework";
- System.setProperty("stringWithSpace", String.valueOf(expected));
assertEquals(expected, systemConfig.getStringWithSpace());
assertEquals(expected, propertiesConfig.getStringWithSpace());
@@ -110,7 +116,6 @@ public class ConfigurationBasicFieldTest extends AbstractConfigurationTest {
// @Test
public void loadStringWithComma() {
String expected = "demoiselle,framework";
- System.setProperty("stringWithComma", String.valueOf(expected));
assertEquals(expected, systemConfig.getStringWithComma());
assertEquals(expected, propertiesConfig.getStringWithComma());
diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java
index 6da919c..a7fde83 100644
--- a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java
+++ b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/JsfBootstrap.java
@@ -44,30 +44,30 @@ import javax.enterprise.inject.spi.AfterBeanDiscovery;
import javax.enterprise.inject.spi.AfterDeploymentValidation;
import javax.enterprise.inject.spi.Extension;
-import br.gov.frameworkdemoiselle.internal.context.AbstractCustomContext;
import br.gov.frameworkdemoiselle.internal.context.Contexts;
+import br.gov.frameworkdemoiselle.internal.context.CustomContext;
import br.gov.frameworkdemoiselle.internal.context.ViewContext;
import br.gov.frameworkdemoiselle.lifecycle.AfterShutdownProccess;
public class JsfBootstrap implements Extension {
- private List tempContexts = new ArrayList();
+ private List customContexts = new ArrayList();
private AfterBeanDiscovery afterBeanDiscoveryEvent;
public void storeContexts(@Observes final AfterBeanDiscovery event) {
- this.tempContexts.add(new ViewContext());
+ this.customContexts.add(new ViewContext());
this.afterBeanDiscoveryEvent = event;
}
public void addContexts(@Observes final AfterDeploymentValidation event) {
- for (AbstractCustomContext tempContext : this.tempContexts) {
+ for (CustomContext tempContext : this.customContexts) {
Contexts.add(tempContext, this.afterBeanDiscoveryEvent);
}
}
public void removeContexts(@Observes AfterShutdownProccess event) {
- for (AbstractCustomContext tempContext : this.tempContexts) {
+ for (CustomContext tempContext : this.customContexts) {
Contexts.remove(tempContext);
}
}
diff --git a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/context/ViewContext.java b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/context/ViewContext.java
index c1e5a46..4ad5c6f 100644
--- a/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/context/ViewContext.java
+++ b/impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/context/ViewContext.java
@@ -53,7 +53,7 @@ public class ViewContext extends AbstractCustomContext {
String key = Store.class.getName();
if (!viewMap.containsKey(key)) {
- viewMap.put(key, new Store());
+ viewMap.put(key, createStore());
}
return (Store) viewMap.get(key);
diff --git a/impl/extension/se/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/SeBootstrap.java b/impl/extension/se/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/SeBootstrap.java
index 0303390..5e860c4 100644
--- a/impl/extension/se/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/SeBootstrap.java
+++ b/impl/extension/se/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/SeBootstrap.java
@@ -49,13 +49,13 @@ import javax.enterprise.inject.spi.Extension;
import br.gov.frameworkdemoiselle.annotation.ViewScoped;
import br.gov.frameworkdemoiselle.internal.context.Contexts;
-import br.gov.frameworkdemoiselle.internal.context.AbstractCustomContext;
+import br.gov.frameworkdemoiselle.internal.context.CustomContext;
import br.gov.frameworkdemoiselle.internal.context.ThreadLocalContext;
import br.gov.frameworkdemoiselle.lifecycle.AfterShutdownProccess;
public class SeBootstrap implements Extension {
- private List tempContexts = new ArrayList();
+ private List tempContexts = new ArrayList();
private AfterBeanDiscovery afterBeanDiscoveryEvent;
@@ -69,13 +69,13 @@ public class SeBootstrap implements Extension {
}
public void addContexts(@Observes final AfterDeploymentValidation event) {
- for (AbstractCustomContext tempContext : this.tempContexts) {
+ for (CustomContext tempContext : this.tempContexts) {
Contexts.add(tempContext, this.afterBeanDiscoveryEvent);
}
}
public void removeContexts(@Observes AfterShutdownProccess event) {
- for (AbstractCustomContext tempContext : this.tempContexts) {
+ for (CustomContext tempContext : this.tempContexts) {
Contexts.remove(tempContext);
}
}
--
libgit2 0.21.2