You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2010/03/02 22:37:40 UTC

svn commit: r918202 - in /myfaces/extensions/scripting/trunk: core/core/src/main/java/org/apache/myfaces/scripting/api/ core/core/src/main/java/org/apache/myfaces/scripting/refresh/ examples/myfaces20-example/src/main/webapp/WEB-INF/ examples/myfaces20...

Author: werpu
Date: Tue Mar  2 21:37:40 2010
New Revision: 918202

URL: http://svn.apache.org/viewvc?rev=918202&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-81

adding the taint history to our handler
that way we now can cover multi user bean refresh properly

Modified:
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/MyFacesBeanHandler.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java
    myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java
    myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean4.java
    myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/MyFacesBeanHandler.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/MyFacesBeanHandler.java?rev=918202&r1=918201&r2=918202&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/MyFacesBeanHandler.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/MyFacesBeanHandler.java Tue Mar  2 21:37:40 2010
@@ -19,13 +19,13 @@
  * Bean handler implementation
  * which encapsulates the myfaces specific parts
  * of the bean processing
- *
- *
+ * <p/>
+ * <p/>
  * TODO bug multiuser handling not yet working
  * due to tainted being reset for beans once the
  * first user has run through the refresh,
  * others do not drop their code...
- *
+ * <p/>
  * we need a bean taint history so that
  * users refreshing get a blend of all tainted classes
  * since their last local refresh
@@ -281,6 +281,12 @@
     private void refreshPersonalScopedBeans() {
         //the refreshing is only allowed if no compile is in progress
         //and vice versa
+        Map sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
+        Long taintingPeriod = (Long) sessionMap.get(ScriptingConst.SESS_BEAN_REFRESH_TIMER);
+        if (taintingPeriod == null) {
+            taintingPeriod = -1l;
+        }
+        Set<String> taintedInTime = WeavingContext.getRefreshContext().getTaintHistoryClasses(taintingPeriod);
 
         synchronized (RefreshContext.BEAN_SYNC_MONITOR) {
             Map<String, ManagedBean> mbeans = RuntimeConfig.getCurrentInstance(FacesContext.getCurrentInstance().getExternalContext()).getManagedBeans();
@@ -290,11 +296,10 @@
             //the bean map from outside we still get race conditions
             //But for most cases this mutex should be enough
             Map<String, ManagedBean> mbeansSnapshotView = makeSnapshot(mbeans);
-            Set<String> tainted = getTaintedClasses();
-            for (Map.Entry<String, ManagedBean> entry : mbeansSnapshotView.entrySet()) {
 
+            for (Map.Entry<String, ManagedBean> entry : mbeansSnapshotView.entrySet()) {
                 Class managedBeanClass = entry.getValue().getManagedBeanClass();
-                if (hasToBeRefreshed(tainted, managedBeanClass)) {
+                if (hasToBeRefreshed(taintedInTime, managedBeanClass)) {
                     FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove(entry.getValue().getManagedBeanName());
                     removeCustomScopedBean(entry.getValue());
                 }

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java?rev=918202&r1=918201&r2=918202&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java Tue Mar  2 21:37:40 2010
@@ -168,7 +168,7 @@
             metaData.setTainted(true);
             metaData.setTaintedOnce(true);
             dependencyTainted(metaData.getAClass().getName());
-
+            WeavingContext.getRefreshContext().addTaintLogEntry(metaData);
         }
     }
 

Modified: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java?rev=918202&r1=918201&r2=918202&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java (original)
+++ myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java Tue Mar  2 21:37:40 2010
@@ -52,7 +52,7 @@
     public String getSayHello() {
         System.out.println("cnt++:" + cnt++);
         
-        return   bean3.getSayHello();
+        return   bean4.getHello();
     }
 
     

Modified: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean4.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean4.java?rev=918202&r1=918201&r2=918202&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean4.java (original)
+++ myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean4.java Tue Mar  2 21:37:40 2010
@@ -33,5 +33,6 @@
 
     public void setHello(String hello) {
         this.hello = hello;
-    }
+    } 
 }
+ 
\ No newline at end of file

Modified: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml?rev=918202&r1=918201&r2=918202&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml (original)
+++ myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml Tue Mar  2 21:37:40 2010
@@ -31,7 +31,6 @@
         <param-value>org.apache.myfaces.scripting.servlet.StartupServletContextPluginChainLoader</param-value>
     </context-param>
 
-    <!--
     <context-param>
         <description>Additional comma separated loader paths to allow direct editing on the sources directory instead
             of the deployment dir
@@ -68,7 +67,7 @@
         <param-name>facelets.RESOURCE_RESOLVER</param-name>
         <param-value>org.apache.myfaces.scripting.facelet.ReroutingResourceResolver</param-value>
     </context-param>
-    -->
+
     <!--
     <context-param>
         <description>a comma separated whitelist of root packages which are compiled those and nothing else