KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > jasper > compiler > Dumper


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17
18 package org.apache.jasper.compiler;
19
20 import org.xml.sax.Attributes JavaDoc;
21 import org.apache.jasper.JasperException;
22
23 class Dumper {
24
25     static class DumpVisitor extends Node.Visitor {
26     private int indent = 0;
27
28     private String JavaDoc getAttributes(Attributes JavaDoc attrs) {
29         if (attrs == null)
30         return "";
31
32         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
33         for (int i=0; i < attrs.getLength(); i++) {
34         buf.append(" " + attrs.getQName(i) + "=\""
35                + attrs.getValue(i) + "\"");
36         }
37         return buf.toString();
38     }
39
40     private void printString(String JavaDoc str) {
41         printIndent();
42         System.out.print(str);
43     }
44
45     private void printString(String JavaDoc prefix, char[] chars, String JavaDoc suffix) {
46         String JavaDoc str = null;
47         if (chars != null) {
48         str = new String JavaDoc(chars);
49         }
50         printString(prefix, str, suffix);
51     }
52          
53     private void printString(String JavaDoc prefix, String JavaDoc str, String JavaDoc suffix) {
54         printIndent();
55         if (str != null) {
56         System.out.print(prefix + str + suffix);
57         } else {
58         System.out.print(prefix + suffix);
59         }
60     }
61
62     private void printAttributes(String JavaDoc prefix, Attributes JavaDoc attrs,
63                      String JavaDoc suffix) {
64         printString(prefix, getAttributes(attrs), suffix);
65     }
66
67     private void dumpBody(Node n) throws JasperException {
68         Node.Nodes page = n.getBody();
69         if (page != null) {
70 // indent++;
71
page.visit(this);
72 // indent--;
73
}
74         }
75
76         public void visit(Node.PageDirective n) throws JasperException {
77         printAttributes("<%@ page", n.getAttributes(), "%>");
78         }
79
80         public void visit(Node.TaglibDirective n) throws JasperException {
81         printAttributes("<%@ taglib", n.getAttributes(), "%>");
82         }
83
84         public void visit(Node.IncludeDirective n) throws JasperException {
85         printAttributes("<%@ include", n.getAttributes(), "%>");
86         dumpBody(n);
87         }
88
89         public void visit(Node.Comment n) throws JasperException {
90         printString("<%--", n.getText(), "--%>");
91         }
92
93         public void visit(Node.Declaration n) throws JasperException {
94         printString("<%!", n.getText(), "%>");
95         }
96
97         public void visit(Node.Expression n) throws JasperException {
98         printString("<%=", n.getText(), "%>");
99         }
100
101         public void visit(Node.Scriptlet n) throws JasperException {
102         printString("<%", n.getText(), "%>");
103         }
104
105         public void visit(Node.IncludeAction n) throws JasperException {
106         printAttributes("<jsp:include", n.getAttributes(), ">");
107         dumpBody(n);
108             printString("</jsp:include>");
109         }
110
111         public void visit(Node.ForwardAction n) throws JasperException {
112         printAttributes("<jsp:forward", n.getAttributes(), ">");
113         dumpBody(n);
114         printString("</jsp:forward>");
115         }
116
117         public void visit(Node.GetProperty n) throws JasperException {
118         printAttributes("<jsp:getProperty", n.getAttributes(), "/>");
119         }
120
121         public void visit(Node.SetProperty n) throws JasperException {
122         printAttributes("<jsp:setProperty", n.getAttributes(), ">");
123             dumpBody(n);
124             printString("</jsp:setProperty>");
125         }
126
127         public void visit(Node.UseBean n) throws JasperException {
128         printAttributes("<jsp:useBean", n.getAttributes(), ">");
129         dumpBody(n);
130         printString("</jsp:useBean>");
131         }
132     
133         public void visit(Node.PlugIn n) throws JasperException {
134         printAttributes("<jsp:plugin", n.getAttributes(), ">");
135         dumpBody(n);
136         printString("</jsp:plugin>");
137     }
138         
139         public void visit(Node.ParamsAction n) throws JasperException {
140         printAttributes("<jsp:params", n.getAttributes(), ">");
141         dumpBody(n);
142         printString("</jsp:params>");
143         }
144         
145         public void visit(Node.ParamAction n) throws JasperException {
146         printAttributes("<jsp:param", n.getAttributes(), ">");
147         dumpBody(n);
148         printString("</jsp:param>");
149         }
150         
151         public void visit(Node.NamedAttribute n) throws JasperException {
152         printAttributes("<jsp:attribute", n.getAttributes(), ">");
153         dumpBody(n);
154         printString("</jsp:attribute>");
155         }
156
157         public void visit(Node.JspBody n) throws JasperException {
158         printAttributes("<jsp:body", n.getAttributes(), ">");
159         dumpBody(n);
160         printString("</jsp:body>");
161         }
162         
163         public void visit(Node.ELExpression n) throws JasperException {
164         printString( "${" + new String JavaDoc( n.getText() ) + "}" );
165         }
166
167         public void visit(Node.CustomTag n) throws JasperException {
168         printAttributes("<" + n.getQName(), n.getAttributes(), ">");
169         dumpBody(n);
170         printString("</" + n.getQName() + ">");
171         }
172
173     public void visit(Node.UninterpretedTag n) throws JasperException {
174         String JavaDoc tag = n.getQName();
175         printAttributes("<"+tag, n.getAttributes(), ">");
176         dumpBody(n);
177         printString("</" + tag + ">");
178         }
179
180     public void visit(Node.TemplateText n) throws JasperException {
181         printString(new String JavaDoc(n.getText()));
182     }
183
184     private void printIndent() {
185         for (int i=0; i < indent; i++) {
186         System.out.print(" ");
187         }
188     }
189     }
190
191     public static void dump(Node n) {
192     try {
193         n.accept(new DumpVisitor());
194     } catch (JasperException e) {
195         e.printStackTrace();
196     }
197     }
198
199     public static void dump(Node.Nodes page) {
200     try {
201         page.visit(new DumpVisitor());
202     } catch (JasperException e) {
203         e.printStackTrace();
204     }
205     }
206 }
207
208
Popular Tags