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/19 14:07:19 UTC

svn commit: r1302408 - in /myfaces/extensions/scripting/trunk: extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/c...

Author: werpu
Date: Mon Mar 19 13:07:19 2012
New Revision: 1302408

URL: http://svn.apache.org/viewvc?rev=1302408&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-157 eliminating the scanner classloader

Modified:
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/BaseScanner.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/loaders/ScannerClassloader.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/loader/ThrowAwayClassloader.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java
    myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/GenericAnnotationScanner.java
    myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService.groovy
    myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService2.groovy
    myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter1.java
    myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter2.java
    myfaces/extensions/scripting/trunk/src/site/xdoc/installation.xml

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/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/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java?rev=1302408&r1=1302407&r2=1302408&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java Mon Mar 19 13:07:19 2012
@@ -25,7 +25,6 @@ import org.apache.myfaces.extensions.scr
 import org.apache.myfaces.extensions.scripting.core.engine.api.ClassScanner;
 import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
 import org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
-import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.loaders.ScannerClassloader;
 import org.apache.myfaces.extensions.scripting.core.loader.ThrowAwayClassloader;
 import org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
 import org.apache.myfaces.extensions.scripting.core.monitor.WatchedResource;
@@ -351,8 +350,8 @@ public class WeavingContext
 
     public boolean isDynamic(Class clazz)
     {
-        return ((clazz.getClassLoader() instanceof ThrowAwayClassloader) || (clazz.getClassLoader() instanceof
-            ScannerClassloader));
+        return (clazz.getClassLoader() instanceof ThrowAwayClassloader)/*<> || (clazz.getClassLoader() instanceof
+            ScannerClassloader))*/;
     }
 
     /**

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/BaseScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/BaseScanner.java?rev=1302408&r1=1302407&r2=1302408&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/BaseScanner.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/BaseScanner.java Mon Mar 19 13:07:19 2012
@@ -25,8 +25,8 @@ import org.apache.myfaces.extensions.scr
 import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.StandardDependencyScanner;
 import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.api.DependencyScanner;
 import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.filter.WhitelistFilter;
-import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.loaders.ScannerClassloader;
 import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.registry.ExternalFilterDependencyRegistry;
+import org.apache.myfaces.extensions.scripting.core.loader.ThrowAwayClassloader;
 
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
@@ -106,13 +106,19 @@ public abstract class BaseScanner
     {
         try
         {
-            return AccessController.doPrivileged(new PrivilegedExceptionAction<ScannerClassloader>()
+            return AccessController.doPrivileged(new PrivilegedExceptionAction<ThrowAwayClassloader>()
             {
-                public ScannerClassloader run()
+               /*<> public ScannerClassloader run()
                 {
                     return new ScannerClassloader(Thread.currentThread().getContextClassLoader(), getEngineType(),
                             getFileEnding(), WeavingContext.getInstance().getConfiguration().getCompileTarget());
+                }*/
+
+                 public ThrowAwayClassloader run()
+                {
+                    return new ThrowAwayClassloader(Thread.currentThread().getContextClassLoader(),false);
                 }
+
             });
         }
         catch (PrivilegedActionException e)

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/loaders/ScannerClassloader.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/loaders/ScannerClassloader.java?rev=1302408&r1=1302407&r2=1302408&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/loaders/ScannerClassloader.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/dependencyScan/loaders/ScannerClassloader.java Mon Mar 19 13:07:19 2012
@@ -30,8 +30,10 @@ import java.util.logging.Logger;
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
+ *
+ * TODO replace it with the ThrowAwayLoader
  */
