Advertisement
Guest User

Untitled

a guest
Dec 28th, 2009
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.89 KB | None | 0 0
  1. Index: httpunit/src/com/meterware/servletunit/WebApplication.java
  2. ===================================================================
  3. --- httpunit/src/com/meterware/servletunit/WebApplication.java (revision 1061)
  4. +++ httpunit/src/com/meterware/servletunit/WebApplication.java (working copy)
  5. -57,6 +57,11 @@
  6. /** A mapping of resource names to servlet configurations. **/
  7. private WebResourceMap _servletMapping = new WebResourceMap();
  8.  
  9. + /** A mapping of filter names to FilterConfigurations */
  10. + private Hashtable _filters = new Hashtable();
  11. + /** A mapping of servlet names to ServletConfigurations */
  12. + private Hashtable _servlets = new Hashtable();
  13. +
  14. /** A mapping of resource names to filter configurations. **/
  15. private FilterUrlMap _filterUrlMapping = new FilterUrlMap();
  16.  
  17. -265,7 +270,11 @@
  18. return _servletMapping.get( url );
  19. }
  20.  
  21. + ServletConfiguration getServletByName(String name) {
  22. + return (ServletConfiguration) _servlets.get(name);
  23. + }
  24.  
  25. +
  26. /**
  27. * Returns true if this application uses Basic Authentication.
  28. */
  29. -417,6 +426,7 @@
  30. for (int i = 0; i < nl.getLength(); i++) registerFilterClass( nameToClass, (Element) nl.item( i ) );
  31. nl = document.getElementsByTagName( "filter-mapping" );
  32. for (int i = 0; i < nl.getLength(); i++) registerFilter( nameToClass, (Element) nl.item( i ) );
  33. + _filters = nameToClass;
  34. }
  35.  
  36.  
  37. -478,6 +488,7 @@
  38. for (int i = 0; i < nl.getLength(); i++) registerServletClass( nameToClass, (Element) nl.item( i ) );
  39. nl = document.getElementsByTagName( "servlet-mapping" );
  40. for (int i = 0; i < nl.getLength(); i++) registerServlet( nameToClass, (Element) nl.item( i ) );
  41. + _servlets = nameToClass;
  42. }
  43.  
  44.  
  45. -552,6 +563,7 @@
  46.  
  47. private Servlet _servlet;
  48. private String _servletName;
  49. + private String _jspFile;
  50. private int _loadOrder = DONT_AUTOLOAD;
  51.  
  52. ServletConfiguration( String className ) {
  53. -565,8 +577,11 @@
  54.  
  55.  
  56. ServletConfiguration( Element servletElement ) throws SAXException {
  57. - super( servletElement, "servlet-class" );
  58. + super( servletElement, "servlet-class",
  59. + XMLUtils.getChildNodeValue( servletElement, "servlet-class", "org.apache.jasper.servlet.JspServlet" ) );
  60. _servletName = XMLUtils.getChildNodeValue( servletElement, "servlet-name" );
  61. + _jspFile = XMLUtils.getChildNodeValue( servletElement, "jsp-file", "");
  62. + if("".equals(_jspFile)) _jspFile = null;
  63. final NodeList loadOrder = servletElement.getElementsByTagName( "load-on-startup" );
  64. for (int i = 0; i < loadOrder.getLength(); i++) {
  65. String order = XMLUtils.getTextValue( loadOrder.item(i) );
  66. -601,6 +616,11 @@
  67. }
  68.  
  69.  
  70. + public String getJspFile() {
  71. + return _jspFile;
  72. + }
  73. +
  74. +
  75. boolean isLoadOnStartup() {
  76. return _loadOrder != DONT_AUTOLOAD;
  77. }
  78. Index: httpunit/src/com/meterware/servletunit/WebResourceConfiguration.java
  79. ===================================================================
  80. --- httpunit/src/com/meterware/servletunit/WebResourceConfiguration.java (revision 1061)
  81. +++ httpunit/src/com/meterware/servletunit/WebResourceConfiguration.java (working copy)
  82. -49,7 +49,12 @@
  83.  
  84.  
  85. WebResourceConfiguration( Element resourceElement, String resourceNodeName ) throws SAXException {
  86. - this( XMLUtils.getChildNodeValue( resourceElement, resourceNodeName ) );
  87. + this( resourceElement, resourceNodeName, XMLUtils.getChildNodeValue( resourceElement, resourceNodeName ) );
  88. + }
  89. +
  90. +
  91. + WebResourceConfiguration( Element resourceElement, String resourceNodeName, String className ) throws SAXException {
  92. + this( className );
  93. final NodeList initParams = resourceElement.getElementsByTagName( "init-param" );
  94. for (int i = initParams.getLength() - 1; i >= 0; i--) {
  95. _initParams.put( XMLUtils.getChildNodeValue( (Element) initParams.item( i ), "param-name" ),
  96. Index: httpunit/src/com/meterware/servletunit/ServletUnitServletContext.java
  97. ===================================================================
  98. --- httpunit/src/com/meterware/servletunit/ServletUnitServletContext.java (revision 1061)
  99. +++ httpunit/src/com/meterware/servletunit/ServletUnitServletContext.java (working copy)
  100. -23,6 +23,7 @@
  101. import java.io.File;
  102. import java.io.FileInputStream;
  103. import java.io.FileNotFoundException;
  104. +import java.io.IOException;
  105. import java.io.PrintStream;
  106. import java.net.MalformedURLException;
  107. import java.net.URL;
  108. -34,6 +35,7 @@
  109.  
  110. import javax.servlet.ServletContext;
  111. import javax.servlet.ServletException;
  112. +import javax.servlet.*;
  113.  
  114.  
  115.  
  116. -176,8 +178,54 @@
  117. *
  118. * This method returns null if the ServletContext cannot return a RequestDispatcher for any reason.
  119. **/
  120. - public javax.servlet.RequestDispatcher getNamedDispatcher(java.lang.String A) {
  121. - return null; // XXX not implemented
  122. + public javax.servlet.RequestDispatcher getNamedDispatcher( String servletName ) {
  123. + final WebApplication.ServletConfiguration servletConfig = _application.getServletByName(servletName);
  124. + if(servletConfig==null) return null;
  125. + Servlet tempServlet;
  126. + Exception tempException;
  127. + try {
  128. + tempServlet = servletConfig.getServlet();
  129. + tempException = null;
  130. + } catch (Exception e) {
  131. + tempServlet = null;
  132. + tempException = e;
  133. + }
  134. + final Servlet servlet = tempServlet;
  135. + final Exception instantiationException = tempException;
  136. +
  137. + return new javax.servlet.RequestDispatcher() {
  138. + public void forward( ServletRequest request, ServletResponse response ) throws ServletException, IOException {
  139. + if(instantiationException!=null) {
  140. + if(instantiationException instanceof ServletException) {
  141. + throw (ServletException) instantiationException;
  142. + } else {
  143. + ServletException e = new ServletException(instantiationException.getMessage());
  144. + e.initCause(instantiationException);
  145. + throw e;
  146. + }
  147. + }
  148. + if(servletConfig.getJspFile()!=null) {
  149. + request.setAttribute("org.apache.catalina.jsp_file", servletConfig.getJspFile());
  150. + }
  151. + response.reset();
  152. + servlet.service( request, response );
  153. + }
  154. + public void include( ServletRequest request, ServletResponse response ) throws ServletException, IOException {
  155. + if(instantiationException!=null) {
  156. + if(instantiationException instanceof ServletException) {
  157. + throw (ServletException) instantiationException;
  158. + } else {
  159. + ServletException e = new ServletException(instantiationException.getMessage());
  160. + e.initCause(instantiationException);
  161. + throw e;
  162. + }
  163. + }
  164. + if(servletConfig.getJspFile()!=null) {
  165. + request.setAttribute("org.apache.catalina.jsp_file", servletConfig.getJspFile());
  166. + }
  167. + servlet.service( request, response );
  168. + }
  169. + };
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement