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>