-
+@Deprecated
 public class ScannerClassloader extends ClassLoader
 {
 

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/loader/ThrowAwayClassloader.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/loader/ThrowAwayClassloader.java?rev=1302408&r1=1302407&r2=1302408&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/loader/ThrowAwayClassloader.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/loader/ThrowAwayClassloader.java Mon Mar 19 13:07:19 2012
@@ -38,7 +38,13 @@ public class ThrowAwayClassloader extend
 {
 
     static final Logger _logger = Logger.getLogger(ThrowAwayClassloader.class.getName());
-
+    boolean _untaint = true;
+    public ThrowAwayClassloader(ClassLoader classLoader, boolean untaint)
+    {
+        super(classLoader);
+        _untaint = untaint;
+    }
+    
     public ThrowAwayClassloader(ClassLoader classLoader)
     {
         super(classLoader);
@@ -105,9 +111,11 @@ public class ThrowAwayClassloader extend
         //TODO we might run into issues here with inner classes
         Class retVal;
         if (res != null) {
-            retVal = (new ThrowAwayClassloader(getParent())).defineClass(className, fileContent, 0, fileLength);
-            res.setAClass(retVal);
-            res.setTainted(false);
+            retVal = (new ThrowAwayClassloader(getParent(),_untaint)).defineClass(className, fileContent, 0, fileLength);
+            if(_untaint) {
+                res.setAClass(retVal);
+                res.setTainted(false);
+            }
         } else {
             retVal = super.defineClass(className, fileContent, 0, fileLength);
         }

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/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/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java?rev=1302408&r1=1302407&r2=1302408&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/monitor/ClassResource.java Mon Mar 19 13:07:19 2012
@@ -162,6 +162,10 @@ public class ClassResource extends Watch
         tainted = value;
     }
 
+    public void setTainted(boolean value, boolean noLog)
+    {
+        tainted = value;
+    }
     /**
      * @return true if the source file has been modified compared to its classfile
      */

Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/GenericAnnotationScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/GenericAnnotationScanner.java?rev=1302408&r1=1302407&r2=1302408&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/GenericAnnotationScanner.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/GenericAnnotationScanner.java Mon Mar 19 13:07:19 2012
@@ -22,8 +22,9 @@ import org.apache.myfaces.extensions.scr
 import org.apache.myfaces.extensions.scripting.core.api.ClassScanListener;
 import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
 import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
 import org.apache.myfaces.extensions.scripting.core.engine.api.ClassScanner;
-import org.apache.myfaces.extensions.scripting.core.engine.dependencyScan.loaders.ScannerClassloader;
+import org.apache.myfaces.extensions.scripting.core.loader.ThrowAwayClassloader;
 
 import javax.faces.context.FacesContext;
 import java.util.*;
@@ -118,8 +119,12 @@ public class GenericAnnotationScanner ex
             try {
                 if(!_weaver.isTainted(className)) continue;
 
-                ScannerClassloader loader = new ScannerClassloader(Thread.currentThread().getContextClassLoader(),
-                        -1, null, _weaver.getConfiguration().getCompileTarget());
+                //TODO replace this with a direct call to our weavingContext
+                //<>ScannerClassloader loader = new ScannerClassloader(Thread.currentThread().getContextClassLoader(),
+                //        -1, null, _weaver.getConfiguration().getCompileTarget());
+                ThrowAwayClassloader loader = new ThrowAwayClassloader(ClassUtils.getContextClassLoader(), false);
+
+
 
                 Class clazz;
                 //in case the class does not exist we have to load it from our weavingcontext

Modified: myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService.groovy
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService.groovy?rev=1302408&r1=1302407&r2=1302408&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService.groovy (original)
+++ myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService.groovy Mon Mar 19 13:07:19 2012
@@ -22,7 +22,8 @@ import java.util.logging.Logger
 import javax.faces.bean.ApplicationScoped
 import javax.faces.bean.ManagedBean
 
-
+@ManagedBean(name = "blogService")
+@ApplicationScoped
 public class BlogService {
   List blogEntries = new ArrayList()
 

Modified: myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService2.groovy
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService2.groovy?rev=1302408&r1=1302407&r2=1302408&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService2.groovy (original)
+++ myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/groovy/org/apache/myfaces/groovyloader/blog/BlogService2.groovy Mon Mar 19 13:07:19 2012
@@ -24,8 +24,7 @@ import javax.faces.bean.ApplicationScope
 
 
 
-@ManagedBean(name = "blogService")
-@ApplicationScoped
+
 public class BlogService2 {
   List blogEntries = new ArrayList()
 

Modified: myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter1.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter1.java?rev=1302408&r1=1302407&r2=1302408&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter1.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter1.java Mon Mar 19 13:07:19 2012
@@ -30,7 +30,6 @@ import javax.faces.component.UIComponent
  * 
  * A simple test converter which can be changed on the fly
  */
-@FacesConverter(value = "at.irian.CustomConverter")
 public class TestConverter1 implements Converter {
     public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
         return value;

Modified: myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter2.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter2.java?rev=1302408&r1=1302407&r2=1302408&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter2.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/validatorConverterTest/TestConverter2.java Mon Mar 19 13:07:19 2012
@@ -28,7 +28,7 @@ import javax.faces.convert.FacesConverte
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
  */
-
+@FacesConverter(value = "at.irian.CustomConverter")
 public class TestConverter2 implements Converter {
     public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
         return "hello from converter 2";

Modified: myfaces/extensions/scripting/trunk/src/site/xdoc/installation.xml
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/src/site/xdoc/installation.xml?rev=1302408&r1=1302407&r2=1302408&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/src/site/xdoc/installation.xml (original)
+++ myfaces/extensions/scripting/trunk/src/site/xdoc/installation.xml Mon Mar 19 13:07:19 2012
@@ -192,8 +192,8 @@
                 </p>
                 <p>you can obtain both jars after the build from:
                     <ul>
-                        <li>&lt;yourbuilderoot&gt;/extscript-bundles/xtscript-myfaces12-bundle/target/extscript-myfaces12-bundle-1.0-SNAPSHOT.jar</li>
-                        <li>&lt;yourbuilderoot&gt;/extscript-bundles/xtscript-myfaces12-bundle/target/extscript-myfaces20-bundle-1.0-SNAPSHOT.jar</li>
+                        <li>&lt;yourbuilderoot&gt;/extscript-bundles/extscript-myfaces12-bundle/target/extscript-myfaces12-bundle-1.0-SNAPSHOT.jar</li>
+                        <li>&lt;yourbuilderoot&gt;/extscript-bundles/extscript-myfaces20-bundle/target/extscript-myfaces20-bundle-1.0-SNAPSHOT.jar</li>
                     </ul>
                 </p>
                 <p>After having done that you are ready to setup the rest of the Ext-Scripting configuration manually as