[jboss-cvs] JBossAS SVN: r97262 - projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Dec 1 17:51:31 EST 2009
Author: marius.bogoevici
Date: 2009-12-01 17:51:31 -0500 (Tue, 01 Dec 2009)
New Revision: 97262
Added:
projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/ContextClassUtil.java
projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/DelegatingContextLoaderListener.java
projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/DelegatingDispatcherServlet.java
Log:
Adding a ContextLoaderListener and DispatcherServlet that allow to detect the presence of JBoss AS 5 and to instantiate the appropriate context class.
Added: projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/ContextClassUtil.java
===================================================================
--- projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/ContextClassUtil.java (rev 0)
+++ projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/ContextClassUtil.java 2009-12-01 22:51:31 UTC (rev 97262)
@@ -0,0 +1,45 @@
+package org.jboss.spring.vfs.context;
+
+import org.springframework.context.ApplicationContextException;
+import org.springframework.util.ClassUtils;
+import org.springframework.util.ReflectionUtils;
+
+/**
+ * @author Marius Bogoevici
+ */
+public class ContextClassUtil
+{
+ static final String VFS_APPLICATION_CONTEXT_CLASS_NAME = "org.jboss.spring.vfs.context.VFSXmlWebApplicationContext";
+
+ public static boolean isJBossAS5orHigher()
+ {
+ try
+ {
+ Class jBossVersionClass = DelegatingContextLoaderListener.class.getClassLoader().loadClass("org.jboss.Version");
+ Object versionObject = ReflectionUtils.invokeMethod(ReflectionUtils.findMethod(jBossVersionClass, "getInstance"), null);
+ Integer majorVersion = (Integer) ReflectionUtils.invokeMethod(ReflectionUtils.findMethod(jBossVersionClass, "getMajor"), versionObject);
+ // For JBoss AS versions 5 and higher
+ if (majorVersion >= 5) {
+ return true;
+ }
+ }
+ catch (ClassNotFoundException e)
+ {
+ // do nothing;
+ }
+ return false;
+ }
+
+ public static Class getVFSWebContextClass()
+ {
+ try
+ {
+ return ClassUtils.forName(VFS_APPLICATION_CONTEXT_CLASS_NAME);
+ }
+ catch (ClassNotFoundException ex)
+ {
+ throw new ApplicationContextException(
+ "Failed to load custom context class [" + VFS_APPLICATION_CONTEXT_CLASS_NAME + "]", ex);
+ }
+ }
+}
Added: projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/DelegatingContextLoaderListener.java
===================================================================
--- projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/DelegatingContextLoaderListener.java (rev 0)
+++ projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/DelegatingContextLoaderListener.java 2009-12-01 22:51:31 UTC (rev 97262)
@@ -0,0 +1,37 @@
+package org.jboss.spring.vfs.context;
+
+import javax.servlet.ServletContext;
+
+import org.springframework.context.ApplicationContextException;
+import org.springframework.web.context.ContextLoader;
+import org.springframework.web.context.ContextLoaderListener;
+
+/**
+ * @author Marius Bogoevici
+ */
+public class DelegatingContextLoaderListener extends ContextLoaderListener
+{
+
+ @Override
+ protected ContextLoader createContextLoader()
+ {
+ if (!ContextClassUtil.isJBossAS5orHigher())
+ {
+ return super.createContextLoader();
+ }
+ else
+ {
+ return new VFSContextLoader();
+ }
+ }
+
+ private static class VFSContextLoader extends ContextLoader
+ {
+ @Override
+ protected Class determineContextClass(ServletContext servletContext) throws ApplicationContextException
+ {
+ return ContextClassUtil.getVFSWebContextClass();
+
+ }
+ }
+}
Added: projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/DelegatingDispatcherServlet.java
===================================================================
--- projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/DelegatingDispatcherServlet.java (rev 0)
+++ projects/snowdrop/trunk/vfs/src/main/java/org/jboss/spring/vfs/context/DelegatingDispatcherServlet.java 2009-12-01 22:51:31 UTC (rev 97262)
@@ -0,0 +1,19 @@
+package org.jboss.spring.vfs.context;
+
+import org.springframework.web.servlet.DispatcherServlet;
+
+/**
+ * @author Marius Bogoevici
+ */
+public class DelegatingDispatcherServlet extends DispatcherServlet
+{
+
+ @Override
+ public Class getContextClass()
+ {
+ if (ContextClassUtil.isJBossAS5orHigher())
+ return ContextClassUtil.getVFSWebContextClass();
+ else
+ return super.getContextClass();
+ }
+}
More information about the jboss-cvs-commits
mailing list