01: /*
02: * The contents of this file are subject to the terms
03: * of the Common Development and Distribution License
04: * (the "License"). You may not use this file except
05: * in compliance with the License.
06: *
07: * You can obtain a copy of the license at
08: * https://jwsdp.dev.java.net/CDDLv1.0.html
09: * See the License for the specific language governing
10: * permissions and limitations under the License.
11: *
12: * When distributing Covered Code, include this CDDL
13: * HEADER in each file and include the License file at
14: * https://jwsdp.dev.java.net/CDDLv1.0.html If applicable,
15: * add the following below this CDDL HEADER, with the
16: * fields enclosed by brackets "[]" replaced with your
17: * own identifying information: Portions Copyright [yyyy]
18: * [name of copyright owner]
19: */
20:
21: /*
22: * The contents of this file are subject to the terms
23: * of the Common Development and Distribution License
24: * (the "License"). You may not use this file except
25: * in compliance with the License.
26: *
27: * You can obtain a copy of the license at
28: * https://jwsdp.dev.java.net/CDDLv1.0.html
29: * See the License for the specific language governing
30: * permissions and limitations under the License.
31: *
32: * When distributing Covered Code, include this CDDL
33: * HEADER in each file and include the License file at
34: * https://jwsdp.dev.java.net/CDDLv1.0.html If applicable,
35: * add the following below this CDDL HEADER, with the
36: * fields enclosed by brackets "[]" replaced with your
37: * own identifying information: Portions Copyright [yyyy]
38: * [name of copyright owner]
39: */
40: package com.sun.xml.txw2.output;
41:
42: import java.io.IOException;
43: import java.io.Writer;
44:
45: /**
46: * Escape everything above the US-ASCII code range.
47: * A fallback position.
48: *
49: * Works with any JDK, any encoding.
50: *
51: * @since 1.0.1
52: * @author
53: * Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
54: */
55: public class DumbEscapeHandler implements CharacterEscapeHandler {
56:
57: private DumbEscapeHandler() {
58: } // no instanciation please
59:
60: public static final CharacterEscapeHandler theInstance = new DumbEscapeHandler();
61:
62: public void escape(char[] ch, int start, int length,
63: boolean isAttVal, Writer out) throws IOException {
64: int limit = start + length;
65: for (int i = start; i < limit; i++) {
66: switch (ch[i]) {
67: case '&':
68: out.write("&");
69: break;
70: case '<':
71: out.write("<");
72: break;
73: case '>':
74: out.write(">");
75: break;
76: case '\"':
77: if (isAttVal) {
78: out.write(""");
79: } else {
80: out.write('\"');
81: }
82: break;
83: default:
84: if (ch[i] > '\u007f') {
85: out.write("&#");
86: out.write(Integer.toString(ch[i]));
87: out.write(';');
88: } else {
89: out.write(ch[i]);
90: }
91: }
92: }
93: }
94:
95: }
|