DELTASPIKE-487 removed unused logic

Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/4ff33b15
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/4ff33b15
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/4ff33b15

Branch: refs/heads/master
Commit: 4ff33b15b056f76354d8b06ed05f9795094d2f1e
Parents: 8d23e10
Author: tandraschko <tandrasc...@apache.org>
Authored: Thu Feb 27 23:37:20 2014 +0100
Committer: tandraschko <tandrasc...@apache.org>
Committed: Thu Feb 27 23:37:20 2014 +0100

----------------------------------------------------------------------
 .../impl/scope/viewaccess/ViewAccessContext.java     | 15 +++++++++++++--
 .../viewaccess/ViewAccessScopedBeanHistory.java      | 12 ++++++++++++
 .../listener/request/DeltaSpikeLifecycleWrapper.java |  2 +-
 3 files changed, 26 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/4ff33b15/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/viewaccess/ViewAccessContext.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/viewaccess/ViewAccessContext.java
 
b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/viewaccess/ViewAccessContext.java
index 701e4d0..ba6d90c 100644
--- 
a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/viewaccess/ViewAccessContext.java
+++ 
b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/viewaccess/ViewAccessContext.java
@@ -19,6 +19,8 @@
 package org.apache.deltaspike.core.impl.scope.viewaccess;
 
 import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 import javax.enterprise.context.ContextNotActiveException;
 import javax.enterprise.context.spi.Contextual;
@@ -113,19 +115,28 @@ public class ViewAccessContext extends AbstractContext
             destroyExpiredBeans();
             
             // clear list from last request
-            viewAccessScopedBeanHistory.getAccessedBeans().clear();
+            List<String> lastAccessedBeans = 
viewAccessScopedBeanHistory.getLastAccessedBeans();
+            lastAccessedBeans.clear();
+            
+            // move used beans from this request to last request
+            
viewAccessScopedBeanHistory.setLastAccessedBeans(viewAccessScopedBeanHistory.getAccessedBeans());
+            viewAccessScopedBeanHistory.setAccessedBeans(lastAccessedBeans);
         }
     }
     
     private void destroyExpiredBeans()
     {
+        List<String> usedBeans = new ArrayList<String>();
+        usedBeans.addAll(viewAccessScopedBeanHistory.getAccessedBeans());
+        usedBeans.addAll(viewAccessScopedBeanHistory.getLastAccessedBeans());
+
         ContextualStorage storage =
                 viewAccessScopedBeanHolder.getContextualStorage(beanManager, 
getCurrentWindowId(), false);
         if (storage != null)
         {
             for (Map.Entry<Object, ContextualInstanceInfo<?>> storageEntry : 
storage.getStorage().entrySet())
             {
-                if 
(!viewAccessScopedBeanHistory.getAccessedBeans().contains((String) 
storageEntry.getKey()))
+                if (!usedBeans.contains((String) storageEntry.getKey()))
                 {
                     Contextual bean = storage.getBean(storageEntry.getKey());
                     AbstractContext.destroyBean(bean, storageEntry.getValue());

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/4ff33b15/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/viewaccess/ViewAccessScopedBeanHistory.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/viewaccess/ViewAccessScopedBeanHistory.java
 
b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/viewaccess/ViewAccessScopedBeanHistory.java
index 06ddbe9..b422f07 100644
--- 
a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/viewaccess/ViewAccessScopedBeanHistory.java
+++ 
b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/viewaccess/ViewAccessScopedBeanHistory.java
@@ -30,11 +30,13 @@ public class ViewAccessScopedBeanHistory implements 
Serializable
     private static final long serialVersionUID = 3617603930728148927L;
     
     private List<String> accessedBeans;
+    private List<String> lastAccessedBeans;
     private String lastView;
 
     public ViewAccessScopedBeanHistory()
     {
         accessedBeans = new ArrayList<String>();
+        lastAccessedBeans = new ArrayList<String>();
     }
     
     public List<String> getAccessedBeans()
@@ -47,6 +49,16 @@ public class ViewAccessScopedBeanHistory implements 
Serializable
         this.accessedBeans = accessedBeans;
     }
 
+    public List<String> getLastAccessedBeans()
+    {
+        return lastAccessedBeans;
+    }
+
+    public void setLastAccessedBeans(List<String> lastAccessedBeans)
+    {
+        this.lastAccessedBeans = lastAccessedBeans;
+    }
+
     public String getLastView()
     {
         return lastView;

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/4ff33b15/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/listener/request/DeltaSpikeLifecycleWrapper.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/listener/request/DeltaSpikeLifecycleWrapper.java
 
b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/listener/request/DeltaSpikeLifecycleWrapper.java
index ef8ef57..7e610f1 100644
--- 
a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/listener/request/DeltaSpikeLifecycleWrapper.java
+++ 
b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/listener/request/DeltaSpikeLifecycleWrapper.java
@@ -110,7 +110,7 @@ class DeltaSpikeLifecycleWrapper extends Lifecycle
     {
         this.wrapped.render(facesContext);
         
-        if (facesContext.getViewRoot() != null)
+        if (!facesContext.isPostback() && facesContext.getViewRoot() != null)
         {
             ViewAccessContext viewAccessContext = 
contextExtension.getViewAccessScopedContext();
             if (viewAccessContext != null)

Reply via email to