https://issues.apache.org/jira/browse/EXTSCRIPT-139

first part of the data watchdog data structure rework done, all tests pass the system still works, looks good


git-svn-id: https://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk@958853 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/loaders/java/ThrowawayClassloader.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/loaders/java/ThrowawayClassloader.java
index 0b12008..09d02ac 100644
--- a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/loaders/java/ThrowawayClassloader.java
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/loaders/java/ThrowawayClassloader.java
@@ -182,7 +182,7 @@
 
         reloadingMetaData.setFileName(fileName);
         reloadingMetaData.setSourcePath(rootDir);
-        reloadingMetaData.setTimestamp(sourceFile.lastModified());
+        reloadingMetaData.getRefreshAttribute().requestRefresh();
         reloadingMetaData.getRefreshAttribute().executedRefresh();
         reloadingMetaData.setScriptingEngine(_scriptingEngine);
 
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/monitor/ClassResource.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/monitor/ClassResource.java
index 8b0af87..5e375bb 100644
--- a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/monitor/ClassResource.java
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/monitor/ClassResource.java
@@ -33,10 +33,14 @@
     * volatile due to the ram concurrency behavior
     * of the instance vars jdk 5+
     */
+
+    //TODO we probably can drop the file definitions
+    //the class has all meta data internally via findResource
+    //on its corresponding classloader
+    //caching the info however probably is faster
     volatile String _fileName = "";
     volatile String _sourcePath = "";
     volatile Class _aClass = null;
-    volatile long _timestamp = 0l;
     volatile int _scriptingEngine = ScriptingConst.ENGINE_TYPE_JSF_NO_ENGINE;
 
 
@@ -53,6 +57,7 @@
 
     @Override
     public File getFile() {
+        //todo get the resource file from the given class definition and its resource loader
         return new File(_sourcePath+File.separator+_fileName);
     }
 
@@ -72,14 +77,6 @@
         this._aClass = aClass;
     }
 
-    public long getTimestamp() {
-        return _timestamp;
-    }
-
-    public void setTimestamp(long timestamp) {
-        this._timestamp = timestamp;
-    }
-
     public int getScriptingEngine() {
         return _scriptingEngine;
     }
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/monitor/ResourceMonitor.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/monitor/ResourceMonitor.java
index addd9e9..d3ed469 100644
--- a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/monitor/ResourceMonitor.java
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/monitor/ResourceMonitor.java
@@ -160,7 +160,7 @@
                 ClassResource meta = it.getValue();
                 meta.getRefreshAttribute().requestRefresh();
                 printInfo(it, proxyFile);
-                meta.setTimestamp(proxyFile.lastModified());
+
                 dependencyTainted(meta.getAClass().getName());
 
                 //we add our log entry for further reference
