001 // Copyright May 16, 2006 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014
015 package net.sf.tacos.util;
016
017 import org.apache.tapestry.IMarkupWriter;
018 import org.apache.tapestry.NestedMarkupWriter;
019 import org.apache.tapestry.json.JSONObject;
020 import org.apache.tapestry.markup.Attribute;
021
022 /**
023 * A {@link IMarkupWriter} that only gathers attributes and
024 * attribute values into a JSON structure.
025 */
026 public class JSONMarkupWriter implements IMarkupWriter
027 {
028 private JSONObject json;
029
030 public JSONMarkupWriter()
031 {
032 json = new JSONObject();
033 }
034
035 public JSONObject getAttributes()
036 {
037 return json;
038 }
039
040 public void attribute(String name, int value)
041 {
042 json.put(name, value);
043 }
044
045 public void attribute(String name, boolean value)
046 {
047 json.put(name, value);
048 }
049
050 public void attribute(String name, String value)
051 {
052 // look for hints
053 if (name.endsWith("AsInt"))
054 attribute(name.substring(0, name.length() - 5), Integer.parseInt(value));
055 else if (name.endsWith("AsBoolean"))
056 attribute(name.substring(0, name.length() - 9), Boolean.valueOf(value).booleanValue());
057
058 // look for known names
059 else if (name.endsWith("Duration"))
060 attribute(name, Integer.parseInt(value));
061 else
062 json.put(name, value);
063 }
064
065 public void attributeRaw(String name, String value)
066 {
067 json.put(name, value);
068 }
069
070 public void appendAttribute(String name, int value)
071 {
072 }
073
074 public void appendAttribute(String name, boolean value)
075 {
076 }
077
078 public void appendAttribute(String name, String value)
079 {
080 }
081
082 public void appendAttributeRaw(String name, String value)
083 {
084 }
085
086 public boolean hasAttribute(String name)
087 {
088 return false;
089 }
090
091 public Attribute getAttribute(String name)
092 {
093 return null;
094 }
095
096 public Attribute removeAttribute(String name)
097 {
098 return null;
099 }
100
101 public void clearAttributes()
102 {
103 }
104
105 public void begin(String name)
106 {
107 }
108
109 public void beginEmpty(String name)
110 {
111 }
112
113 public boolean checkError()
114 {
115 return false;
116 }
117
118 public void close()
119 {
120 }
121
122 public void closeTag()
123 {
124 }
125
126 public void comment(String value)
127 {
128 }
129
130 public void end()
131 {
132 }
133
134 public void end(String name)
135 {
136 }
137
138 public void flush()
139 {
140 }
141
142 public NestedMarkupWriter getNestedWriter()
143 {
144 return null;
145 }
146
147 public void print(char[] data, int offset, int length)
148 {
149 }
150
151 public void print(char[] data, int offset, int length, boolean raw)
152 {
153 }
154
155 public void print(char value)
156 {
157 }
158
159 public void print(int value)
160 {
161 }
162
163 public void print(String value)
164 {
165 }
166
167 public void print(String value, boolean raw)
168 {
169 }
170
171 public void println()
172 {
173 }
174
175 public void printRaw(char[] buffer, int offset, int length)
176 {
177 }
178
179 public void printRaw(String value)
180 {
181 }
182
183 public String getContentType()
184 {
185 return "";
186 }
187
188 }