diff -r a88ad84027a0 -r 42dfec6871f6 src/share/classes/com/sun/xml/internal/txw2/DatatypeWriter.java --- a/src/share/classes/com/sun/xml/internal/txw2/DatatypeWriter.java Mon Apr 20 15:25:02 2009 -0700 +++ b/src/share/classes/com/sun/xml/internal/txw2/DatatypeWriter.java Mon May 04 21:10:41 2009 -0700 @@ -25,6 +25,9 @@ package com.sun.xml.internal.txw2; +import java.util.AbstractList; +import java.util.Collections; +import java.util.List; import javax.xml.namespace.QName; /** @@ -53,50 +56,60 @@ */ void print(DT dt, NamespaceResolver resolver, StringBuilder buf); + static final List> BUILTIN = Collections.unmodifiableList(new AbstractList() { - static final DatatypeWriter[] BUILDIN = new DatatypeWriter[] { - new DatatypeWriter() { - public Class getType() { - return String.class; + private DatatypeWriter[] BUILTIN_ARRAY = new DatatypeWriter[] { + new DatatypeWriter() { + public Class getType() { + return String.class; + } + public void print(String s, NamespaceResolver resolver, StringBuilder buf) { + buf.append(s); + } + }, + new DatatypeWriter() { + public Class getType() { + return Integer.class; + } + public void print(Integer i, NamespaceResolver resolver, StringBuilder buf) { + buf.append(i); + } + }, + new DatatypeWriter() { + public Class getType() { + return Float.class; + } + public void print(Float f, NamespaceResolver resolver, StringBuilder buf) { + buf.append(f); + } + }, + new DatatypeWriter() { + public Class getType() { + return Double.class; + } + public void print(Double d, NamespaceResolver resolver, StringBuilder buf) { + buf.append(d); + } + }, + new DatatypeWriter() { + public Class getType() { + return QName.class; + } + public void print(QName qn, NamespaceResolver resolver, StringBuilder buf) { + String p = resolver.getPrefix(qn.getNamespaceURI()); + if(p.length()!=0) + buf.append(p).append(':'); + buf.append(qn.getLocalPart()); + } } - public void print(String s, NamespaceResolver resolver, StringBuilder buf) { - buf.append(s); - } - }, - new DatatypeWriter() { - public Class getType() { - return Integer.class; - } - public void print(Integer i, NamespaceResolver resolver, StringBuilder buf) { - buf.append(i); - } - }, - new DatatypeWriter() { - public Class getType() { - return Float.class; - } - public void print(Float f, NamespaceResolver resolver, StringBuilder buf) { - buf.append(f); - } - }, - new DatatypeWriter() { - public Class getType() { - return Double.class; - } - public void print(Double d, NamespaceResolver resolver, StringBuilder buf) { - buf.append(d); - } - }, - new DatatypeWriter() { - public Class getType() { - return QName.class; - } - public void print(QName qn, NamespaceResolver resolver, StringBuilder buf) { - String p = resolver.getPrefix(qn.getNamespaceURI()); - if(p.length()!=0) - buf.append(p).append(':'); - buf.append(qn.getLocalPart()); - } + }; + + public DatatypeWriter get(int n) { + return BUILTIN_ARRAY[n]; } - }; + + public int size() { + return BUILTIN_ARRAY.length; + } + }); }