@@ -199,7 +199,7 @@
     }
 
     private final boolean isModified(Map.Entry<String, ClassResource> it, File proxyFile) {
-        return proxyFile.lastModified() != it.getValue().getTimestamp();
+        return proxyFile.lastModified() > it.getValue().getRefreshAttribute().getRequestedRefreshDate() ;
     }
 
     private void printInfo(ClassResource it) {
@@ -210,7 +210,7 @@
 
     private void printInfo(Map.Entry<String, ClassResource> it, File proxyFile) {
         if (_log.isLoggable(Level.INFO)) {
-            _log.log(Level.INFO, "[EXT-SCRIPTING] comparing {0} Dates: {1} {2} ", new String[]{it.getKey(), Long.toString(proxyFile.lastModified()), Long.toString(it.getValue().getTimestamp())});
+            _log.log(Level.INFO, "[EXT-SCRIPTING] comparing {0} Dates: {1} {2} ", new String[]{it.getKey(), Long.toString(proxyFile.lastModified()), Long.toString(it.getValue().getRefreshAttribute().getExecutedRefreshDate())});
             _log.log(Level.INFO, "[EXT-SCRIPTING] Tainting: {0}", it.getValue().getFileName());
         }
     }
diff --git a/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/components/TaintHistoryTest.java b/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/components/TaintHistoryTest.java
index da25932..b69dba8 100644
--- a/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/components/TaintHistoryTest.java
+++ b/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/components/TaintHistoryTest.java
@@ -93,7 +93,8 @@
     public void testTaintHistory() throws Exception {
         ClassResource historyEntry = new ClassResource();
         historyEntry.setAClass(this.getClass());
-        historyEntry.setTimestamp(System.currentTimeMillis());
+        historyEntry.getRefreshAttribute().requestRefresh();
+        historyEntry.getRefreshAttribute().executedRefresh();
         historyEntry.setScriptingEngine(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
         historyEntry.setFileName(BOOGA_JAVA);
         historyEntry.getRefreshAttribute().requestRefresh();
@@ -126,7 +127,7 @@
         for (int cnt = 0; cnt < 100; cnt++) {
             ClassResource historyEntry = new ClassResource();
             historyEntry.setAClass(this.getClass());
-            historyEntry.setTimestamp(System.currentTimeMillis());
+            historyEntry.getRefreshAttribute().executedRefresh();
             historyEntry.setScriptingEngine(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
             if(cnt < 10)
                 historyEntry.setFileName("0"+cnt + "_"+BOOGA_JAVA);
diff --git a/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/refreshContext/RefreshContextTest.java b/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/refreshContext/RefreshContextTest.java
index 8b70313..89add73 100644
--- a/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/refreshContext/RefreshContextTest.java
+++ b/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/refreshContext/RefreshContextTest.java
@@ -87,7 +87,7 @@
         ClassResource data = new ClassResource();
         data.setAClass(this.getClass());
         data.getRefreshAttribute().requestRefresh();
-        data.setTimestamp(System.currentTimeMillis());
+        data.getRefreshAttribute().executedRefresh();
 
         ctx.addTaintLogEntry(data);
         ctx.addTaintLogEntry(data);
@@ -119,7 +119,7 @@
         ClassResource data = new ClassResource();
         data.setAClass(this.getClass());
         data.getRefreshAttribute().requestRefresh();
-        data.setTimestamp(System.currentTimeMillis());
+        data.getRefreshAttribute().executedRefresh();
 
         ctx.addTaintLogEntry(data);
         ctx.addTaintLogEntry(data);
@@ -139,7 +139,7 @@
         ClassResource data = new ClassResource();
         data.setAClass(this.getClass());
         data.getRefreshAttribute().requestRefresh();
-        data.setTimestamp(System.currentTimeMillis());
+        data.getRefreshAttribute().executedRefresh();
 
         ctx.addTaintLogEntry(data);
         ctx.addTaintLogEntry(data);
diff --git a/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/reloading/SimpleReloadingStrategyTest.java b/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/reloading/SimpleReloadingStrategyTest.java
index d6dd055..4d18f7c 100644
--- a/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/reloading/SimpleReloadingStrategyTest.java
+++ b/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/reloading/SimpleReloadingStrategyTest.java
@@ -108,7 +108,7 @@
         resource.setFileName("compiler/TestProbe1.java");
         resource.setScriptingEngine(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
         resource.getRefreshAttribute().requestRefresh();
-        resource.setTimestamp(System.currentTimeMillis());
+     
         return resource;
     }
 
diff --git a/extscript-core-root/extscript-myfaces2-extensions/pom.xml b/extscript-core-root/extscript-myfaces2-extensions/pom.xml
index d5c6727..a8f7b9e 100644
--- a/extscript-core-root/extscript-myfaces2-extensions/pom.xml
+++ b/extscript-core-root/extscript-myfaces2-extensions/pom.xml
@@ -125,5 +125,6 @@
             </build>
         </profile>
     </profiles>
+    
 
 </project>