KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gnu > kawa > servlet > ServletPrinter


1 // Copyright (c) 2002 Per M.A. Bothner and Brainfood Inc.
2
// This is free software; for terms and warranty disclaimer see ./COPYING.
3

4 package gnu.kawa.servlet;
5 import gnu.kawa.xml.*;
6 import java.io.*;
7 import javax.servlet.*;
8 import javax.servlet.http.*;
9
10 /** A Consumer that sends output to a ServletResponse.
11  * This is the initial result destination when running a KawaServlet.
12  */

13
14 public class ServletPrinter extends HttpPrinter
15 {
16   HttpServletResponse response;
17
18   public ServletPrinter(HttpServletResponse response)
19     throws IOException
20   {
21     super(response.getOutputStream());
22     this.response = response;
23   }
24
25   public ServletPrinter(OutputStream ostream)
26   {
27     super(ostream);
28   }
29
30   public void addHeader(String JavaDoc label, String JavaDoc value)
31   {
32     if (label.equalsIgnoreCase("Content-type"))
33       {
34     super.sawContentType = value;
35     response.setContentType(value);
36       }
37     else if (label.equalsIgnoreCase("Status"))
38       {
39     int lval = value.length();
40     int code = 0;
41     int i;
42     for (i = 0; i < lval; i++)
43       {
44         if (i >= lval)
45           {
46         try
47           {
48             response.sendError(code);
49           }
50         catch (java.io.IOException JavaDoc ex)
51           {
52             System.err.println("caught "+ex);
53           }
54         break;
55           }
56         char ch = value.charAt(i);
57         int digit = Character.digit(ch, 10);
58         if (digit >= 0)
59           code = 10 * code + digit;
60         else
61           {
62         if (ch == ' ')
63           i++;
64         try
65           {
66         response.sendError(code, value.substring(i));
67           }
68         catch (java.io.IOException JavaDoc ex)
69           {
70             System.err.println("caught "+ex);
71           }
72         break;
73           }
74       }
75       }
76     else
77       response.addHeader(label, value);
78   }
79
80   public void printHeaders()
81   {
82   }
83 }
84
Popular Tags