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 2010/04/12 15:32:13 UTC

svn commit: r933228 - in /myfaces/extensions/scripting/trunk/extscript-core-root: extscript-core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/ extscript-core/src/main/java/org/apache/myfaces/scripting/loaders/java/ extscript-cor...

Author: werpu
Date: Mon Apr 12 13:32:12 2010
New Revision: 933228

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

Added:
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/ContextUtils.java   (with props)
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/MockupScriptingWeaver.java   (with props)
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/TestingJavaScriptingWeaver.java   (with props)
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/RecompiledClassLoaderTest.java   (with props)
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloaderTest.java   (with props)
Modified:
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/JSR199Compiler.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/scripting/loaders/java/ThrowawayClassloader.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/components/CompilerComponentTest.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/components/TaintHistoryTest.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/compilerTest/GroovyCompilerTest.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/compilerTest/TestCompilerAPI.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/lifecycle/FailedStartupTestcase.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/lifecycle/StartupTestCase.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/reloading/SimpleReloadingStrategyTest.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/PathUtils.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/jsf/RefreshPhaseListenerTest.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.java

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/JSR199Compiler.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/JSR199Compiler.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/JSR199Compiler.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/JSR199Compiler.java Mon Apr 12 13:32:12 2010
@@ -121,6 +121,11 @@ public class JSR199Compiler implements o
         getLog().info("[EXT-SCRIPTING] Doing a full recompile");
 
         List<File> sourceFiles = FileUtils.fetchSourceFiles(WeavingContext.getConfiguration().getWhitelistedSourceDirs(ScriptingConst.ENGINE_TYPE_JSF_JAVA), CompilerConst.JAVA_WILDCARD);
+        for(File sourceFile: sourceFiles) {
+            if(!sourceFile.exists()) {
+                getLog().log(Level.WARNING, "[EXT-SCRIPTING] Source file with path {0} does not exist it might cause an error in the compilation process", sourceFile.getAbsolutePath());
+            }
+        }
         Iterable<? extends JavaFileObject> fileObjects = fileManager.getJavaFileObjects(sourceFiles.toArray(new File[sourceFiles.size()]));
         String[] options = new String[]{CompilerConst.JC_CLASSPATH, fileManager.getClassPath(), CompilerConst.JC_TARGET_PATH, WeavingContext.getConfiguration().getCompileTarget().getAbsolutePath(), CompilerConst.JC_SOURCEPATH, sourceRoot.getAbsolutePath(), CompilerConst.JC_DEBUG};
         javaCompiler.getTask(null, fileManager, diagnosticCollector, Arrays.asList(options), null, fileObjects).call();

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/scripting/loaders/java/ThrowawayClassloader.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/scripting/loaders/java/ThrowawayClassloader.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/scripting/loaders/java/ThrowawayClassloader.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/scripting/loaders/java/ThrowawayClassloader.java Mon Apr 12 13:32:12 2010
@@ -40,7 +40,6 @@ public class ThrowawayClassloader extend
 
     static final Logger _logger = Logger.getLogger(ThrowawayClassloader.class.getName());
 
-    private static File _tempDir = null;
     int _scriptingEngine;
     String _engineExtension;
 
@@ -51,11 +50,6 @@ public class ThrowawayClassloader extend
         synchronized (this.getClass()) {
             _scriptingEngine = scriptingEngine;
             _engineExtension = engineExtension;
-            
-            if (_tempDir != null) {
-                return;
-            }
-            _tempDir = WeavingContext.getConfiguration().getCompileTarget();
         }
     }
 
