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 2009/12/15 12:27:36 UTC

svn commit: r890767 - in /myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting: api/ core/util/ servlet/

Author: werpu
Date: Tue Dec 15 11:27:36 2009
New Revision: 890767

URL: http://svn.apache.org/viewvc?rev=890767&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-28
added an atomic commit counter so that we deal with the compile trigger time correctly

Modified:
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/ScriptingConst.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/WeavingContext.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/servlet/ScriptingServletFilter.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/servlet/StartupServletContextPluginChainLoader.java

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/ScriptingConst.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/ScriptingConst.java?rev=890767&r1=890766&r2=890767&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/ScriptingConst.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/ScriptingConst.java Tue Dec 15 11:27:36 2009
@@ -61,4 +61,5 @@
     public static final int ARTEFACT_TYPE_RESOURCEHANDLER = 19;
     public static final int ARTEFACT_TYPE_CLIENTBEHAVIORRENDERER = 20;
 
+    public static final String CTX_REQUEST_CNT = "RequestCnt";
 }

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/WeavingContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/WeavingContext.java?rev=890767&r1=890766&r2=890767&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/WeavingContext.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/WeavingContext.java Tue Dec 15 11:27:36 2009
@@ -18,21 +18,19 @@
  */
 package org.apache.myfaces.scripting.core.util;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.myfaces.scripting.api.Decorated;
 import org.apache.myfaces.scripting.api.ScriptingWeaver;
-import org.apache.myfaces.scripting.core.MethodLevelReloadingHandler;
 import org.apache.myfaces.scripting.core.DummyWeaver;
+import org.apache.myfaces.scripting.core.MethodLevelReloadingHandler;
 import org.apache.myfaces.scripting.core.scanEvents.SystemEventProcessor;
 import org.apache.myfaces.scripting.refresh.FileChangedDaemon;
 import org.apache.myfaces.scripting.refresh.RefreshContext;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.logging.Log;
 
 import javax.faces.context.FacesContext;
-import javax.faces.context.ExternalContext;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Proxy;
-import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -72,8 +70,6 @@
     }
 
 
-
-
     /**
      * general shutdown clean
      */
@@ -86,7 +82,7 @@
     }
 
     public static RefreshContext getRefreshContext() {
-       return (RefreshContext) _refreshContextHolder.get();
+        return (RefreshContext) _refreshContextHolder.get();
     }
 
     /**
@@ -114,8 +110,6 @@
     }
 
 
-   
-
     /**
      * the weavers are set from outside
      * we have to provide the weaver facade

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/servlet/ScriptingServletFilter.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/servlet/ScriptingServletFilter.java?rev=890767&r1=890766&r2=890767&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/servlet/ScriptingServletFilter.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/servlet/ScriptingServletFilter.java Tue Dec 15 11:27:36 2009
@@ -18,13 +18,13 @@
  */
 package org.apache.myfaces.scripting.servlet;
 
+import org.apache.myfaces.scripting.api.ScriptingConst;
 import org.apache.myfaces.scripting.core.util.WeavingContext;
 import org.apache.myfaces.scripting.refresh.RefreshContext;
-import org.apache.myfaces.context.servlet.ServletExternalContextImpl;
-
 
 import javax.servlet.*;
 import java.io.IOException;
+import java.util.concurrent.atomic.AtomicInteger;
 
 
 /**
@@ -36,11 +36,13 @@
 
     ServletContext context = null;
 
+
     public void init(FilterConfig filterConfig) throws ServletException {
         context = filterConfig.getServletContext();
     }
 
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+        markRequestStart();
 
         WeavingContext.setWeaver(context.getAttribute("ScriptingWeaver"));
         WeavingContext.setRefreshContext((RefreshContext) context.getAttribute("RefreshContext"));
@@ -49,7 +51,28 @@
     }
 
     public void destroy() {
+        markRequestEnd();
         WeavingContext.clean();
     }
 
+
+
+    //we mark the request beginning and end for further synchronisation issues
+    private final AtomicInteger getRequestCnt() {
+        return (AtomicInteger) context.getAttribute(ScriptingConst.CTX_REQUEST_CNT);
+    }
+
+
+    private int markRequestStart() {
+        return getRequestCnt().incrementAndGet();
+    }
+
+    private int markRequestEnd() {
+        return getRequestCnt().decrementAndGet();
+    }
+
+    private int concurrentRequests() {
+        return getRequestCnt().get();
+    }
+
 }
\ No newline at end of file

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/servlet/StartupServletContextPluginChainLoader.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/servlet/StartupServletContextPluginChainLoader.java?rev=890767&r1=890766&r2=890767&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/servlet/StartupServletContextPluginChainLoader.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/servlet/StartupServletContextPluginChainLoader.java Tue Dec 15 11:27:36 2009
@@ -26,10 +26,12 @@
 import org.apache.myfaces.scripting.core.util.ClassUtils;
 import org.apache.myfaces.scripting.core.util.WeavingContext;
 import org.apache.myfaces.scripting.api.ScriptingWeaver;
+import org.apache.myfaces.scripting.api.ScriptingConst;
 import org.apache.myfaces.scripting.refresh.RefreshContext;
 
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContext;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * @author werpu
@@ -46,6 +48,8 @@
         ServletContext servletContext = servletContextEvent.getServletContext();
         if (servletContext == null) return;
 
+        servletContext.setAttribute(ScriptingConst.CTX_REQUEST_CNT, new AtomicInteger(0));
+
         CustomChainLoader loader = new CustomChainLoader(servletContext);
         ClassUtils.addClassLoadingExtension(loader, true);
         ScriptingWeaver weaver = loader.getScriptingWeaver();