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/08/27 17:08:33 UTC

svn commit: r808448 - in /myfaces/extensions/scripting/trunk/core/src/main: groovy/org/apache/myfaces/groovyloader/core/ java/org/apache/myfaces/javaloader/core/ java/org/apache/myfaces/scripting/refresh/ java/org/apache/myfaces/scripting/servlet/

Author: werpu
Date: Thu Aug 27 15:08:30 2009
New Revision: 808448

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

fix for this issue, another fix for multiple beans of the same class
only one was refreshed instead of all

Modified:
    myfaces/extensions/scripting/trunk/core/src/main/groovy/org/apache/myfaces/groovyloader/core/GroovyWeaver.groovy
    myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/javaloader/core/JavaScriptingWeaver.java
    myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java
    myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/scripting/servlet/CustomChainLoader.java

Modified: myfaces/extensions/scripting/trunk/core/src/main/groovy/org/apache/myfaces/groovyloader/core/GroovyWeaver.groovy
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/src/main/groovy/org/apache/myfaces/groovyloader/core/GroovyWeaver.groovy?rev=808448&r1=808447&r2=808448&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/src/main/groovy/org/apache/myfaces/groovyloader/core/GroovyWeaver.groovy (original)
+++ myfaces/extensions/scripting/trunk/core/src/main/groovy/org/apache/myfaces/groovyloader/core/GroovyWeaver.groovy Thu Aug 27 15:08:30 2009
@@ -196,11 +196,11 @@
             //TODO this code can probably be replaced by the functionality
             //already given in the Groovy classloader, this needs further testing
             for (String pathEntry in scriptPath) {
-                log.info("search for:" + pathEntry + groovyClass);
-                File classFile = new File(pathEntry + groovyClass);
+                log.info("search for:" + pathEntry  + File.separator + groovyClass);
+                File classFile = new File(pathEntry + File.separator + groovyClass);
 
                 if (classFile.exists()) /*we check the groovy subdir for our class*/
-                    return (Class) loadScriptingClassFromFile(pathEntry + groovyClass);
+                    return (Class) loadScriptingClassFromFile(pathEntry  + File.separator + groovyClass);
             }
 
         } else {
@@ -215,8 +215,8 @@
 
         singlePath = singlePath.trim();
         //TODO normalization here?
-        if (!singlePath.endsWith("/") && !singlePath.endsWith("\\"))
-            singlePath += "/";
+        if (singlePath.endsWith(File.separator) || singlePath.endsWith("/") || singlePath.endsWith("\\"))
+            singlePath = singlePath.substring(0, singlePath.length() - 1);
         scriptPath << singlePath
 
     }
@@ -246,6 +246,7 @@
         reloadingMetaData.fileName = file;
         reloadingMetaData.timestamp = currentClassFile.lastModified();
         reloadingMetaData.tainted = false;
+        reloadingMetaData.taintedOnce = getClassMap().containsKey(newClass.name)
         reloadingMetaData.scriptingEngine = ScriptingConst.ENGINE_TYPE_GROOVY
 
         classMap.put(newClass.name, reloadingMetaData)

Modified: myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/javaloader/core/JavaScriptingWeaver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/javaloader/core/JavaScriptingWeaver.java?rev=808448&r1=808447&r2=808448&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/javaloader/core/JavaScriptingWeaver.java (original)
+++ myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/javaloader/core/JavaScriptingWeaver.java Thu Aug 27 15:08:30 2009
@@ -266,6 +266,7 @@
             //can be safely ignored
         }
         //}
+
         if (retVal != null) {
             ReloadingMetadata reloadingMetaData = new ReloadingMetadata();
             reloadingMetaData.setAClass(retVal);
@@ -275,6 +276,9 @@
             reloadingMetaData.setTimestamp(currentClassFile.lastModified());
             reloadingMetaData.setTainted(false);
             reloadingMetaData.setScriptingEngine(ScriptingConst.ENGINE_TYPE_JAVA);
+            //ReloadingMetadata oldMetadata = getClassMap().get(retVal.getName());
+            reloadingMetaData.setTaintedOnce(getClassMap().containsKey(retVal.getName()));    
+
             getClassMap().put(retVal.getName(), reloadingMetaData);
         }
 

