FileDocCategorySizeDatePackage
CustomStringPool.javaAPI DocJava SE 6 API3618Tue Jun 10 00:22:56 BST 2008com.sun.org.apache.xml.internal.dtm.ref

CustomStringPool

public class CustomStringPool extends DTMStringPool

CustomStringPool is an example of appliction provided data structure for a DTM implementation to hold symbol references, e.g. elelment names. It will follow the DTMDStringPool interface and use two simple methods indexToString(int i) and stringToIndex(Sring s) to map between a set of string values and a set of integer index values. Therefore, an application may improve DTM processing speed by substituting the DTM symbol resolution tables with application specific quick symbol resolution tables.

%REVIEW% The only difference between this an DTMStringPool seems to be that it uses a java.lang.Hashtable full of Integers rather than implementing its own hashing. Joe deliberately avoided that approach when writing DTMStringPool, since it is both much more memory-hungry and probably slower -- especially in JDK 1.1.x, where Hashtable is synchronized. We need to either justify this implementation or discard it.

Status: In progress, under discussion.

Fields Summary
final Hashtable
m_stringToInt
public static final int
NULL
Constructors Summary
public CustomStringPool()


         
        
                super();
                /*m_intToString=new Vector();
                System.out.println("In constructor m_intToString is " + 
                                                                                         ((null == m_intToString) ? "null" : "not null"));*/
                //m_stringToInt=new Hashtable();
                //removeAllElements();
        
Methods Summary
public java.lang.StringindexToString(int i)

return
string whose value is uniquely identified by this integer index.
throws
java.lang.ArrayIndexOutOfBoundsException if index doesn't map to a string.

                return(String) m_intToString.elementAt(i);
        
public voidremoveAllElements()

                m_intToString.removeAllElements();
                if (m_stringToInt != null) 
                        m_stringToInt.clear();
        
public intstringToIndex(java.lang.String s)

return
integer index uniquely identifying the value of this string.

                if (s==null) return NULL;
                Integer iobj=(Integer)m_stringToInt.get(s);
                if (iobj==null) {
                        m_intToString.addElement(s);
                        iobj=new Integer(m_intToString.size());
                        m_stringToInt.put(s,iobj);
                }
                return iobj.intValue();