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/19 13:24:19 UTC
svn commit: r935530 - in
/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java:
extensions/ org/apache/myfaces/extensions/scripting/core/
org/apache/myfaces/extensions/scripting/core/util/
Author: werpu
Date: Mon Apr 19 11:24:19 2010
New Revision: 935530
URL: http://svn.apache.org/viewvc?rev=935530&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-114
adding safety code which omits the groovy plugin if no groovy object can be loaded
Removed:
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/extensions/
Modified:
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/CoreWeaver.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/util/WeavingContextInitializer.java
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/CoreWeaver.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/CoreWeaver.java?rev=935530&r1=935529&r2=935530&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/CoreWeaver.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/CoreWeaver.java Mon Apr 19 11:24:19 2010
@@ -40,6 +40,10 @@ public class CoreWeaver implements Seria
List<ScriptingWeaver> _weavers = new ArrayList<ScriptingWeaver>();
+ public CoreWeaver(Collection<ScriptingWeaver> weavers) {
+ _weavers.addAll(weavers);
+ }
+
public CoreWeaver(ScriptingWeaver... weavers) {
_weavers.addAll(Arrays.asList(weavers));
}
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/util/WeavingContextInitializer.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/util/WeavingContextInitializer.java?rev=935530&r1=935529&r2=935530&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/util/WeavingContextInitializer.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/util/WeavingContextInitializer.java Mon Apr 19 11:24:19 2010
@@ -37,6 +37,8 @@ import java.net.URL;
import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import java.util.ArrayList;
+import java.util.List;
import java.util.logging.Logger;
/**
@@ -57,6 +59,8 @@ public class WeavingContextInitializer {
return new RecompiledClassLoader(ClassUtils.getContextClassLoader(), ScriptingConst.ENGINE_TYPE_JSF_JAVA, ".java");
}
};
+ private static final String GROOVY_NOT_FOUND = "[EXT-SCRIPTING] Groovy not found disabling Ext-Scripting Groovy support";
+ private static final String GROOVY_OBJECT = "groovy.lang.GroovyObject";
public static void initWeavingContext(ServletContext servletContext) {
@@ -83,7 +87,7 @@ public class WeavingContextInitializer {
try {
AccessController.doPrivileged(LOADER_ACTION);
} catch (PrivilegedActionException e) {
- _logger.severe("[EXT-SCRIPTING]�Class loader creation is prohibited by your security settings, I am going to disable Ext-Scripting");
+ _logger.severe("[EXT-SCRIPTING] Class loader creation is prohibited by your security settings, I am going to disable Ext-Scripting");
WeavingContext.setScriptingEnabled(false);
}
}
@@ -171,27 +175,65 @@ public class WeavingContextInitializer {
}
}
- private static boolean initWeavers(ServletContext servletContext) {
+ /**
+ * inits the weaver chain which depends on the scripting
+ * language supported by the internal jars
+ *
+ * @param servletContext the standard servlet context
+ */
+ private static void initWeavers(ServletContext servletContext) {
_logger.fine("[EXT-SCRIPTING] initializing the weaving contexts");
if (!WeavingContext.isScriptingEnabled()) {
- return false;
+ return;
}
- ScriptingWeaver groovyWeaver = new GroovyScriptingWeaver(servletContext);
- ScriptingWeaver javaWeaver = new JavaScriptingWeaver(servletContext);
- setupScriptingPaths(servletContext, groovyWeaver, ScriptingConst.GROOVY_SOURCE_ROOT, ScriptingConst.INIT_PARAM_CUSTOM_GROOVY_LOADER_PATHS);
- setupScriptingPaths(servletContext, javaWeaver, ScriptingConst.JAVA_SOURCE_ROOT, ScriptingConst.INIT_PARAM_CUSTOM_JAVA_LOADER_PATHS);
+ List<ScriptingWeaver> weavers = new ArrayList<ScriptingWeaver>(2);
+
+ initGroovyWeaver(servletContext, weavers);
+ initJavaWeaver(servletContext, weavers);
+
if (!WeavingContext.isScriptingEnabled()) {
- return true;
+ return ;
}
- //we have to store it because our filter
- //does not trigger upon initialisation
- WeavingContext.setWeaver(new CoreWeaver(groovyWeaver, javaWeaver));
+ WeavingContext.setWeaver(new CoreWeaver(weavers));
servletContext.setAttribute(ScriptingConst.CTX_ATTR_SCRIPTING_WEAVER, WeavingContext.getWeaver());
- return false;
+ }
+
+ /**
+ * inits the standard java weaver
+ * for weaving and recompiling java classes on the fly
+ *
+ * @param servletContext the standard servlet context
+ * @param weavers our list of weavers which should receive the resulting weaver
+ */
+ private static void initJavaWeaver(ServletContext servletContext, List<ScriptingWeaver> weavers) {
+ ScriptingWeaver javaWeaver = new JavaScriptingWeaver(servletContext);
+ setupScriptingPaths(servletContext, javaWeaver, ScriptingConst.JAVA_SOURCE_ROOT, ScriptingConst.INIT_PARAM_CUSTOM_JAVA_LOADER_PATHS);
+ weavers.add(javaWeaver);
+ }
+
+ /**
+ * initializes our groovy weaver
+ *
+ * @param servletContext the servlet context
+ * @param weavers the list of weavers receiving the resulting weaver if an initialization is possoble
+ */
+ private static void initGroovyWeaver(ServletContext servletContext, List<ScriptingWeaver> weavers) {
+ //check if groovy can be enabled:
+ try {
+ Class groovyObject = ClassUtils.forName(GROOVY_OBJECT);
+ if(groovyObject != null) {
+ //groovy found ewe now enabled our groovy weaving support
+ ScriptingWeaver groovyWeaver = new GroovyScriptingWeaver(servletContext);
+ setupScriptingPaths(servletContext, groovyWeaver, ScriptingConst.GROOVY_SOURCE_ROOT, ScriptingConst.INIT_PARAM_CUSTOM_GROOVY_LOADER_PATHS);
+ weavers.add(groovyWeaver);
+ }
+ } catch (Exception e) {
+ _logger.info(GROOVY_NOT_FOUND);
+ }
}
/**