1 52 53 package freemarker.testcase.servlets; 54 55 import java.io.BufferedReader ; 56 import java.io.File ; 57 import java.io.FileReader ; 58 import java.io.InputStream ; 59 import java.io.PrintWriter ; 60 import java.io.Reader ; 61 import java.io.StringReader ; 62 import java.io.StringWriter ; 63 import java.net.URL ; 64 import java.security.Principal ; 65 import java.util.Collections ; 66 import java.util.Enumeration ; 67 import java.util.Hashtable ; 68 import java.util.Locale ; 69 import java.util.Map ; 70 import java.util.Properties ; 71 import java.util.Set ; 72 import java.net.URL ; 73 74 import javax.servlet.RequestDispatcher ; 75 import javax.servlet.Servlet ; 76 import javax.servlet.ServletConfig ; 77 import javax.servlet.ServletContext ; 78 import javax.servlet.ServletInputStream ; 79 import javax.servlet.ServletOutputStream ; 80 import javax.servlet.http.Cookie ; 81 import javax.servlet.http.HttpServletRequest ; 82 import javax.servlet.http.HttpServletResponse ; 83 import javax.servlet.http.HttpSession ; 84 import javax.servlet.http.HttpSessionContext ; 85 86 import freemarker.ext.servlet.FreemarkerServlet; 87 import freemarker.template.TemplateException; 88 import freemarker.testcase.TemplateTestCase; 89 import junit.framework.TestCase; 90 91 95 public class TestJspTaglibs extends TestCase { 96 97 File refFile; 98 99 public TestJspTaglibs(String name) { 100 super(name); 101 } 102 103 public TestJspTaglibs(String name, String filename) { 104 super(name); 105 } 106 107 public void setUp() throws Exception { 108 URL url = TestJspTaglibs.class.getResource("TestJspTaglibs.class"); 109 File thisDir = new File (url.getFile()).getParentFile(); 110 refFile = new File (thisDir, "reference/test-jsptaglibs.txt"); 111 } 112 113 public void runTest() throws TemplateException { 114 try { 115 ServletConfig cfg = new MockServletConfig(); 116 FreemarkerServlet servlet = new FreemarkerServlet(); 117 servlet.init(cfg); 118 MockRequest req = new MockRequest("test-jsptaglibs.txt"); 119 MockResponse resp = new MockResponse(); 120 servlet.doGet(req, resp); 121 StringReader output = new StringReader (resp.toString()); 122 Reader reference = new FileReader (refFile); 123 TemplateTestCase.compare(reference,output); 124 } 126 catch(Exception e) { 127 e.printStackTrace(); 128 throw new TemplateException(e, null); 129 } 130 } 131 132 private static class MockServletConfig 133 implements ServletConfig , ServletContext { 134 private final Properties initParams = new Properties (); 135 private final Hashtable attributes = new Hashtable (); 136 137 MockServletConfig() { 138 initParams.setProperty("TemplatePath", "/template/"); 139 initParams.setProperty("NoCache", "true"); 140 initParams.setProperty("TemplateUpdateInterval", "0"); 141 initParams.setProperty("DefaultEncoding", "UTF-8"); 142 initParams.setProperty("ObjectWrapper", "beans"); 143 } 144 145 public String getInitParameter(String name) { 146 return initParams.getProperty(name); 147 } 148 149 public Enumeration getInitParameterNames() { 150 return initParams.keys(); 151 } 152 153 public ServletContext getServletContext() { 154 return this; 155 } 156 157 public String getServletName() { 158 return "freemarker"; 159 } 160 161 public Object getAttribute(String arg0) { 162 return attributes.get(arg0); 163 } 164 165 public Enumeration getAttributeNames() { 166 return attributes.keys(); 167 } 168 169 public ServletContext getContext(String arg0) { 170 throw new UnsupportedOperationException (); 171 } 172 173 public int getMajorVersion() { 174 return 0; 175 } 176 177 public String getMimeType(String arg0) { 178 throw new UnsupportedOperationException (); 179 } 180 181 public int getMinorVersion() { 182 return 0; 183 } 184 185 public RequestDispatcher getNamedDispatcher(String arg0) { 186 throw new UnsupportedOperationException (); 187 } 188 189 public String getRealPath(String arg0) { 190 return null; 191 } 192 193 public RequestDispatcher getRequestDispatcher(String arg0) { 194 throw new UnsupportedOperationException (); 195 } 196 197 public URL getResource(String url) { 198 if (url.startsWith("/")) { 199 url = url.substring(1); 200 } 201 return getClass().getResource(url); 202 } 203 204 public InputStream getResourceAsStream(String url) { 205 if (url.startsWith("/")) { 206 url = url.substring(1); 207 } 208 return getClass().getResourceAsStream(url); 209 } 210 211 public Set getResourcePaths(String path) { 212 if(path.equals("/WEB-INF/lib")) { 213 return Collections.singleton("/WEB-INF/lib/taglib-foo.jar"); 214 } 215 else { 216 return Collections.EMPTY_SET; 217 } 218 } 219 220 public String getServerInfo() { 221 return "FreeMarker/JUnit"; 222 } 223 224 227 public Servlet getServlet(String arg0) { 228 throw new UnsupportedOperationException (); 229 } 230 231 public String getServletContextName() { 232 return "freemarker"; 233 } 234 235 238 public Enumeration getServletNames() { 239 throw new UnsupportedOperationException (); 240 } 241 242 245 public Enumeration getServlets() { 246 throw new UnsupportedOperationException (); 247 } 248 249 252 public void log(Exception arg0, String arg1) { 253 } 254 255 public void log(String arg0, Throwable arg1) { 256 } 257 258 public void log(String arg0) { 259 } 260 261 public void removeAttribute(String arg0) { 262 attributes.remove(arg0); 263 } 264 265 public void setAttribute(String arg0, Object arg1) { 266 attributes.put(arg0, arg1); 267 } 268 } 269 270 private static final class MockRequest 271 implements 272 HttpServletRequest 273 { 274 private final String pathInfo; 275 private HttpSession session; 276 277 MockRequest(String pathInfo) { 278 this.pathInfo = pathInfo; 279 } 280 281 public String getAuthType() { 282 return null; 283 } 284 285 public String getContextPath() { 286 return null; 287 } 288 289 public Cookie [] getCookies() { 290 return null; 291 } 292 293 public long getDateHeader(String arg0) { 294 return 0; 295 } 296 297 public String getHeader(String arg0) { 298 return null; 299 } 300 301 public Enumeration getHeaderNames() { 302 return null; 303 } 304 305 public Enumeration getHeaders(String arg0) { 306 return null; 307 } 308 309 public int getIntHeader(String arg0) { 310 return 0; 311 } 312 313 public String getMethod() { 314 return null; 315 } 316 317 public String getPathInfo() { 318 return pathInfo; 319 } 320 321 public String getPathTranslated() { 322 return null; 323 } 324 325 public String getQueryString() { 326 return null; 327 } 328 329 public String getRemoteUser() { 330 return null; 331 } 332 333 public String getRequestedSessionId() { 334 return null; 335 } 336 337 public String getRequestURI() { 338 return null; 339 } 340 341 public StringBuffer getRequestURL() { 342 return null; 343 } 344 345 public String getServletPath() { 346 return null; 347 } 348 349 public HttpSession getSession() { 350 return getSession(true); 351 } 352 353 public HttpSession getSession(boolean arg0) { 354 if(session == null && arg0) session = new MockSession(); 355 return session; 356 } 357 358 public Principal getUserPrincipal() { 359 return null; 360 } 361 362 public boolean isRequestedSessionIdFromCookie() { 363 return false; 364 } 365 366 369 public boolean isRequestedSessionIdFromUrl() { 370 return false; 371 } 372 373 public boolean isRequestedSessionIdFromURL() { 374 return false; 375 } 376 377 public boolean isRequestedSessionIdValid() { 378 return false; 379 } 380 381 public boolean isUserInRole(String arg0) { 382 return false; 383 } 384 385 public Object getAttribute(String arg0) { 386 return null; 387 } 388 389 public Enumeration getAttributeNames() { 390 return null; 391 } 392 393 public String getCharacterEncoding() { 394 return null; 395 } 396 397 public int getContentLength() { 398 return 0; 399 } 400 401 public String getContentType() { 402 return null; 403 } 404 405 public ServletInputStream getInputStream() { 406 return null; 407 } 408 409 public Locale getLocale() { 410 return Locale.getDefault(); 411 } 412 413 public Enumeration getLocales() { 414 return null; 415 } 416 417 public String getParameter(String arg0) { 418 return null; 419 } 420 421 public Map getParameterMap() { 422 return null; 423 } 424 425 public Enumeration getParameterNames() { 426 return null; 427 } 428 429 public String [] getParameterValues(String arg0) { 430 return null; 431 } 432 433 public String getProtocol() { 434 return null; 435 } 436 437 public BufferedReader getReader() { 438 return null; 439 } 440 441 444 public String getRealPath(String arg0) { 445 return null; 446 } 447 448 public String getRemoteAddr() { 449 return null; 450 } 451 452 public String getRemoteHost() { 453 return null; 454 } 455 456 public RequestDispatcher getRequestDispatcher(String arg0) { 457 return null; 458 } 459 460 public String getScheme() { 461 return null; 462 } 463 464 public String getServerName() { 465 return null; 466 } 467 468 public int getServerPort() { 469 return 0; 470 } 471 472 public boolean isSecure() { 473 return false; 474 } 475 476 public void removeAttribute(String arg0) { 477 } 478 479 public void setAttribute(String arg0, Object arg1) { 480 } 481 482 public void setCharacterEncoding(String arg0) { 483 } 484 } 485 486 private static final class MockResponse 487 implements 488 HttpServletResponse 489 { 490 private final StringWriter writer = new StringWriter (); 491 private final PrintWriter pwriter = new PrintWriter (writer); 492 493 public void addCookie(Cookie arg0) { 494 } 495 496 public void addDateHeader(String arg0, long arg1) { 497 } 498 499 public void addHeader(String arg0, String arg1) { 500 } 501 502 public void addIntHeader(String arg0, int arg1) { 503 } 504 505 public boolean containsHeader(String arg0) { 506 return false; 507 } 508 509 512 public String encodeRedirectUrl(String arg0) { 513 return null; 514 } 515 516 public String encodeRedirectURL(String arg0) { 517 return null; 518 } 519 520 523 public String encodeUrl(String arg0) { 524 return null; 525 } 526 527 public String encodeURL(String arg0) { 528 return null; 529 } 530 531 public void sendError(int arg0, String arg1) { 532 } 533 534 public void sendError(int arg0) { 535 } 536 537 public void sendRedirect(String arg0) { 538 } 539 540 public void setDateHeader(String arg0, long arg1) { 541 } 542 543 public void setHeader(String arg0, String arg1) { 544 } 545 546 public void setIntHeader(String arg0, int arg1) { 547 } 548 549 552 public void setStatus(int arg0, String arg1) { 553 } 554 555 public void setStatus(int arg0) { 556 } 557 558 public void flushBuffer() { 559 } 560 561 public int getBufferSize() { 562 return 0; 563 } 564 565 public String getCharacterEncoding() { 566 return null; 567 } 568 569 public Locale getLocale() { 570 return null; 571 } 572 573 public ServletOutputStream getOutputStream() { 574 return null; 575 } 576 577 public PrintWriter getWriter() { 578 return pwriter; 579 } 580 581 public boolean isCommitted() { 582 return false; 583 } 584 585 public void reset() { 586 } 587 588 public void resetBuffer() { 589 } 590 591 public void setBufferSize(int arg0) { 592 } 593 594 public void setContentLength(int arg0) { 595 } 596 597 public void setContentType(String arg0) { 598 } 599 600 public void setLocale(Locale arg0) { 601 } 602 603 public String toString() { 604 pwriter.flush(); 605 return writer.toString(); 606 } 607 } 608 609 private static final class MockSession implements HttpSession 610 { 611 public Object getAttribute(String arg0) { 612 return null; 613 } 614 615 public Enumeration getAttributeNames() { 616 return null; 617 } 618 619 public long getCreationTime() { 620 return 0; 621 } 622 623 public String getId() { 624 return null; 625 } 626 627 public long getLastAccessedTime() { 628 return 0; 629 } 630 631 public int getMaxInactiveInterval() { 632 return 0; 633 } 634 635 public ServletContext getServletContext() { 636 return null; 637 } 638 639 642 public HttpSessionContext getSessionContext() { 643 return null; 644 } 645 646 649 public Object getValue(String arg0) { 650 return null; 651 } 652 653 656 public String [] getValueNames() { 657 return null; 658 } 659 660 public void invalidate() { 661 } 662 663 public boolean isNew() { 664 return false; 665 } 666 667 670 public void putValue(String arg0, Object arg1) { 671 } 672 673 public void removeAttribute(String arg0) { 674 } 675 676 679 public void removeValue(String arg0) { 680 } 681 682 public void setAttribute(String arg0, Object arg1) { 683 } 684 685 public void setMaxInactiveInterval(int arg0) { 686 } 687 } 688 689 691 public static void main( String [] argc ) throws Exception { 692 TestCase test = new TestJspTaglibs( "test-jsptaglibs.txt" ); 693 test.run(); 694 } 695 } 696 | Popular Tags |