You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by yt...@apache.org on 2005/04/01 21:28:08 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/templates ElemNumber.java
ytalwar 2005/04/01 11:28:08
Modified: java/src/org/apache/xalan/templates ElemNumber.java
Log:
This is a fix for XALANJ-2089.
Christine Li has created this patch.
Brian Minchau helped in creating this patch.
Brian Minchau also reviewed this patch.
org.apache.xalan.templates.ElemNumber.java has raised some performance issue as
a static array to hold resources was removed earlier. However, the removal of static array is necessary
to fix a potential bug multithread environment, where a given thread can request different locale than another thread.
This patch resolves the performance glicth that was found in internal testing.
Revision Changes Path
1.37 +21 -17 xml-xalan/java/src/org/apache/xalan/templates/ElemNumber.java
Index: ElemNumber.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemNumber.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- ElemNumber.java 4 Feb 2005 18:08:57 -0000 1.36
+++ ElemNumber.java 1 Apr 2005 19:28:07 -0000 1.37
@@ -74,6 +74,12 @@
{
static final long serialVersionUID = 8118472298274407610L;
+ /**
+ * Chars for converting integers into alpha counts.
+ * @see TransformerImpl#int2alphaCount
+ */
+ private CharArrayWrapper m_alphaCountTable = null;
+
private class MyPrefixResolver implements PrefixResolver {
DTM dtm;
@@ -1334,28 +1340,26 @@
switch (numberType)
{
case 'A' :
-
- thisBundle =
- (XResourceBundle) XResourceBundle.loadResourceBundle(
- org.apache.xml.utils.res.XResourceBundle.LANG_BUNDLE_NAME, getLocale(transformer, contextNode));
-
-
- alphaCountTable = (CharArrayWrapper) thisBundle.getObject(org.apache.xml.utils.res.XResourceBundle.LANG_ALPHABET);
-
- int2alphaCount(listElement, alphaCountTable, formattedNumber);
+ if (null == m_alphaCountTable){
+ thisBundle =
+ (XResourceBundle) XResourceBundle.loadResourceBundle(
+ org.apache.xml.utils.res.XResourceBundle.LANG_BUNDLE_NAME, getLocale(transformer, contextNode));
+ m_alphaCountTable = (CharArrayWrapper) thisBundle.getObject(org.apache.xml.utils.res.XResourceBundle.LANG_ALPHABET);
+ }
+ int2alphaCount(listElement, m_alphaCountTable, formattedNumber);
break;
case 'a' :
-
- thisBundle =
- (XResourceBundle) XResourceBundle.loadResourceBundle(
- org.apache.xml.utils.res.XResourceBundle.LANG_BUNDLE_NAME, getLocale(transformer, contextNode));
-
- alphaCountTable = (CharArrayWrapper) thisBundle.getObject(org.apache.xml.utils.res.XResourceBundle.LANG_ALPHABET);
+ if (null == m_alphaCountTable){
+ thisBundle =
+ (XResourceBundle) XResourceBundle.loadResourceBundle(
+ org.apache.xml.utils.res.XResourceBundle.LANG_BUNDLE_NAME, getLocale(transformer, contextNode));
+ m_alphaCountTable = (CharArrayWrapper) thisBundle.getObject(org.apache.xml.utils.res.XResourceBundle.LANG_ALPHABET);
+ }
FastStringBuffer stringBuf = StringBufferPool.get();
try
{
- int2alphaCount(listElement, alphaCountTable, stringBuf);
+ int2alphaCount(listElement, m_alphaCountTable, stringBuf);
formattedNumber.append(
stringBuf.toString().toLowerCase(
getLocale(transformer, contextNode)));
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org