You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by st...@apache.org on 2011/08/30 19:40:17 UTC
svn commit: r1163305 -
/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfWindowContext.java
Author: struberg
Date: Tue Aug 30 17:40:16 2011
New Revision: 1163305
URL: http://svn.apache.org/viewvc?rev=1163305&view=rev
Log:
EXTCDI-220 destroy beans when they are removed from conversation subgroups
Modified:
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfWindowContext.java
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfWindowContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfWindowContext.java?rev=1163305&r1=1163304&r2=1163305&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfWindowContext.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfWindowContext.java Tue Aug 30 17:40:16 2011
@@ -23,6 +23,7 @@ import org.apache.myfaces.extensions.cdi
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.config.WindowContextConfig;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.config.ConversationConfig;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.event.CloseWindowContextEvent;
+import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.BeanEntry;
import org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils;
import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.ConversationFactory;
import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.ConversationKey;
@@ -296,11 +297,16 @@ class JsfWindowContext implements Editab
List<Class<?>> implicitSubGroupCandidates = new ArrayList<Class<?>>();
for(Class<?> subGroup : subGroups)
{
- if(editableConversation.removeBeanEntry(subGroup) == null)
+ BeanEntry<?> beanEntry = editableConversation.removeBeanEntry(subGroup);
+ if(beanEntry == null)
{
//no bean was scoped -> try to use the sub-group as sub-group-type
implicitSubGroupCandidates.add(subGroup);
}
+ else
+ {
+ destroyBean(beanEntry);
+ }
}
tryToCloseImplicitConversationSubGroup(editableConversation, implicitSubGroupCandidates);
@@ -320,12 +326,21 @@ class JsfWindowContext implements Editab
for(Class<?> beanClass : concreteBeanClasses)
{
- editableConversation.removeBeanEntry(beanClass);
+ BeanEntry<?> beanEntry = editableConversation.removeBeanEntry(beanClass);
+ destroyBean(beanEntry);
}
}
}
}
+ private <T> void destroyBean(BeanEntry<T> beanEntry)
+ {
+ if (beanEntry != null)
+ {
+ beanEntry.getBean().destroy(beanEntry.getBeanInstance(), beanEntry.getCreationalContext());
+ }
+ }
+
/**
* {@inheritDoc}
*/