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 14:37:23 UTC
svn commit: r935543 -
/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/util/WeavingContextInitializer.java
Author: werpu
Date: Mon Apr 19 12:37:22 2010
New Revision: 935543
URL: http://svn.apache.org/viewvc?rev=935543&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-115
moved the entire if cascade for the error asserts into an exception based system
works better that way and is less code
Modified:
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/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=935543&r1=935542&r2=935543&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 12:37:22 2010
@@ -55,6 +55,12 @@ import java.util.logging.Logger;
public class WeavingContextInitializer {
+ static class StartupException extends Exception {
+ StartupException(String message) {
+ super(message);
+ }
+ }
+
static final Logger _logger = Logger.getLogger(WeavingContextInitializer.class.getName());
static final PrivilegedExceptionAction<RecompiledClassLoader> LOADER_ACTION = new PrivilegedExceptionAction<RecompiledClassLoader>() {
@@ -66,36 +72,35 @@ public class WeavingContextInitializer {
private static final String GROOVY_OBJECT = "groovy.lang.GroovyObject";
public static void initWeavingContext(ServletContext servletContext) {
-
- validateWebXml(servletContext);
- initConfiguration(servletContext);
- validateSecurityConstraints();
- initWeavers(servletContext);
- validateSourcePaths();
- initRefreshContext(servletContext);
-
- initFileChangeDaemon(servletContext);
- initExternalContext(servletContext);
+ try {
+ WeavingContext.setScriptingEnabled(true);
+ validateWebXml(servletContext);
+ initConfiguration(servletContext);
+ validateSecurityConstraints();
+ initWeavers(servletContext);
+ validateSourcePaths();
+ initRefreshContext(servletContext);
+
+ initFileChangeDaemon(servletContext);
+ initExternalContext(servletContext);
+ } catch (StartupException ex) {
+ _logger.severe("[EXT-SCRIPTING] " + ex.getMessage());
+ WeavingContext.setScriptingEnabled(false);
+ }
}
/**
* validates the source paths which were determined by the
* startup for failures
- *
*/
- private static void validateSourcePaths() {
- if (!WeavingContext.isScriptingEnabled()) {
- return;
- }
+ private static void validateSourcePaths() throws StartupException {
+
Collection<String> dirs = WeavingContext.getConfiguration().getAllSourceDirs();
for (String currentDir : dirs) {
File probe = new File(currentDir);
- _logger.info("[PROBE]"+probe.getAbsolutePath());
if (!probe.exists()) {
- _logger.log(Level.SEVERE, "[EXT-SCRIPTING] The directory {0} does not exist, disabling scripting support", probe);
- WeavingContext.setScriptingEnabled(false);
- return;
+ throw new StartupException("The directory " + probe + " does not exist, disabling scripting support");
}
}
}
@@ -105,38 +110,28 @@ public class WeavingContextInitializer {
* the only security which has to be allowed
* is the creation of classloaders
*/
- private static void validateSecurityConstraints() {
- if (!WeavingContext.isScriptingEnabled()) {
- return;
- }
+ private static void validateSecurityConstraints() throws StartupException {
+
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");
- WeavingContext.setScriptingEnabled(false);
+ throw new StartupException("Class loader creation is prohibited by your security settings, I am going to disable Ext-Scripting");
}
}
private static void initExternalContext(ServletContext servletContext) {
- if (!WeavingContext.isScriptingEnabled()) {
- return;
- }
+
WeavingContext.setExternalContext(servletContext);
}
private static void initFileChangeDaemon(ServletContext servletContext) {
- if (!WeavingContext.isScriptingEnabled()) {
- return;
- }
FileChangedDaemon.startup(servletContext);
WeavingContext.getRefreshContext().setDaemon(FileChangedDaemon.getInstance());
}
private static void initConfiguration(ServletContext servletContext) {
- if (!WeavingContext.isScriptingEnabled()) {
- return;
- }
+
final Configuration configuration = new Configuration();
servletContext.setAttribute(ScriptingConst.CTX_ATTR_CONFIGURATION, configuration);
WeavingContext.setConfiguration(configuration);
@@ -181,22 +176,18 @@ public class WeavingContextInitializer {
}
}
- private static void validateWebXml(ServletContext context) {
+ private static void validateWebXml(ServletContext context) throws StartupException {
try {
URL webXml = context.getResource("/WEB-INF/web.xml");
if (webXml != null) {
- WeavingContext.setScriptingEnabled(FilterClassDigester.findFilter(webXml, ScriptingServletFilter.class));
+ if (!FilterClassDigester.findFilter(webXml, ScriptingServletFilter.class)) {
+ throw new StartupException(ScriptingConst.ERR_SERVLET_FILTER);
+ }
}
} catch (IOException e) {
- _logger.severe("[EXT-SCRIPTING] Web.xml could not be parsed disabling scripting");
- WeavingContext.setScriptingEnabled(false);
- }
-
- if (!WeavingContext.isScriptingEnabled()) {
- String warnMsg = ScriptingConst.ERR_SERVLET_FILTER;
- _logger.severe(warnMsg);
+ throw new StartupException("Web.xml could not be parsed disabling scripting");
}
}
@@ -206,25 +197,15 @@ public class WeavingContextInitializer {
*
* @param servletContext the standard servlet context
*/
- private static void initWeavers(ServletContext servletContext) {
+ private static void initWeavers(ServletContext servletContext) throws StartupException {
_logger.fine("[EXT-SCRIPTING] initializing the weaving contexts");
- if (!WeavingContext.isScriptingEnabled()) {
- return;
- }
-
List<ScriptingWeaver> weavers = new ArrayList<ScriptingWeaver>(2);
initGroovyWeaver(servletContext, weavers);
initJavaWeaver(servletContext, weavers);
- if(WeavingContext.isFilterEnabled() && weavers.size() == 0) {
- _logger.info("[EXT-SCRIPTING] No scripting languages initialized disabling EXT-SCRIPTING ");
- WeavingContext.setScriptingEnabled(false);
- return;
- }
-
- if (!WeavingContext.isScriptingEnabled()) {
- return;
+ if (WeavingContext.isFilterEnabled() && weavers.size() == 0) {
+ throw new StartupException("No scripting languages initialized disabling EXT-SCRIPTING");
}
WeavingContext.setWeaver(new CoreWeaver(weavers));
@@ -238,10 +219,10 @@ public class WeavingContextInitializer {
* @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) {
+ private static void initJavaWeaver(ServletContext servletContext, List<ScriptingWeaver> weavers) throws StartupException {
ScriptingWeaver javaWeaver = new JavaScriptingWeaver(servletContext);
setupScriptingPaths(servletContext, javaWeaver, ScriptingConst.JAVA_SOURCE_ROOT, ScriptingConst.INIT_PARAM_CUSTOM_JAVA_LOADER_PATHS);
- if(WeavingContext.getConfiguration().getSourceDirs(ScriptingConst.ENGINE_TYPE_JSF_JAVA).size() > 0) {
+ if (WeavingContext.getConfiguration().getSourceDirs(ScriptingConst.ENGINE_TYPE_JSF_JAVA).size() > 0) {
weavers.add(javaWeaver);
} else {
_logger.log(Level.WARNING, "[EXT-SCRIPTING] No valid source path for Java found either add WEB-INF/java to your filesystem, or add a custom Java source path, disabling EXT-SCRIPTING Java support");
@@ -262,7 +243,7 @@ public class WeavingContextInitializer {
//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);
- if(WeavingContext.getConfiguration().getSourceDirs(ScriptingConst.ENGINE_TYPE_JSF_GROOVY).size() > 0) {
+ if (WeavingContext.getConfiguration().getSourceDirs(ScriptingConst.ENGINE_TYPE_JSF_GROOVY).size() > 0) {
weavers.add(groovyWeaver);
} else {
_logger.log(Level.WARNING, "[EXT-SCRIPTING] No valid source path for Groovy found either add WEB-INF/groovy to your filesystem, or add a custom Groovy source path, disabling EXT-SCRIPTING Groovy support");
@@ -285,18 +266,12 @@ public class WeavingContextInitializer {
private static void initRefreshContext(ServletContext servletContext) {
_logger.fine("[EXT-SCRIPTING] initializing the refresh context");
- if (!WeavingContext.isScriptingEnabled()) {
- return;
- }
RefreshContext rContext = new RefreshContext();
servletContext.setAttribute(ScriptingConst.CTX_ATTR_REFRESH_CONTEXT, rContext);
WeavingContext.setRefreshContext(rContext);
}
- private static void setupScriptingPaths(ServletContext servletContext, ScriptingWeaver weaver, String contextRootKey, String initParams) {
- if (!WeavingContext.isScriptingEnabled()) {
- return;
- }
+ private static void setupScriptingPaths(ServletContext servletContext, ScriptingWeaver weaver, String contextRootKey, String initParams) throws StartupException {
String classRoot = "";
String scriptingRoot;
@@ -318,16 +293,11 @@ public class WeavingContextInitializer {
appendAdditionalPaths(additionalLoaderPaths, weaver);
if (additionalLoaderPaths == null || additionalLoaderPaths.trim().equals("")) {
if (contextRoot.equals("")) {
-
- _logger.warning("[EXT-SCRIPTING] Standard paths (WEB-INF/groovy and WEB-INF/java could not be determined, also no additional loader paths are set, I cannot start properly, please set additional loader paths for Ext-Scripting to work correctly!");
- _logger.warning("[EXT-SCRIPTING] I am disabling Ext-Scripting!");
-
- WeavingContext.setScriptingEnabled(false);
- return;
+ throw new StartupException("Standard paths (WEB-INF/groovy and WEB-INF/java could not be determined, also no additional loader paths are set, I cannot start properly, please set additional loader paths for Ext-Scripting to work correctly! I am disabling Ext-Scripting!");
}
if (!StringUtils.isBlank(scriptingRoot)) {
File probe = new File(scriptingRoot);
- if(probe.exists()) {
+ if (probe.exists()) {
weaver.appendCustomScriptPath(scriptingRoot);
} else {