diff options
Diffstat (limited to 'src/com/sun/org/apache/xml/internal/dtm/ref/CustomStringPool.java')
-rw-r--r-- | src/com/sun/org/apache/xml/internal/dtm/ref/CustomStringPool.java | 117 |
1 files changed, 59 insertions, 58 deletions
diff --git a/src/com/sun/org/apache/xml/internal/dtm/ref/CustomStringPool.java b/src/com/sun/org/apache/xml/internal/dtm/ref/CustomStringPool.java index ab28a63..f20c151 100644 --- a/src/com/sun/org/apache/xml/internal/dtm/ref/CustomStringPool.java +++ b/src/com/sun/org/apache/xml/internal/dtm/ref/CustomStringPool.java @@ -1,15 +1,15 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 1999-2004 The Apache Software Foundation. + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -20,18 +20,20 @@ /* * $Id: CustomStringPool.java,v 1.2.4.1 2005/09/15 08:14:59 suresh_emailid Exp $ */ - package com.sun.org.apache.xml.internal.dtm.ref; -import java.util.Hashtable; -/** <p>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 +import java.util.HashMap; +import java.util.Map; + +/** + * CustomStringPool is an example of an application-provided data structure for a + * DTM implementation to hold symbol references, e.g. element names. It will + * follow the DTMStringPool interface and use two simple methods + * indexToString(int i) and stringToIndex(String 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.</p> - * + * tables with application specific quick symbol resolution tables. + * <p> * %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 @@ -39,52 +41,51 @@ import java.util.Hashtable; * -- especially in JDK 1.1.x, where Hashtable is synchronized. We need to * either justify this implementation or discard it. * - * <p>Status: In progress, under discussion.</p> - * */ + * <p> + * Status: In progress, under discussion. + * + */ public class CustomStringPool extends DTMStringPool { - //final Vector m_intToString; - //static final int HASHPRIME=101; - //int[] m_hashStart=new int[HASHPRIME]; - final Hashtable m_stringToInt = new Hashtable(); - public static final int NULL=-1; - 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(); - } + final Map<String, Integer> m_stringToInt = new HashMap<>(); + public static final int NULL = -1; - public void removeAllElements() - { - m_intToString.removeAllElements(); - if (m_stringToInt != null) - m_stringToInt.clear(); - } + public CustomStringPool() { + super(); + } - /** @return string whose value is uniquely identified by this integer index. - * @throws java.lang.ArrayIndexOutOfBoundsException - * if index doesn't map to a string. - * */ - public String indexToString(int i) - throws java.lang.ArrayIndexOutOfBoundsException - { - return(String) m_intToString.elementAt(i); + public void removeAllElements() { + m_intToString.removeAllElements(); + if (m_stringToInt != null) { + m_stringToInt.clear(); } + } - /** @return integer index uniquely identifying the value of this string. */ - public int stringToIndex(String s) - { - 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(); + /** + * @return string whose value is uniquely identified by this integer index. + * @throws java.lang.ArrayIndexOutOfBoundsException if index doesn't map to + * a string. + */ + @Override + public String indexToString(int i) + throws java.lang.ArrayIndexOutOfBoundsException { + return (String) m_intToString.elementAt(i); + } + + /** + * @return integer index uniquely identifying the value of this string. + */ + @Override + public int stringToIndex(String s) { + if (s == null) { + return NULL; + } + Integer iobj = m_stringToInt.get(s); + if (iobj == null) { + m_intToString.addElement(s); + iobj = m_intToString.size(); + m_stringToInt.put(s, iobj); } + return iobj; + } } |