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/01/15 17:26:24 UTC
svn commit: r899683 - in /myfaces/extensions/scripting/trunk:
core/core/src/main/groovy/org/apache/myfaces/groovyloader/core/
core/core/src/main/java/org/apache/myfaces/scripting/api/
core/core/src/main/java/org/apache/myfaces/scripting/core/ core/core...
Author: werpu
Date: Fri Jan 15 16:26:23 2010
New Revision: 899683
URL: http://svn.apache.org/viewvc?rev=899683&view=rev
Log:
added a classloading hook for our scanner so that we can hook ourselfs in
fixed a lot of warnings
Added:
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/ScanningGroovyClassloader.java (with props)
Modified:
myfaces/extensions/scripting/trunk/core/core/src/main/groovy/org/apache/myfaces/groovyloader/core/GroovyWeaver.groovy
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/ReloadingStrategy.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/CoreWeaver.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/MethodLevelReloadingHandler.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/ReloadingInvocationHandler.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanUtils.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/reloading/ManagedBeanReloadingStrategy.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/jsf/RefreshPhaseListener.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/DynamicClassIdentifier.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/MetaclassStubcompilerFix.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/jdk5/CompilerFacade.java
myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/groovy/org/apache/myfaces/groovyloader/core/GroovyWeaver.groovy
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/groovy/org/apache/myfaces/groovyloader/core/GroovyWeaver.groovy?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/groovy/org/apache/myfaces/groovyloader/core/GroovyWeaver.groovy (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/groovy/org/apache/myfaces/groovyloader/core/GroovyWeaver.groovy Fri Jan 15 16:26:23 2010
@@ -31,6 +31,7 @@
import org.apache.myfaces.scripting.core.util.ClassUtils
import org.apache.myfaces.scripting.refresh.ReloadingMetadata
import org.apache.myfaces.scripting.loaders.groovy.GroovyDependencyScanner
+import org.apache.myfaces.scripting.loaders.groovy.ScanningGroovyClassloader
/**
* Weaver which does dynamic class reloading
@@ -105,7 +106,8 @@
GroovyClassLoader gcl = _groovyClassLoaderHolder.get()
if (gcl == null) {
- gcl = new GroovyClassLoader(Thread.currentThread().getContextClassLoader());
+ //gcl = new GroovyClassLoader(Thread.currentThread().getContextClassLoader());
+ gcl = new ScanningGroovyClassloader(Thread.currentThread().getContextClassLoader());
//we have to add the script path so that groovy can work out the kinks of other source files added
_groovyClassLoaderHolder.set(gcl)
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/ReloadingStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/ReloadingStrategy.java?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/ReloadingStrategy.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/ReloadingStrategy.java Fri Jan 15 16:26:23 2010
@@ -11,7 +11,7 @@
* on the artifact
*/
public interface ReloadingStrategy {
- public Object reload(Object toReload, int artefactType);
+ public Object reload(Object toReload, int artifactType);
public ScriptingWeaver getWeaver();
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/CoreWeaver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/CoreWeaver.java?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/CoreWeaver.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/CoreWeaver.java Fri Jan 15 16:26:23 2010
@@ -22,10 +22,7 @@
import org.apache.myfaces.scripting.api.ScriptingWeaver;
import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Collection;
-import java.util.LinkedList;
+import java.util.*;
/**
* @author werpu
@@ -45,9 +42,7 @@
public CoreWeaver(ScriptingWeaver... weavers) {
- for (ScriptingWeaver weaver : weavers) {
- _weavers.add(weaver);
- }
+ _weavers.addAll(Arrays.asList(weavers));
}
public void appendCustomScriptPath(String scriptPaths) {
@@ -117,7 +112,7 @@
}
/**
- * @deprecated, the full recompile now is done at the beginning of a request
+ * @deprecated the full recompile now is done at the beginning of a request
*/
public void fullRecompile() {
for (ScriptingWeaver weaver : _weavers) {
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/MethodLevelReloadingHandler.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/MethodLevelReloadingHandler.java?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/MethodLevelReloadingHandler.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/MethodLevelReloadingHandler.java Fri Jan 15 16:26:23 2010
@@ -18,7 +18,6 @@
*/
package org.apache.myfaces.scripting.core;
-
import org.apache.myfaces.scripting.api.ScriptingWeaver;
import org.apache.myfaces.scripting.core.util.WeavingContext;
@@ -39,47 +38,45 @@
*
* @author Werner Punz
*/
+@SuppressWarnings("unused")
public class MethodLevelReloadingHandler extends ReloadingInvocationHandler implements Serializable {
transient ScriptingWeaver _weaver = null;
- int _artefactType;
-
+ int _artifactType;
- public MethodLevelReloadingHandler(Object rootObject, int artefactType) {
+ public MethodLevelReloadingHandler(Object rootObject, int artifactType) {
_loadedClass = rootObject.getClass();
_delegate = rootObject;
- _artefactType = artefactType;
+ _artifactType = artifactType;
}
-
/**
* outside interface to the invoke method
* which gets called every time a method
* is called
*
- * @param o
- * @param method
- * @param objects
- * @return
+ * @param object the object holding the method
+ * @param method the method
+ * @param paramHolders the param holders
+ * @return the return value of the operation
* @throws Throwable
*/
- public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
- return reloadInvoke(method, objects);
+ public Object invoke(Object object, Method method, Object[] paramHolders) throws Throwable {
+ return reloadInvoke(method, paramHolders);
}
-
/**
* invoke handler which is triggered
* by every method call which takes care of the reload
*
- * @param method the method to call
- * @param objects the params
- * @return
- * @throws InstantiationException
- * @throws IllegalAccessException
- * @throws InvocationTargetException
+ * @param method the method to call
+ * @param paramHolders the params
+ * @return the return value of the operation
+ * @throws InstantiationException standard throw caused by reflection
+ * @throws IllegalAccessException standard throw caused by reflection
+ * @throws InvocationTargetException standard throw caused by reflection
*/
- protected Object reloadInvoke(Method method, Object[] objects) throws InstantiationException, IllegalAccessException, InvocationTargetException {
+ protected Object reloadInvoke(Method method, Object[] paramHolders) throws InstantiationException, IllegalAccessException, InvocationTargetException {
if (_weaver == null)
_weaver = WeavingContext.getWeaver();
@@ -87,27 +84,27 @@
//stateless or lost state due to a lifecycle iteration we trigger anew
_delegate = (_weaver.reloadScriptingClass(_loadedClass)).newInstance();
} else {
- //if we are stateful only a tainted artefact is reloaded
- _delegate = _weaver.reloadScriptingInstance(_delegate, _artefactType);
+ //if we are stateful only a tainted artifact is reloaded
+ _delegate = _weaver.reloadScriptingInstance(_delegate, _artifactType);
//we work our way through all proxies and fetch the class for further reference
Object delegate = WeavingContext.getDelegateFromProxy(_delegate);
_loadedClass = delegate.getClass();
}
//check for proxies and unproxy them before calling the methods
- //to avoid unneccessary cast problems
+ //to avoid unnecessary cast problems
//this is slow on long param lists but it is better
//to be slow than to have casts an calls in the code
//for production we can compile the classes anyway and avoid
//this
- unmapProxies(objects);
- return method.invoke(_delegate, objects);
+ unmapProxies(paramHolders);
+ return method.invoke(_delegate, paramHolders);
}
/**
* unmap proxied objects
*
- * @param objects
+ * @param objects the objects to be unmapped
*/
private void unmapProxies(Object[] objects) {
if (objects == null) return;
@@ -116,12 +113,11 @@
}
}
-
- public int getArtefactType() {
- return _artefactType;
+ public int getArtifactType() {
+ return _artifactType;
}
- public void setArtefactType(int artefactType) {
- _artefactType = artefactType;
+ public void setArtifactType(int artifactType) {
+ _artifactType = artifactType;
}
}
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/ReloadingInvocationHandler.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/ReloadingInvocationHandler.java?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/ReloadingInvocationHandler.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/ReloadingInvocationHandler.java Fri Jan 15 16:26:23 2010
@@ -13,6 +13,7 @@
* here to allow reflection utils directly targetting our
* _delegate.
*/
+@SuppressWarnings("unused")
public abstract class ReloadingInvocationHandler implements InvocationHandler, Decorated {
Class _loadedClass = null;
Object _delegate = null;
@@ -21,16 +22,15 @@
* simplified invoke for more dynamic upon invocation
* on our reloading objects
*
- * @param o
- * @param m
- * @param args
- * @return
+ * @param object the object to be invoked on
+ * @param method the method to be invoked
+ * @param arguments the arguments passed down
+ * @return the return value of the operation
*/
- public Object invoke(Object o, String m, Object... args) {
- return ReflectUtil.executeMethod(o, m, args);
+ public Object invoke(Object object, String method, Object... arguments) {
+ return ReflectUtil.executeMethod(object, method, arguments);
}
-
public Class getLoadedClass() {
return _loadedClass;
}
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanUtils.java?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanUtils.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanUtils.java Fri Jan 15 16:26:23 2010
@@ -48,7 +48,7 @@
/**
* checks if a given package or class
* belongs to a standard namespaces which is
- * untouchable by an implementor
+ * untouchable by an implementer
*
* @param in the page or fully qualified classname
* @return true if it belongs to one of the standard namespaces, false if not
@@ -173,5 +173,4 @@
}
}
}
-
}
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/reloading/ManagedBeanReloadingStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/reloading/ManagedBeanReloadingStrategy.java?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/reloading/ManagedBeanReloadingStrategy.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/reloading/ManagedBeanReloadingStrategy.java Fri Jan 15 16:26:23 2010
@@ -58,7 +58,7 @@
}
public ScriptingWeaver getWeaver() {
- return _weaver; //To change body of implemented methods use File | Settings | File Templates.
+ return _weaver;
}
public void setWeaver(ScriptingWeaver weaver) {
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/jsf/RefreshPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/jsf/RefreshPhaseListener.java?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/jsf/RefreshPhaseListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/jsf/RefreshPhaseListener.java Fri Jan 15 16:26:23 2010
@@ -43,6 +43,7 @@
public void afterPhase(PhaseEvent event) {
}
+ @SuppressWarnings("unchecked")
public void beforePhase(PhaseEvent event) {
//we fetch the earliest phase possible, in case of a normal get it is the render phase
//in every other case it is the restore view phase
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/DynamicClassIdentifier.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/DynamicClassIdentifier.java?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/DynamicClassIdentifier.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/DynamicClassIdentifier.java Fri Jan 15 16:26:23 2010
@@ -39,8 +39,8 @@
}
Class[] interfaces = clazz.getInterfaces();
- for (int cnt = 0; cnt < interfaces.length; cnt++) {
- if (interfaces[cnt].getName().startsWith("groovy.lang")) {
+ for (Class anInterface : interfaces) {
+ if (anInterface.getName().startsWith("groovy.lang")) {
alreadyChecked.put(clazz.getName(), Boolean.TRUE);
return true;
}
@@ -49,6 +49,7 @@
return false;
}
+ @SuppressWarnings("unchecked")
private Map<String, Boolean> getAlreadyChecked() {
Map<String, Boolean> checked = (Map<String, Boolean>) _checked.get();
if (checked == null) {
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/MetaclassStubcompilerFix.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/MetaclassStubcompilerFix.java?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/MetaclassStubcompilerFix.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/MetaclassStubcompilerFix.java Fri Jan 15 16:26:23 2010
@@ -38,9 +38,9 @@
}
/*dummy constructor do not use it it bypasses
- * a bug in the maven-groovy stub compiler regarding
- * base classes*/
-
+ * a bug in the maven-groovy stub compiler regarding
+ * base classes*/
+ @SuppressWarnings("unused")
public MetaclassStubcompilerFix() {
super(MetaclassStubcompilerFix.class);
}
Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/ScanningGroovyClassloader.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/ScanningGroovyClassloader.java?rev=899683&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/ScanningGroovyClassloader.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/ScanningGroovyClassloader.java Fri Jan 15 16:26:23 2010
@@ -0,0 +1,81 @@
+package org.apache.myfaces.scripting.loaders.groovy;
+
+import groovy.lang.GroovyClassLoader;
+import groovyjarjarasm.asm.ClassVisitor;
+import groovyjarjarasm.asm.ClassWriter;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.groovy.ast.ClassNode;
+import org.codehaus.groovy.ast.ModuleNode;
+import org.codehaus.groovy.control.CompilationUnit;
+import org.codehaus.groovy.control.CompilerConfiguration;
+import org.codehaus.groovy.control.SourceUnit;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * Scanning Groovy class loader
+ * a groovy classloader which adds dependency scanning
+ * as the java compiler part
+ *
+ * that way we can properly add artefact refreshing
+ * to avoid classcast exceptions also on groovy level
+ */
+public class ScanningGroovyClassloader extends GroovyClassLoader {
+ public ScanningGroovyClassloader() {
+ }
+
+ public ScanningGroovyClassloader(ClassLoader loader) {
+ super(loader);
+ }
+
+ public ScanningGroovyClassloader(GroovyClassLoader parent) {
+ super(parent);
+ }
+
+ public ScanningGroovyClassloader(ClassLoader parent, CompilerConfiguration config, boolean useConfigurationClasspath) {
+ super(parent, config, useConfigurationClasspath);
+ }
+
+ public ScanningGroovyClassloader(ClassLoader loader, CompilerConfiguration config) {
+ super(loader, config);
+ }
+
+ /**
+ * creates a ClassCollector for a new compilation.
+ *
+ * @param unit the compilationUnit
+ * @param su the SoruceUnit
+ * @return the ClassCollector
+ */
+ protected ClassCollector createCollector(CompilationUnit unit, SourceUnit su) {
+ InnerLoader loader = (InnerLoader) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return new InnerLoader(ScanningGroovyClassloader.this);
+ }
+ });
+ return new MyClassCollector(loader, unit, su);
+ }
+
+ public static class MyClassCollector extends ClassCollector {
+
+ public MyClassCollector(InnerLoader cl, CompilationUnit unit, SourceUnit su) {
+ super(cl, unit, su);
+ }
+
+
+ protected Class onClassNode(ClassWriter classWriter, ClassNode classNode) {
+ byte[] code = classWriter.toByteArray();
+
+ //TODO add the scanning code here which changes our metadata and places
+ //the dependencies
+
+ return createClass(code, classNode);
+ }
+
+ }
+
+}
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/ScanningGroovyClassloader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/ScanningGroovyClassloader.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/jdk5/CompilerFacade.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/jdk5/CompilerFacade.java?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/jdk5/CompilerFacade.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/jdk5/CompilerFacade.java Fri Jan 15 16:26:23 2010
@@ -115,8 +115,8 @@
/**
* compiles all files
*
- * @param sourceRoot
- * @param classPath
+ * @param sourceRoot the source root
+ * @param classPath the class path
* @return the root target path for the classes which are compiled
* so that they later can be picked up by the classloader
* @throws ClassNotFoundException
Modified: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml?rev=899683&r1=899682&r2=899683&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml (original)
+++ myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/web.xml Fri Jan 15 16:26:23 2010
@@ -24,7 +24,7 @@
<description>MyProject web.xml</description>
- <!--
+
<context-param>
<description>
Initializes the plugins for our groovy handlers
@@ -56,7 +56,7 @@
</context-param>
<context-param>
- <description>resource paths for our custom facelet resource resolver</description>
+ <description>resource paths for our custom JSF2 resource resolver</description>
<param-name>org.apache.myfaces.scripting.resources.LOADER_PATHS</param-name>
<param-value>
/Users/werpu2/development/workspace/extensions-scripting3/examples/myfaces20-example/src/main/webapp
@@ -70,7 +70,7 @@
<param-name>facelets.RESOURCE_RESOLVER</param-name>
<param-value>org.apache.myfaces.scripting.facelet.ReroutingResourceResolver</param-value>
</context-param>
- -->
+
<!--
<context-param>