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 2012/03/13 14:47:03 UTC
svn commit: r1300132 - in
/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src:
main/java/rewrite/org/apache/myfaces/extensions/scripting/core/api/
main/java/rewrite/org/apache/myfaces/extensions/scripting/core/common/util/
main/j...
Author: werpu
Date: Tue Mar 13 13:47:02 2012
New Revision: 1300132
URL: http://svn.apache.org/viewvc?rev=1300132&view=rev
Log:
EXTSCRIPT-154: Code Rewrite/Refactoring,cleaning up the compiler interface ongoing works on the components
Added:
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponent.java
- copied, changed from r1300003, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/CompilerComponent.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponentRenderer.java
- copied, changed from r1300003, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/CompilerComponentRenderer.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/RendererConst.java
- copied, changed from r1300003, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/RendererConst.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistory.java
- copied, changed from r1300003, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/TaintHistory.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistoryRenderer.java
- copied, changed from r1300003, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/TaintHistoryRenderer.java
Modified:
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/common/util/FileUtils.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/EngineJava.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/api/Compiler.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/compiler/GroovyCompiler.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/compiler/JSR199Compiler.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/JavaCompilerTest.java
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java?rev=1300132&r1=1300131&r2=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java Tue Mar 13 13:47:02 2012
@@ -23,6 +23,7 @@ import rewrite.org.apache.myfaces.extens
import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
import rewrite.org.apache.myfaces.extensions.scripting.core.engine.FactoryEngines;
import rewrite.org.apache.myfaces.extensions.scripting.core.engine.api.ClassScanner;
+import rewrite.org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
import rewrite.org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
import rewrite.org.apache.myfaces.extensions.scripting.core.loader.ThrowAwayClassloader;
import rewrite.org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
@@ -34,10 +35,7 @@ import rewrite.org.apache.myfaces.extens
import java.io.IOException;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Logger;
@@ -51,23 +49,90 @@ import java.util.logging.Logger;
public class WeavingContext
{
+ static final Logger log = Logger.getLogger(WeavingContext.class.getName());
+
/**
* lock var which can be used for recompilation
*/
public AtomicBoolean recompileLock = new AtomicBoolean(false);
+ /**
+ * configuration which stores all external configuration entries
+ */
protected Configuration configuration = new Configuration();
//ClassDependencies _dependencyMap = new ClassDependencies();
-
+ /**
+ * Service provider for the implementation under which this extension
+ * runs
+ */
ImplementationSPI _implementation = null;
+ /**
+ * the collection of reloading strategies depending on their artifact type
+ */
GlobalReloadingStrategy _reloadingStrategy = new GlobalReloadingStrategy();
+ /**
+ * the annotation scanning reference
+ */
ClassScanner _annotationScanner = null;
- Logger log = Logger.getLogger(this.getClass().getName());
+
+ /**
+ * true only if the startup has performed without errors
+ */
boolean _scriptingEnabled = true;
- /*holder for various operations within our lifecycle*/
+ /**
+ * holder for various operations within our lifecycle
+ */
ConcurrentHashMap<String, Long> lifecycleRegistry = new ConcurrentHashMap<String, Long>();
+ /**
+ * This is a log which keeps track of the taints
+ * over time, we need that mostly for bean refreshes
+ * in multiuser surroundings, because only tainted beans need
+ * to be refreshed.
+ * Now if a user misses multiple updates he has to get a full
+ * set of changed classes to be able to drop all personal scoped beans tainted
+ * since the he refreshed last! Hence we have to move away from our
+ * two dimensional <class, taint> to a three dimensional <class, taint, time>
+ * view of things
+ */
+ private List<TaintingHistoryEntry> _taintLog = Collections.synchronizedList(new LinkedList<TaintingHistoryEntry>());
+
+ /**
+ * compilation results holder for the compiler listeners (components etc...)
+ */
+ private static final Map<Integer, CompilationResult> _compilationResults = new ConcurrentHashMap<Integer, CompilationResult>();
+
+ /**
+ * we keep a 10 minutes timeout period to keep the performance in place
+ */
+ private final long TAINT_HISTORY_TIMEOUT = 10 * 60 * 1000;
+
+ /**
+ * internal class used by our own history log
+ */
+ static class TaintingHistoryEntry
+ {
+ long _timestamp;
+ ClassResource _data;
+
+ public TaintingHistoryEntry(ClassResource data)
+ {
+ _data = data;
+ _timestamp = System.currentTimeMillis();
+ }
+
+ public long getTimestamp()
+ {
+ return _timestamp;
+ }
+
+ public ClassResource getData()
+ {
+ return _data;
+ }
+ }
+
public void initEngines() throws IOException
{
FactoryEngines.getInstance().init();
@@ -115,6 +180,9 @@ public class WeavingContext
return ret;
}
+ /**
+ * @return a map of all watched resources over all engines
+ */
public Map<String, ClassResource> getAllWatchedResources()
{
Map<String, ClassResource> ret = new HashMap<String, ClassResource>();
@@ -129,6 +197,10 @@ public class WeavingContext
return ret;
}
+ /**
+ * @param key the watched resource classname
+ * @return the watched resource from the given key or null
+ */
public ClassResource getWatchedResource(String key)
{
for (ScriptingEngine engine : getEngines())
@@ -139,6 +211,12 @@ public class WeavingContext
return null;
}
+ /**
+ * checks if a resource idenified by key is tainted
+ *
+ * @param key the identifier for the resource
+ * @return true in case of being tainted
+ */
public boolean isTainted(String key)
{
ClassResource res = getWatchedResource(key);
@@ -353,6 +431,9 @@ public class WeavingContext
lifecycleRegistry.put("LIFECYCLE_LAST_TAINTED", System.currentTimeMillis());
}
+ /**
+ * @return the time value of the last taint happening
+ */
public long getLastTaint()
{
Long lastTainted = lifecycleRegistry.get("LIFECYCLE_LAST_TAINTED");
@@ -360,11 +441,17 @@ public class WeavingContext
return lastTainted;
}
+ /**
+ * marks the last annotation scan
+ */
public void markLastAnnotationScan()
{
lifecycleRegistry.put("LIFECYCLE_LAST_ANN_SCAN", System.currentTimeMillis());
}
+ /**
+ * @return a the time value of the last annotation scan
+ */
public long getLastAnnotationScan()
{
Long lastTainted = lifecycleRegistry.get("LIFECYCLE_LAST_ANN_SCAN");
@@ -372,6 +459,111 @@ public class WeavingContext
return lastTainted;
}
+ //------------------------------ tainting history entries -----------------------
+
+ /**
+ * adds a new entry into our taint log
+ * which allows us to access tainting data
+ * from a given point in time
+ *
+ * @param data the tainting data to be added
+ */
+ public void addTaintLogEntry(ClassResource data)
+ {
+ _taintLog.add(new TaintingHistoryEntry(data));
+ }
+
+ /**
+ * garbage collects our tainting data
+ * and removes all entries which are not
+ * present anymore due to timeout
+ * this gc code is called asynchronously
+ * from our tainting thread to keep the
+ * performance intact
+ */
+ public void gcTaintLog()
+ {
+ long timeoutTimestamp = System.currentTimeMillis() - TAINT_HISTORY_TIMEOUT;
+ Iterator<TaintingHistoryEntry> it = _taintLog.iterator();
+
+ while (it.hasNext())
+ {
+ TaintingHistoryEntry entry = it.next();
+ if (entry.getTimestamp() < timeoutTimestamp)
+ {
+ it.remove();
+ }
+ }
+ }
+
+ /**
+ * returns the last noOfEntries entries in the taint history
+ *
+ * @param noOfEntries the number of entries to be delivered
+ * @return a collection of the last <noOfEntries> entries
+ */
+ public Collection<ClassResource> getLastTainted(int noOfEntries)
+ {
+ Iterator<TaintingHistoryEntry> it = _taintLog.subList(Math.max(_taintLog.size() - noOfEntries, 0), _taintLog.size()).iterator();
+ List<ClassResource> retVal = new LinkedList<ClassResource>();
+ while (it.hasNext())
+ {
+ TaintingHistoryEntry entry = it.next();
+ retVal.add(entry.getData());
+ }
+ return retVal;
+ }
+
+ /**
+ * Returns a set of tainting data from a given point in time up until now
+ *
+ * @param timestamp the point in time from which the tainting data has to be derived from
+ * @return a set of entries which are a union of all points in time beginning from timestamp
+ */
+ public Collection<ClassResource> getTaintHistory(long timestamp)
+ {
+ List<ClassResource> retVal = new LinkedList<ClassResource>();
+ Iterator<TaintingHistoryEntry> it = _taintLog.iterator();
+
+ while (it.hasNext())
+ {
+ TaintingHistoryEntry entry = it.next();
+ if (entry.getTimestamp() >= timestamp)
+ {
+ retVal.add(entry.getData());
+ }
+ }
+ return retVal;
+ }
+
+ /**
+ * Returns a set of tainted classes from a given point in time up until now
+ *
+ * @param timestamp the point in time from which the tainting data has to be derived from
+ * @return a set of classnames which are a union of all points in time beginning from timestamp
+ */
+ public Set<String> getTaintHistoryClasses(long timestamp)
+ {
+ Set<String> retVal = new HashSet<String>();
+ Iterator<TaintingHistoryEntry> it = _taintLog.iterator();
+
+ while (it.hasNext())
+ {
+ TaintingHistoryEntry entry = it.next();
+ if (entry.getTimestamp() >= timestamp)
+ {
+ if (entry.getData() instanceof ClassResource)
+ {
+ retVal.add(((ClassResource) entry.getData()).getAClass().getName());
+ } else
+ {
+ retVal.add(entry.getData().getFile().getAbsolutePath());
+ }
+ }
+ }
+ return retVal;
+ }
+
//----------------------------------------------------------------------
/*public ClassDependencies getDependencyMap()
{
@@ -410,4 +602,14 @@ public class WeavingContext
_scriptingEnabled = scriptingEnabled;
}
+ public CompilationResult getCompilationResult(Integer scriptingEngine)
+ {
+ return _compilationResults.get(scriptingEngine);
+ }
+
+ public void setCompilationResult(Integer scriptingEngine, CompilationResult result)
+ {
+ _compilationResults.put(scriptingEngine, result);
+ }
+
}
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/common/util/FileUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/common/util/FileUtils.java?rev=1300132&r1=1300131&r2=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/common/util/FileUtils.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/common/util/FileUtils.java Tue Mar 13 13:47:02 2012
@@ -76,7 +76,7 @@ public class FileUtils {
File tempDir;
String baseTempPath = System.getProperty("java.io.tmpdir");
- String tempDirName = "myfaces_compilation_"; //+ _tempMarker;
+ String tempDirName = "myfaces_compilation_" + _tempMarker;
tempDir = new File(baseTempPath + File.separator + tempDirName);
/*while (tempDir.exists()) {
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/EngineJava.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/EngineJava.java?rev=1300132&r1=1300131&r2=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/EngineJava.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/EngineJava.java Tue Mar 13 13:47:02 2012
@@ -23,6 +23,7 @@ import rewrite.org.apache.myfaces.extens
import rewrite.org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
import rewrite.org.apache.myfaces.extensions.scripting.core.engine.api.CompilationException;
+import rewrite.org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
import rewrite.org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
import rewrite.org.apache.myfaces.extensions.scripting.core.engine.compiler.JSR199Compiler;
@@ -62,15 +63,12 @@ public class EngineJava extends BaseEngi
Collection<String> sourceDirs = configuration.getSourceDirs(getEngineType());
for (String sourceRoot : sourceDirs)
{
- try
- {
- compiler.compile(new File(sourceRoot), targetDir, ClassUtils.getContextClassLoader());
- }
- catch (CompilationException e)
- {
- log.severe(e.getMessage());
- e.printStackTrace();
+ CompilationResult res = compiler.compile(new File(sourceRoot), targetDir,
+ ClassUtils.getContextClassLoader());
+ if(res.hasErrors()) {
+ log.severe(res.getCompilerOutput());
}
+
}
}
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/api/Compiler.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/api/Compiler.java?rev=1300132&r1=1300131&r2=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/api/Compiler.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/api/Compiler.java Tue Mar 13 13:47:02 2012
@@ -40,7 +40,6 @@ public interface Compiler {
* @throws CompilationException
* if a severe error occurred while trying to compile a file
*/
- public CompilationResult compile(File sourcePath, File targetPath, ClassLoader classLoader)
- throws CompilationException;
+ public CompilationResult compile(File sourcePath, File targetPath, ClassLoader classLoader);
}
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/compiler/GroovyCompiler.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/compiler/GroovyCompiler.java?rev=1300132&r1=1300131&r2=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/compiler/GroovyCompiler.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/compiler/GroovyCompiler.java Tue Mar 13 13:47:02 2012
@@ -96,6 +96,10 @@ public class GroovyCompiler implements r
result.registerWarning(convertMessage(collector.getWarning(i)));
}
+ if(result != null) {
+ WeavingContext.getInstance().setCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_GROOVY, result);
+ }
+
return result;
}
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/compiler/JSR199Compiler.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/compiler/JSR199Compiler.java?rev=1300132&r1=1300131&r2=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/compiler/JSR199Compiler.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/engine/compiler/JSR199Compiler.java Tue Mar 13 13:47:02 2012
@@ -20,6 +20,7 @@
package rewrite.org.apache.myfaces.extensions.scripting.core.engine.compiler;
import rewrite.org.apache.myfaces.extensions.scripting.core.api.Configuration;
+import rewrite.org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
import rewrite.org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.FileUtils;
import rewrite.org.apache.myfaces.extensions.scripting.core.engine.api.CompilationException;
@@ -51,7 +52,7 @@ public class JSR199Compiler implements r
javax.tools.JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
ContainerFileManager fileManager = null;
- CompilationResult result = null;
+
public JSR199Compiler()
{
@@ -59,56 +60,6 @@ public class JSR199Compiler implements r
}
/**
- * Compile a single file
- *
- * @param sourceRoot the source search path (root of our source)
- * @return the compilation result of the compilation
- * @throws org.apache.myfaces.extensions.scripting.api.CompilationException
- * in case of a compilation error
- * @deprecated note we will move over to a single
- * compile step in the beginning in the long run
- * we will deprecate it as soon as the full
- * compile at the beginning of the request
- * is implemented
- * <p/>
- * TODO move this code over to the weaver instead of the compiler
- * we do not do a single compile step anymore
- */
- public CompilationResult compile(File sourceRoot, File targetPath, File toCompile, ClassLoader classPathHolder) throws CompilationException
- {
- try
- {
- fileManager = new ContainerFileManager(javaCompiler.getStandardFileManager(new DiagnosticCollector<JavaFileObject>(), null, null));
-
- DiagnosticCollector<JavaFileObject> diagnosticCollector = new DiagnosticCollector<JavaFileObject>();
-
- //TODO add whitelist check here
-
- getLog().info("[EXT-SCRIPTING] Doing a full recompile");
-
- Iterable<? extends JavaFileObject> fileObjects = fileManager.getJavaFileObjects(toCompile);
- String[] options = new String[]{JC_CLASSPATH, fileManager.getClassPath(), JC_TARGET_PATH,
- targetPath.getAbsolutePath(),
- JC_SOURCEPATH,
- sourceRoot.getAbsolutePath(), JC_DEBUG};
- javaCompiler.getTask(null, fileManager, diagnosticCollector, Arrays.asList(options), null, fileObjects).call();
- try
- {
- handleDiagnostics(diagnosticCollector);
- }
- catch (ClassNotFoundException e)
- {
- throw new CompilationException(e);
- }
- return this.result;
- }
- finally
- {
- this.result = null;
- }
- }
-
- /**
* compile all files starting from a given root
* <p/>
* note, the java compiler interface does not allow per se
@@ -122,10 +73,7 @@ public class JSR199Compiler implements r
* @throws org.apache.myfaces.extensions.scripting.api.CompilationException
* in case of a compilation error
*/
- public CompilationResult compile(File sourceRoot, File destination, ClassLoader loader) throws CompilationException
- {
- try
- {
+ public CompilationResult compile(File sourceRoot, File destination, ClassLoader loader) {
WeavingContext context = WeavingContext.getInstance();
Configuration configuration = context.getConfiguration();
@@ -135,8 +83,6 @@ public class JSR199Compiler implements r
getLog().info("[EXT-SCRIPTING] Doing a full recompile");
- //List<File> sourceFiles = FileUtils.fetchSourceFiles(WeavingContext.getConfiguration()
- // .getWhitelistedSourceDirs(ENGINE_TYPE_JSF_JAVA), JAVA_WILDCARD);
List<File> sourceFiles = FileUtils.fetchSourceFiles(configuration.getWhitelistedSourceDirs
(ENGINE_TYPE_JSF_JAVA), JAVA_WILDCARD);
@@ -152,20 +98,13 @@ public class JSR199Compiler implements r
destination.getAbsolutePath(), JC_SOURCEPATH,
sourceRoot.getAbsolutePath(), JC_DEBUG};
javaCompiler.getTask(null, fileManager, diagnosticCollector, Arrays.asList(options), null, fileObjects).call();
- try
- {
- handleDiagnostics(diagnosticCollector);
- }
- catch (ClassNotFoundException e)
- {
- throw new CompilationException(e);
- }
- return this.result;
- }
- finally
- {
- this.result = null;
- }
+
+
+ CompilationResult result = handleDiagnostics(diagnosticCollector);
+
+ WeavingContext.getInstance().setCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_JAVA, result);
+ return result;
+
}
/**
@@ -177,8 +116,7 @@ public class JSR199Compiler implements r
* @throws ClassNotFoundException in case of an error (this is enforced by the compiler interface
* and probably will be overhauled in the long run)
*/
- private void handleDiagnostics(DiagnosticCollector<JavaFileObject> diagnosticCollector) throws
- ClassNotFoundException
+ private CompilationResult handleDiagnostics(DiagnosticCollector<JavaFileObject> diagnosticCollector)
{
if (diagnosticCollector.getDiagnostics().size() > 0)
{
@@ -200,15 +138,13 @@ public class JSR199Compiler implements r
result.getWarnings().add(new CompilationResult.CompilationMessage(diagnostic.getLineNumber(), diagnostic.getMessage(Locale.getDefault())));
}
errors.append(error);
+
}
- this.result = result;
- //WeavingContext.setCompilationResult(ENGINE_TYPE_JSF_JAVA, result);
- assertErrorFound(errors, hasError);
- //return result;
+ return result;
} else
{
//WeavingContext.setCompilationResult(ENGINE_TYPE_JSF_JAVA, new CompilationResult(""));
- this.result = new CompilationResult("");
+ return new CompilationResult("");
}
}
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java?rev=1300132&r1=1300131&r2=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java Tue Mar 13 13:47:02 2012
@@ -152,6 +152,8 @@ public class ClassResource extends Watch
WeavingContext.getInstance().markLastTaint();
//TODO add logging event here
logger.info("[EXT-SCRIPTING] tainting " + getSourceFile());
+ WeavingContext.getInstance().addTaintLogEntry(this);
+ WeavingContext.getInstance().gcTaintLog();
}
tainted = value;
}
Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponent.java (from r1300003, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/CompilerComponent.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponent.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponent.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/CompilerComponent.java&r1=1300003&r2=1300132&rev=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/CompilerComponent.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponent.java Tue Mar 13 13:47:02 2012
@@ -16,10 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.extensions.scripting.components;
+package rewrite.org.apache.myfaces.extensions.scripting.jsf.components;
-import org.apache.myfaces.extensions.scripting.core.util.StringUtils;
-import org.apache.myfaces.extensions.scripting.api.ScriptingConst;
+
+import rewrite.org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.StringUtils;
import javax.el.ValueExpression;
import javax.faces.component.UIOutput;
Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponentRenderer.java (from r1300003, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/CompilerComponentRenderer.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponentRenderer.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponentRenderer.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/CompilerComponentRenderer.java&r1=1300003&r2=1300132&rev=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/CompilerComponentRenderer.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/CompilerComponentRenderer.java Tue Mar 13 13:47:02 2012
@@ -16,12 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.extensions.scripting.components;
+package rewrite.org.apache.myfaces.extensions.scripting.jsf.components;
-import org.apache.myfaces.extensions.scripting.api.CompilationResult;
-import org.apache.myfaces.extensions.scripting.api.ScriptingConst;
-import org.apache.myfaces.extensions.scripting.core.util.StringUtils;
-import org.apache.myfaces.extensions.scripting.core.util.WeavingContext;
+import rewrite.org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import rewrite.org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.StringUtils;
+import rewrite.org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
@@ -50,19 +50,19 @@ public class CompilerComponentRenderer e
CompilationResult result = null;
switch (scriptingLanguage) {
case ScriptingConst.ENGINE_TYPE_JSF_JAVA:
- result = WeavingContext.getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+ result = WeavingContext.getInstance().getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
break;
case ScriptingConst.ENGINE_TYPE_JSF_GROOVY:
- result = WeavingContext.getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_GROOVY);
+ result = WeavingContext.getInstance().getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_GROOVY);
break;
case ScriptingConst.ENGINE_TYPE_JSF_ALL:
result = new CompilationResult("");
- CompilationResult tempResult = WeavingContext.getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+ CompilationResult tempResult = WeavingContext.getInstance().getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
if (tempResult != null) {
copyCompilationResult(result, tempResult);
}
- tempResult = WeavingContext.getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_GROOVY);
+ tempResult = WeavingContext.getInstance().getCompilationResult(ScriptingConst.ENGINE_TYPE_JSF_GROOVY);
if (tempResult != null) {
copyCompilationResult(result, tempResult);
}
Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/RendererConst.java (from r1300003, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/RendererConst.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/RendererConst.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/RendererConst.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/RendererConst.java&r1=1300003&r2=1300132&rev=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/RendererConst.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/RendererConst.java Tue Mar 13 13:47:02 2012
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.myfaces.extensions.scripting.components;
+package rewrite.org.apache.myfaces.extensions.scripting.jsf.components;
/**
* Renderer Constant shared by both renderers
Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistory.java (from r1300003, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/TaintHistory.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistory.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistory.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/TaintHistory.java&r1=1300003&r2=1300132&rev=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/TaintHistory.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistory.java Tue Mar 13 13:47:02 2012
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.myfaces.extensions.scripting.components;
+package rewrite.org.apache.myfaces.extensions.scripting.jsf.components;
import javax.el.ValueExpression;
import javax.faces.component.UIOutput;
Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistoryRenderer.java (from r1300003, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/TaintHistoryRenderer.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistoryRenderer.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistoryRenderer.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/TaintHistoryRenderer.java&r1=1300003&r2=1300132&rev=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/components/TaintHistoryRenderer.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/components/TaintHistoryRenderer.java Tue Mar 13 13:47:02 2012
@@ -17,12 +17,11 @@
* under the License.
*/
-package org.apache.myfaces.extensions.scripting.components;
+package rewrite.org.apache.myfaces.extensions.scripting.jsf.components;
-import org.apache.myfaces.extensions.scripting.core.util.WeavingContext;
-import org.apache.myfaces.extensions.scripting.monitor.ClassResource;
-import org.apache.myfaces.extensions.scripting.monitor.RefreshAttribute;
-import org.apache.myfaces.extensions.scripting.monitor.WatchedResource;
+
+import rewrite.org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import rewrite.org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
@@ -31,7 +30,6 @@ import javax.faces.render.Renderer;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Collection;
-import java.util.Date;
/**
* A renderer which displays our taint history
@@ -52,7 +50,7 @@ public class TaintHistoryRenderer extend
startDiv(component, responseWriter, "historyBox");
int lastTainted = ((TaintHistory) component).getNoEntries();
- Collection<WatchedResource> result = WeavingContext.getRefreshContext().getLastTainted(lastTainted);
+ Collection<ClassResource> result = WeavingContext.getInstance().getLastTainted(lastTainted);
if (result == null || result.isEmpty()) {
responseWriter.write(RendererConst.NO_TAINT_HISTORY_FOUND);
} else {
@@ -64,9 +62,10 @@ public class TaintHistoryRenderer extend
}
- private void writeHistory(UIComponent component, ResponseWriter responseWriter, Collection<WatchedResource> result) throws IOException {
+ private void writeHistory(UIComponent component, ResponseWriter responseWriter,
+ Collection<ClassResource> result) throws IOException {
startDiv(component, responseWriter, "history");
- for (WatchedResource entry : result) {
+ for (ClassResource entry : result) {
startDiv(component, responseWriter, RendererConst.LINE);
writeDiv(component, responseWriter, RendererConst.TIMESTAMP, DateFormat.getInstance().format(entry.getFile().lastModified()));
writeDiv(component, responseWriter, RendererConst.CHANGED_FILE, entry.getFile().getAbsolutePath());
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/JavaCompilerTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/JavaCompilerTest.java?rev=1300132&r1=1300131&r2=1300132&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/JavaCompilerTest.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/JavaCompilerTest.java Tue Mar 13 13:47:02 2012
@@ -105,14 +105,8 @@ public class JavaCompilerTest
WeavingContext.getInstance().getConfiguration().addWhitelistPackage("compiler.myPackage");
CompilationResult result = null;
- try
- {
- result = compiler.compile(root, target, loader);
- }
- catch (CompilationException e)
- {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- }
+
+ result = compiler.compile(root, target, loader);
assertTrue(RESULT_HAS_NO_ERRORS, !result.hasErrors());
@@ -141,14 +135,7 @@ public class JavaCompilerTest
target.deleteOnExit();
CompilationResult result = null;
- try
- {
- result = compiler.compile(root, target, loader);
- }
- catch (CompilationException e)
- {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- }
+ result = compiler.compile(root, target, loader);
assertTrue(RESULT_HAS_NO_ERRORS, !result.hasErrors());