@@ -80,7 +74,7 @@ public class ThrowawayClassloader extend
 
     @Override
     public InputStream getResourceAsStream(String name) {
-        File resource = new File(_tempDir.getAbsolutePath() + File.separator + name);
+        File resource = new File(WeavingContext.getConfiguration().getCompileTarget().getAbsolutePath() + File.separator + name);
         if (resource.exists()) {
             try {
                 return new FileInputStream(resource);
@@ -97,10 +91,15 @@ public class ThrowawayClassloader extend
 
         File target = getClassFile(className);
         if (target.exists()) {
+            _logger.log(Level.INFO,"[EXT-SCRIPTING] target {0} exists", className);
+
             ReloadingMetadata data = WeavingContext.getFileChangedDaemon().getClassMap().get(className);
             if (data != null && !data.isTainted()) {
+                _logger.info("[EXT-SCRIPTING] data found but not tainted yet");
+
                 return data.getAClass();
             }
+             _logger.log(Level.FINER,"[EXT-SCRIPTING] loading class {0} from filesystem", className);
 
             FileInputStream iStream = null;
 
@@ -114,33 +113,23 @@ public class ThrowawayClassloader extend
                     fileContent = new byte[fileLength];
                     iStream = new FileInputStream(target);
                     int result = iStream.read(fileContent);
-                    if (_logger.isLoggable(Level.FINER)) {
-                        _logger.log(Level.FINER, "read {0} bytes", String.valueOf(result));
-                    }
+                    _logger.log(Level.FINER, "read {0} bytes", String.valueOf(result));
                 }
-                // Erzeugt aus dem byte Feld ein Class Object.
+
                 Class retVal;
 
                 //we have to do it here because just in case
-                //a dependend class is loaded as well we run into classcast exceptions
+                //a dependent class is loaded as well we run into classcast exceptions
                 if (data != null) {
                     data.setTainted(false);
 
-                    //storeReloadableDefinitions(className, target, fileLength, fileContent)
-                    //try {
-
                     retVal = super.defineClass(className, fileContent, 0, fileLength);
 
-                    //} catch (java.lang.LinkageError e) {
-                    //something has interfered in a dirty manner (direct classforname instead) we generate a quick throw away classloader to fix this
-                    //    ClassLoader loader = new RecompiledClassLoader(this.getParent(), _scriptingEngine, _engineExtension);
-                    //    retVal = loader.loadClass(className);
-                    //}
                     data.setAClass(retVal);
                     return retVal;
                 } else {
                     //we store the initial reloading meta data information so that it is refreshed
-                    //later on, this we we cover dependend classes on the initial load
+                    //later on, this we we cover dependent classes on the initial load
                     return storeReloadableDefinitions(className, fileLength, fileContent);
                 }
 
@@ -159,7 +148,7 @@ public class ThrowawayClassloader extend
                 }
             }
         }
-
+         _logger.log(Level.FINER,"[EXT-SCRIPTING] target {0} does not exist", target.getAbsolutePath());
         return super.loadClass(className);
     }
 
@@ -210,7 +199,7 @@ public class ThrowawayClassloader extend
     }
 
     public File getClassFile(String className) {
-        return ClassUtils.classNameToFile(ThrowawayClassloader._tempDir.getAbsolutePath(), className);
+        return ClassUtils.classNameToFile(WeavingContext.getConfiguration().getCompileTarget().getAbsolutePath(), className);
     }
 
    

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/components/CompilerComponentTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/components/CompilerComponentTest.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/components/CompilerComponentTest.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/components/CompilerComponentTest.java Mon Apr 12 13:32:12 2010
@@ -22,6 +22,7 @@ package org.apache.myfaces.scripting.com
 import org.apache.myfaces.renderkit.html.HtmlFormRenderer;
 import org.apache.myfaces.scripting.api.CompilationResult;
 import org.apache.myfaces.scripting.api.ScriptingConst;
+import org.apache.myfaces.scripting.core.support.ContextUtils;
 import org.apache.myfaces.scripting.core.support.MockServletContext;
 import org.apache.myfaces.scripting.core.util.WeavingContext;
 import org.apache.myfaces.scripting.core.util.WeavingContextInitializer;
