You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/06/27 10:04:25 UTC

[3/5] git commit: cdi-1.1 Refactoring to make full use of cdi.

cdi-1.1 Refactoring to make full use of cdi.

CdiConfiguration is now built totally on @Inject dependencies.


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8b68cc7a
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8b68cc7a
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8b68cc7a

Branch: refs/heads/master
Commit: 8b68cc7adc92c4518dc2ab53fa42f0338d01661b
Parents: befbf9c
Author: John Sarman <jo...@gmail.com>
Authored: Wed Jun 26 17:04:35 2013 -0400
Committer: John Sarman <jo...@gmail.com>
Committed: Wed Jun 26 17:04:35 2013 -0400

----------------------------------------------------------------------
 .../apache/wicket/cdi/AbstractCdiContainer.java | 57 +-------------
 .../org/apache/wicket/cdi/AbstractInjector.java | 60 +++++++++-----
 .../org/apache/wicket/cdi/AutoConversation.java | 48 -----------
 .../org/apache/wicket/cdi/BehaviorInjector.java | 15 +---
 .../org/apache/wicket/cdi/CdiConfiguration.java | 83 +++++++++++++-------
 .../apache/wicket/cdi/CdiShutdownCleaner.java   |  3 -
 .../apache/wicket/cdi/ComponentInjector.java    | 31 ++------
 .../wicket/cdi/ConversationExpiryChecker.java   |  5 +-
 .../wicket/cdi/ConversationPropagation.java     |  2 +-
 .../apache/wicket/cdi/DetachEventEmitter.java   |  5 +-
 .../java/org/apache/wicket/cdi/IgnoreList.java  | 36 +++++++++
 .../org/apache/wicket/cdi/NonContextual.java    |  2 +-
 .../org/apache/wicket/cdi/SessionInjector.java  | 15 +---
 .../wicket/cdi/weld/WeldCdiContainer.java       | 23 +-----
 14 files changed, 153 insertions(+), 232 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AbstractCdiContainer.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AbstractCdiContainer.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AbstractCdiContainer.java
index 3e302eb..da7ea5e 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AbstractCdiContainer.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AbstractCdiContainer.java
@@ -16,11 +16,7 @@
  */
 package org.apache.wicket.cdi;
 
-import javax.inject.Inject;
 import javax.servlet.http.HttpServletRequest;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.MetaDataKey;
 import org.apache.wicket.Page;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.util.lang.Args;
@@ -32,21 +28,7 @@ import org.apache.wicket.util.lang.Args;
  * 
  */
 public abstract class AbstractCdiContainer