Modified: myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java?rev=808448&r1=808447&r2=808448&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java (original)
+++ myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java Thu Aug 27 15:08:30 2009
@@ -78,10 +78,11 @@
             for (Map.Entry<String, ReloadingMetadata> it : this.classMap.entrySet()) {
                 if (!it.getValue().isTainted()) {
 
-                    File proxyFile = new File(it.getValue().getFileName());
-                    it.getValue().tainted = (proxyFile.lastModified() != it.getValue().getTimestamp());
+                    File proxyFile = new File(it.getValue().getSourcePath()+File.separator+it.getValue().getFileName());
+                    it.getValue().setTainted(proxyFile.lastModified() != it.getValue().getTimestamp());
                     if (it.getValue().isTainted()) {
                         it.getValue().setTaintedOnce(true);
+                        log.info("comparing"+it.getKey()+"Dates:"+proxyFile.lastModified()+"-"+it.getValue().getTimestamp());
                         log.info("Tainting:"+it.getValue().getFileName());
                     }
                     it.getValue().setTimestamp(proxyFile.lastModified());

Modified: myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/scripting/servlet/CustomChainLoader.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/scripting/servlet/CustomChainLoader.java?rev=808448&r1=808447&r2=808448&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/scripting/servlet/CustomChainLoader.java (original)
+++ myfaces/extensions/scripting/trunk/core/src/main/java/org/apache/myfaces/scripting/servlet/CustomChainLoader.java Thu Aug 27 15:08:30 2009
@@ -25,6 +25,8 @@
 import org.apache.myfaces.shared_impl.util.ClassLoaderExtension;
 import org.apache.myfaces.javaloader.core.JavaScriptingWeaver;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import javax.servlet.ServletContext;
 
@@ -50,29 +52,15 @@
     private static final String GROOVY_SOURCE_ROOT = "/WEB-INF/groovy/";
     private static final String JAVA_SOURCE_ROOT = "/WEB-INF/java/";
 
+    Log log = LogFactory.getLog(CustomChainLoader.class);
+
+
     public CustomChainLoader(ServletContext servletContext) {
         ScriptingWeaver groovyWeaver = new GroovyWeaver();
         ScriptingWeaver javaWeaver = new JavaScriptingWeaver(servletContext);
 
-        //this.scriptingWeaver = new GroovyWeaver();
-
-        String contextRoot = servletContext.getRealPath(GROOVY_SOURCE_ROOT);
-
-        contextRoot = contextRoot.trim();
-        //TODO still needed?
-        if (!contextRoot.endsWith("/") && !contextRoot.endsWith("\\"))
-            contextRoot += "/";
-        //TODO end?
-        scriptingRoot = contextRoot;
-
-        setupScriptingPatsh(servletContext, groovyWeaver, CUSTOM_LOADER_PATHS);
-
-        contextRoot = servletContext.getRealPath(JAVA_SOURCE_ROOT);
-        contextRoot = contextRoot.trim();
-
-        scriptingRoot = contextRoot;
-        setupScriptingPatsh(servletContext, javaWeaver, CUSTOM_JAVA_LOADER_PATHS);
-
+        setupScriptingPaths(servletContext, groovyWeaver,GROOVY_SOURCE_ROOT, CUSTOM_LOADER_PATHS);
+        setupScriptingPaths(servletContext, javaWeaver, JAVA_SOURCE_ROOT, CUSTOM_JAVA_LOADER_PATHS);
 
         this.scriptingWeaver = new ScriptingWeaverHolder(groovyWeaver, javaWeaver);
         //we have to store it because our filter
@@ -80,8 +68,14 @@
         ProxyUtils.setWeaver(this.scriptingWeaver);
     }
 
-    private void setupScriptingPatsh(ServletContext servletContext, ScriptingWeaver weaver, String initParams) {
+    private void setupScriptingPaths(ServletContext servletContext, ScriptingWeaver weaver, String contextRootKey, String initParams) {
         String additionalLoaderPaths;
+
+        String contextRoot = servletContext.getRealPath(contextRootKey);
+        contextRoot = contextRoot.trim();
+        scriptingRoot = contextRoot;
+
+
         additionalLoaderPaths = servletContext.getInitParameter(initParams);
         appendAdditionalPaths(additionalLoaderPaths, weaver);
         weaver.appendCustomScriptPath(scriptingRoot);
@@ -89,10 +83,10 @@
     }
 
     private void appendAdditionalPaths(String additionalLoaderPaths, ScriptingWeaver workWeaver) {
-        if(!StringUtils.isBlank(additionalLoaderPaths)) {
-            String [] additionalPaths = additionalLoaderPaths.split(",");
-            for(String path: additionalPaths) {
-                 workWeaver.appendCustomScriptPath(path);
+        if (!StringUtils.isBlank(additionalLoaderPaths)) {
+            String[] additionalPaths = additionalLoaderPaths.split(",");
+            for (String path : additionalPaths) {
+                workWeaver.appendCustomScriptPath(path);
             }
         }
     }