Author: lukaszlenart Date: Tue Mar 20 10:17:37 2012 New Revision: 1302821 URL: http://svn.apache.org/viewvc?rev=1302821&view=rev Log: Merges Struts 2 ClassLoaderUtils into XWork 2 ClassLoaderUtil
Removed: struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/ClassLoaderUtils.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsUtil.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/StrutsResourceLoader.java struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/codebehind/CodebehindUnknownHandler.java struts/struts2/trunk/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ListValidatorsAction.java struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionsServiceImpl.java struts/struts2/trunk/plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/ClassLoaderUtil.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java Tue Mar 20 10:17:37 2012 @@ -21,19 +21,18 @@ package org.apache.struts2.config; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.Iterator; - -import org.apache.struts2.StrutsException; -import org.apache.struts2.util.ClassLoaderUtils; - +import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.location.LocatableProperties; import com.opensymphony.xwork2.util.location.Location; import com.opensymphony.xwork2.util.location.LocationImpl; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; +import org.apache.struts2.StrutsException; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.Iterator; /** @@ -54,7 +53,7 @@ class PropertiesSettings extends Setting */ public PropertiesSettings(String name) { - URL settingsUrl = ClassLoaderUtils.getResource(name + ".properties", getClass()); + URL settingsUrl = ClassLoaderUtil.getResource(name + ".properties", getClass()); if (settingsUrl == null) { if (LOG.isDebugEnabled()) { Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java Tue Mar 20 10:17:37 2012 @@ -26,7 +26,6 @@ import com.opensymphony.xwork2.util.logg import com.opensymphony.xwork2.util.logging.LoggerFactory; import org.apache.struts2.StrutsConstants; import org.apache.struts2.dispatcher.ng.HostConfig; -import org.apache.struts2.util.ClassLoaderUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -242,7 +241,7 @@ public class DefaultStaticContentLoader String factoryName = filterConfig.getInitParameter("loggerFactory"); if (factoryName != null) { try { - Class cls = ClassLoaderUtils.loadClass(factoryName, this.getClass()); + Class cls = ClassLoaderUtil.loadClass(factoryName, this.getClass()); LoggerFactory fac = (LoggerFactory)cls.newInstance(); LoggerFactory.setLoggerFactory(fac); } catch (InstantiationException e) { Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java Tue Mar 20 10:17:37 2012 @@ -38,6 +38,7 @@ import com.opensymphony.xwork2.inject.Co import com.opensymphony.xwork2.inject.ContainerBuilder; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.interceptor.Interceptor; +import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.FileManager; import com.opensymphony.xwork2.util.LocalizedTextUtil; import com.opensymphony.xwork2.util.ValueStack; @@ -61,7 +62,6 @@ import org.apache.struts2.dispatcher.map import org.apache.struts2.dispatcher.multipart.MultiPartRequest; import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper; import org.apache.struts2.util.AttributeMap; -import org.apache.struts2.util.ClassLoaderUtils; import org.apache.struts2.util.ObjectFactoryDestroyable; import org.apache.struts2.views.freemarker.FreemarkerManager; @@ -73,6 +73,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; +import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -80,7 +81,6 @@ import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.Enumeration; /** * A utility class the actual dispatcher delegates most of its tasks to. Each instance @@ -347,7 +347,7 @@ public class Dispatcher { String[] classes = configProvs.split("\\s*[,]\\s*"); for (String cname : classes) { try { - Class cls = ClassLoaderUtils.loadClass(cname, this.getClass()); + Class cls = ClassLoaderUtil.loadClass(cname, this.getClass()); ConfigurationProvider prov = (ConfigurationProvider)cls.newInstance(); configurationManager.addContainerProvider(prov); } catch (InstantiationException e) { Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java Tue Mar 20 10:17:37 2012 @@ -21,10 +21,21 @@ package org.apache.struts2.dispatcher; -import java.io.IOException; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Map; +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.config.Configuration; +import com.opensymphony.xwork2.config.ConfigurationProvider; +import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.util.ClassLoaderUtil; +import com.opensymphony.xwork2.util.ValueStack; +import com.opensymphony.xwork2.util.ValueStackFactory; +import com.opensymphony.xwork2.util.logging.Logger; +import com.opensymphony.xwork2.util.logging.LoggerFactory; +import com.opensymphony.xwork2.util.profiling.UtilTimerStack; +import org.apache.struts2.RequestUtils; +import org.apache.struts2.StrutsStatics; +import org.apache.struts2.dispatcher.mapper.ActionMapper; +import org.apache.struts2.dispatcher.mapper.ActionMapping; +import org.apache.struts2.dispatcher.ng.filter.FilterHostConfig; import javax.servlet.Filter; import javax.servlet.FilterChain; @@ -35,23 +46,10 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - -import org.apache.struts2.RequestUtils; -import org.apache.struts2.StrutsStatics; -import org.apache.struts2.dispatcher.mapper.ActionMapper; -import org.apache.struts2.dispatcher.mapper.ActionMapping; -import org.apache.struts2.dispatcher.ng.filter.FilterHostConfig; -import org.apache.struts2.util.ClassLoaderUtils; - -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.config.Configuration; -import com.opensymphony.xwork2.config.ConfigurationProvider; -import com.opensymphony.xwork2.inject.Inject; -import com.opensymphony.xwork2.util.ValueStack; -import com.opensymphony.xwork2.util.ValueStackFactory; -import com.opensymphony.xwork2.util.logging.Logger; -import com.opensymphony.xwork2.util.logging.LoggerFactory; -import com.opensymphony.xwork2.util.profiling.UtilTimerStack; +import java.io.IOException; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; /** * Master filter for Struts that handles four distinct @@ -205,7 +203,7 @@ public class FilterDispatcher implements String factoryName = filterConfig.getInitParameter("loggerFactory"); if (factoryName != null) { try { - Class cls = ClassLoaderUtils.loadClass(factoryName, this.getClass()); + Class cls = ClassLoaderUtil.loadClass(factoryName, this.getClass()); LoggerFactory fac = (LoggerFactory) cls.newInstance(); LoggerFactory.setLoggerFactory(fac); } catch (InstantiationException e) { Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java Tue Mar 20 10:17:37 2012 @@ -20,14 +20,19 @@ */ package org.apache.struts2.dispatcher.ng; -import com.opensymphony.xwork2.util.logging.LoggerFactory; import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.util.ClassLoaderUtil; +import com.opensymphony.xwork2.util.logging.LoggerFactory; +import org.apache.struts2.StrutsConstants; import org.apache.struts2.dispatcher.Dispatcher; import org.apache.struts2.dispatcher.StaticContentLoader; -import org.apache.struts2.util.ClassLoaderUtils; -import org.apache.struts2.StrutsConstants; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; import java.util.regex.Pattern; /** @@ -45,7 +50,7 @@ public class InitOperations { String factoryName = filterConfig.getInitParameter("loggerFactory"); if (factoryName != null) { try { - Class cls = ClassLoaderUtils.loadClass(factoryName, this.getClass()); + Class cls = ClassLoaderUtil.loadClass(factoryName, this.getClass()); LoggerFactory fac = (LoggerFactory) cls.newInstance(); LoggerFactory.setLoggerFactory(fac); } catch ( InstantiationException e ) { Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsUtil.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsUtil.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsUtil.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsUtil.java Tue Mar 20 10:17:37 2012 @@ -24,6 +24,7 @@ package org.apache.struts2.util; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.inject.Container; +import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; @@ -78,7 +79,7 @@ public class StrutsUtil { Class c = (Class) classes.get(name); if (c == null) { - c = ClassLoaderUtils.loadClass(name, StrutsUtil.class); + c = ClassLoaderUtil.loadClass(name, StrutsUtil.class); classes.put(name, c); } Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/StrutsResourceLoader.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/StrutsResourceLoader.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/StrutsResourceLoader.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/StrutsResourceLoader.java Tue Mar 20 10:17:37 2012 @@ -21,12 +21,12 @@ package org.apache.struts2.views.velocity; -import java.io.InputStream; - -import org.apache.struts2.util.ClassLoaderUtils; +import com.opensymphony.xwork2.util.ClassLoaderUtil; import org.apache.velocity.exception.ResourceNotFoundException; import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; +import java.io.InputStream; + /** * Loads resource from the Thread's context ClassLoader. @@ -44,7 +44,7 @@ public class StrutsResourceLoader extend } try { - return ClassLoaderUtils.getResourceAsStream(name, StrutsResourceLoader.class); + return ClassLoaderUtil.getResourceAsStream(name, StrutsResourceLoader.class); } catch (Exception e) { throw new ResourceNotFoundException(e.getMessage()); } Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java (original) +++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java Tue Mar 20 10:17:37 2012 @@ -21,26 +21,23 @@ package org.apache.struts2.views.xslt; -import java.util.ArrayList; -import java.util.List; - -import javax.xml.transform.Source; -import javax.xml.transform.TransformerException; -import javax.xml.transform.URIResolver; -import javax.xml.transform.stream.StreamSource; - +import com.opensymphony.xwork2.Action; +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.mock.MockActionInvocation; +import com.opensymphony.xwork2.util.ClassLoaderUtil; +import com.opensymphony.xwork2.util.ValueStack; import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsTestCase; -import org.apache.struts2.util.ClassLoaderUtils; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; -import com.opensymphony.xwork2.Action; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.mock.MockActionInvocation; -import com.opensymphony.xwork2.util.ValueStack; -import com.opensymphony.xwork2.util.ValueStackFactory; +import javax.xml.transform.Source; +import javax.xml.transform.TransformerException; +import javax.xml.transform.URIResolver; +import javax.xml.transform.stream.StreamSource; +import java.util.ArrayList; +import java.util.List; /** * Unit test for {@link XSLTResult}. @@ -138,7 +135,7 @@ public class XSLTResultTest extends Stru protected URIResolver getURIResolver() { return new URIResolver() { public Source resolve(String href, String base) throws TransformerException { - return new StreamSource(ClassLoaderUtils.getResourceAsStream(href, this.getClass())); + return new StreamSource(ClassLoaderUtil.getResourceAsStream(href, this.getClass())); } }; @@ -159,7 +156,7 @@ public class XSLTResultTest extends Stru protected URIResolver getURIResolver() { return new URIResolver() { public Source resolve(String href, String base) throws TransformerException { - return new StreamSource(ClassLoaderUtils.getResourceAsStream(href, this.getClass())); + return new StreamSource(ClassLoaderUtil.getResourceAsStream(href, this.getClass())); } }; Modified: struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/codebehind/CodebehindUnknownHandler.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/codebehind/CodebehindUnknownHandler.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/codebehind/CodebehindUnknownHandler.java (original) +++ struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/codebehind/CodebehindUnknownHandler.java Tue Mar 20 10:17:37 2012 @@ -21,15 +21,24 @@ package org.apache.struts2.codebehind; -import com.opensymphony.xwork2.*; +import com.opensymphony.xwork2.Action; +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.ObjectFactory; +import com.opensymphony.xwork2.Result; +import com.opensymphony.xwork2.UnknownHandler; +import com.opensymphony.xwork2.XWorkException; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; -import com.opensymphony.xwork2.config.entities.*; +import com.opensymphony.xwork2.config.entities.ActionConfig; +import com.opensymphony.xwork2.config.entities.InterceptorLocator; +import com.opensymphony.xwork2.config.entities.PackageConfig; +import com.opensymphony.xwork2.config.entities.ResultConfig; +import com.opensymphony.xwork2.config.entities.ResultTypeConfig; import com.opensymphony.xwork2.config.providers.InterceptorBuilder; import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; -import org.apache.struts2.util.ClassLoaderUtils; import javax.servlet.ServletContext; import java.net.MalformedURLException; @@ -253,7 +262,7 @@ public class CodebehindUnknownHandler im LOG.debug("Loaded template '" + path + "' from servlet context."); } } else { - template = ClassLoaderUtils.getResource(stripLeadingSlash(path), getClass()); + template = ClassLoaderUtil.getResource(stripLeadingSlash(path), getClass()); if (template != null && LOG.isDebugEnabled()) { LOG.debug("Loaded template '" + stripLeadingSlash(path) + "' from class path."); } Modified: struts/struts2/trunk/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ListValidatorsAction.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ListValidatorsAction.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ListValidatorsAction.java (original) +++ struts/struts2/trunk/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ListValidatorsAction.java Tue Mar 20 10:17:37 2012 @@ -24,9 +24,9 @@ package org.apache.struts2.config_browse import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.validator.ActionValidatorManager; import com.opensymphony.xwork2.validator.Validator; -import org.apache.struts2.util.ClassLoaderUtils; import java.util.Collections; import java.util.List; @@ -92,7 +92,7 @@ public class ListValidatorsAction extend private Class getClassInstance() { try { - return ClassLoaderUtils.loadClass(clazz, ActionContext.getContext().getClass()); + return ClassLoaderUtil.loadClass(clazz, ActionContext.getContext().getClass()); } catch (Exception e) { LOG.error("Class '" + clazz + "' not found...",e); } Modified: struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java (original) +++ struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java Tue Mar 20 10:17:37 2012 @@ -20,15 +20,6 @@ */ package org.apache.struts2.convention; -import java.net.MalformedURLException; -import java.util.*; - -import javax.servlet.ServletContext; - -import com.opensymphony.xwork2.config.entities.*; -import com.opensymphony.xwork2.config.providers.InterceptorBuilder; -import org.apache.struts2.util.ClassLoaderUtils; - import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; @@ -38,11 +29,26 @@ import com.opensymphony.xwork2.UnknownHa import com.opensymphony.xwork2.XWorkException; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; -import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.config.entities.ActionConfig; +import com.opensymphony.xwork2.config.entities.InterceptorMapping; +import com.opensymphony.xwork2.config.entities.PackageConfig; +import com.opensymphony.xwork2.config.entities.ResultConfig; +import com.opensymphony.xwork2.config.entities.ResultTypeConfig; +import com.opensymphony.xwork2.config.providers.InterceptorBuilder; import com.opensymphony.xwork2.inject.Container; +import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; +import javax.servlet.ServletContext; +import java.net.MalformedURLException; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + /** * <p> * This class is the default unknown handler for all of the Convention @@ -328,7 +334,7 @@ public class ConventionUnknownHandler im LOG.trace("Checking ClasLoader for #0", path); String classLoaderPath = path.startsWith("/") ? path.substring(1, path.length()) : path; - if (ClassLoaderUtils.getResource(classLoaderPath, getClass()) != null) { + if (ClassLoaderUtil.getResource(classLoaderPath, getClass()) != null) { if (traceEnabled) LOG.trace("Found"); return buildResult(path, resultCode, resultsByExtension.get(ext), actionContext); Modified: struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionsServiceImpl.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionsServiceImpl.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionsServiceImpl.java (original) +++ struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionsServiceImpl.java Tue Mar 20 10:17:37 2012 @@ -20,19 +20,18 @@ */ package org.apache.struts2.convention; -import java.util.HashMap; -import java.util.Map; -import java.util.ResourceBundle; - -import org.apache.struts2.convention.annotation.AnnotationTools; -import org.apache.struts2.convention.annotation.ResultPath; -import org.apache.struts2.util.ClassLoaderUtils; - import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.config.entities.ActionConfig; import com.opensymphony.xwork2.config.entities.PackageConfig; import com.opensymphony.xwork2.config.entities.ResultTypeConfig; import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.util.ClassLoaderUtil; +import org.apache.struts2.convention.annotation.AnnotationTools; +import org.apache.struts2.convention.annotation.ResultPath; + +import java.util.HashMap; +import java.util.Map; +import java.util.ResourceBundle; /** * <p> @@ -95,7 +94,7 @@ public class ConventionsServiceImpl impl } try { - return determineResultPath(ClassLoaderUtils.loadClass(actionConfig.getClassName(), this.getClass())); + return determineResultPath(ClassLoaderUtil.loadClass(actionConfig.getClassName(), this.getClass())); } catch (ClassNotFoundException e) { throw new RuntimeException("Invalid action class configuration that references an unknown " + "class named [" + actionConfig.getClassName() + "]", e); Modified: struts/struts2/trunk/plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java (original) +++ struts/struts2/trunk/plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java Tue Mar 20 10:17:37 2012 @@ -21,12 +21,14 @@ package org.apache.struts2.jsf; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; +import com.opensymphony.xwork2.Action; +import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.config.entities.ActionConfig; +import com.opensymphony.xwork2.config.entities.ResultConfig; +import com.opensymphony.xwork2.interceptor.Interceptor; +import com.opensymphony.xwork2.util.ClassLoaderUtil; +import org.apache.struts2.ServletActionContext; +import org.apache.struts2.StrutsException; import javax.faces.FactoryFinder; import javax.faces.application.Application; @@ -41,16 +43,12 @@ import javax.faces.el.VariableResolver; import javax.faces.event.ActionListener; import javax.faces.lifecycle.Lifecycle; import javax.faces.lifecycle.LifecycleFactory; - -import org.apache.struts2.ServletActionContext; -import org.apache.struts2.StrutsException; -import org.apache.struts2.util.ClassLoaderUtils; - -import com.opensymphony.xwork2.Action; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.config.entities.ActionConfig; -import com.opensymphony.xwork2.config.entities.ResultConfig; -import com.opensymphony.xwork2.interceptor.Interceptor; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; /** * * Initializes the JSF context for this request. @@ -301,7 +299,7 @@ public class FacesSetupInterceptor exten Class implClass = null; try { - implClass = ClassLoaderUtils.loadClass(implClassName, this + implClass = ClassLoaderUtil.loadClass(implClassName, this .getClass()); } catch (ClassNotFoundException e1) { throw new IllegalArgumentException("Class " + implClassName Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/ClassLoaderUtil.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/ClassLoaderUtil.java?rev=1302821&r1=1302820&r2=1302821&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/ClassLoaderUtil.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/ClassLoaderUtil.java Tue Mar 20 10:17:37 2012 @@ -24,17 +24,12 @@ import java.util.*; /** * This class is extremely useful for loading resources and classes in a fault tolerant manner * that works across different applications servers. - * + * <p/> * It has come out of many months of frustrating use of multiple application servers at Atlassian, * please don't change things unless you're sure they're not going to break in one server or another! - * - * It was brought in from oscore trunk revision 147. * - * @author $Author$ - * @version $Revision$ */ public class ClassLoaderUtil { - //~ Methods //////////////////////////////////////////////////////////////// /** * Load all resources with a given name, potentially aggregating all results @@ -77,18 +72,18 @@ public class ClassLoaderUtil { } /** - * Load a given resource. - * - * This method will try to load the resource using the following methods (in order): - * <ul> - * <li>From Thread.currentThread().getContextClassLoader() - * <li>From ClassLoaderUtil.class.getClassLoader() - * <li>callingClass.getClassLoader() - * </ul> - * - * @param resourceName The name IllegalStateException("Unable to call ")of the resource to load - * @param callingClass The Class object of the calling object - */ + * Load a given resource. + * <p/> + * This method will try to load the resource using the following methods (in order): + * <ul> + * <li>From {@link Thread#getContextClassLoader() Thread.currentThread().getContextClassLoader()} + * <li>From {@link Class#getClassLoader() ClassLoaderUtil.class.getClassLoader()} + * <li>From the {@link Class#getClassLoader() callingClass.getClassLoader() } + * </ul> + * + * @param resourceName The name of the resource to load + * @param callingClass The Class object of the calling object + */ public static URL getResource(String resourceName, Class callingClass) { URL url = Thread.currentThread().getContextClassLoader().getResource(resourceName); @@ -130,20 +125,20 @@ public class ClassLoaderUtil { } /** - * Load a class with a given name. - * - * It will try to load the class in the following order: - * <ul> - * <li>From Thread.currentThread().getContextClassLoader() - * <li>Using the basic Class.forName() - * <li>From ClassLoaderUtil.class.getClassLoader() - * <li>From the callingClass.getClassLoader() - * </ul> - * - * @param className The name of the class to load - * @param callingClass The Class object of the calling object - * @throws ClassNotFoundException If the class cannot be found anywhere. - */ + * Load a class with a given name. + * <p/> + * It will try to load the class in the following order: + * <ul> + * <li>From {@link Thread#getContextClassLoader() Thread.currentThread().getContextClassLoader()} + * <li>Using the basic {@link Class#forName(java.lang.String) } + * <li>From {@link Class#getClassLoader() ClassLoaderUtil.class.getClassLoader()} + * <li>From the {@link Class#getClassLoader() callingClass.getClassLoader() } + * </ul> + * + * @param className The name of the class to load + * @param callingClass The Class object of the calling object + * @throws ClassNotFoundException If the class cannot be found anywhere. + */ public static Class loadClass(String className, Class callingClass) throws ClassNotFoundException { try { return Thread.currentThread().getContextClassLoader().loadClass(className); @@ -161,6 +156,25 @@ public class ClassLoaderUtil { } /** + * Prints the current classloader hierarchy - useful for debugging. + */ + public static void printClassLoader() { + System.out.println("ClassLoaderUtils.printClassLoader"); + printClassLoader(Thread.currentThread().getContextClassLoader()); + } + + /** + * Prints the classloader hierarchy from a given classloader - useful for debugging. + */ + public static void printClassLoader(ClassLoader cl) { + System.out.println("ClassLoaderUtils.printClassLoader(cl = " + cl + ")"); + + if (cl != null) { + printClassLoader(cl.getParent()); + } + } + + /** * Aggregates Enumeration instances into one iterator and filters out duplicates. Always keeps one * ahead of the enumerator to protect against returning duplicates. */