-{
-	private static final MetaDataKey<AbstractCdiContainer> CONTEXT_KEY = new MetaDataKey<AbstractCdiContainer>()
-	{
-		private static final long serialVersionUID = 1L;
-	};
-		
-	/**
-	 * Constructor
-	 * 	
-	 */
-	public AbstractCdiContainer()
-	{
-	}
-
-	protected abstract INonContextualManager getNonContextualManager();
+{		
 	
 	/**
 	 * Deactivates conversational context
@@ -96,41 +78,4 @@ public abstract class AbstractCdiContainer
 		page.getPageParameters().remove(ConversationPropagator.CID_ATTR);
 	}
 
-	/**
-	 * Binds this container instance to the {@link Application}, making it possible to retrieve it
-	 * later
-	 * 
-	 * @param application
-	 */
-	protected void bind(Application application)
-	{
-		application.setMetaData(CONTEXT_KEY, this);
-	}
-
-	/**
-	 * Retrieves container instance stored in the application
-	 * 
-	 * @param application
-	 * @return container instance or {@code null} if none
-	 */
-	public static final AbstractCdiContainer get(Application application)
-	{
-		AbstractCdiContainer ctx = application.getMetaData(CONTEXT_KEY);
-		if (ctx == null)
-		{
-			throw new IllegalStateException("No CDI Context bound to application");
-		}
-		return ctx;
-	}
-
-	/**
-	 * Retrieves container instance stored in the current thread's application
-	 * 
-	 * @return container instance or {@code null} if none
-	 */
-	public static final AbstractCdiContainer get()
-	{
-		return get(Application.get());
-	}
-
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AbstractInjector.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AbstractInjector.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AbstractInjector.java
index 51967d4..63523f4 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AbstractInjector.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AbstractInjector.java
@@ -16,50 +16,68 @@
  */
 package org.apache.wicket.cdi;
 
-import org.apache.wicket.util.lang.Args;
+import java.lang.reflect.Modifier;
+import javax.enterprise.inject.Instance;
+import javax.inject.Inject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Base class for injectors
  * 
  * @author igor
  */
-class AbstractInjector
+class AbstractInjector <T>
 {
-	private final AbstractCdiContainer container;
-	private static final String[] ignoredPackages =new String[]{
-		"org.apache.wicket.markup.html",       
-		"org.apache.wicket.protocol.html",
-		"org.apache.wicket.behavior",    
-	};
+    
+	private static final Logger LOG = LoggerFactory.getLogger(AbstractInjector.class);
 
-	public AbstractInjector(AbstractCdiContainer container)
-	{
-		Args.notNull(container, "container");
-		this.container = container;
-	}
+	@Inject
+	INonContextualManager nonContextualManager;
+
+	@Inject	
+	@IgnoreList
+	Instance<String[]> ignorePackages;
 
-	protected <T> void postConstruct(T instance)
+	protected void postConstruct(T instance)
 	{
-		container.getNonContextualManager().postConstruct(instance);
+		if(!ignore(instance.getClass()))
+		{
+			nonContextualManager.postConstruct(instance);
+		}
 	}
 
-	protected <T> void inject(T instance)
+	protected void inject(T instance)
 	{
-		if(!ignore(instance.getClass())) {
-			container.getNonContextualManager().inject(instance);
+		
+		if(!ignore(instance.getClass()))
+		{
+			nonContextualManager.inject(instance);
 		}
 	}
         
-	private static boolean ignore(Class clazz)
+        
+	private boolean ignore(Class instanceClass)
 	{
-		String packageName = clazz.getName();
-		for(String ignore:ignoredPackages)
+		if (instanceClass.isAnonymousClass() ||
+				(instanceClass.isMemberClass() && Modifier.isStatic(instanceClass.getModifiers()) == false))
+		{
+			LOG.debug("Skipping non-static inner class '{}' ", instanceClass);
+                        return true;
+		}
+		
+		String packageName = instanceClass.getPackage().getName();
+		for(String ignore:ignorePackages.get())
 		{
 			if(packageName.contains(ignore))
 			{
+				LOG.debug("Skipping {} which is in a package to ignore {}",instanceClass,packageName);	
 				return true;
 			}
 		}           
+                        
 		return false;
+		
 	}
+
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AutoConversation.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AutoConversation.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AutoConversation.java
deleted file mode 100644
index 4d21530..0000000
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/AutoConversation.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.cdi;
-
-import javax.enterprise.context.ConversationScoped;
-import org.apache.wicket.util.io.IClusterable;
-
-/**
- * A bean that can be used to override whether the lifecycle of the conversation should be managed
- * automatically or not. See {@link CdiConfiguration#setAutoConversationManagement(boolean)} for
- * details.
- * 
- * @author igor
- */
-@ConversationScoped
-public class AutoConversation implements IClusterable
-{
-	private boolean automatic;
-
-	public AutoConversation()
-	{
-		automatic = false;
-	}
-
-	public void setAutomatic(boolean automatic)
-	{
-		this.automatic = automatic;
-	}
-
-	public boolean isAutomatic()
-	{
-		return automatic;
-	}
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/BehaviorInjector.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/BehaviorInjector.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/BehaviorInjector.java
index 53f0f58..372e74d 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/BehaviorInjector.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/BehaviorInjector.java
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.cdi;
 
+import javax.enterprise.context.ApplicationScoped;
 import org.apache.wicket.IBehaviorInstantiationListener;
 import org.apache.wicket.behavior.Behavior;
 
@@ -25,18 +26,10 @@ import org.apache.wicket.behavior.Behavior;
  * @author igor
  * 
  */
-class BehaviorInjector extends AbstractInjector implements IBehaviorInstantiationListener
+@ApplicationScoped
+class BehaviorInjector extends AbstractInjector<Behavior> implements IBehaviorInstantiationListener
 {
-	/**
-	 * Constructor
-	 * 
-	 * @param container
-	 */
-	public BehaviorInjector(AbstractCdiContainer container)
-	{
-		super(container);
-	}
-
+	
 	@Override
 	public void onInstantiation(Behavior behavior)
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/CdiConfiguration.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/CdiConfiguration.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/CdiConfiguration.java
index 56d7dd0..96371c1 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/CdiConfiguration.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/CdiConfiguration.java
@@ -16,7 +16,11 @@
  */
 package org.apache.wicket.cdi;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Iterator;
+import java.util.List;
+import javax.annotation.PostConstruct;
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.Instance;
@@ -25,7 +29,6 @@ import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.CDI;
 import javax.inject.Inject;
-import javax.inject.Named;
 
 import org.apache.wicket.Application;
 import org.apache.wicket.request.cycle.RequestCycleListenerCollection;
@@ -39,6 +42,12 @@ import org.apache.wicket.request.cycle.RequestCycleListenerCollection;
 @ApplicationScoped
 public class CdiConfiguration
 {
+	private static final String[] defaultIgnoredPackages = new String[]
+	{
+		"org.apache.wicket.markup",       
+		"org.apache.wicket.protocol.http",
+		"org.apache.wicket.behavior",
+	};
     
 	private IConversationPropagation propagation = ConversationPropagation.NONBOOKMARKABLE;
 
@@ -49,9 +58,6 @@ public class CdiConfiguration
 	INonContextualManager nonContextualManager;
 
 	@Inject
-	AbstractCdiContainer container;
-
-	@Inject
 	Instance<ConversationPropagator> conversationPropagatorSource;
 
 	@Inject
@@ -59,22 +65,31 @@ public class CdiConfiguration
 
 	@Inject
 	Instance<DetachEventEmitter> detachEventEmitterSource;
+        
+	@Inject
+	BehaviorInjector behaviorInjector;
+
+	@Inject
+	ComponentInjector componentInjector;
+
+	@Inject
+	SessionInjector sessionInjector;
 	
 	private boolean injectComponents = true;
 	private boolean injectApplication = true;
 	private boolean injectSession = true;
 	private boolean injectBehaviors = true;
 	private boolean autoConversationManagement = false;
+	private boolean configured = false;
+	private List<String> ignoredPackages;
 
-	/**
-	 * Constructor
-	 * 
-	 * @param beanManager
-	 */
-	public CdiConfiguration()
-	{				
+	@PostConstruct
+	public void init()
+	{
+		ignoredPackages = new ArrayList<>();
+		ignoredPackages.addAll(Arrays.asList(defaultIgnoredPackages));
 	}
-
+        
 	/**
 	 * Gets the configured bean manager
 	 * 
@@ -94,7 +109,7 @@ public class CdiConfiguration
 	 * Checks if auto conversation management is enabled. See
 	 * {@link #setAutoConversationManagement(boolean)} for details.
 	 */
-	public @Produces @Auto boolean isAutoConversationManagement()
+	public @Produces @Auto Boolean isAutoConversationManagement()
 	{
 		return autoConversationManagement;
 	}
@@ -133,12 +148,7 @@ public class CdiConfiguration
 		return nonContextualManager;
 	}
 
-	public CdiConfiguration setNonContextualManager(INonContextualManager nonContextualManager)
-	{
-		this.nonContextualManager = nonContextualManager;
-		return this;
-	}
-
+	
 	public boolean isInjectComponents()
 	{
 		return injectComponents;
@@ -183,17 +193,35 @@ public class CdiConfiguration
 		return this;
 	}
 
+	public @Produces @IgnoreList String[] getPackagesToIgnore()
+	{
+		String[] ignore = new String[ignoredPackages.size()];
+		return ignoredPackages.toArray(ignore);
+	}
+
+	public void addPackageToIgnore(String packageName )
+	{
+		ignoredPackages.add(packageName);
+	}
+
+	public void removePackageToIgnore(String packageName)
+	{
+		ignoredPackages.remove(packageName);
+	}
+
 	/**
 	 * Configures the specified application
 	 * 
 	 * @param application
 	 * @return
 	 */
-	public AbstractCdiContainer configure(Application application)
+	public synchronized void configure(Application application)
 	{		
+		if(configured)
+		{
+			throw new IllegalStateException("Cannot configure CdiConfiguration multiple times");
+		}
 		
-		container.bind(application);
-
 		RequestCycleListenerCollection listeners = new RequestCycleListenerCollection();
 		application.getRequestCycleListeners().add(listeners);
 
@@ -212,24 +240,24 @@ public class CdiConfiguration
 		// inject application instance
 		if (isInjectApplication())
 		{
-			container.getNonContextualManager().postConstruct(application);
+			nonContextualManager.postConstruct(application);
 		}
 
 		// enable injection of various framework components
 
 		if (isInjectSession())
 		{
-			application.getSessionListeners().add(new SessionInjector(container));
+			application.getSessionListeners().add(sessionInjector);
 		}
 
 		if (isInjectComponents())
 		{
-			application.getComponentInstantiationListeners().add(new ComponentInjector(container));
+			application.getComponentInstantiationListeners().add(componentInjector);
 		}
 
 		if (isInjectBehaviors())
 		{
-			application.getBehaviorInstantiationListeners().add(new BehaviorInjector(container));
+			application.getBehaviorInstantiationListeners().add(behaviorInjector);
 		}
 
 		// enable cleanup
@@ -237,7 +265,8 @@ public class CdiConfiguration
 		application.getApplicationListeners().add(
 			new CdiShutdownCleaner(isInjectApplication()));
 
-		return container;
+		configured = true;
+
 	}
         
 	public static CdiConfiguration get()

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/CdiShutdownCleaner.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/CdiShutdownCleaner.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/CdiShutdownCleaner.java
index 98a6e92..38c5351 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/CdiShutdownCleaner.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/CdiShutdownCleaner.java
@@ -16,11 +16,8 @@
  */
 package org.apache.wicket.cdi;
 
-import javax.enterprise.inject.spi.BeanManager;
-
 import org.apache.wicket.Application;
 import org.apache.wicket.IApplicationListener;
-import org.apache.wicket.util.lang.Args;
 
 /**
  * Listens to application shutdown and cleans up

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ComponentInjector.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ComponentInjector.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ComponentInjector.java
index ce4eee2..3b284b9 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ComponentInjector.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ComponentInjector.java
@@ -17,7 +17,8 @@
 package org.apache.wicket.cdi;
 
 import java.lang.reflect.Modifier;
-
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
 import org.apache.wicket.Component;
 import org.apache.wicket.application.IComponentInstantiationListener;
 import org.slf4j.Logger;
@@ -29,33 +30,13 @@ import org.slf4j.LoggerFactory;
  * @author igor
  * 
  */
-class ComponentInjector extends AbstractInjector implements IComponentInstantiationListener
+@ApplicationScoped
+class ComponentInjector extends AbstractInjector<Component> implements IComponentInstantiationListener
 {
-	private static final Logger LOG = LoggerFactory.getLogger(ComponentInjector.class);
-
-	/**
-	 * Constructor
-	 * 
-	 * @param container
-	 */
-	public ComponentInjector(AbstractCdiContainer container)
-	{
-		super(container);
-	}
 
 	@Override
 	public void onInstantiation(Component component)
-	{
-		Class<? extends Component> componentClass = component.getClass();
-
-		if (componentClass.isAnonymousClass() ||
-				(componentClass.isMemberClass() && Modifier.isStatic(componentClass.getModifiers()) == false))
-		{
-			LOG.debug("Skipping non-static inner class '{}' ", componentClass);
-		}
-		else
-		{
-			inject(component);
-		}
+	{		
+			inject(component);		
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ConversationExpiryChecker.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ConversationExpiryChecker.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ConversationExpiryChecker.java
index aff4627..b8c7871 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ConversationExpiryChecker.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ConversationExpiryChecker.java
@@ -19,6 +19,7 @@ package org.apache.wicket.cdi;
 import java.io.Serializable;
 import javax.enterprise.context.Conversation;
 import javax.enterprise.context.ConversationScoped;
+import javax.enterprise.inject.Instance;
 import javax.inject.Inject;
 
 import org.apache.wicket.Component;
@@ -47,7 +48,7 @@ public class ConversationExpiryChecker implements IComponentOnBeforeRenderListen
 	private static final Logger logger = LoggerFactory.getLogger(ConversationExpiryChecker.class);
 	
 	@Inject 
-	AbstractCdiContainer  container;
+	Instance<AbstractCdiContainer>  containerSource;
 
 	@Inject
 	private Conversation conversation;
@@ -63,7 +64,7 @@ public class ConversationExpiryChecker implements IComponentOnBeforeRenderListen
 		if (component instanceof Page || RequestCycle.get().find(AjaxRequestTarget.class) != null)
 		{
 			Page page = component.getPage();
-			String cid = container.getConversationMarker(page);
+			String cid = containerSource.get().getConversationMarker(page);
 			if (cid != null && !Objects.isEqual(conversation.getId(), cid))
 			{
 				logger.info("Conversation {} has expired for {}", cid, page);

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ConversationPropagation.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ConversationPropagation.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ConversationPropagation.java
index e937506..e9ef296 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ConversationPropagation.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/ConversationPropagation.java
@@ -43,7 +43,7 @@ public enum ConversationPropagation implements IConversationPropagation {
 		}
 	},
 	/**
-	 * Pesistent conversations are propagated between non-bookmarkable pages only
+	 * Persistent conversations are propagated between non-bookmarkable pages only
 	 */
 	NONBOOKMARKABLE {
 		@Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/DetachEventEmitter.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/DetachEventEmitter.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/DetachEventEmitter.java
index e60ec2e..6e6a957 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/DetachEventEmitter.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/DetachEventEmitter.java
@@ -20,7 +20,6 @@ import java.io.Serializable;
 import javax.enterprise.context.SessionScoped;
 import javax.enterprise.event.Event;
 import javax.inject.Inject;
-
 import org.apache.wicket.MetaDataKey;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.cycle.AbstractRequestCycleListener;
@@ -46,9 +45,7 @@ public class DetachEventEmitter extends AbstractRequestCycleListener implements
 
 	@Inject
 	Event<DetachEvent> detachEvent;
-
-	@Inject
-	AbstractCdiContainer container;
+	
 	/**
 	 * Constructor
 	 * 

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/IgnoreList.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/IgnoreList.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/IgnoreList.java
new file mode 100644
index 0000000..d45f099
--- /dev/null
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/IgnoreList.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.cdi;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.inject.Qualifier;
+
+/**
+ * Qualifier for injecting the Ignore Package List 
+ * 
+ * @author jsarman
+ */
+@Qualifier
+@Target( { ElementType.TYPE,ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface IgnoreList 
+{
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/NonContextual.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/NonContextual.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/NonContextual.java
index 135075a..1bae109 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/NonContextual.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/NonContextual.java
@@ -35,7 +35,7 @@ import org.apache.wicket.util.collections.ClassMetaCache;
  * 
  * @param <T>
  */
-public class NonContextual<T>
+public class NonContextual <T>
 {
 	private static final Object lock = new Object();
 	private static volatile Map<BeanManager, ClassMetaCache<NonContextual<?>>> cache = Collections.emptyMap();

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/SessionInjector.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/SessionInjector.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/SessionInjector.java
index 2b75baf..a0a8169 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/SessionInjector.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-core/src/main/java/org/apache/wicket/cdi/SessionInjector.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.cdi;
 
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
 import org.apache.wicket.ISessionListener;
 import org.apache.wicket.Session;
 
@@ -25,18 +27,9 @@ import org.apache.wicket.Session;
  * @author igor
  * 
  */
-class SessionInjector extends AbstractInjector implements ISessionListener
+@ApplicationScoped
+class SessionInjector extends AbstractInjector<Session> implements ISessionListener
 {
-	/**
-	 * Constructor
-	 * 
-	 * @param container
-	 */
-	public SessionInjector(AbstractCdiContainer container)
-	{
-		super(container);
-	}
-
 	@Override
 	public void onCreated(Session session)
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b68cc7a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-weld/src/main/java/org/apache/wicket/cdi/weld/WeldCdiContainer.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-weld/src/main/java/org/apache/wicket/cdi/weld/WeldCdiContainer.java b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-weld/src/main/java/org/apache/wicket/cdi/weld/WeldCdiContainer.java
index e290847..b186ca9 100644
--- a/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-weld/src/main/java/org/apache/wicket/cdi/weld/WeldCdiContainer.java
+++ b/wicket-experimental/wicket-cdi-1.1/wicket-cdi-1.1-weld/src/main/java/org/apache/wicket/cdi/weld/WeldCdiContainer.java
@@ -17,9 +17,9 @@
 package org.apache.wicket.cdi.weld;
 
 import javax.enterprise.context.ApplicationScoped;
-import org.apache.wicket.cdi.*;
 import javax.enterprise.inject.Instance;
 import javax.inject.Inject;
+import org.apache.wicket.cdi.AbstractCdiContainer;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.jboss.weld.context.http.HttpConversationContext;
 
@@ -35,23 +35,6 @@ public class WeldCdiContainer extends AbstractCdiContainer
 	@Inject 
 	Instance<HttpConversationContext> conversationContextSource;
        
-	@Inject
-	INonContextualManager nonContextualManager;
-	
-	/**
-	 * Constructor	 	 
-	 */
-	public WeldCdiContainer()
-	{
-
-	}
-
-	@Override
-	protected INonContextualManager getNonContextualManager()
-	{
-		return nonContextualManager;
-	}
-
 	/**
 	 * Deactivates conversational context
 	 * 
@@ -74,10 +57,6 @@ public class WeldCdiContainer extends AbstractCdiContainer
 	@Override
 	public void activateConversationalContext(RequestCycle cycle, String cid)
 	{
-		// Force a session created if one does not exist 
-		// Glassfish does not have a session initially to store the transactions
-		// so it gets lost in the request.              
-		getRequest(cycle).getSession(true);
 		HttpConversationContext conversationContext = conversationContextSource.get();               
 		conversationContext.associate(getRequest(cycle)); 
 		if(conversationContext.isActive())