@@ -66,8 +67,7 @@ public class CompilerComponentTest exten
 
     public void setUp() throws Exception {
         super.setUp();
-        context = new MockServletContext();
-        WeavingContextInitializer.initWeavingContext(context);
+        context = ContextUtils.startupSystem();
 
         _writer = new MockResponseWriter(new StringWriter(), null, null);
 

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/components/TaintHistoryTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/components/TaintHistoryTest.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/components/TaintHistoryTest.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/components/TaintHistoryTest.java Mon Apr 12 13:32:12 2010
@@ -21,6 +21,7 @@ package org.apache.myfaces.scripting.com
 
 import org.apache.myfaces.renderkit.html.HtmlFormRenderer;
 import org.apache.myfaces.scripting.api.ScriptingConst;
+import org.apache.myfaces.scripting.core.support.ContextUtils;
 import org.apache.myfaces.scripting.core.support.MockServletContext;
 import org.apache.myfaces.scripting.core.util.WeavingContext;
 import org.apache.myfaces.scripting.core.util.WeavingContextInitializer;
@@ -63,8 +64,7 @@ public class TaintHistoryTest extends Ab
 
     public void setUp() throws Exception {
         super.setUp();
-        context = new MockServletContext();
-        WeavingContextInitializer.initWeavingContext(context);
+        context = ContextUtils.startupSystem();
 
         _writer = new MockResponseWriter(new StringWriter(), null, null);
 

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/compilerTest/GroovyCompilerTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/compilerTest/GroovyCompilerTest.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/compilerTest/GroovyCompilerTest.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/compilerTest/GroovyCompilerTest.java Mon Apr 12 13:32:12 2010
@@ -24,8 +24,9 @@ import org.apache.myfaces.scripting.api.
 import org.apache.myfaces.scripting.api.Configuration;
 import org.apache.myfaces.scripting.api.ScriptingConst;
 import org.apache.myfaces.scripting.core.util.WeavingContext;
-import org.apache.myfaces.scripting.sandbox.compiler.GroovyCompiler;
+
 import org.apache.myfaces.scripting.core.util.FileUtils;
+import org.apache.myfaces.scripting.loaders.groovy.compiler.GroovyCompiler;
 import org.junit.Test;
 
 import java.io.File;

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/compilerTest/TestCompilerAPI.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/compilerTest/TestCompilerAPI.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/compilerTest/TestCompilerAPI.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/compilerTest/TestCompilerAPI.java Mon Apr 12 13:32:12 2010
@@ -23,6 +23,7 @@ import org.apache.commons.io.FilenameUti
 import org.apache.myfaces.scripting.api.Configuration;
 import org.apache.myfaces.scripting.api.DynamicCompiler;
 import org.apache.myfaces.scripting.api.ScriptingConst;
+import org.apache.myfaces.scripting.core.support.ContextUtils;
 import org.apache.myfaces.scripting.core.support.PathUtils;
 import org.apache.myfaces.scripting.core.util.WeavingContext;
 import org.apache.myfaces.scripting.loaders.java.compiler.CompilerFacade;
@@ -48,16 +49,16 @@ public class TestCompilerAPI {
     private static final String PROBE2 = _pathUtils.getResource("compiler/TestProbe2.java");
     private static final String RESOURCES = _pathUtils.getResource(".");
 
-    private static final String CLASSFILE1_IS_COMPILED = "Classfile1 is compiled into the target";
-    private static final String CLASSFILE2_IS_COMPILED = "Classfile2 is compiled into the target";
+    private static final String CLASSFILE1_IS_COMPILED = "Class file1 is compiled into the target";
+    private static final String CLASSFILE2_IS_COMPILED = "Class file2 is compiled into the target";
     private static final String TARGET_EXISTS = "target exists files are compiled into the target";
-    private static final String CLASSFILE_1_IS_NOT_COMPILED = "Classfile_1 is not compiled into the target";
-    private static final String CLASSFILE_2_IS_NOT_COMPILED = "Classfile_2 is not compiled into the target";
-    private static final String CLASSFILE_3_IS_COMPILED = "Classfile_3 is compiled into the target";
-
-    File probe1;
-    File probe2;
-    File root;
+    private static final String CLASSFILE_1_IS_NOT_COMPILED = "Class file_1 is not compiled into the target";
+    private static final String CLASSFILE_2_IS_NOT_COMPILED = "Class file_2 is not compiled into the target";
+    private static final String CLASSFILE_3_IS_COMPILED = "Class file_3 is compiled into the target";
+
+    File _probe1;
+    File _probe2;
+    File _root;
 
     public TestCompilerAPI() {
         String sourcePath1 = PROBE1;
@@ -68,12 +69,12 @@ public class TestCompilerAPI {
         sourcePath2 = FilenameUtils.normalize(sourcePath2);
         rootPath = FilenameUtils.normalize(rootPath);
 
-        probe1 = new File(sourcePath1);
-        probe2 = new File(sourcePath2);
-        root = new File(rootPath);
+        _probe1 = new File(sourcePath1);
+        _probe2 = new File(sourcePath2);
+        _root = new File(rootPath);
 
         WeavingContext.setConfiguration(new Configuration());
-        WeavingContext.getConfiguration().addSourceDir(ScriptingConst.ENGINE_TYPE_JSF_JAVA, root.getAbsolutePath());
+        WeavingContext.getConfiguration().addSourceDir(ScriptingConst.ENGINE_TYPE_JSF_JAVA, _root.getAbsolutePath());
     }
 
     @Test
@@ -88,7 +89,7 @@ public class TestCompilerAPI {
 
         try {
 
-            DynamicCompiler compiler = (DynamicCompiler) new CompilerFacade(false);//new ReflectCompilerFacade();
+            /*DynamicCompiler compiler = (DynamicCompiler) new CompilerFacade(false);//new ReflectCompilerFacade();
             try {
                 FileUtils.deleteDirectory(WeavingContext.getConfiguration().getCompileTarget());
             } catch (IOException e) {
@@ -96,7 +97,9 @@ public class TestCompilerAPI {
             }
             WeavingContext.getConfiguration().getCompileTarget().mkdirs();
 
-            File target = compiler.compileAllFiles(root.getAbsolutePath(), "");
+            File target = compiler.compileAllFiles(_root.getAbsolutePath(), "");
+            */
+            File target = ContextUtils.doJavaRecompile(_root.getAbsolutePath());
 
             assertTrue(TARGET_EXISTS, target != null);
             File classFile1 = new File(target.getAbsolutePath() + "/compiler/TestProbe1.class");
@@ -120,7 +123,7 @@ public class TestCompilerAPI {
 
             DynamicCompiler compiler = (DynamicCompiler) new CompilerFacade(false);//new ReflectCompilerFacade();
 
-            File target = compiler.compileAllFiles(root.getAbsolutePath(), "");
+            File target = compiler.compileAllFiles(_root.getAbsolutePath(), "");
 
             assertTrue(TARGET_EXISTS, target != null);
             File classFile1 = new File(target.getAbsolutePath() + "/compiler/TestProbe1.class");

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/lifecycle/FailedStartupTestcase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/lifecycle/FailedStartupTestcase.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/lifecycle/FailedStartupTestcase.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/lifecycle/FailedStartupTestcase.java Mon Apr 12 13:32:12 2010
@@ -20,11 +20,13 @@
 package org.apache.myfaces.scripting.core.lifecycle;
 
 import org.apache.myfaces.scripting.api.ScriptingConst;
+import org.apache.myfaces.scripting.core.support.ContextUtils;
 import org.apache.myfaces.scripting.core.support.LoggingHandler;
 import org.apache.myfaces.scripting.core.support.MockServletContext;
 import org.apache.myfaces.scripting.core.util.WeavingContext;
 import org.apache.myfaces.scripting.core.util.WeavingContextInitializer;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import javax.servlet.ServletContext;
@@ -42,6 +44,7 @@ import static org.junit.Assert.*;
  * @version $Revision$ $Date$
  */
 
+
 public class FailedStartupTestCase {
     ServletContext context;
     LoggingHandler handler;
@@ -65,16 +68,14 @@ public class FailedStartupTestCase {
 
     @Test
     public void testStartup() {
-        context = new MockServletContext(VALID_PATH);
-        WeavingContextInitializer.initWeavingContext(context);
+        context = ContextUtils.startupSystem(VALID_PATH);
         assertFalse(MSG_DISABLED, WeavingContext.isScriptingEnabled());
         assertTrue(handler.getOutput().toString().contains(ScriptingConst.ERR_SERVLET_FILTER));
     }
 
     @Test
     public void testWebxmlMissing() {
-        context = new MockServletContext(INVALID_PATH);
-        WeavingContextInitializer.initWeavingContext(context);
+        context =  ContextUtils.startupSystem(INVALID_PATH);
         assertFalse(MSG_DISABLED, WeavingContext.isScriptingEnabled());
         assertTrue(handler.getOutput().toString().contains(ScriptingConst.ERR_SERVLET_FILTER));
     }

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/lifecycle/StartupTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/lifecycle/StartupTestCase.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/lifecycle/StartupTestCase.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/lifecycle/StartupTestCase.java Mon Apr 12 13:32:12 2010
@@ -20,6 +20,7 @@
 package org.apache.myfaces.scripting.core.lifecycle;
 
 import org.apache.myfaces.scripting.api.ScriptingConst;
+import org.apache.myfaces.scripting.core.support.ContextUtils;
 import org.apache.myfaces.scripting.core.support.MockServletContext;
 import org.apache.myfaces.scripting.core.util.WeavingContext;
 import org.apache.myfaces.scripting.core.util.WeavingContextInitializer;
@@ -42,8 +43,7 @@ public class StartupTestCase {
 
     @Before
     public void init() {
-        context = new MockServletContext();
-        WeavingContextInitializer.initWeavingContext(context);
+        context = ContextUtils.startupSystem();
     }
 
     @Test

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/reloading/SimpleReloadingStrategyTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/reloading/SimpleReloadingStrategyTest.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/reloading/SimpleReloadingStrategyTest.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/reloading/SimpleReloadingStrategyTest.java Mon Apr 12 13:32:12 2010
@@ -22,10 +22,21 @@ package org.apache.myfaces.scripting.cor
 import org.apache.myfaces.scripting.api.ScriptingConst;
 import org.apache.myfaces.scripting.api.ScriptingWeaver;
 import org.apache.myfaces.scripting.core.probes.Probe;
+import org.apache.myfaces.scripting.core.support.ContextUtils;
 import org.apache.myfaces.scripting.core.support.ObjectReloadingWeaver;
+import org.apache.myfaces.scripting.core.support.PathUtils;
+import org.apache.myfaces.scripting.core.support.TestingJavaScriptingWeaver;
+import org.apache.myfaces.scripting.core.util.ReflectUtil;
+import org.apache.myfaces.scripting.core.util.WeavingContext;
+import org.apache.myfaces.scripting.loaders.java.RecompiledClassLoader;
+import org.apache.myfaces.scripting.refresh.ReloadingMetadata;
 import org.junit.Before;
 import org.junit.Test;
 
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.util.logging.Logger;
+
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
@@ -38,6 +49,14 @@ import static org.junit.Assert.assertTru
 
 public class SimpleReloadingStrategyTest {
 
+    private static final PathUtils _pathUtils = new PathUtils();
+    private static final String RESOURCES = _pathUtils.getResource(".");
+    Logger logger = Logger.getLogger(SimpleReloadingStrategyTest.class.getName());
+
+    ServletContext _context;
+    RecompiledClassLoader _loader;
+    File _root = new File(RESOURCES + File.separator + "compiler/");
+
     SimpleReloadingStrategy _strategy;
 
     static class MyProbe {
@@ -47,19 +66,50 @@ public class SimpleReloadingStrategyTest
     }
 
     @Before
-    public void init() {
-        _strategy = new SimpleReloadingStrategy(new ObjectReloadingWeaver(Probe.class));
+    public void init() throws Exception {
+        _context = ContextUtils.startupSystem();
+        WeavingContext.getConfiguration().getSourceDirs(ScriptingConst.ENGINE_TYPE_JSF_JAVA).clear();
+        WeavingContext.getConfiguration().addSourceDir(ScriptingConst.ENGINE_TYPE_JSF_JAVA, _root.getAbsolutePath());
+
+        _loader = new RecompiledClassLoader(Thread.currentThread().getContextClassLoader(), ScriptingConst.ENGINE_TYPE_JSF_JAVA, ".java", false);
+        ContextUtils.doJavaRecompile(_root.getAbsolutePath());
+
+        /**
+         * we now work on our normal scripting weaver for java for this testcase
+         */
+        WeavingContext.setWeaver(new TestingJavaScriptingWeaver());
+        _strategy = new SimpleReloadingStrategy(WeavingContext.getWeaver());
     }
 
     @Test
     public void testReload() throws Exception {
-        //TODO we have to make a real class reloading here
-        //be registering our probe again in a temporary classloader
 
-       // Probe probe = new Probe();
-       // Probe probe2 = (Probe) _strategy.reload(probe, ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+        Object probe = _loader.loadClass("compiler.TestProbe1").newInstance();
+        ReloadingMetadata metaData = getMetadata(probe);
+        WeavingContext.getRefreshContext().getDaemon().getClassMap().put("compiler.TestProbe1", metaData);
+
+        ReflectUtil.executeMethod(probe, "setTestAttr", "hello");
+        Object probe2 = _strategy.reload(probe, ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+        Object attr =  ReflectUtil.executeMethod(probe, "getTestAttr");
+        assertFalse(probe.hashCode() == probe2.hashCode());
+        assertTrue(attr instanceof String);
+        assertTrue(((String)attr).equals("hello"));
+
+        Object probe3 = _strategy.reload(probe2, ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+        assertTrue(probe2 == probe3);
+    }
 
-       // assertFalse(probe == probe2);
+    private ReloadingMetadata getMetadata(Object probe) {
+        ReloadingMetadata metaData = new ReloadingMetadata();
+        metaData.setAClass(probe.getClass());
+        metaData.setAnnotated(false);
+        metaData.setSourcePath(RESOURCES);
+        metaData.setFileName("compiler/TestProbe1.java");
+        metaData.setScriptingEngine(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+        metaData.setTaintedOnce(true);
+        metaData.setTainted(true);
+        metaData.setTimestamp(System.currentTimeMillis());
+        return metaData;
     }
 
     @Test

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/ContextUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/ContextUtils.java?rev=933228&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/ContextUtils.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/ContextUtils.java Mon Apr 12 13:32:12 2010
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.scripting.core.support;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.myfaces.scripting.api.DynamicCompiler;
+import org.apache.myfaces.scripting.core.util.WeavingContext;
+import org.apache.myfaces.scripting.core.util.WeavingContextInitializer;
+import org.apache.myfaces.scripting.loaders.java.compiler.CompilerFacade;
+
+import java.io.File;
+import java.io.IOException;
+
+import static org.junit.Assert.fail;
+
+/**
+ * Context utils which store the reusable test code
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class ContextUtils {
+    /**
+     * A startup routine shared by many tests
+     * to do the basic weaving initialization
+     *
+     * @return the mockup servlet context
+     */
+    public static MockServletContext startupSystem() {
+        MockServletContext context = new MockServletContext();
+        WeavingContextInitializer.initWeavingContext(context);
+        return context;
+    }
+
+    /**
+     * same as the other one but with a web.xml path being possible
+     * @param webXmlPath the path to the web.xml
+     * @return the servlet context
+     */
+    public static MockServletContext startupSystem(String webXmlPath) {
+        MockServletContext context = new MockServletContext(webXmlPath);
+        WeavingContextInitializer.initWeavingContext(context);
+        return context;
+    }
+
+
+    public static File doJavaRecompile(String sourceRoot) throws ClassNotFoundException {
+        DynamicCompiler compiler = new CompilerFacade(false);
+        try {
+            FileUtils.deleteDirectory(WeavingContext.getConfiguration().getCompileTarget());
+        } catch (IOException e) {
+            fail(e.getMessage());
+        }
+        WeavingContext.getConfiguration().getCompileTarget().mkdirs();
+        return compiler.compileAllFiles(sourceRoot, "");
+
+    }
+
+}

Propchange: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/ContextUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/ContextUtils.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/MockupScriptingWeaver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/MockupScriptingWeaver.java?rev=933228&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/MockupScriptingWeaver.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/MockupScriptingWeaver.java Mon Apr 12 13:32:12 2010
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.scripting.core.support;
+
+import org.apache.myfaces.scripting.api.ScriptingWeaver;
+
+import java.util.Collection;
+
+/**
+ * A simple mockup which just
+ * remembers its last operation
+ *
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class MockupScriptingWeaver implements ScriptingWeaver {
+
+    String _lastOp = null;
+    int _scriptingEngine;
+
+    public MockupScriptingWeaver(int scriptingEngine) {
+        _scriptingEngine = scriptingEngine;
+    }
+
+    public String getLastOp() {
+        return _lastOp;
+    }
+
+    public void setLastOp(String lastOp) {
+        this._lastOp = lastOp;
+    }
+
+    public void appendCustomScriptPath(String scriptPath) {
+        _lastOp = "appendCustomScriptPath";
+    }
+
+    public Object reloadScriptingInstance(Object o, int artifactType) {
+        _lastOp = "reloadScriptingInstance";
+        return o;
+    }
+
+    public Class reloadScriptingClass(Class aclass) {
+        _lastOp = "reloadScriptingInstance";
+        return aclass;
+    }
+
+    public Class loadScriptingClassFromName(String className) {
+        _lastOp = "loadScriptingClassFromName";
+        return null;
+    }
+
+    public int getScriptingEngine() {
+        _lastOp = "getScriptingEngine";
+        return _scriptingEngine;
+    }
+
+    public boolean isDynamic(Class clazz) {
+        _lastOp = "isDynamic";
+        return true;
+    }
+
+    public ScriptingWeaver getWeaverInstance(Class weaverClass) {
+        _lastOp = "getWeaverInstance";
+        return this;
+    }
+
+    public void fullClassScan() {
+        _lastOp = "fullClassScan";
+    }
+
+    public void fullRecompile() {
+        _lastOp = "fullRecompile";
+    }
+
+    public void postStartupActions() {
+        _lastOp = "postStartupActions";
+    }
+
+    public void requestRefresh() {
+        _lastOp = "requestRefresh";
+    }
+
+    public Collection<String> loadPossibleDynamicClasses() {
+        _lastOp = "loadPossibleDynamicClasses";
+        return null;
+    }
+
+    public void scanForAddedClasses() {
+        _lastOp = "scanForAddedClasses";
+    }
+}

Propchange: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/MockupScriptingWeaver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/MockupScriptingWeaver.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/PathUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/PathUtils.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/PathUtils.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/PathUtils.java Mon Apr 12 13:32:12 2010
@@ -53,10 +53,31 @@ public class PathUtils {
     }
 
     public String getResource(String in) {
-        if(in.startsWith("//") || in.startsWith("\\")) {
+        if (in.startsWith("//") || in.startsWith("\\")) {
             in = in.substring(1);
         }
         return _resourceRoot + File.separator + in;
     }
 
+    /**
+     * Simulates the Unix touch statement on a relative pathed source file
+     *
+     * @param relativeSourceFile the relative path to the resource file
+     */
+    public void touch(String relativeSourceFile) {
+        File resource = new File(getResource(relativeSourceFile));
+        touch(resource);
+    }
+
+    /**
+     * Unix touch on a file object
+     *
+     * @param resource the file object to be touched
+     */
+    public void touch(File resource) {
+        if (resource.exists()) {
+            resource.setLastModified(System.currentTimeMillis());
+        }
+    }
+
 }

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/TestingJavaScriptingWeaver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/TestingJavaScriptingWeaver.java?rev=933228&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/TestingJavaScriptingWeaver.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/TestingJavaScriptingWeaver.java Mon Apr 12 13:32:12 2010
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.scripting.core.support;
+
+import org.apache.myfaces.scripting.api.DynamicCompiler;
+import org.apache.myfaces.scripting.loaders.java.JavaScriptingWeaver;
+import org.apache.myfaces.scripting.loaders.java.compiler.CompilerFacade;
+import org.junit.Ignore;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+@Ignore
+public class TestingJavaScriptingWeaver extends JavaScriptingWeaver {
+    @Override
+    protected DynamicCompiler instantiateCompiler() {
+        /*we enforce javac for testing purposes*/
+        return new CompilerFacade(false);
+    }
+}

Propchange: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/TestingJavaScriptingWeaver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/core/support/TestingJavaScriptingWeaver.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/jsf/RefreshPhaseListenerTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/jsf/RefreshPhaseListenerTest.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/jsf/RefreshPhaseListenerTest.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/jsf/RefreshPhaseListenerTest.java Mon Apr 12 13:32:12 2010
@@ -19,6 +19,7 @@
 
 package org.apache.myfaces.scripting.jsf;
 
+import org.apache.myfaces.scripting.core.support.ContextUtils;
 import org.apache.myfaces.scripting.core.support.MockServletContext;
 import org.apache.myfaces.scripting.core.util.WeavingContextInitializer;
 import org.apache.myfaces.test.base.AbstractJsfTestCase;
@@ -48,8 +49,7 @@ public class RefreshPhaseListenerTest ex
     public void setUp() throws Exception {
         super.setUp();
         probe = new RefreshPhaseListener();
-        context = new MockServletContext();
-        WeavingContextInitializer.initWeavingContext(context);
+        context = ContextUtils.startupSystem();
 
         runner = new Runnable() {
             public void run() {

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/RecompiledClassLoaderTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/RecompiledClassLoaderTest.java?rev=933228&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/RecompiledClassLoaderTest.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/RecompiledClassLoaderTest.java Mon Apr 12 13:32:12 2010
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.scripting.loaders.java;
+
+import org.apache.myfaces.scripting.api.ScriptingConst;
+import org.apache.myfaces.scripting.core.support.ContextUtils;
+import org.apache.myfaces.scripting.core.support.PathUtils;
+import org.apache.myfaces.scripting.core.util.WeavingContext;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.security.AccessController;
+import java.util.logging.Logger;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class RecompiledClassLoaderTest {
+
+    private static final PathUtils _pathUtils = new PathUtils();
+    private static final String RESOURCES = _pathUtils.getResource(".");
+    Logger logger = Logger.getLogger(RecompiledClassLoaderTest.class.getName());
+
+    ServletContext _context;
+    RecompiledClassLoader _loader;
+    File _root = new File(RESOURCES + File.separator + "compiler/");
+
+    @Before
+    public void init() throws Exception {
+        _context = ContextUtils.startupSystem();
+        WeavingContext.getConfiguration().getSourceDirs(ScriptingConst.ENGINE_TYPE_JSF_JAVA).clear();
+        WeavingContext.getConfiguration().addSourceDir(ScriptingConst.ENGINE_TYPE_JSF_JAVA, _root.getAbsolutePath());
+
+        _loader = new RecompiledClassLoader(Thread.currentThread().getContextClassLoader(), ScriptingConst.ENGINE_TYPE_JSF_JAVA, ".java", false);
+        ContextUtils.doJavaRecompile(_root.getAbsolutePath());
+
+    }
+
+    @Test
+    public void testInit2() {
+        new RecompiledClassLoader();
+    }
+
+    @Test
+    public void testLoadClass() throws Exception {
+
+        //the simple reloading case is handled by the reloading strategy testcase
+        //so this test is mostly just to test the rest of the class
+
+        Class clazz1 = _loader.loadClass("java.lang.String");
+        Class clazz2 = _loader.loadClass("java.lang.String");
+        assertTrue(clazz1.hashCode() == clazz2.hashCode());
+
+    }
+
+    @Test
+    public void testGetSetSourceRoot() throws Exception {
+        _loader.setSourceRoot("booga");
+        assertTrue(_loader.getSourceRoot().equals("booga"));
+    }
+
+}

Propchange: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/RecompiledClassLoaderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/RecompiledClassLoaderTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloaderTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloaderTest.java?rev=933228&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloaderTest.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloaderTest.java Mon Apr 12 13:32:12 2010
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.scripting.loaders.java;
+
+import org.apache.myfaces.scripting.api.ScriptingConst;
+import org.apache.myfaces.scripting.core.support.ContextUtils;
+import org.apache.myfaces.scripting.core.support.PathUtils;
+import org.apache.myfaces.scripting.core.util.WeavingContext;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ScannerClassloaderTest {
+    private static final PathUtils _pathUtils = new PathUtils();
+    private static final String RESOURCES = _pathUtils.getResource(".");
+
+    ServletContext _context;
+    ScannerClassloader _loader;
+    File _root = new File(RESOURCES + File.separator + "compiler/");
+
+    @Before
+    public void init() throws Exception {
+        _context = ContextUtils.startupSystem();
+        WeavingContext.getConfiguration().getSourceDirs(ScriptingConst.ENGINE_TYPE_JSF_JAVA).clear();
+        WeavingContext.getConfiguration().addSourceDir(ScriptingConst.ENGINE_TYPE_JSF_JAVA, _root.getAbsolutePath());
+
+        _loader = new ScannerClassloader(Thread.currentThread().getContextClassLoader(), ScriptingConst.ENGINE_TYPE_JSF_JAVA, ".java", WeavingContext.getConfiguration().getCompileTarget());
+        ContextUtils.doJavaRecompile(_root.getAbsolutePath());
+    }
+
+    @Test
+    public void testInit2() {
+        new RecompiledClassLoader();
+    }
+
+    @Test
+    public void testLoadClass() throws Exception {
+        Class clazz1 = _loader.loadClass("compiler.TestProbe1");
+        Class clazz2 = _loader.loadClass("compiler.TestProbe1");
+        assertTrue(clazz1 == clazz2);
+    }
+
+    
+}

Propchange: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloaderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloaderTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.java?rev=933228&r1=933227&r2=933228&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.java Mon Apr 12 13:32:12 2010
@@ -6,4 +6,13 @@ package compiler;
 
 public class TestProbe1 {
 
+    private String testAttr;
+
+    public String getTestAttr() {
+        return testAttr;
+    }
+
+    public void setTestAttr(String testAttr) {
+        this.testAttr = testAttr;
+    }
 }
\ No newline at end of file