You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2011/08/30 20:02:37 UTC
svn commit: r1163312 - in
/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation:
BeanStorage.java JsfWindowContext.java
Author: gpetracek
Date: Tue Aug 30 18:02:37 2011
New Revision: 1163312
URL: http://svn.apache.org/viewvc?rev=1163312&view=rev
Log:
EXTCDI-220 trigger @PreDestroy and UnscopeBeanEvent when closing sub-groups
Modified:
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/BeanStorage.java
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/BeanStorage.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/BeanStorage.java?rev=1163312&r1=1163311&r2=1163312&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/BeanStorage.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/BeanStorage.java Tue Aug 30 18:02:37 2011
@@ -80,24 +80,30 @@ class BeanStorage implements Serializabl
BeanEntry<Serializable> removeBean(Class<Serializable> beanClass)
{
- return this.beanMap.remove(beanClass);
+ BeanEntry<Serializable> beanEntryToRemove = this.beanMap.remove(beanClass);
+ removeBeanEntry(beanEntryToRemove);
+ return beanEntryToRemove;
}
//TODO don't reset window scoped beans
void resetStorage()
{
- Serializable oldBeanInstance;
- for (BeanEntry<Serializable> beanHolder : this.beanMap.values())
+ for (BeanEntry<Serializable> beanEntry : this.beanMap.values())
{
- oldBeanInstance = beanHolder.resetBeanInstance();
+ removeBeanEntry(beanEntry);
+ }
+ }
- if(beanHolder.isUnscopeBeanEventEnabled())
- {
- fireUnscopeBeanEvent(oldBeanInstance);
- }
+ private void removeBeanEntry(BeanEntry<Serializable> beanEntry)
+ {
+ Serializable oldBeanInstance = beanEntry.resetBeanInstance();
- beanHolder.getBean().destroy(oldBeanInstance, beanHolder.getCreationalContext());
+ if(beanEntry.isUnscopeBeanEventEnabled())
+ {
+ fireUnscopeBeanEvent(oldBeanInstance);
}
+
+ beanEntry.getBean().destroy(oldBeanInstance, beanEntry.getCreationalContext());
}
private <T extends Serializable> void fireUnscopeBeanEvent(T instance)
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=1163312&r1=1163311&r2=1163312&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 18:02:37 2011
@@ -23,7 +23,6 @@ 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;
@@ -297,16 +296,11 @@ class JsfWindowContext implements Editab
List<Class<?>> implicitSubGroupCandidates = new ArrayList<Class<?>>();
for(Class<?> subGroup : subGroups)
{
- BeanEntry<?> beanEntry = editableConversation.removeBeanEntry(subGroup);
- if(beanEntry == null)
+ if(editableConversation.removeBeanEntry(subGroup) == null)
{
//no bean was scoped -> try to use the sub-group as sub-group-type
implicitSubGroupCandidates.add(subGroup);
}
- else
- {
- destroyBean(beanEntry);
- }
}
tryToCloseImplicitConversationSubGroup(editableConversation, implicitSubGroupCandidates);
@@ -326,21 +320,12 @@ class JsfWindowContext implements Editab
for(Class<?> beanClass : concreteBeanClasses)
{
- BeanEntry<?> beanEntry = editableConversation.removeBeanEntry(beanClass);
- destroyBean(beanEntry);
+ editableConversation.removeBeanEntry(beanClass);
}
}
}
}
- private <T> void destroyBean(BeanEntry<T> beanEntry)
- {
- if (beanEntry != null)
- {
- beanEntry.getBean().destroy(beanEntry.getBeanInstance(), beanEntry.getCreationalContext());
- }
- }
-
/**
* {@inheritDoc}
*/