KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > infohazard > maverick > flow > LastStep


1 /*
2  * $Id: LastStep.java,v 1.4 2004/06/07 20:39:00 eelco12 Exp $
3  * $Source: /cvsroot/mav/maverick/src/java/org/infohazard/maverick/flow/LastStep.java,v $
4  */

5
6 package org.infohazard.maverick.flow;
7
8 import java.io.IOException JavaDoc;
9 import java.io.Reader JavaDoc;
10 import java.io.Writer JavaDoc;
11
12 import javax.servlet.ServletException JavaDoc;
13 import javax.servlet.http.HttpServletResponse JavaDoc;
14 import javax.xml.transform.Result JavaDoc;
15 import javax.xml.transform.Source JavaDoc;
16 import javax.xml.transform.Transformer JavaDoc;
17 import javax.xml.transform.TransformerConfigurationException JavaDoc;
18 import javax.xml.transform.TransformerException JavaDoc;
19 import javax.xml.transform.TransformerFactory JavaDoc;
20 import javax.xml.transform.sax.SAXTransformerFactory JavaDoc;
21 import javax.xml.transform.sax.TransformerHandler JavaDoc;
22 import javax.xml.transform.stream.StreamResult JavaDoc;
23
24 import org.apache.commons.logging.Log;
25 import org.apache.commons.logging.LogFactory;
26 import org.xml.sax.ContentHandler JavaDoc;
27
28 /**
29  * Simple transformation step which dumps to the real output. There
30  * are NO subsequent steps! This is the end of the line.
31  */

32 class LastStep implements TransformStep
33 {
34     /**
35      * Logger.
36      */

37     private static Log log = LogFactory.getLog(LastStep.class);
38
39     /**
40      */

41     protected MaverickContext mavCtx;
42     
43     /**
44      */

45     public LastStep(MaverickContext mctx)
46     {
47         this.mavCtx = mctx;
48     }
49     
50     /**
51      */

52     public boolean isLast()
53     {
54         return true;
55     }
56     
57     /**
58      * Actually set this value, we are the last element in the chain.
59      */

60     public void setContentType(String JavaDoc contentType)
61     {
62         this.getResponse().setContentType(contentType);
63     }
64     
65     /**
66      * Dumps directly to the real response
67      */

68     public ContentHandler JavaDoc getSAXHandler() throws IOException JavaDoc, ServletException JavaDoc
69     {
70         try
71         {
72             SAXTransformerFactory JavaDoc saxTFact = (SAXTransformerFactory JavaDoc)TransformerFactory.newInstance();
73             TransformerHandler JavaDoc tHandler = saxTFact.newTransformerHandler();
74     
75             Result JavaDoc res = new StreamResult JavaDoc(this.getResponse().getOutputStream());
76             tHandler.setResult(res);
77             
78             return tHandler;
79         }
80         catch (TransformerConfigurationException JavaDoc ex)
81         {
82             throw new ServletException JavaDoc(ex);
83         }
84     }
85     
86     /**
87      * @return the real response!
88      */

89     public HttpServletResponse JavaDoc getResponse()
90     {
91         if(log.isDebugEnabled()) log.debug("Getting real response");
92         
93         return this.mavCtx.getRealResponse();
94     }
95
96     /**
97      * @return th real response writer!
98      */

99     public Writer JavaDoc getWriter() throws IOException JavaDoc, ServletException JavaDoc
100     {
101         return this.getResponse().getWriter();
102     }
103     
104     /**
105      */

106     public void done() throws IOException JavaDoc, ServletException JavaDoc
107     {
108         // Do nothing
109
}
110     
111     
112     
113     
114
115     /**
116      * Serializes the XML Source to the response.
117      */

118     public void go(Source JavaDoc input) throws IOException JavaDoc, ServletException JavaDoc
119     {
120         try
121         {
122             // TransformerFactory and Transformer are are not thread-safe so
123
// we must create new ones each time.
124
TransformerFactory JavaDoc tFactory = TransformerFactory.newInstance();
125             Transformer JavaDoc trans = tFactory.newTransformer();
126
127             Result JavaDoc res = new StreamResult JavaDoc(this.getResponse().getWriter());
128
129             trans.transform(input, res);
130         }
131         catch (TransformerException JavaDoc ex)
132         {
133             throw new ServletException JavaDoc(ex);
134         }
135     }
136
137     /**
138      * Writes the reader to the response.
139      */

140     public void go(Reader JavaDoc input) throws IOException JavaDoc, ServletException JavaDoc
141     {
142         Writer JavaDoc output = this.getResponse().getWriter();
143         while (input.ready())
144             output.write(input.read());
145     }
146
147     /**
148      * Writes the String to the response.
149      */

150     public void go(String JavaDoc input) throws IOException JavaDoc, ServletException JavaDoc
151     {
152         Writer JavaDoc output = this.getResponse().getWriter();
153
154         output.write(input);
155     }
156 }
157
Popular Tags