src/share/classes/com/sun/xml/internal/txw2/DatatypeWriter.java

changeset 50
42dfec6871f6
parent 45
31822b475baa
equal deleted inserted replaced
46:a88ad84027a0 50:42dfec6871f6
23 * have any questions. 23 * have any questions.
24 */ 24 */
25 25
26 package com.sun.xml.internal.txw2; 26 package com.sun.xml.internal.txw2;
27 27
28 import java.util.AbstractList;
29 import java.util.Collections;
30 import java.util.List;
28 import javax.xml.namespace.QName; 31 import javax.xml.namespace.QName;
29 32
30 /** 33 /**
31 * Pluggable datatype writer. 34 * Pluggable datatype writer.
32 * 35 *
51 * @param resolver 54 * @param resolver
52 * allows the converter to declare additional namespace prefixes. 55 * allows the converter to declare additional namespace prefixes.
53 */ 56 */
54 void print(DT dt, NamespaceResolver resolver, StringBuilder buf); 57 void print(DT dt, NamespaceResolver resolver, StringBuilder buf);
55 58
59 static final List<DatatypeWriter<?>> BUILTIN = Collections.unmodifiableList(new AbstractList() {
56 60
57 static final DatatypeWriter<?>[] BUILDIN = new DatatypeWriter<?>[] { 61 private DatatypeWriter<?>[] BUILTIN_ARRAY = new DatatypeWriter<?>[] {
58 new DatatypeWriter<String>() { 62 new DatatypeWriter<String>() {
59 public Class<String> getType() { 63 public Class<String> getType() {
60 return String.class; 64 return String.class;
65 }
66 public void print(String s, NamespaceResolver resolver, StringBuilder buf) {
67 buf.append(s);
68 }
69 },
70 new DatatypeWriter<Integer>() {
71 public Class<Integer> getType() {
72 return Integer.class;
73 }
74 public void print(Integer i, NamespaceResolver resolver, StringBuilder buf) {
75 buf.append(i);
76 }
77 },
78 new DatatypeWriter<Float>() {
79 public Class<Float> getType() {
80 return Float.class;
81 }
82 public void print(Float f, NamespaceResolver resolver, StringBuilder buf) {
83 buf.append(f);
84 }
85 },
86 new DatatypeWriter<Double>() {
87 public Class<Double> getType() {
88 return Double.class;
89 }
90 public void print(Double d, NamespaceResolver resolver, StringBuilder buf) {
91 buf.append(d);
92 }
93 },
94 new DatatypeWriter<QName>() {
95 public Class<QName> getType() {
96 return QName.class;
97 }
98 public void print(QName qn, NamespaceResolver resolver, StringBuilder buf) {
99 String p = resolver.getPrefix(qn.getNamespaceURI());
100 if(p.length()!=0)
101 buf.append(p).append(':');
102 buf.append(qn.getLocalPart());
103 }
61 } 104 }
62 public void print(String s, NamespaceResolver resolver, StringBuilder buf) { 105 };
63 buf.append(s); 106
64 } 107 public DatatypeWriter<?> get(int n) {
65 }, 108 return BUILTIN_ARRAY[n];
66 new DatatypeWriter<Integer>() {
67 public Class<Integer> getType() {
68 return Integer.class;
69 }
70 public void print(Integer i, NamespaceResolver resolver, StringBuilder buf) {
71 buf.append(i);
72 }
73 },
74 new DatatypeWriter<Float>() {
75 public Class<Float> getType() {
76 return Float.class;
77 }
78 public void print(Float f, NamespaceResolver resolver, StringBuilder buf) {
79 buf.append(f);
80 }
81 },
82 new DatatypeWriter<Double>() {
83 public Class<Double> getType() {
84 return Double.class;
85 }
86 public void print(Double d, NamespaceResolver resolver, StringBuilder buf) {
87 buf.append(d);
88 }
89 },
90 new DatatypeWriter<QName>() {
91 public Class<QName> getType() {
92 return QName.class;
93 }
94 public void print(QName qn, NamespaceResolver resolver, StringBuilder buf) {
95 String p = resolver.getPrefix(qn.getNamespaceURI());
96 if(p.length()!=0)
97 buf.append(p).append(':');
98 buf.append(qn.getLocalPart());
99 }
100 } 109 }
101 }; 110
111 public int size() {
112 return BUILTIN_ARRAY.length;
113 }
114 });
102 } 115 }

mercurial