diff options
Diffstat (limited to 'src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java')
-rw-r--r-- | src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java b/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java index dc3a3ce..804b154 100644 --- a/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java +++ b/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -48,6 +48,7 @@ import java.text.MessageFormat; import java.text.NumberFormat; import java.util.Locale; import java.util.ResourceBundle; +import java.util.concurrent.atomic.AtomicInteger; import javax.xml.transform.dom.DOMSource; import org.w3c.dom.Attr; import org.w3c.dom.Document; @@ -1530,16 +1531,25 @@ public final class BasisLibrary { } /** - * This function is used in the execution of xsl:element + * These functions are used in the execution of xsl:element to generate + * and reset namespace prefix index local to current transformation process */ - private static int prefixIndex = 0; - public static String generatePrefix() { - synchronized (BasisLibrary.class) { - return ("ns" + prefixIndex++); - } + return ("ns" + threadLocalPrefixIndex.get().getAndIncrement()); + } + + public static void resetPrefixIndex() { + threadLocalPrefixIndex.get().set(0); } + private static final ThreadLocal<AtomicInteger> threadLocalPrefixIndex = + new ThreadLocal<AtomicInteger>() { + @Override + protected AtomicInteger initialValue() { + return new AtomicInteger(); + } + }; + public static final String RUN_TIME_INTERNAL_ERR = "RUN_TIME_INTERNAL_ERR"; public static final String RUN_TIME_COPY_ERR = |